private async void DrainWalletToAddress(string receipientAddress) { // calculate var balance = await Web3.Eth.GetBalance.SendRequestAsync(Account.Address); var gasPrice = await Web3.Eth.GasPrice.SendRequestAsync(); var gasPriceHex = new Nethereum.Hex.HexTypes.HexBigInteger(gasPrice); var gas = Web3.Eth.TransactionManager.DefaultGas; var gasHex = new Nethereum.Hex.HexTypes.HexBigInteger(gas); var balanceToTransfer = BigInteger.Subtract(balance, BigInteger.Multiply(gasPrice, gas)); var balanceToTransferHex = new Nethereum.Hex.HexTypes.HexBigInteger(balanceToTransfer); var transactionInput = new Nethereum.RPC.Eth.DTOs.TransactionInput(null, receipientAddress, Account.Address, gasHex, gasPriceHex, balanceToTransferHex); drainTransactionRichTextBox.Text = JsonConvert.SerializeObject(transactionInput); drainSignedTransactionRichTextBox.Text = await Web3.TransactionManager.SignTransactionRetrievingNextNonceAsync(transactionInput); //var txHash = await Web3.TransactionManager.SignTransactionRetrievingNextNonceAsync(transactionInput); var txReceipt = await Web3.TransactionManager.TransactionReceiptService.SendRequestAndWaitForReceiptAsync(() => { return(Web3.TransactionManager.SendTransactionAsync(transactionInput)); }); drainTransactionReceiptRichTextBox.Text = JsonConvert.SerializeObject(txReceipt); }
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 void SerializeProductToBlockchain(WonkaProduct poTargetProduct) { string sSenderAddress = msSenderAddress; var contract = GetContract(); var setValueOnRecordFunction = contract.GetFunction("setValueOnRecord"); // Exception thrown // var gas = setValueOnRecordFunction.EstimateGasAsync()sSenderAddress, "SomeAttr", "SomeValue").Result; var gas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); foreach (WonkaRefAttr TempAttr in moTargetAttrList) { string sAttrValue = GetAttributeValue(poTargetProduct, TempAttr); /* * base fee exceeds gas limit? * var receiptSetValueOnRecord = * setValueOnRecordFunction.SendTransactionAndWaitForReceiptAsync(sSenderAddress, null, sSenderAddress, TempAttr.AttrName, sAttrValue).Result; */ var receiptSetValueOnRecord = setValueOnRecordFunction.SendTransactionAsync(sSenderAddress, gas, null, sSenderAddress, TempAttr.AttrName, sAttrValue).Result; } }
public async Task ShouldMintNftOfType() { // Arrange Function <MintNftOfTypeFunctionInput> aMintNftOfTypeFunction = NftCreator.Instance.GetFunction <MintNftOfTypeFunctionInput>(); Nethereum.Contracts.ContractHandlers.IContractTransactionHandler <MintNftOfTypeFunctionInput> MintNftOfTypeFunctionHandler = NethWeb3.Instance.Eth.GetContractTransactionHandler <MintNftOfTypeFunctionInput>(); //byte[] serializedImmutable = Serializer.Serialize(new ImmutableData()); //byte[] serializedMutable = Serializer.Serialize(new MutableData()); //string base64StringifiedSerializedImmutable = Convert.ToBase64String(serializedImmutable); //string base64StringifiedSerializedMutable = Convert.ToBase64String(serializedMutable); var aMintNftOfTypeFunctionMessage = new MintNftOfTypeFunctionInput { Type = 4, MutableDataString = "The Third Minted NFT!Take 3", ImmutableDataString = "This Is MintingTest 3" }; Nethereum.Hex.HexTypes.HexBigInteger gasEstimate = await MintNftOfTypeFunctionHandler.EstimateGasAsync(NftCreatorAddresses.NftCreatorRinkebyAddress, aMintNftOfTypeFunctionMessage); aMintNftOfTypeFunctionMessage.Gas = gasEstimate.Value; gasEstimate.Value.ShouldBeGreaterThan(0); //Nethereum.RPC.Eth.DTOs.TransactionReceipt MintNftOfTypeTransactionReceipt = await MintNftOfTypeFunctionHandler.SendRequestAndWaitForReceiptAsync(NftCreatorAddresses.NftCreatorRinkebyAddress, aMintNftOfTypeFunctionMessage); //System.Collections.Generic.List<EventLog<MintNftOutputEventDto>> MintNftOutput = MintNftOfTypeTransactionReceipt.DecodeAllEvents<MintNftOutputEventDto>(); //MintNftOfTypeTransactionReceipt.ShouldNotBe(null); //MintNftOutput.Count.ShouldBeGreaterThan(0); }
public async Task <bool> Init() { bool bResult = true; using (var client = new System.Net.Http.HttpClient()) { string sIpfsUrl = String.Format("{0}/{1}", CONST_INFURA_IPFS_GATEWAY_URL, "QmXcsGDQthxbGW8C3Sx9r4tV9PGSj4MxJmtXF7dnXN5XUT"); msRulesContents = await client.GetStringAsync(sIpfsUrl).ConfigureAwait(false); } // By setting the addresses to NULL, we indicates that we want the API to deploy the contracts for us if (msContractAddress == null) { msEngineContractAddress = null; msRegistryContractAddress = null; msTestContractAddress = null; } // By using the indicator "DEPLOY" here, we will manually deploy the contracts ourselves else if (msContractAddress == "DEPLOY") { msEngineContractAddress = await DeployWonka().ConfigureAwait(false); } // Else, we will use existing contracts on the test chain else { if (msContractAddress == "") { msEngineContractAddress = "0xfB419DEA1f28283edAD89103fc1f1272f7573E6A"; } else { msEngineContractAddress = msContractAddress; } msRegistryContractAddress = "0x7E618a3948F6a5D2EA6b92D8Ce6723a468540CaA"; msTestContractAddress = "0x4092bc250ef6c384804af2f871Af9c679b672d0B"; } if (String.IsNullOrEmpty(msChronoLogAddress)) { var web3 = GetWeb3(); var ChronoLogDeployment = new Wonka.Eth.Autogen.ChronoLog.ChronoLogDeployment(); Nethereum.Hex.HexTypes.HexBigInteger nDefaultGas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); msChronoLogAddress = await ChronoLogDeployment.DeployContractAsync(web3, msAbiChronoLog, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL).ConfigureAwait(false); } await InitEngineAsync(mbInitChainEnv).ConfigureAwait(false); Wonka.BizRulesEngine.Writers.WonkaBizRulesXmlWriter Writer = new Wonka.BizRulesEngine.Writers.WonkaBizRulesXmlWriter(moEthEngineInit.Engine.RulesEngine); string sOutputRules = Writer.ExportXmlString(); return(bResult); }
public async Task <string> DeployWonka() { var web3 = GetWeb3(); var EngineDeployment = new Wonka.Eth.Autogen.WonkaEngine.WonkaEngineDeploymentClassic(); var RegistryDeployment = new Wonka.Eth.Autogen.WonkaRegistry.WonkaRegistryDeployment(); var TestCntDeployment = new Wonka.Eth.Autogen.WonkaTestContract.WonkaTestContractDeployment(); var ChronoLogDeployment = new Wonka.Eth.Autogen.ChronoLog.ChronoLogDeployment(); Nethereum.Hex.HexTypes.HexBigInteger nEngineGas = new Nethereum.Hex.HexTypes.HexBigInteger(8388608); Nethereum.Hex.HexTypes.HexBigInteger nDefaultGas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); msEngineContractAddress = await EngineDeployment.DeployContractAsync(web3, msAbiWonka, msSenderAddress, nEngineGas, CONST_ONLINE_TEST_CHAIN_URL).ConfigureAwait(false); msRegistryContractAddress = await RegistryDeployment.DeployContractAsync(web3, msAbiRegistry, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL).ConfigureAwait(false); msTestContractAddress = await TestCntDeployment.DeployContractAsync(web3, msAbiOrchTest, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL).ConfigureAwait(false); msChronoLogAddress = await ChronoLogDeployment.DeployContractAsync(web3, msAbiChronoLog, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL).ConfigureAwait(false); return(msEngineContractAddress); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] Models.NewData contract, TraceWriter log) { // You need to have the geth running while running this code. command: c:\geth\>geth --testnet var _getAddress = "./geth.ipc"; var hashedContent = Hash(contract.Content); var ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress); var web3 = new Web3(ipcClient); // this will leave the account unlucked for 2 minutes Nethereum.Hex.HexTypes.HexBigInteger accountUnlockTime = new Nethereum.Hex.HexTypes.HexBigInteger(120); var accountPublicKey = "ACCOUNT_PUBLIC_KEY"; var accountPassword = "******"; // Unlock the caller's account with the given password var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(accountPublicKey, accountPassword, accountUnlockTime); var abi = @"[{""constant"":true,""inputs"":[],""name"":""Url"",""outputs"":[{""name"":"""",""type"":""string""}],""payable"":false,""stateMutability"":""view"",""type"":""function""},{""constant"":false,""inputs"":[{""name"":""url"",""type"":""string""},{""name"":""hashContent"",""type"":""string""}],""name"":""AddPostContract"",""outputs"":[],""payable"":false,""stateMutability"":""nonpayable"",""type"":""function""},{""constant"":true,""inputs"":[],""name"":""HashContent"",""outputs"":[{""name"":"""",""type"":""string""}],""payable"":false,""stateMutability"":""view"",""type"":""function""}]"; var byteCode = "6060604052341561000f57600080fd5b6104578061001e6000396000f300606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d21df8c1461005c578063a2da9d08146100ea578063b0e4a8601461018a575b600080fd5b341561006757600080fd5b61006f610218565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100af578082015181840152602081019050610094565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100f557600080fd5b610188600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506102b6565b005b341561019557600080fd5b61019d6102e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dd5780820151818401526020810190506101c2565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102ae5780601f10610283576101008083540402835291602001916102ae565b820191906000526020600020905b81548152906001019060200180831161029157829003601f168201915b505050505081565b81600090805190602001906102cc929190610386565b5080600190805190602001906102e3929190610386565b505050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561037e5780601f106103535761010080835404028352916020019161037e565b820191906000526020600020905b81548152906001019060200180831161036157829003601f168201915b505050505081565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106103c757805160ff19168380011785556103f5565b828001600101855582156103f5579182015b828111156103f45782518255916020019190600101906103d9565b5b5090506104029190610406565b5090565b61042891905b8082111561042457600081600090555060010161040c565b5090565b905600a165627a7a72305820eb77a018bf2acdb7f9ea0a12c1ca4c23cfc215fa49cbdb1152c79814db0dbef60029"; var compiledContract = web3.Eth.GetContract(abi, byteCode); var function = compiledContract.GetFunction("AddPostContract"); var ret = function.CallAsync <>(contract.Url, hashedContent); }
public static async Task <List <string> > DeployContracts(string psPassword, string psSenderAddress, string psWeb3HttpUrl) { var web3 = GetWeb3(psPassword, psWeb3HttpUrl); var EngineDeployment = new Wonka.Eth.Autogen.WonkaEngine.WonkaEngineDeployment(); var RegistryDeployment = new Wonka.Eth.Autogen.WonkaRegistry.WonkaRegistryDeployment(); var TestCntDeployment = new Wonka.Eth.Autogen.WonkaTestContract.WonkaTestContractDeployment(); Nethereum.Hex.HexTypes.HexBigInteger nEngineGas = new Nethereum.Hex.HexTypes.HexBigInteger(8388608); Nethereum.Hex.HexTypes.HexBigInteger nDefaultGas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); string sWonkaABI = Wonka.Eth.Autogen.WonkaEngine.WonkaEngineDeployment.ABI; string sRegistryABI = Wonka.Eth.Autogen.WonkaRegistry.WonkaRegistryDeployment.ABI; string sTestContractABI = Wonka.Eth.Autogen.WonkaTestContract.WonkaTestContractDeployment.ABI; string sEngineContractAddress = await EngineDeployment.DeployContractAsync(web3, sWonkaABI, psSenderAddress, nEngineGas, psWeb3HttpUrl).ConfigureAwait(false); string sRegistryContractAddress = await RegistryDeployment.DeployContractAsync(web3, sRegistryABI, psSenderAddress, nDefaultGas, psWeb3HttpUrl).ConfigureAwait(false); string sTestContractAddress = await TestCntDeployment.DeployContractAsync(web3, sTestContractABI, psSenderAddress, nDefaultGas, psWeb3HttpUrl).ConfigureAwait(false); return(new List <string>() { sEngineContractAddress, sRegistryContractAddress, sTestContractAddress }); }
private Nethereum.Hex.HexTypes.HexBigInteger getNewTxCount() { Nethereum.Hex.HexTypes.HexBigInteger ret = new Nethereum.Hex.HexTypes.HexBigInteger(_curTxCount); _curTxCount = new Nethereum.Hex.HexTypes.HexBigInteger(_curTxCount.Value + new BigInteger(1)); return(ret); }
public void ResetValueMethod(string psAttrName, string psAttrValue) { var contract = GetContract(); var gas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); var setValueFunction = contract.GetFunction("setValueOnRecord"); var setReceipt = setValueFunction.SendTransactionAsync(msSenderAddress, gas, null, msSenderAddress, psAttrName, psAttrValue).Result; }
public ContractParam(DeployContractVM vM) { SenderAddress = vM.SellerAddress; GasLimit = new Nethereum.Hex.HexTypes.HexBigInteger(vM.GasLimit); var amount = new Nethereum.Hex.HexTypes.HexBigInteger(vM.EtherToPay); GetV = new object[3]; GetV[0] = vM.BuyerAddress; GetV[1] = vM.EscrowHolderAddress; GetV[2] = vM.EtherToPay; }
public async Task <string> PayAsync(string address, decimal value) { var wei = UnitConversion.Convert.ToWei(new BigDecimal(value)); var amount = new Nethereum.Hex.HexTypes.HexBigInteger(wei); var data = await web3.Eth.TransactionManager.SendTransactionAsync(account.Address, address, amount); var result = await web3.Eth.TransactionManager.TransactionReceiptService.PollForReceiptAsync(data); var blocknumber = result.BlockNumber; Console.WriteLine("block number: " + blocknumber.Value); return(data); }
private async void sendEthTransactionButton_Click(object sender, EventArgs e) { try { var receipientAddress = receipientAddressTextBox.Text.Trim(); var ethAmount = decimal.Parse(ethToSendTextBox.Text.Trim()); // exponent -18 var ethInWei = UnitConversion.Convert.ToWeiFromUnit(ethAmount, UnitConversion.Convert.GetEthUnitValue(UnitConversion.EthUnit.Ether)); var ethInWeiHex = new Nethereum.Hex.HexTypes.HexBigInteger(ethInWei); var gasPrice = decimal.Parse(gasPriceToUseTextBox.Text.Trim()); // exponent -9 var gasPriceInWei = UnitConversion.Convert.ToWei(gasPrice, 9); var gasPriceInWeiHex = new Nethereum.Hex.HexTypes.HexBigInteger(gasPriceInWei); var gas = decimal.Parse(gasUsedToUseTextBox.Text.Trim()); // exponent 0 var gasInWei = new BigInteger(gas); var gasInWeiHex = new Nethereum.Hex.HexTypes.HexBigInteger(gasInWei); var tx = new Nethereum.RPC.Eth.DTOs.TransactionInput(null, receipientAddress, Account.Address, gasInWeiHex, gasPriceInWeiHex, ethInWeiHex); sentTransactionDataTextBox.Text = JsonConvert.SerializeObject(tx); var txSigned = await Web3.Eth.TransactionManager.SignTransactionRetrievingNextNonceAsync(tx); sentTransactionHashTextBox.Text = $"Signed Tx: {txSigned}"; // sanity check because Ganache UI was displaying rounded up numbers which was truly killing me inside. //{ // var gasssss = BigInteger.Subtract(Balance, BigInteger.Multiply(gasInWeiHex, gasPriceInWeiHex)); // var final = BigInteger.Subtract(gasssss, ethInWeiHex); // Console.WriteLine($"{Balance.ToString()} = {final.ToString()} + {BigInteger.Multiply(gasInWeiHex, gasPriceInWeiHex).ToString()} + {ethInWeiHex.Value.ToString()}"); //} var txHash = await Web3.Eth.TransactionManager.SendTransactionAsync(tx); var txReceipt = await Web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(txHash); // Give users a receipt //hashAndReceiptTextBox.Text = string.Empty; //hashAndReceiptTextBox.AppendText($"Transaction Hash: {txHash}{Environment.NewLine}{Environment.NewLine}{Environment.NewLine}"); hashAndReceiptTextBox.Text = $"Receipt: {JsonConvert.SerializeObject(txReceipt)}"; InitializeBalance(); } catch (Exception ex) { MessageBox.Show(JsonConvert.SerializeObject(ex)); } }
static async Task getLatestBlockNumber() { // Encode App Credentials as <username>:<password> var byteArray = Encoding.ASCII.GetBytes(USER + ":" + PASS); AuthenticationHeaderValue auth = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); // Create the RPC Client to talk to the Kaleido RPC endpoint using web3 IClient client = new RpcClient(new Uri(RPC_ENDPOINT), auth, null, null, null); var web3 = new Web3(client); //Now we can test the connection by calling some basic function // Get the latest block number in the chain latestBlockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync(); }
public string DeployWonka() { var web3 = GetWeb3(); var EngineDeployment = new Wonka.Eth.Autogen.WonkaEngine.WonkaEngineDeploymentClassic(); var RegistryDeployment = new Wonka.Eth.Autogen.WonkaRegistry.WonkaRegistryDeployment(); var TestCntDeployment = new Wonka.Eth.Autogen.WonkaTestContract.WonkaTestContractDeployment(); Nethereum.Hex.HexTypes.HexBigInteger nEngineGas = new Nethereum.Hex.HexTypes.HexBigInteger(8388608); Nethereum.Hex.HexTypes.HexBigInteger nDefaultGas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); msEngineContractAddress = EngineDeployment.DeployContract(web3, msAbiWonka, msSenderAddress, nEngineGas, CONST_ONLINE_TEST_CHAIN_URL); msRegistryContractAddress = RegistryDeployment.DeployContract(web3, msAbiRegistry, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL); msTestContractAddress = TestCntDeployment.DeployContract(web3, msAbiOrchTest, msSenderAddress, nDefaultGas, CONST_ONLINE_TEST_CHAIN_URL); return(msEngineContractAddress); }
public async Task <ActionResult> CreateContract(RouteCoinContractModel model) { var ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress); var web3 = new Web3(ipcClient); var gas = new Nethereum.Hex.HexTypes.HexBigInteger(300000); var balance = new Nethereum.Hex.HexTypes.HexBigInteger(120); // Unlock the caller's account with the given password var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(model.BuyerPublicKey, model.BuyerAccountPassword, _accountUnlockTime); var transactionHash = await web3.Eth.DeployContract.SendRequestAsync(_abi, _byteCode, model.BuyerPublicKey, gas, model.ContractPrice * 10, model.DestinationAddress, model.ContractGracePeriod, model.ContractPrice); return(RedirectToAction("ContractCreated", new { transactionHash = transactionHash })); }
public async Task <string> SendToNetwork(string functionData) { string errMessage = string.Empty; string txId = null; bool retry = true; int retryCount = 0; while (retry) { retryCount++; if (_curTxCount == null) { _curTxCount = await _web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(_senderAddress); } var gasPriceGwei = await _web3.Eth.GasPrice.SendRequestAsync(); var gasPrice = new BigInteger(UnitConversion.Convert.FromWei(gasPriceGwei)); var encoded = Web3.OfflineTransactionSigner.SignTransaction(_senderPK, new BigInteger(3), _contractAddress, 0, getNewTxCount().Value, gasPriceGwei, 300000, functionData); try { txId = await _web3.Eth.Transactions.SendRawTransaction.SendRequestAsync("0x" + encoded); } catch (System.Exception e) { errMessage = e.Message; Thread.Sleep(10000); } if (txId != null || retryCount > 10) { retry = false; } else { _curTxCount = null; } } return(txId); }
private bool ExecuteRulesEngineOnTheBlockchain() { bool bValid = true; var contract = GetContract(); var executeRulesEngineFunction = contract.GetFunction("execute"); // var gas = executeRulesEngineFunction.EstimateGasAsync(sSenderAddress).Result; var gas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); // var receiptExecuteEngine = // executeRulesEngineFunction.SendTransactionAsync(msSenderAddress, gas, null, msSenderAddress).Result; bValid = executeRulesEngineFunction.CallAsync <bool>(msSenderAddress, gas, null, msSenderAddress).Result; return(bValid); }
public async Task <string> GetEventData(string eventName, string filterBlockNumber) { //Infura doesn't support the filters, so have to request GetAllChanges. //In case using another service, could be done this way: //var filterAll = await hashCreated.CreateFilterAsync(); //var log = await hashCreated.GetFilterChanges<HashCreatedEvent>(filterAll); var contract = _web3.Eth.GetContract(_abi, _contractAddress); var hashCreated = contract.GetEvent(eventName);// "FileProofHashCreated" var filterAll = hashCreated.CreateFilterInput(new Nethereum.RPC.Eth.DTOs.BlockParameter(), null); var BlockNumber = new Nethereum.Hex.HexTypes.HexBigInteger(filterBlockNumber); var log = await hashCreated.GetAllChanges <HashCreatedEvent>(filterAll); var retTimestamp = log[0].Event.Timestamp.ToString(); var retGlobalHash = System.Convert.ToBase64String(log[0].Event.HeaderHash); return(JsonConvert.SerializeObject(new { Timestamp = retTimestamp, GlobalHash = retGlobalHash })); }
private void SerializeMetadataToBlockchain() { uint nAttrNum = 3; string sSenderAddress = msSenderAddress; var contract = GetContract(); var getAttrNumFunction = contract.GetFunction("getNumberOfAttributes"); var addAttrFunction = contract.GetFunction("addAttribute"); nAttrNum = getAttrNumFunction.CallAsync <uint>().Result; if (nAttrNum <= CONST_CONTRACT_ATTR_NUM_ON_START) { foreach (WonkaRefAttr TempAttr in moTargetAttrList) { var sAttrName = ""; if (TempAttr.AttrName.Length > 32) { sAttrName = TempAttr.AttrName.Trim().Replace(" ", "").Substring(0, 31); } else { sAttrName = TempAttr.AttrName.Trim().Replace(" ", ""); } uint MaxLen = (uint)TempAttr.MaxLength; uint MaxNumVal = 999999; // TempAttr.MaxValue; string DefVal = !String.IsNullOrEmpty(TempAttr.DefaultValue) ? TempAttr.DefaultValue : ""; bool IsString = !TempAttr.IsNumeric; bool IsNumeric = TempAttr.IsNumeric; // NOTE: Caused exception to be thrown // var gas = addAttrFunction.EstimateGasAsync("SomeAttr", 0, 0, "SomeVal", false, false).Result; var gas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); var receiptAddAttribute = addAttrFunction.SendTransactionAsync(sSenderAddress, gas, null, sAttrName, MaxLen, MaxNumVal, DefVal, IsString, IsNumeric).Result; } } }
public RuleTreeReport ExecuteWithReport(WonkaBreRulesEngine poRulesEngine, bool pbValidateWithinTransaction, WonkaBreSource poFlagSource) { WonkaRefEnvironment RefEnv = WonkaRefEnvironment.GetInstance(); WonkaRefAttr CurrValueAttr = RefEnv.GetAttributeByAttrName("AccountCurrValue"); WonkaRefAttr ReviewFlagAttr = RefEnv.GetAttributeByAttrName("AuditReviewFlag"); Dictionary <string, string> PrdKeys = new Dictionary <string, string>(); var contract = GetContract(); var executeWithReportFunction = contract.GetFunction(CONST_CONTRACT_FUNCTION_EXEC_RPT); RuleTreeReport ruleTreeReport = null; if (pbValidateWithinTransaction) { var executeGetLastReportFunction = contract.GetFunction(CONST_CONTRACT_FUNCTION_GET_LAST_RPT); // NOTE: Caused exception to be thrown // var gas = executeWithReportFunction.EstimateGasAsync(msSenderAddress).Result; var gas = new Nethereum.Hex.HexTypes.HexBigInteger(1000000); WonkaProduct OrchContractCurrValues = poRulesEngine.AssembleCurrentProduct(new Dictionary <string, string>()); string sFlagBeforeOrchestrationAssignment = RetrieveValueMethod(poFlagSource, ReviewFlagAttr.AttrName); string sValueBeforeOrchestrationAssignment = RetrieveValueMethod(poFlagSource, CurrValueAttr.AttrName); var receiptAddAttribute = executeWithReportFunction.SendTransactionAsync(msSenderAddress, gas, null, msSenderAddress).Result; string sFlagAfterOrchestrationAssignment = RetrieveValueMethod(poFlagSource, ReviewFlagAttr.AttrName); string sValueAfterOrchestrationAssignment = RetrieveValueMethod(poFlagSource, CurrValueAttr.AttrName); ruleTreeReport = executeGetLastReportFunction.CallDeserializingToObjectAsync <RuleTreeReport>().Result; } else { ruleTreeReport = executeWithReportFunction.CallDeserializingToObjectAsync <RuleTreeReport>(msSenderAddress).Result; } return(ruleTreeReport); }
public static double FromHexWei(this string input, int toUnit) { if (input == "0x0") { return(0); } if (input.StartsWith("0x")) { input = input.Remove(0, 2); } Nethereum.Hex.HexTypes.HexBigInteger value = new Nethereum.Hex.HexTypes.HexBigInteger(input); return((double)Nethereum.Web3.Web3.Convert.FromWei(value, toUnit)); if (!BigInteger.TryParse(input, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out var result)) { return(0); } return((double)BigInteger.Divide(result, (toUnit == 0 ? 1 : (BigInteger)Math.Pow(10, toUnit)))); }
public async Task ShouldMintNftOfType() { // Arrange Function <MintNftOfTypeFunctionInput> aMintNftOfTypeFunction = NftCreator.Instance.GetFunction <MintNftOfTypeFunctionInput>(); Nethereum.Contracts.ContractHandlers.IContractTransactionHandler <MintNftOfTypeFunctionInput> mintNftOfTypeFunctionHandler = NethWeb3.Instance.Eth.GetContractTransactionHandler <MintNftOfTypeFunctionInput>(); var aMintNftOfTypeFunctionMessage = new MintNftOfTypeFunctionInput { NftId = 4, MutableDataString = "The Third Minted NFT!Take 3", ImmutableDataString = "This Is MintingTest 3" }; Nethereum.Hex.HexTypes.HexBigInteger gasEstimate = await mintNftOfTypeFunctionHandler.EstimateGasAsync(NftCreatorAddresses.NewNftCreatorRopstenAddress, aMintNftOfTypeFunctionMessage); aMintNftOfTypeFunctionMessage.Gas = gasEstimate.Value; gasEstimate.Value.ShouldBeGreaterThan(0); }
public async Task ShouldAddNewNftTemplate() { // Arrange Function <AddNewTemplateFunctionInput> aAddNewTemplateFunction = NftCreator.Instance.GetFunction <AddNewTemplateFunctionInput>(); Nethereum.Contracts.ContractHandlers.IContractTransactionHandler <AddNewTemplateFunctionInput> addNewTemplateFunctionHandler = NethWeb3.Instance.Eth.GetContractTransactionHandler <AddNewTemplateFunctionInput>(); var getNftRequest = new GetNftTypesServiceRequest(); GetNftTypesServiceResponse totalTypesBeforeTest = await Mediator.Send(getNftRequest); var aAddNewTemplateFunctionMessage = new AddNewTemplateFunctionInput { NewTemplateName = "Purchase Order", NewTemplateSymbol = "POR", NewTemplateAttachedTokens = 0, NewTemplateMintLimit = 10 }; Nethereum.Hex.HexTypes.HexBigInteger gasEstimate = await addNewTemplateFunctionHandler.EstimateGasAsync(NftCreatorAddresses.NftCreatorRinkebyAddress, aAddNewTemplateFunctionMessage); aAddNewTemplateFunctionMessage.Gas = gasEstimate.Value; gasEstimate.Value.ShouldBeGreaterThan(0); // Leaving this commented out as this is the action that makes a new template // it's been tested and works //Nethereum.RPC.Eth.DTOs.TransactionReceipt addingTemplateTransactionReceipt = await addNewTemplateFunctionHandler.SendRequestAndWaitForReceiptAsync(NftCreatorAddresses.NftCreatorRinkebyAddress, aAddNewTemplateFunctionMessage); //addingTemplateTransactionReceipt.ShouldNotBe(null); //GetNftTypesServiceResponse totalTypesAfterTest = await Mediator.Send(getNftRequest); //totalTypesAfterTest.TotalNftTypes.ShouldBeGreaterThan(totalTypesBeforeTest.TotalNftTypes); }
public IEnumerator SendRequest(Nethereum.Hex.HexTypes.HexBigInteger filterId) { var request = _ethUninstallFilter.BuildRequest(filterId); yield return(SendRequest(request)); }
public IEnumerator SendRequest(Nethereum.Hex.HexTypes.HexBigInteger filterId) { var request = _ethGetFilterLogsForEthNewFilter.BuildRequest(filterId); yield return(SendRequest(request)); }
public IEnumerator SendRequest(Nethereum.Hex.HexTypes.HexBigInteger blockNumber, Nethereum.Hex.HexTypes.HexBigInteger transactionIndex) { var request = _ethGetTransactionByBlockNumberAndIndex.BuildRequest(blockNumber, transactionIndex); yield return(SendRequest(request)); }
public IEnumerator SendRequest(System.String blockHash, Nethereum.Hex.HexTypes.HexBigInteger transactionIndex) { var request = _ethGetTransactionByBlockHashAndIndex.BuildRequest(blockHash, transactionIndex); yield return(SendRequest(request)); }
public ViewTokenDataFunctionInput() { FromAddress = TestEthAccounts.TestEthAccountAddress; Gas = new Nethereum.Hex.HexTypes.HexBigInteger(900000); AmountToSend = new Nethereum.Hex.HexTypes.HexBigInteger(0); }
public IEnumerator SendRequest(Nethereum.Hex.HexTypes.HexBigInteger filterId) { var request = _ethGetFilterChangesForBlockOrTransaction.BuildRequest(filterId); yield return(SendRequest(request)); }