public static bool IsFilterInputForEvent <TEventDTO>(string contractAddress, NewFilterInput filterInput) { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.IsFilterInputForEvent(contractAddress, filterInput)); }
public BlockchainIndexingService( IEthereumNodeJobClient ethereumNodeJobClient, IIndexingStateRepository indexingStateRepository, IRabbitPublisher <EthereumWalletLinkingStatusChangeCompletedEvent> walletLinkingStatusChangeCompletedPublisher, IRabbitPublisher <TransferToExternalCompletedEvent> transferToExternalCompletedPublisher, IRabbitPublisher <TransferToInternalDetectedEvent> transferToInternalDetectedPublisher, IRabbitPublisher <SeizeToInternalDetectedEvent> seizeToInternalDetectedPublisher, int blockConfirmationLevel, ILogFactory logFactory, int?blockBatchSize = null) { _ethereumNodeJobClient = ethereumNodeJobClient; _indexingStateRepository = indexingStateRepository; _walletLinkingStatusChangeCompletedPublisher = walletLinkingStatusChangeCompletedPublisher; _transferToExternalCompletedPublisher = transferToExternalCompletedPublisher; _transferToInternalDetectedPublisher = transferToInternalDetectedPublisher; _seizeToInternalDetectedPublisher = seizeToInternalDetectedPublisher; _blockConfirmationLevel = blockConfirmationLevel; _blockBatchSize = blockBatchSize; _publicAccountLinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountLinkedEventDTO>().Sha3Signature}"; _publicAccountUnlinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}"; _transferredFromInternalNetworkEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferredFromInternalNetworkEventDTO>().Sha3Signature}"; _transferredToInternalNetworkEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferredToInternalNetworkEventDTO>().Sha3Signature}"; _publicAccountUnlinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}"; _seizeFromEventSignature = $"0x{ABITypedRegistry.GetEvent<SeizeFromEventDTO>().Sha3Signature}"; _eventTopicDecoder = new EventTopicDecoder(); _log = logFactory.CreateLog(this); }
public EventMatcher( IEventAddressMatcher addressMatcher = null, IEventParameterMatcher parameterMatcher = null) : base(null, addressMatcher, parameterMatcher) { Abis = new[] { ABITypedRegistry.GetEvent <TEvent>() }; }
public BlockchainEventDecoder(IMapper mapper) { _mapper = mapper; _eventTopicDecoder = new EventTopicDecoder(); _publicAccountLinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountLinkedEventDTO>().Sha3Signature}"; _publicAccountUnlinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}"; }
public BlockchainEventDecoder(IMapper mapper) { _mapper = mapper; _eventTopicDecoder = new EventTopicDecoder(); _transferedFromPublicNetworkEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferredFromPublicNetworkEventDTO>().Sha3Signature}"; _transferedToPublicNetworkEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferredToPublicNetworkEventDTO>().Sha3Signature}"; }
public static NewFilterInput CreateFilterInput <TEventDTO>(this TEventDTO eventDTO, string[] contractAddress, object[] filterTopic1, BlockParameter fromBlock = null, BlockParameter toBlock = null) where TEventDTO : IEventDTO { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.CreateFilterInput(contractAddress, filterTopic1, fromBlock, toBlock)); }
private string EncodeRequestData <T>(T func) where T : class, new() { var abiFunc = ABITypedRegistry.GetFunctionABI <T>(); var result = _functionCallEncoder.EncodeRequest(func, abiFunc.Sha3Signature); return(result); }
public static NewFilterInput CreateFilterInput <TEventDTO>(string contractAddress, object[] filterTopic1, object[] filterTopic2, object[] filterTopic3, BlockParameter fromBlock = null, BlockParameter toBlock = null) { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.CreateFilterInput(contractAddress, filterTopic1, filterTopic2, filterTopic3, fromBlock, toBlock)); }
public BlockchainEventDecoder(IMapper mapper) { _eventTopicDecoder = new EventTopicDecoder(); _transferReceivedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferReceivedEventDTO>().Sha3Signature}"; _transferAcceptedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferAcceptedEventDTO>().Sha3Signature}"; _transferRejectedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferRejectedEventDTO>().Sha3Signature}"; _mapper = mapper; }
public FunctionPrinter() { _functionAbi = ABITypedRegistry.GetFunctionABI <TFunctionInput>(); if (_functionAbi == null) { throw new ArgumentException("Function for TFunctionInput not found in contract"); } }
public void ShouldEncodeSignatureWithStructArrays() { var functionAbi = ABITypedRegistry.GetFunctionABI <SetPurchaseOrderFunction>(); Assert.Equal("0cc400bd", functionAbi.Sha3Signature); functionAbi = ABITypedRegistry.GetFunctionABI <SetPurchaseOrdersFunction>(); Assert.Equal("cfca7768", functionAbi.Sha3Signature); }
public void ShouldEncodeSignatureWithStructArrays() { var functionAbi = ABITypedRegistry.GetFunctionABI <SetPurchaseOrderFunction>(); Assert.Equal("f79eb4a2", functionAbi.Sha3Signature); functionAbi = ABITypedRegistry.GetFunctionABI <SetPurchaseOrdersFunction>(); Assert.Equal("1a9542af", functionAbi.Sha3Signature); }
public async Task <decimal> BalanceOfAsync(string contractAddress, ITronAccount ownerAccount) { var contractAddressBytes = Base58Encoder.DecodeFromBase58Check(contractAddress); var ownerAddressBytes = Base58Encoder.DecodeFromBase58Check(ownerAccount.Address); var wallet = _walletClient.GetProtocol(); var functionABI = ABITypedRegistry.GetFunctionABI <BalanceOfFunction>(); try { var addressBytes = new byte[20]; Array.Copy(ownerAddressBytes, 1, addressBytes, 0, addressBytes.Length); var addressBytesHex = "0x" + addressBytes.ToHex(); var balanceOf = new BalanceOfFunction { Owner = addressBytesHex }; var decimals = GetDecimals(wallet, contractAddressBytes); var encodedHex = new FunctionCallEncoder().EncodeRequest(balanceOf, functionABI.Sha3Signature); var trigger = new TriggerSmartContract { ContractAddress = ByteString.CopyFrom(contractAddressBytes), OwnerAddress = ByteString.CopyFrom(ownerAddressBytes), Data = ByteString.CopyFrom(encodedHex.HexToByteArray()), }; var transactionExtention = await wallet.TriggerConstantContractAsync(trigger, headers : _walletClient.GetHeaders()); if (!transactionExtention.Result.Result) { throw new Exception(transactionExtention.Result.Message.ToStringUtf8()); } if (transactionExtention.ConstantResult.Count == 0) { throw new Exception($"result error, ConstantResult length=0."); } var result = new FunctionCallDecoder().DecodeFunctionOutput <BalanceOfFunctionOutput>(transactionExtention.ConstantResult[0].ToByteArray().ToHex()); var balance = Convert.ToDecimal(result.Balance); if (decimals > 0) { balance /= Convert.ToDecimal(Math.Pow(10, decimals)); } return(balance); } catch (Exception ex) { _logger.LogError(ex, ex.Message); throw; } }
public void Filter_AddsAnEventSignatureBasedFilter() { var processor = new LogsProcessorBuilder(blockchainUrl: BLOCKCHAIN_URL) .Filter <TestData.Contracts.StandardContract.TransferEvent>(); Assert.Equal( ABITypedRegistry .GetEvent <TestData.Contracts.StandardContract.TransferEvent>() .Sha3Signature.EnsureHexPrefix(), processor.Filters[0].Topics[0]); }
public string EncodeAcceptData(Guid spendRuleId, Guid transferId) { var acceptFunction = new AcceptTransferFunction { TransferId = transferId.ToString(), InvoiceId = EmptyInvoiceId, CampaignId = spendRuleId.ToString() }; var abiFunction = ABITypedRegistry.GetFunctionABI <AcceptTransferFunction>(); return(_functionCallEncoder.EncodeRequest(acceptFunction, abiFunction.Sha3Signature)); }
public void Assigns_Event_Signature_To_Topic0() { var filter = new FilterInputBuilder <TransferEvent>().Build(); var eventAbi = ABITypedRegistry.GetEvent <TransferEvent>(); Assert.Equal(eventAbi.Sha3Signature.EnsureHexPrefix(), filter.Topics.FirstOrDefault()); Assert.False(filter.IsTopicFiltered(1)); Assert.False(filter.IsTopicFiltered(2)); Assert.False(filter.IsTopicFiltered(3)); }
public async Task DynamicContractQuerying_Name_Anomoly() { var abi = ABITypedRegistry.GetFunctionABI <NameFunction>(); var signature_name = abi.Sha3Signature; var contractAddress = "0x2e71b2933b2b249752872a929e9816a770638282"; var web3 = new Web3.Web3(BlockchainUrl); var contractHandler = web3.Eth.GetContractHandler(contractAddress); var contractHandlerResult = await contractHandler.QueryAsync <NameFunction, string>(); var queryHelperResult = await web3.Eth.GetContract(StandardContractAbi, contractAddress) .GetFunctionBySignature(signature_name) .CallAsync <string>(); Assert.Null(queryHelperResult); }
public void Filter_SetsAnEventSignatureBasedFilter_WithContractAddresses() { string[] CONTRACT_ADDRESSES = new[] { "0x243e72b69141f6af525a9a5fd939668ee9f2b354", "0x343e72b69141f6af525a9a5fd939668ee9f2b354" }; var processor = new LogsProcessorBuilder(blockchainUrl: BLOCKCHAIN_URL, contractAddresses: CONTRACT_ADDRESSES) .Filter <TestData.Contracts.StandardContract.TransferEvent>(); //should override and replace contract address filter with a new filter for contract address and event Assert.Single(processor.Filters); Assert.Equal( ABITypedRegistry .GetEvent <TestData.Contracts.StandardContract.TransferEvent>() .Sha3Signature.EnsureHexPrefix(), processor.Filters[0].Topics[0]); Assert.Equal(CONTRACT_ADDRESSES, processor.Filters[0].Address); }
private long GetDecimals(Wallet.WalletClient wallet, byte[] contractAddressBytes) { var trc20Decimals = new DecimalsFunction(); var callEncoder = new FunctionCallEncoder(); var functionABI = ABITypedRegistry.GetFunctionABI <DecimalsFunction>(); var encodedHex = callEncoder.EncodeRequest(trc20Decimals, functionABI.Sha3Signature); var trigger = new TriggerSmartContract { ContractAddress = ByteString.CopyFrom(contractAddressBytes), Data = ByteString.CopyFrom(encodedHex.HexToByteArray()), }; var txnExt = wallet.TriggerConstantContract(trigger, headers: _walletClient.GetHeaders()); var result = txnExt.ConstantResult[0].ToByteArray().ToHex(); return(new FunctionCallDecoder().DecodeOutput <long>(result, new Parameter("uint8", "d"))); }
public UndecodedEventSubscriber( IPurchaseService purchaseService, IOperationsService operationsService, ISettingsService settingsService, string connectionString, string exchangeName, string queueName, ILogFactory logFactory) : base(connectionString, exchangeName, queueName, true, logFactory) { _purchaseService = purchaseService; _operationsService = operationsService; _log = logFactory.CreateLog(this); _eventTopicDecoder = new EventTopicDecoder(); _transferReceivedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferReceivedEventDTO>().Sha3Signature}"; _transferAcceptedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferAcceptedEventDTO>().Sha3Signature}"; _transferRejectedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferRejectedEventDTO>().Sha3Signature}"; _contractAddress = settingsService.GetContractAddress(); }
public static List <EventLog <TEventDTO> > DecodeAllEvents <TEventDTO>(this JArray logs) where TEventDTO : new() { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.DecodeAllEvents <TEventDTO>(logs)); }
public EventPrinter() { _eventName = ABITypedRegistry.GetEvent <TEvent>().Name; }
public async Task <string> TransferAsync(string contractAddress, ITronAccount ownerAccount, string toAddress, decimal amount, string memo, long feeLimit) { var contractAddressBytes = Base58Encoder.DecodeFromBase58Check(contractAddress); var callerAddressBytes = Base58Encoder.DecodeFromBase58Check(toAddress); var ownerAddressBytes = Base58Encoder.DecodeFromBase58Check(ownerAccount.Address); var wallet = _walletClient.GetProtocol(); var functionABI = ABITypedRegistry.GetFunctionABI <TransferFunction>(); try { var contract = await wallet.GetContractAsync(new BytesMessage { Value = ByteString.CopyFrom(contractAddressBytes), }, headers : _walletClient.GetHeaders()); var toAddressBytes = new byte[20]; Array.Copy(callerAddressBytes, 1, toAddressBytes, 0, toAddressBytes.Length); var toAddressHex = "0x" + toAddressBytes.ToHex(); var decimals = GetDecimals(wallet, contractAddressBytes); var tokenAmount = amount; if (decimals > 0) { tokenAmount = amount * Convert.ToDecimal(Math.Pow(10, decimals)); } var trc20Transfer = new TransferFunction { To = toAddressHex, TokenAmount = Convert.ToInt64(tokenAmount), }; var encodedHex = new FunctionCallEncoder().EncodeRequest(trc20Transfer, functionABI.Sha3Signature); var trigger = new TriggerSmartContract { ContractAddress = ByteString.CopyFrom(contractAddressBytes), OwnerAddress = ByteString.CopyFrom(ownerAddressBytes), Data = ByteString.CopyFrom(encodedHex.HexToByteArray()), }; var transactionExtention = await wallet.TriggerConstantContractAsync(trigger, headers : _walletClient.GetHeaders()); if (!transactionExtention.Result.Result) { _logger.LogWarning($"[transfer]transfer failed, message={transactionExtention.Result.Message.ToStringUtf8()}."); return(null); } var transaction = transactionExtention.Transaction; if (transaction.Ret.Count > 0 && transaction.Ret[0].Ret == Transaction.Types.Result.Types.code.Failed) { return(null); } transaction.RawData.Data = ByteString.CopyFromUtf8(memo); transaction.RawData.FeeLimit = feeLimit; var transSign = _transactionClient.GetTransactionSign(transaction, ownerAccount.PrivateKey); var result = await _transactionClient.BroadcastTransactionAsync(transSign); return(transSign.GetTxid()); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return(null); } }
public NewFilterInputBuilder() { _eventAbi = ABITypedRegistry.GetEvent <TEventDTo>(); _topics = new TopicFilterContainer <TEventDTo>(); }
public static bool IsLogForEvent <TEventDTO>(this FilterLog log) { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.IsLogForEvent(log)); }
public static EventABI GetEventABI <TEventDTO>(this TEventDTO eventDTO) where TEventDTO : IEventDTO { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI); }
public static TEventDTO DecodeEvent <TEventDTO>(this TEventDTO eventDTO, FilterLog log) where TEventDTO : IEventDTO { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(DecodeEvent <TEventDTO>(eventDTO, eventABI, log)); }
public static EventLog <TEventDTO> DecodeEvent <TEventDTO>(this FilterLog log) where TEventDTO : new() { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(eventABI.DecodeEvent <TEventDTO>(log)); }
public static List <EventLog <TEventDTO> > DecodeAllEvents <TEventDTO>(this FilterLog[] logs) where TEventDTO : new() { var eventABI = ABITypedRegistry.GetEvent <TEventDTO>(); return(DecodeAllEvents <TEventDTO>(eventABI, logs)); }