public async Task <AddNewTemplateServiceResponse> Handle(AddNewTemplateServiceRequest aAddNewTemplateServiceRequest, CancellationToken aCancellationToken) { Function <AddNewTemplateFunctionInput> aAddNewTemplateFunction = NftCreatorInstance.Instance.GetFunction <AddNewTemplateFunctionInput>(); Nethereum.Contracts.ContractHandlers.IContractTransactionHandler <AddNewTemplateFunctionInput> addNewTemplateFunctionHandler = NethWeb3.Instance.Eth.GetContractTransactionHandler <AddNewTemplateFunctionInput>(); var aAddNewTemplateFunctionMessage = new AddNewTemplateFunctionInput { NewTemplateName = aAddNewTemplateServiceRequest.NewTemplateName, NewTemplateSymbol = aAddNewTemplateServiceRequest.NewTemplateSymbol, NewTemplateAttachedTokens = aAddNewTemplateServiceRequest.NewTemplateAttachedTokens, NewTemplateMintLimit = aAddNewTemplateServiceRequest.NewTemplateMintLimit }; // Gas Estimates, needs to be tested Nethereum.Hex.HexTypes.HexBigInteger gasEstimate = await addNewTemplateFunctionHandler.EstimateGasAsync(NftCreatorAddresses.NewNftCreatorRopstenAddress, aAddNewTemplateFunctionMessage); aAddNewTemplateFunctionMessage.Gas = gasEstimate.Value; Nethereum.RPC.Eth.DTOs.TransactionReceipt mintingTransactionReceipt = await addNewTemplateFunctionHandler.SendRequestAndWaitForReceiptAsync(NftCreatorAddresses.NewNftCreatorRopstenAddress, aAddNewTemplateFunctionMessage); return(new AddNewTemplateServiceResponse { NewTemplateTransactionReceipt = mintingTransactionReceipt }); }
public async Task <MintNftOfTypeServiceResponse> Handle(MintNftOfTypeServiceRequest aMintNftOfTypeServiceRequest, CancellationToken aCancellationToken) { Function <MintNftOfTypeFunctionInput> aMintNftOfTypeFunction = NftCreatorInstance.Instance.GetFunction <MintNftOfTypeFunctionInput>(); Nethereum.Contracts.ContractHandlers.IContractTransactionHandler <MintNftOfTypeFunctionInput> mintingHandler = NethWeb3.Instance.Eth.GetContractTransactionHandler <MintNftOfTypeFunctionInput>(); // serialization needed var aMintNftOfTypeFunctionMessage = new MintNftOfTypeFunctionInput { NftId = aMintNftOfTypeServiceRequest.MintNftId, ImmutableDataString = aMintNftOfTypeServiceRequest.ImmutableDataString, MutableDataString = aMintNftOfTypeServiceRequest.MutableDataString == null ? "" : aMintNftOfTypeServiceRequest.MutableDataString }; Nethereum.Hex.HexTypes.HexBigInteger gasEstimate = await mintingHandler.EstimateGasAsync(NftCreatorAddresses.NewNftCreatorRopstenAddress, aMintNftOfTypeFunctionMessage); aMintNftOfTypeFunctionMessage.Gas = gasEstimate.Value; Nethereum.RPC.Eth.DTOs.TransactionReceipt mintingTransactionReceipt = await mintingHandler.SendRequestAndWaitForReceiptAsync(NftCreatorAddresses.NewNftCreatorRopstenAddress, aMintNftOfTypeFunctionMessage); System.Collections.Generic.List <EventLog <MintNftOutputEventDto> > MintNftOutput = mintingTransactionReceipt.DecodeAllEvents <MintNftOutputEventDto>(); int id = (int)MintNftOutput[0].Event.Id; return(new MintNftOfTypeServiceResponse { TransactionHash = mintingTransactionReceipt.TransactionHash, TokenId = id, GasUsed = new HexBigInteger(mintingTransactionReceipt.GasUsed.Value) }); }
public Receipt(Nethereum.RPC.Eth.DTOs.TransactionReceipt receipt) { ContractAddress = receipt.ContractAddress.ToString(); if (receipt.BlockHash != null) { BlockHash = receipt.BlockHash.ToString(); BlockNumber = receipt.BlockNumber.HexValue; } GasUsed = receipt.GasUsed.HexValue; Status = receipt.Status.HexValue; }
static public async Task WaitForTxReceiptExample(Web3 web3, string txHash) { Console.WriteLine("WaitForTxReceiptExample:"); int timeoutCount = 0; var txReceipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(txHash); while (txReceipt == null && timeoutCount < MAX_TIMEOUT) { Console.WriteLine("Sleeping..."); Thread.Sleep(SLEEP_TIME); txReceipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(txHash); timeoutCount += SLEEP_TIME; } Console.WriteLine("timeoutCount " + timeoutCount.ToString()); LastTxReceipt = txReceipt; }
public IEnumerator Exec3(double gas, double value_wei, params object[] args) { Debug.Log("gas/value = " + gas + "|" + value_wei); yield return(req_.SignAndSendTransaction( Function.CreateTransactionInput(RPCMgr.instance.Account.address_, new HexBigInteger(new BigInteger(gas)), new HexBigInteger(new BigInteger(value_wei)), args))); var receipt_waiter = new TransactionReceiptPollingRequest(RPCMgr.instance.Account.chain_url_); yield return(receipt_waiter.PollForReceipt(req_.Result, 60)); if (receipt_waiter.Exception != null) { Error = receipt_waiter.Exception; yield break; } Result = receipt_waiter.Result; }
public async Task <Nethereum.RPC.Eth.DTOs.TransactionReceipt> PollReceipt(string transactionHash) { try { //var request = new Nethereum.RPC.Eth.Transactions.EthGetTransactionReceipt(web3); Nethereum.RPC.Eth.DTOs.TransactionReceipt receipt = await web3.Eth.DeployContract.TransactionManager.TransactionReceiptService.PollForReceiptAsync(transactionHash); //receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash); while (receipt == null) { Thread.Sleep(5000); receipt = await web3.TransactionManager.TransactionReceiptService.PollForReceiptAsync(transactionHash); } return(receipt); } catch (Exception e) { return(null); } }
public async Task <(string, DateTime)> CriarTransacoesAsync(string hashDoArquivo, string assJwt) { var senderAddress = "0x3c30BdDA887BeE28e6D09F801E3f6B0E7AE876F6"; var client = new Nethereum.JsonRpc.Client.RpcClient(new Uri("https://ropsten.infura.io/v3/69d76e2ed4cf459091d6113d9f18b0c0")); var account = new Nethereum.Web3.Accounts.Account("5C634792510B7D93283FA4A03D6B396CEECE19E860BF0E0632C54BE513B10259"); var web3 = new Nethereum.Web3.Web3(account, client); var contractAddress = "0xF6676908F5E3580C7bFF689dF739D843607DBc6c"; var abi = @"[{'constant':false,'inputs':[{'name':'hashArquivo','type':'string'},{'name':'assinatura','type':'string'}],'name':'adicionarAssinatura','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':false,'inputs':[{'name':'hashArquivo','type':'string'}],'name':'removerAssinatura','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':false,'inputs':[],'name':'removeSdaContract','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':true,'inputs':[],'name':'empresa','outputs':[{'name':'','type':'string'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'hashArquivo','type':'string'}],'name':'buscarAssinatura','outputs':[{'name':'','type':'string'}],'payable':false,'stateMutability':'view','type':'function'},{'inputs':[{'name':'_empresa','type':'string'}],'payable':false,'stateMutability':'nonpayable','type':'constructor'},{'anonymous':false,'inputs':[{'indexed':true,'name':'hashArquivo','type':'string'},{'indexed':true,'name':'assinatura','type':'string'},{'indexed':false,'name':'datahora','type':'uint256'}],'name':'AssinaturaAdicionada','type':'event'}]"; var contract = web3.Eth.GetContract(abi, contractAddress); var adicionarAssinaturaFunc = contract.GetFunction("adicionarAssinatura"); try { var trx = await adicionarAssinaturaFunc.SendTransactionAsync( senderAddress, new HexBigInteger(900000), new HexBigInteger(1000), new HexBigInteger(0), hashDoArquivo, assJwt); // Verificar se já foi processada Nethereum.RPC.Eth.DTOs.TransactionReceipt receiptAdd = null; while (receiptAdd == null) { receiptAdd = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(trx); System.Threading.Thread.Sleep(1000); } return(trx, DateTime.Now); } catch (Exception ex) { return(string.Empty, DateTime.Now); } }