public string InsertMemberProposal(int proposalId, string userSenderAddress, string email) { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); var contract = web3.Eth.GetContract(ABI, CONTRACTADDRESS); var Func = contract.GetFunction("addMemberToProposal"); var Event = contract.GetEvent("Voted"); var filterAll = Event.CreateFilterAsync().Result; var unlockResult = web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, 60).Result; web3.TransactionManager.DefaultGas = BigInteger.Parse("290000"); web3.TransactionManager.DefaultGasPrice = BigInteger.Parse("290000"); var resultPro = Func.SendTransactionAsync(senderAddress, proposalId, userSenderAddress, email).Result; var resultTran = MineAndGetReceiptAsync(web3, resultPro).Result; var log = Event.GetFilterChanges <VotedEvent>(filterAll).Result; return(log[0].Event.Result.ToString()); }
public List <Option> getResults(int proposalId) { List <Option> options = new List <Option>(); var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); var contract = web3.Eth.GetContract(ABI, CONTRACTADDRESS); var FuncLenth = contract.GetFunction("proposalsoptionsCount"); var Func = contract.GetFunction("getOptioninfo"); var result = FuncLenth.CallAsync <int>(proposalId).Result; for (int i = 0; i < result; i++) { var opt = Func.CallDeserializingToObjectAsync <Option>(proposalId, i).Result; // options.Add(opt); if (!string.IsNullOrEmpty(opt.Name)) { options.Add(opt); //i = result; //out //options.Clear(); } } return(options); }
public List <Vote> getVotes(int proposalId) { List <Vote> votes = new List <Vote>(); var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); var contract = web3.Eth.GetContract(ABI, CONTRACTADDRESS); var FuncLenth = contract.GetFunction("proposalsVotes"); var Func = contract.GetFunction("getVoteinfo"); var result = FuncLenth.CallAsync <int>(proposalId).Result; for (int i = 0; i < result; i++) { var myVote = Func.CallDeserializingToObjectAsync <Vote>(proposalId, i).Result; votes.Add(myVote); if (myVote.OptionId == 300) { i = result; //out votes.Clear(); } } return(votes); }
public async Task ShouldBeAbleToTransferBetweenAccountsUsingThePrivateKey() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var addressTo = "0x13f022d72158410433cbd66f5dd8bf6d2d129924"; var password = "******"; var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; // The default account is an account which is mananaged by the user var account = new Account(privateKey); var web3 = new Web3.Web3(account); //The transaction receipt polling service is a simple utility service to poll for receipts until mined var transactionPolling = new TransactionReceiptPollingService(web3); var currentBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); //assumed client is mining already //when sending a transaction using an Account, a raw transaction is signed and send using the private key var transactionReceipt = await transactionPolling.SendRequestAsync(() => web3.TransactionManager.SendTransactionAsync(account.Address, addressTo, new HexBigInteger(20)) ); var newBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); Assert.Equal(currentBalance.Value + 20, newBalance.Value); }
public async void Test() { var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var account = AccountFactory.GetAccount(); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, account.Address, new HexBigInteger(4000000))); var coinService = new CoinService(web3, contractAddress); var txn = await coinService.MintAsync(account.Address, account.Address, 100, new HexBigInteger(4000000)); var receipt = await pollingService.PollForReceiptAsync(txn); var eventSent = coinService.GetEventSent(); var sent = await eventSent.GetAllChanges <SentEventDTO>(eventSent.CreateFilterInput()); txn = await coinService.RaiseEventMetadataAsync(account.Address, account.Address, 100, "Description", "The metadata created here blah blah blah", new HexBigInteger(4000000)); receipt = await pollingService.PollForReceiptAsync(txn); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent.GetAllChanges <MetadataEventEventDTO>( metadataEvent.CreateFilterInput(new BlockParameter(receipt.BlockNumber), null)); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), account.Address.ToLower()); Assert.Equal(100, result.Id); Assert.Equal("The metadata created here blah blah blah", result.Metadata); Assert.Equal("Description", result.Description); }
public async void TestChinese() { var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var accountAddresss = EthereumClientIntegrationFixture.AccountAddress; var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, accountAddresss, new HexBigInteger(4000000))) .ConfigureAwait(false); var coinService = new CoinService(web3, contractAddress); var input = new RaiseEventMetadataInput { Creator = accountAddresss, Id = 101, Description = @"中国,China", Metadata = @"中国,China" }; var txn = await coinService.RaiseEventMetadataAsync(accountAddresss, input, new HexBigInteger(4000000)) .ConfigureAwait(false); var receipt = await pollingService.PollForReceiptAsync(txn).ConfigureAwait(false); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent .GetAllChangesAsync <MetadataEventEventDTO>(metadataEvent.CreateFilterInput()).ConfigureAwait(false); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), accountAddresss.ToLower()); Assert.Equal(101, result.Id); Assert.Equal(@"中国,China", result.Metadata); Assert.Equal(@"中国,China", result.Description); }
public async Task ShouldBeAbleToTransferBetweenAccountsUsingManagedAccount() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var addressTo = "0x13f022d72158410433cbd66f5dd8bf6d2d129924"; var password = "******"; // A managed account is an account which is maintained by the client (Geth / Parity) var account = new ManagedAccount(senderAddress, password); var web3 = new Web3.Web3(account); //The transaction receipt polling service is a simple utility service to poll for receipts until mined var transactionPolling = new TransactionReceiptPollingService(web3); var currentBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); //assumed client is mining already //When sending the transaction using the transaction manager for a managed account, personal_sendTransaction is used. var transactionReceipt = await transactionPolling.SendRequestAsync(() => web3.TransactionManager.SendTransactionAsync(account.Address, addressTo, new HexBigInteger(20)) ); var newBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); Assert.Equal(currentBalance.Value + 20, newBalance.Value); }
public async Task ShouldBeAbleToTransferBetweenAccountsLoadingEncryptedPrivateKey() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var addressTo = "0x13f022d72158410433cbd66f5dd8bf6d2d129924"; var password = "******"; var keyStoreEncryptedJson = @"{""crypto"":{""cipher"":""aes-128-ctr"",""ciphertext"":""b4f42e48903879b16239cd5508bc5278e5d3e02307deccbec25b3f5638b85f91"",""cipherparams"":{""iv"":""dc3f37d304047997aa4ef85f044feb45""},""kdf"":""scrypt"",""mac"":""ada930e08702b89c852759bac80533bd71fc4c1ef502291e802232b74bd0081a"",""kdfparams"":{""n"":65536,""r"":1,""p"":8,""dklen"":32,""salt"":""2c39648840b3a59903352b20386f8c41d5146ab88627eaed7c0f2cc8d5d95bd4""}},""id"":""19883438-6d67-4ab8-84b9-76a846ce544b"",""address"":""12890d2cce102216644c59dae5baed380d84830c"",""version"":3}"; //this is your wallet key file which can be found on //Linux: ~/.ethereum/keystore //Mac: /Library/Ethereum/keystore //Windows: %APPDATA%/Ethereum //if not using portable or netstandard (^net45) you can use LoadFromKeyStoreFile to load the file from the file system. var account = Account.LoadFromKeyStore(keyStoreEncryptedJson, password); var web3 = new Web3.Web3(account); //The transaction receipt polling service is a simple utility service to poll for receipts until mined var transactionPolling = new TransactionReceiptPollingService(web3); var currentBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); //assumed client is mining already //when sending a transaction using an Account, a raw transaction is signed and send using the private key var transactionReceipt = await transactionPolling.SendRequestAsync(() => web3.TransactionManager.SendTransactionAsync(account.Address, addressTo, new HexBigInteger(20)) ); var newBalance = await web3.Eth.GetBalance.SendRequestAsync(addressTo); Assert.Equal(currentBalance.Value + 20, newBalance.Value); }
// [HttpPost] public async Task <TransactionReceipt> TransferETH(string senderAddr, string senderPassword, string receiverAddr, decimal amount) { var web3 = new Nethereum.Web3.Web3(ClientURL); var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(senderAddr, senderPassword, UnLockAccountDurationInSeconds); unlockResult = true; if (unlockResult != true) { throw new Exception("Account not unlocked"); } amount = 1; var amountInWei = Web3.Convert.ToWei(amount); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var receipt = await pollingService.SendRequestAndWaitForReceiptAsync(new TransactionInput { From = senderAddr, To = receiverAddr, Value = new HexBigInteger(amountInWei) }); return(receipt); }
public async void ShouldBeAbleToHandleNoncesOfMultipleTxnSingleWeb3SingleThreaded() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; var multiplier = 7; var web3 = new Web3.Web3(new Account(privateKey), ClientFactory.GetClient()); var txn1 = await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier); var txn2 = await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier); var txn3 = await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier); var pollService = new TransactionReceiptPollingService(web3.TransactionManager); var receipt1 = pollService.PollForReceiptAsync(txn1); var receipt2 = pollService.PollForReceiptAsync(txn2); var receipt3 = pollService.PollForReceiptAsync(txn3); Assert.NotNull(receipt1); Assert.NotNull(receipt2); Assert.NotNull(receipt3); }
public async void ShouldDeployAContractWithConstructor() { using (var testrpcRunner = new TestRPCEmbeddedRunner()) { try { testrpcRunner.RedirectOuputToDebugWindow = true; testrpcRunner.StartTestRPC(); var web3 = new Web3.Web3(); var addressFrom = (await web3.Eth.Accounts.SendRequestAsync())[0]; var transactionService = new TransactionReceiptPollingService(web3.TransactionManager); var previousVersionAddress = "0x12890d2cce102216644c59dae5baed380d84830c"; var registrySevice = await UportRegistryService.DeployContractAndGetServiceAsync(transactionService, web3, addressFrom, previousVersionAddress, new HexBigInteger(4712388)); Assert.Equal(previousVersionAddress, await registrySevice.PreviousPublishedVersionAsyncCall()); } finally { testrpcRunner.StopTestRPC(); } } }
public async void TestChinese() { var account = new Account("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"); var web3 = new Web3(account, ClientFactory.GetClient()); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, account.Address, new HexBigInteger(4000000))); var coinService = new CoinService(web3, contractAddress); var input = new RaiseEventMetadataInput() { Creator = account.Address, Id = 101, Description = @"中国,China", Metadata = @"中国,China" }; var txn = await coinService.RaiseEventMetadataAsync(account.Address, input, new HexBigInteger(4000000)); var receipt = await pollingService.PollForReceiptAsync(txn); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent.GetAllChanges <MetadataEventEventDTO>(metadataEvent.CreateFilterInput()); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), account.Address.ToLower()); Assert.Equal(result.Id, 101); Assert.Equal(result.Metadata, @"中国,China"); Assert.Equal(result.Description, @"中国,China"); }
public async Task ShouldBeAbleToDeployAContractUsingPrivateKey() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; var multiplier = 7; var web3 = new Web3(new Account(privateKey), ClientFactory.GetClient()); var web3Geth = new Web3Geth(ClientFactory.GetClient()); await web3Geth.Miner.Start.SendRequestAsync(); var transactionPolling = new TransactionReceiptPollingService(web3); //assumed client is mining already var contractAddress = await transactionPolling.DeployContractAndGetAddressAsync( () => web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), multiplier) ); await web3Geth.Miner.Stop.SendRequestAsync(); var contract = web3.Eth.GetContract(abi, contractAddress); var multiplyFunction = contract.GetFunction("multiply"); var result = await multiplyFunction.CallAsync <int>(7); Assert.Equal(49, result); }
public async Task ShouldBeAbleToDeployAContractUsingPersonalUnlock() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; var multiplier = 7; var web3 = new Web3(new ManagedAccount(senderAddress, password), ClientFactory.GetClient()); var transactionPolling = new TransactionReceiptPollingService(web3); var web3Geth = new Web3Geth(ClientFactory.GetClient()); await web3Geth.Miner.Start.SendRequestAsync(); var contractAddress = await transactionPolling.DeployContractAndGetAddressAsync( () => web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), multiplier) ); await web3Geth.Miner.Stop.SendRequestAsync(); var contract = web3.Eth.GetContract(abi, contractAddress); var multiplyFunction = contract.GetFunction("multiply"); var result = await multiplyFunction.CallAsync <int>(7); Assert.Equal(49, result); }
public async void ShouldBeAbleTransferTokensUsingTheHdWallet() { var wallet = new Wallet(Words, Password); var account = wallet.GetAccount(0); var web3 = new Web3.Web3(account, _ethereumClientIntegrationFixture.GetWeb3().Client); ulong totalSupply = 1000000; var contractByteCode = "0x6060604052341561000f57600080fd5b604051602080610711833981016040528080519150505b60018054600160a060020a03191633600160a060020a0390811691909117918290556000838155911681526002602052604090208190555b505b6106a28061006f6000396000f300606060405236156100a15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100a6578063095ea7b31461013157806318160ddd1461016757806323b872dd1461018c578063313ce567146101c857806370a08231146101f15780638da5cb5b1461022257806395d89b4114610251578063a9059cbb146102dc578063dd62ed3e14610312575b600080fd5b34156100b157600080fd5b6100b9610349565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156100f65780820151818401525b6020016100dd565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013c57600080fd5b610153600160a060020a0360043516602435610380565b604051901515815260200160405180910390f35b341561017257600080fd5b61017a6103ed565b60405190815260200160405180910390f35b341561019757600080fd5b610153600160a060020a03600435811690602435166044356103f4565b604051901515815260200160405180910390f35b34156101d357600080fd5b6101db610510565b60405160ff909116815260200160405180910390f35b34156101fc57600080fd5b61017a600160a060020a0360043516610515565b60405190815260200160405180910390f35b341561022d57600080fd5b610235610534565b604051600160a060020a03909116815260200160405180910390f35b341561025c57600080fd5b6100b9610543565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156100f65780820151818401525b6020016100dd565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102e757600080fd5b610153600160a060020a036004351660243561057a565b604051901515815260200160405180910390f35b341561031d57600080fd5b61017a600160a060020a0360043581169060243516610649565b60405190815260200160405180910390f35b60408051908101604052601a81527f4578616d706c6520466978656420537570706c7920546f6b656e000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000545b90565b600160a060020a0383166000908152600260205260408120548290108015906104445750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b80156104505750600082115b80156104755750600160a060020a038316600090815260026020526040902054828101115b1561050457600160a060020a0380851660008181526002602081815260408084208054899003905560038252808420338716855282528084208054899003905594881680845291905290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001610508565b5060005b5b9392505050565b601281565b600160a060020a0381166000908152600260205260409020545b919050565b600154600160a060020a031681565b60408051908101604052600581527f4649584544000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a0333166000908152600260205260408120548290108015906105a35750600082115b80156105c85750600160a060020a038316600090815260026020526040902054828101115b1561063a57600160a060020a033381166000818152600260205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060016103e7565b5060006103e7565b5b92915050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b929150505600a165627a7a72305820ec01add6c7f9d88976180c397e2a5b2e9f8fc1f95f5abb00e2a4c9dbf7bcfaf20029"; var abi = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"; var receipt = await web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync(abi, contractByteCode, account.Address, new HexBigInteger(3000000), null, totalSupply); var standarErc20Service = new StandardTokenService(web3, receipt.ContractAddress); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var transactionHash = await standarErc20Service.TransferRequestAsync( "0x98f5438cDE3F0Ff6E11aE47236e93481899d1C47", 10); var receiptSend = await pollingService.PollForReceiptAsync(transactionHash); var balance = await standarErc20Service.BalanceOfQueryAsync("0x98f5438cDE3F0Ff6E11aE47236e93481899d1C47"); Assert.Equal(10, balance); }
public async Task <int> ShouldBeAbleToConnectTo7NodesPrivate() { var ipAddress = DefaultSettings.QuorumIPAddress; var node1Port = "8545"; var urlNode1 = ipAddress + ":" + node1Port; var address = "0x274ab43196161928d04143cb6ee56429bbc38da1"; var abi = "[{'constant':true,'inputs':[],'name':'totalSupply','outputs':[{'name':'','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'','type':'address'}],'name':'issuers','outputs':[{'name':'','type':'bool'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'','type':'address'}],'name':'accounts','outputs':[{'name':'bankAccount','type':'bytes12'},{'name':'id','type':'address'},{'name':'bankId','type':'address'},{'name':'balance','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'','type':'address'}],'name':'banks','outputs':[{'name':'id','type':'address'},{'name':'name','type':'bytes32'},{'name':'balance','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'inputs':[],'payable':false,'stateMutability':'nonpayable','type':'constructor'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_issuer','type':'address'},{'indexed':true,'name':'_bank','type':'address'},{'indexed':false,'name':'_amount','type':'uint256'},{'indexed':false,'name':'_totalSupply','type':'uint256'}],'name':'Issued','type':'event'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_id','type':'address'},{'indexed':false,'name':'_name','type':'string'}],'name':'BankCreated','type':'event'},{'anonymous':false,'inputs':[{'indexed':false,'name':'_bankAddress','type':'address'},{'indexed':false,'name':'_accountAddress','type':'address'}],'name':'AccountCreated','type':'event'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_bankAddress','type':'address'},{'indexed':true,'name':'_accountAddress','type':'address'},{'indexed':false,'name':'_amount','type':'uint256'}],'name':'CashedIn','type':'event'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_accountAddress','type':'address'},{'indexed':true,'name':'_bankAddress','type':'address'},{'indexed':false,'name':'_amount','type':'uint256'}],'name':'CashedOut','type':'event'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_from','type':'address'},{'indexed':true,'name':'_to','type':'address'},{'indexed':false,'name':'_amount','type':'uint256'}],'name':'Transfered','type':'event'},{'constant':true,'inputs':[{'name':'_id','type':'address'}],'name':'isIssuer','outputs':[{'name':'','type':'bool'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':false,'inputs':[{'name':'_amount','type':'uint256'},{'name':'_bank_address','type':'address'}],'name':'issue','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':false,'inputs':[{'name':'_bankAddress','type':'address'},{'name':'_bankName','type':'string'}],'name':'createBank','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':true,'inputs':[{'name':'_id','type':'address'}],'name':'getBank','outputs':[{'name':'','type':'address'},{'name':'','type':'string'},{'name':'','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'_bank_address','type':'address'}],'name':'getBankBalance','outputs':[{'name':'','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':false,'inputs':[{'name':'_accountAddress','type':'address'},{'name':'_bankAccount','type':'string'}],'name':'createAccount','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':true,'inputs':[{'name':'_id','type':'address'}],'name':'getAccount','outputs':[{'name':'','type':'address'},{'name':'','type':'uint256'},{'name':'','type':'address'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'_bankAccount','type':'string'}],'name':'getAddressOfBankAccount','outputs':[{'name':'','type':'address'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':true,'inputs':[{'name':'_accountAddress','type':'address'}],'name':'getAccountBalance','outputs':[{'name':'','type':'uint256'}],'payable':false,'stateMutability':'view','type':'function'},{'constant':false,'inputs':[{'name':'_accountAddress','type':'address'},{'name':'_amount','type':'uint256'}],'name':'cashIn','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':false,'inputs':[{'name':'_amount','type':'uint256'}],'name':'cashOut','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'},{'constant':false,'inputs':[{'name':'_to','type':'string'},{'name':'_amount','type':'uint256'}],'name':'transfer','outputs':[],'payable':false,'stateMutability':'nonpayable','type':'function'}]"; var web3Node1 = new ConexionBC(urlNode1); var transactionService = new TransactionReceiptPollingService(web3Node1.TransactionManager); var account = await web3Node1.Eth.CoinBase.SendRequestAsync(); var contract = web3Node1.Eth.GetContract(abi, address); var functionSet = contract.GetFunction("accounts"); //set the private for var privateFor = new List <string>(new[] { "0x88f4549c58d5dc8a8374272a999222a639daa149" }); web3Node1.SetPrivateRequestParameters(privateFor); //send transaction var txnHash = await transactionService.SendRequestAndWaitForReceiptAsync(() => functionSet.SendTransactionAsync(account, 0)); var node1Value = await GetValue(abi, address, urlNode1); txnHash = await transactionService.SendRequestAndWaitForReceiptAsync(() => functionSet.SendTransactionAsync(account, 42)); //node1 return(node1Value = await GetValue(abi, address, urlNode1)); //private.set(4,{from:eth.coinbase,privateFor:["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]}); }
public string UpdateProposal(int proposalId, string proposalName, int startTime, int finishTime, int votationType, int advances, int minimumQuantitySelected, int maximumQuantitySelected) { advances -= 1; votationType -= 1; var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); var contract = web3.Eth.GetContract(ABI, CONTRACTADDRESS); var Func = contract.GetFunction("updateProposal"); var Event = contract.GetEvent("ProposalAdded"); var filterAll = Event.CreateFilterAsync().Result; var unlockResult = web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, 60).Result; web3.TransactionManager.DefaultGas = BigInteger.Parse("290000"); web3.TransactionManager.DefaultGasPrice = BigInteger.Parse("290000"); var resultPro = Func.SendTransactionAsync(senderAddress, proposalId, proposalName, startTime, finishTime, votationType, advances, minimumQuantitySelected, maximumQuantitySelected).Result; var resultTran = MineAndGetReceiptAsync(web3, resultPro).Result; var log = Event.GetFilterChanges <ProposalAddedEvent>(filterAll).Result; return(log[0].Event.proposalID.ToString()); }
public async void Test() { var account = new Account("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"); var web3 = new Web3(account, ClientFactory.GetClient()); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, account.Address, new HexBigInteger(4000000))); var coinService = new CoinService(web3, contractAddress); var txn = await coinService.MintAsync(account.Address, account.Address, 100, new HexBigInteger(4000000)); var receipt = await pollingService.PollForReceiptAsync(txn); var eventSent = coinService.GetEventSent(); var sent = await eventSent.GetAllChanges <SentEventDTO>(eventSent.CreateFilterInput()); txn = await coinService.RaiseEventMetadataAsync(account.Address, account.Address, 100, "Description", "The metadata created here blah blah blah", new HexBigInteger(4000000)); receipt = await pollingService.PollForReceiptAsync(txn); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent.GetAllChanges <MetadataEventEventDTO>(metadataEvent.CreateFilterInput(new BlockParameter(receipt.BlockNumber))); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), account.Address.ToLower()); Assert.Equal(result.Id, 100); Assert.Equal(result.Metadata, "The metadata created here blah blah blah"); Assert.Equal(result.Description, "Description"); }
public async void ShouldBeAbleToConnectTo7NodesPrivate() { var ipAddress = DefaultSettings.QuorumIPAddress; var node1Port = "22000"; var node2Port = "22001"; var node7Port = "22006"; var urlNode1 = ipAddress + ":" + node1Port; var urlNode2 = ipAddress + ":" + node2Port; var urlNode7 = ipAddress + ":" + node7Port; var address = "0x1932c48b2bf8102ba33b4a6b545c32236e342f34"; var abi = "[{ 'constant':true,'inputs':[],'name':'storedData','outputs':[{'name':'','type':'uint256'}],'payable':false,'type':'function'},{'constant':false,'inputs':[{'name':'x','type':'uint256'}],'name':'set','outputs':[],'payable':false,'type':'function'},{'constant':true,'inputs':[],'name':'get','outputs':[{'name':'retVal','type':'uint256'}],'payable':false,'type':'function'},{'inputs':[{'name':'initVal','type':'uint256'}],'type':'constructor'}]"; var web3Node1 = new Web3Quorum(urlNode1); var transactionService = new TransactionReceiptPollingService(web3Node1); var account = await web3Node1.Eth.CoinBase.SendRequestAsync(); var contract = web3Node1.Eth.GetContract(abi, address); var functionSet = contract.GetFunction("set"); //set the private for var privateFor = new List <string>(new[] { "ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc=" }); web3Node1.SetPrivateRequestParameters(privateFor); //send transaction var txnHash = await transactionService.SendRequestAsync(() => functionSet.SendTransactionAsync(account, 4)); var node1Value = await GetValue(abi, address, urlNode1); Assert.Equal(4, node1Value); var node2Value = await GetValue(abi, address, urlNode2); Assert.Equal(0, node2Value); var node7Value = await GetValue(abi, address, urlNode7); Assert.Equal(4, node7Value); txnHash = await transactionService.SendRequestAsync(() => functionSet.SendTransactionAsync(account, 42)); //node1 node1Value = await GetValue(abi, address, urlNode1); Assert.Equal(42, node1Value); node2Value = await GetValue(abi, address, urlNode2); Assert.Equal(0, node2Value); node7Value = await GetValue(abi, address, urlNode7); Assert.Equal(42, node7Value); //private.set(4,{from:eth.coinbase,privateFor:["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]}); }
public static async Task RunWriteTest(Web3 web3) { var listTasks = 500; var taskItems = new List <int>(); for (var i = 0; i < listTasks; i++) { taskItems.Add(i); } var numProcs = Environment.ProcessorCount; var concurrencyLevel = numProcs * 2; var concurrentDictionary = new ConcurrentDictionary <int, string>(concurrencyLevel, listTasks * 2); var sw = Stopwatch.StartNew(); Console.WriteLine("Deployment contracts:" + listTasks); await taskItems.ParallelForEachAsync(async (item, state) => //foreach (var item in taskItems) { var txnx = await StandardTokenService.DeployContractAsync(web3, new EIP20Deployment() { TokenName = "TST", InitialAmount = 1000, TokenSymbol = "TST" }); concurrentDictionary.TryAdd(item, txnx); } , maxDegreeOfParalellism : 10); sw.Stop(); Console.WriteLine("Done sending transactions in " + sw.ElapsedMilliseconds + "ms"); Console.WriteLine(); Console.WriteLine("Polling receipts...."); var pollService = new TransactionReceiptPollingService(web3.TransactionManager); for (var i = 0; i < listTasks; i++) { string txn = null; concurrentDictionary.TryGetValue(i, out txn); var receipt = await pollService.PollForReceiptAsync(txn); if (i == listTasks - 1) { Console.WriteLine("Last contract address:"); Console.WriteLine(receipt.ContractAddress); } } Console.WriteLine(); }
public async void ShouldBeAbleToHandleNoncesOfMultipleTxnMultipleWeb3sMultithreaded() { var senderAddress = EthereumClientIntegrationFixture.AccountAddress; var privateKey = EthereumClientIntegrationFixture.AccountPrivateKey; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; JsonRpc.Client.RpcClient.ConnectionTimeout = TimeSpan.FromSeconds(30.0); var multiplier = 7; var client = _ethereumClientIntegrationFixture.GetClient(); var nonceProvider = new InMemoryNonceService(senderAddress, client); //tested with 1000 var listTasks = 10; var taskItems = new List <int>(); for (var i = 0; i < listTasks; i++) { taskItems.Add(i); } var numProcs = Environment.ProcessorCount; var concurrencyLevel = numProcs * 2; var concurrentDictionary = new ConcurrentDictionary <int, string>(concurrencyLevel, listTasks * 2); Parallel.ForEach(taskItems, (item, state) => { var account = new Account(privateKey, EthereumClientIntegrationFixture.ChainId); account.NonceService = nonceProvider; var web3 = new Web3.Web3(account, client); // Wait for task completion synchronously in order to Parallel.ForEach work correctly var txn = web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier).Result; concurrentDictionary.TryAdd(item, txn); }); var web31 = new Web3.Web3(new Account(privateKey), client); var pollService = new TransactionReceiptPollingService(web31.TransactionManager); for (var i = 0; i < listTasks; i++) { string txn = null; concurrentDictionary.TryGetValue(i, out txn); var receipt = await pollService.PollForReceiptAsync(txn).ConfigureAwait(false); Assert.NotNull(receipt); } }
public async void ShouldBeAbleToHandleNoncesOfMultipleTxnMultipleWeb3sMultithreaded() { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; var multiplier = 7; var client = ClientFactory.GetClient(); var nonceProvider = new InMemoryNonceService(senderAddress, client); //tested with 1000 var listTasks = 10; var taskItems = new List <int>(); for (var i = 0; i < listTasks; i++) { taskItems.Add(i); } var numProcs = Environment.ProcessorCount; var concurrencyLevel = numProcs * 2; var concurrentDictionary = new ConcurrentDictionary <int, string>(concurrencyLevel, listTasks * 2); Parallel.ForEach(taskItems, (item, state) => { var account = new Account(privateKey); account.NonceService = nonceProvider; var web3 = new Web3.Web3(account, client); // Wait for task completion synchronously in order to Parallel.ForEach work correctly var txn = web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier).Result; concurrentDictionary.TryAdd(item, txn); }); var web31 = new Web3.Web3(new Account(privateKey), client); var pollService = new TransactionReceiptPollingService(web31.TransactionManager); for (var i = 0; i < listTasks; i++) { string txn = null; concurrentDictionary.TryGetValue(i, out txn); var receipt = await pollService.PollForReceiptAsync(txn); Assert.NotNull(receipt); } }
public ContractDemo CreateAccount() { //To full the new account var password = "******"; var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); string path = @"C:\Programathon\Nethereum-master\testchain\devChain\keystore\"; //Generate a private key pair using SecureRandom var ecKey = Nethereum.Signer.EthECKey.GenerateKey(); //Get the public address (derivied from the public key) var newAddress = ecKey.GetPublicAddress(); var privateKey = ecKey.GetPrivateKey(); //Create a store service, to encrypt and save the file using the web3 standard var service = new KeyStoreService(); var encryptedKey = service.EncryptAndGenerateDefaultKeyStoreAsJson(password, ecKey.GetPrivateKeyAsBytes(), newAddress); var fileName = service.GenerateUTCFileName(newAddress); //save the File using (var newfile = System.IO.File.CreateText(Path.Combine(path, fileName))) { newfile.Write(encryptedKey); newfile.Flush(); } var web3Geth = new Web3Geth(); var miningResult = web3Geth.Miner.Start.SendRequestAsync(6).Result; var currentBalance = web3.Eth.GetBalance.SendRequestAsync(newAddress).Result; //when sending a transaction using an Account, a raw transaction is signed and send using the private key var transactionReceipt = transactionPolling.SendRequestAsync(() => web3.TransactionManager.SendTransactionAsync(senderAddress, newAddress, new HexBigInteger(4000000000000000000)) ).Result; var newBalance = web3.Eth.GetBalance.SendRequestAsync(newAddress).Result; miningResult = web3Geth.Miner.Stop.SendRequestAsync().Result; ContractDemo d = new ContractDemo(); d.Address = newAddress; return(d); }
public async void ShouldBeAbleToHandleNoncesOfMultipleTxnMultipleWeb3sSingleThreaded() { var senderAddress = EthereumClientIntegrationFixture.AccountAddress; var privateKey = EthereumClientIntegrationFixture.AccountPrivateKey; var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""type"":""constructor""}]"; var byteCode = "0x60606040526040516020806052833950608060405251600081905550602b8060276000396000f3606060405260e060020a60003504631df4f1448114601a575b005b600054600435026060908152602090f3"; var multiplier = 7; var client = _ethereumClientIntegrationFixture.GetClient(); var nonceProvider = new InMemoryNonceService(senderAddress, client); var account = new Account(privateKey, EthereumClientIntegrationFixture.ChainId) { NonceService = nonceProvider }; var web31 = new Web3.Web3(account, client); var txn1 = await web31.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier).ConfigureAwait(false); var web32 = new Web3.Web3(account, client); var txn2 = await web32.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier).ConfigureAwait(false); var web33 = new Web3.Web3(account, client); var txn3 = await web33.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(900000), null, multiplier).ConfigureAwait(false); var pollService = new TransactionReceiptPollingService(web31.TransactionManager); var receipt1 = await pollService.PollForReceiptAsync(txn1).ConfigureAwait(false); var receipt2 = await pollService.PollForReceiptAsync(txn2).ConfigureAwait(false); var receipt3 = await pollService.PollForReceiptAsync(txn3).ConfigureAwait(false); Assert.NotNull(receipt1); Assert.NotNull(receipt2); Assert.NotNull(receipt3); }
public async void ShouldDeployAContractWithConstructor() { var web3 = new Web3.Web3(new Account("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7")); var addressFrom = (await web3.Eth.Accounts.SendRequestAsync())[0]; var transactionService = new TransactionReceiptPollingService(web3.TransactionManager); var previousVersionAddress = "0x12890d2cce102216644c59dae5baed380d84830c"; var registrySevice = await UportRegistryService.DeployContractAndGetServiceAsync(transactionService, web3, addressFrom, previousVersionAddress, new HexBigInteger(4712388)); Assert.Equal(previousVersionAddress, await registrySevice.PreviousPublishedVersionAsyncCall()); }
public async void ShouldDeployAContractWithConstructor() { var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var addressFrom = (await web3.Eth.Accounts.SendRequestAsync())[0]; var transactionService = new TransactionReceiptPollingService(web3.TransactionManager); var previousVersionAddress = "0x12890d2cce102216644c59dae5baed380d84830c"; var registrySevice = await UportRegistryService.DeployContractAndGetServiceAsync(transactionService, web3, addressFrom, previousVersionAddress, new HexBigInteger(4712388)); Assert.Equal(previousVersionAddress, await registrySevice.PreviousPublishedVersionAsyncCall()); }
public async Task <string> SendEthAsync(string target, double amount) { if (target == null) { throw new ArgumentNullException(nameof(target)); } var tx = await m_Web3.Eth.TransactionManager.SendTransactionAsync( m_WalletAddress, target, new HexBigInteger((BigInteger)(amount *WeisInEth))); var txPollingService = new TransactionReceiptPollingService(m_Web3.TransactionManager); await txPollingService.PollForReceiptAsync(tx); return(tx); }
public async void Test() { var contractByteCode = "0x60606040526040516020806106f5833981016040528080519060200190919050505b80600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550806000600050819055505b506106868061006f6000396000f360606040523615610074576000357c010000000000000000000000000000000000000000000000000000000090048063095ea7b31461008157806318160ddd146100b657806323b872dd146100d957806370a0823114610117578063a9059cbb14610143578063dd62ed3e1461017857610074565b61007f5b610002565b565b005b6100a060048080359060200190919080359060200190919050506101ad565b6040518082815260200191505060405180910390f35b6100c36004805050610674565b6040518082815260200191505060405180910390f35b6101016004808035906020019091908035906020019091908035906020019091905050610281565b6040518082815260200191505060405180910390f35b61012d600480803590602001909190505061048d565b6040518082815260200191505060405180910390f35b61016260048080359060200190919080359060200190919050506104cb565b6040518082815260200191505060405180910390f35b610197600480803590602001909190803590602001909190505061060b565b6040518082815260200191505060405180910390f35b600081600260005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905061027b565b92915050565b600081600160005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541015801561031b575081600260005060008673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505410155b80156103275750600082115b1561047c5781600160005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a381600160005060008673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282825054039250508190555081600260005060008673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505403925050819055506001905061048656610485565b60009050610486565b5b9392505050565b6000600160005060008373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505490506104c6565b919050565b600081600160005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541015801561050c5750600082115b156105fb5781600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282825054039250508190555081600160005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905061060556610604565b60009050610605565b5b92915050565b6000600260005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060008373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054905061066e565b92915050565b60006000600050549050610683565b9056"; var abi = @"[{""constant"":false,""inputs"":[{""name"":""_spender"",""type"":""address""},{""name"":""_value"",""type"":""uint256""}],""name"":""approve"",""outputs"":[{""name"":""success"",""type"":""bool""}],""type"":""function""},{""constant"":true,""inputs"":[],""name"":""totalSupply"",""outputs"":[{""name"":""supply"",""type"":""uint256""}],""type"":""function""},{""constant"":false,""inputs"":[{""name"":""_from"",""type"":""address""},{""name"":""_to"",""type"":""address""},{""name"":""_value"",""type"":""uint256""}],""name"":""transferFrom"",""outputs"":[{""name"":""success"",""type"":""bool""}],""type"":""function""},{""constant"":true,""inputs"":[{""name"":""_owner"",""type"":""address""}],""name"":""balanceOf"",""outputs"":[{""name"":""balance"",""type"":""uint256""}],""type"":""function""},{""constant"":false,""inputs"":[{""name"":""_to"",""type"":""address""},{""name"":""_value"",""type"":""uint256""}],""name"":""transfer"",""outputs"":[{""name"":""success"",""type"":""bool""}],""type"":""function""},{""constant"":true,""inputs"":[{""name"":""_owner"",""type"":""address""},{""name"":""_spender"",""type"":""address""}],""name"":""allowance"",""outputs"":[{""name"":""remaining"",""type"":""uint256""}],""type"":""function""},{""inputs"":[{""name"":""_initialAmount"",""type"":""uint256""}],""type"":""constructor""},{""anonymous"":false,""inputs"":[{""indexed"":true,""name"":""_from"",""type"":""address""},{""indexed"":true,""name"":""_to"",""type"":""address""},{""indexed"":false,""name"":""_value"",""type"":""uint256""}],""name"":""Transfer"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""name"":""_owner"",""type"":""address""},{""indexed"":true,""name"":""_spender"",""type"":""address""},{""indexed"":false,""name"":""_value"",""type"":""uint256""}],""name"":""Approval"",""type"":""event""}]"; var web3 = new Web3(ClientFactory.GetClient()); var gethTester = GethTesterFactory.GetLocal(web3); ulong totalSupply = 1000000; var receipt = await gethTester.DeployTestContractLocal(abi, contractByteCode, totalSupply); string pass = "******"; await web3.Personal.UnlockAccount.SendRequestAsync(gethTester.Account, pass, 60); var newAddress = await web3.Personal.NewAccount.SendRequestAsync(pass); Assert.NotNull(newAddress); var contract = web3.Eth.GetContract(abi, receipt.ContractAddress); var transferFunction = contract.GetFunction("transfer"); var balanceFunction = contract.GetFunction("balanceOf"); var transactionService = new TransactionReceiptPollingService(web3); var gethWeb3 = new Web3Geth(web3.Client); await gethWeb3.Miner.Start.SendRequestAsync(6); var receiptFirstBlock = await transactionService.SendRequestAsync(() => transferFunction.SendTransactionAsync(gethTester.Account, newAddress, 1000)); var balanceFirstBlock = await balanceFunction.CallAsync <int>(newAddress); var receiptSecondBlock = await transactionService.SendRequestAsync(() => transferFunction.SendTransactionAsync(gethTester.Account, newAddress, 1000)); var balanceSecondBlock = await balanceFunction.CallAsync <int>(newAddress); var balanceOldBlock = await balanceFunction.CallAsync <int>( new BlockParameter(receiptFirstBlock.BlockNumber), newAddress); await gethWeb3.Miner.Stop.SendRequestAsync(); Assert.Equal(2000, balanceSecondBlock); Assert.Equal(1000, balanceOldBlock); Assert.Equal(1000, balanceFirstBlock); }
public async void ShouldDeployWithNoConstructorParameters() { var ABI = "[{'constant':false,'inputs':[],'name':'createID','outputs':[{'name':'','type':'address'}],'payable':false,'type':'function'},{'constant':true,'inputs':[],'name':'owner','outputs':[{'name':'','type':'address'}],'payable':false,'type':'function'},{'anonymous':false,'inputs':[{'indexed':true,'name':'_from','type':'address'},{'indexed':false,'name':'_controllerAddress','type':'address'}],'name':'ReturnIDController','type':'event'}]"; var BYTE_CODE = "0x60606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b612891806100576000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806348573542146100465780638da5cb5b14610098575bfe5b341561004e57fe5b6100566100ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100a057fe5b6100a861019f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600060006100f8610376565b809050604051809103906000f080151561010e57fe5b915061011a82336101c5565b90503373ffffffffffffffffffffffffffffffffffffffff167f94083f4ecce35399252890d68b14d19ad0419a427258864ef16558218d7bb87d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28092505b505090565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006000836101d2610386565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561021b57fe5b90508373ffffffffffffffffffffffffffffffffffffffff1663a6f9dae1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156102b457fe5b60325a03f115156102c157fe5b5050508073ffffffffffffffffffffffffffffffffffffffff1663a6f9dae1846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561035b57fe5b60325a03f1151561036857fe5b5050508091505b5092915050565b6040516114b08061039783390190565b60405161101f8061184783390190560060606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b611459806100576000396000f300606060405236156100b8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302859d60146100ba5780631ab807f814610115578063277c94671461015857806341c0e1b5146101945780634f23eb86146101a65780635f893bfa146102a2578063781dd722146102d85780638da5cb5b1461032d578063a6f9dae11461037f578063b115ce0d146103b5578063e7996f0714610419578063eb43e0331461043d575bfe5b34156100c257fe5b6100fb60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104a1565b604051808215151515815260200191505060405180910390f35b341561011d57fe5b61015660048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106b4565b005b341561016057fe5b61017660048080359060200190919050506106cb565b60405180826000191660001916815260200191505060405180910390f35b341561019c57fe5b6101a46106f0565b005b34156101ae57fe5b610260600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102aa57fe5b6102d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610988565b005b34156102e057fe5b61032b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109ff565b005b341561033557fe5b61033d610b67565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038757fe5b6103b3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b8d565b005b34156103bd57fe5b6103d7600480803560001916906020019091905050610c2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561042157fe5b61043b600480803560001916906020019091905050610c5d565b005b341561044557fe5b61045f600480803560001916906020019091905050610cf7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156106ad573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b151561057c57fe5b60325a03f1151561058957fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415156105b557610000565b8160016000856000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600280548060010182816106239190610d3d565b916000526020600020900160005b85909190915090600019169055508173ffffffffffffffffffffffffffffffffffffffff1660016000856000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b5b5b92915050565b6106c66106c083610cf7565b826109ff565b5b5050565b6002818154811015156106da57fe5b906000526020600020900160005b915090505481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156107d957600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156107d757600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b5b5b565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156109805783838361083f610d69565b8080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352868181518152602001915080519060200190808383600083146108c1575b8051825260208311156108c15760208201915060208101905060208303925061089d565b505050905090810190601f1680156108ed5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360008314610935575b80518252602083111561093557602082019150602081019050602083039250610911565b505050905090810190601f1680156109615780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080151561097c57fe5b90505b5b5b9392505050565b8073ffffffffffffffffffffffffffffffffffffffff1663b6549f756040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050600060405180830381600087803b15156109eb57fe5b60325a03f115156109f857fe5b5050505b50565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b1515610a8257fe5b60325a03f11515610a8f57fe5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16141515610abb57610000565b8173ffffffffffffffffffffffffffffffffffffffff16637c6ebde9826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610b5257fe5b60325a03f11515610b5f57fe5b5050505b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610c265780600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610cf35760016000826000191660001916815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b5b5b50565b600060016000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b815481835581811511610d6457818360005260206000209182019101610d639190610d79565b5b505050565b60405161068f80610d9f83390190565b610d9b91905b80821115610d97576000816000905550600101610d7f565b5090565b90560060606040526000600360006101000a81548160ff021916908315150217905550341561002757fe5b60405161068f38038061068f833981016040528080518201919060200180518201919060200180519060200190919050505b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b82600190805190602001906100b2929190610114565b5081600290805190602001906100c9929190610114565b5080600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050506101b9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015557805160ff1916838001178555610183565b82800160010185558215610183579182015b82811115610182578251825591602001919060010190610167565b5b5090506101909190610194565b5090565b6101b691905b808211156101b257600081600090555060010161019a565b5090565b90565b6104c7806101c86000396000f30060606040523615610076576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309bd5a6014610078578063232533b214610111578063516f279e1461016357806363d256ce146101fc5780638da5cb5b14610226578063b6549f7514610278575bfe5b341561008057fe5b61008861028a565b60405180806020018281038252838181518152602001915080519060200190808383600083146100d7575b8051825260208311156100d7576020820191506020810190506020830392506100b3565b505050905090810190601f1680156101035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561011957fe5b610121610328565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561016b57fe5b61017361034e565b60405180806020018281038252838181518152602001915080519060200190808383600083146101c2575b8051825260208311156101c25760208201915060208101905060208303925061019e565b505050905090810190601f1680156101ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020457fe5b61020c6103ec565b604051808215151515815260200191505060405180910390f35b341561022e57fe5b6102366103ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561028057fe5b610288610425565b005b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103205780601f106102f557610100808354040283529160200191610320565b820191906000526020600020905b81548152906001019060200180831161030357829003601f168201915b505050505081565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103e45780601f106103b9576101008083540402835291602001916103e4565b820191906000526020600020905b8154815290600101906020018083116103c757829003601f168201915b505050505081565b600360009054906101000a900460ff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610498576001600360006101000a81548160ff0219169083151502179055505b5b5b5600a165627a7a72305820ca63b024d1e5e546695f10f3a1280cf6d95cd35dcb7c112aa9f86f18298b01ac0029a165627a7a72305820d10ec5dbd904c95211e74b47091a491c696569914f6f925e8024c989053a400c00296060604052341561000c57fe5b60405160208061101f833981016040528080519060200190919050505b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b610f60806100bf6000396000f300606060405236156100ad576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302859d60146100af5780631ff8df681461010a5780634f23eb861461015c5780635f893bfa146102585780637ca307b41461028e5780638da5cb5b146102a0578063a54c0810146102f2578063a6f9dae114610328578063ab9dbd071461035e578063e7996f07146103b0578063eb43e033146103d4575bfe5b34156100b757fe5b6100f060048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610438565b604051808215151515815260200191505060405180910390f35b341561011257fe5b61011a6105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561016457fe5b610216600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610607565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026057fe5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610892565b005b341561029657fe5b61029e61095f565b005b34156102a857fe5b6102b0610ae1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fa57fe5b610326600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b07565b005b341561033057fe5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bfc565b005b341561036657fe5b61036e610cf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b857fe5b6103d2600480803560001916906020019091905050610d1c565b005b34156103dc57fe5b6103f6600480803560001916906020019091905050610e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104e35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156105d557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302859d6084846000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156105ba57fe5b60325a03f115156105c757fe5b5050506040518051905090505b5b5b92915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106b25750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561088a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f23eb868585856000604051602001526040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352868181518152602001915080519060200190808383600083146107b1575b8051825260208311156107b15760208201915060208101905060208303925061078d565b505050905090810190601f1680156107dd5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360008314610825575b80518252602083111561082557602082019150602081019050602083039250610801565b505050905090810190601f1680156108515780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561086f57fe5b60325a03f1151561087c57fe5b5050506040518051905090505b5b5b9392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f893bfa826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561094b57fe5b60325a03f1151561095857fe5b5050505b50565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a085750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610ade57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050600060405180830381600087803b1515610a9257fe5b60325a03f11515610a9f57fe5b505050600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b5b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bb05750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610bf85780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b50565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ca55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610ced5780600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dc55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610e7157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e7996f07826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1515610e5f57fe5b60325a03f11515610e6c57fe5b5050505b5b5b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb43e033836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515610f1557fe5b60325a03f11515610f2257fe5b5050506040518051905090505b9190505600a165627a7a72305820a1b4722dacd2e6d25ba83549efe9c66b18b5799be2a59687cf5738279cf8766e0029a165627a7a72305820c721968970e1abea3089152dfdd4a6ec4647e051088773f1db229f94fc42b0530029"; var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Web3(new ManagedAccount(senderAddress, password)); var gas = await web3.Eth.DeployContract.EstimateGasAsync(ABI, BYTE_CODE, senderAddress); var transactionReceiptService = new TransactionReceiptPollingService(web3.TransactionManager); var receipt = await transactionReceiptService.DeployContractAsync( () => web3.Eth.DeployContract.SendRequestAsync(ABI, BYTE_CODE, senderAddress, new HexBigInteger(3905820))); Assert.NotNull(receipt.ContractAddress); }
public string ProposalsOptionsCount(int proprosalId) { var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; var password = "******"; var web3 = new Nethereum.Web3.Web3(new ManagedAccount(senderAddress, password)); var transactionPolling = new TransactionReceiptPollingService(web3); var contract = web3.Eth.GetContract(ABI, CONTRACTADDRESS); var Func = contract.GetFunction("proposalsoptionsCount"); var result = Func.CallAsync <int>(proprosalId).Result; return(result.ToString()); }