-
-
Save MashB/ae6f156b498bf32a48d205712749657d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Program | |
{ | |
private const string senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c"; | |
private const string password = "password"; | |
private const string abi = @"[{""constant"":false,""inputs"":[{""name"":""customerName"",""type"":""string""},{""name"":""mobileNumber"",""type"":""int256""},{""name"":""serviceProvider"",""type"":""string""}],""name"":""addCustomer"",""outputs"":[{""name"":"""",""type"":""bool""}],""payable"":false,""type"":""function""},{""constant"":true,""inputs"":[],""name"":""getAllCustomers"",""outputs"":[{""name"":""mobile"",""type"":""int256[]""},{""name"":""customerName"",""type"":""bytes32[]""},{""name"":""serviceProvider"",""type"":""bytes32[]""}],""payable"":false,""type"":""function""},{""constant"":false,""inputs"":[{""name"":""mobileNumber"",""type"":""int256""}],""name"":""getCustomersByMobileNumber"",""outputs"":[{""name"":""mobile"",""type"":""int256""},{""name"":""customerName"",""type"":""bytes32""},{""name"":""serviceProvider"",""type"":""bytes32""}],""payable"":false,""type"":""function""},{""constant"":false,""inputs"":[{""name"":""mobileNumber"",""type"":""int256""},{""name"":""fromProvider"",""type"":""string""},{""name"":""toProvider"",""type"":""string""},{""name"":""dateTime"",""type"":""string""}],""name"":""Port"",""outputs"":[{""name"":""result"",""type"":""bool""}],""payable"":false,""type"":""function""},{""inputs"":[],""type"":""constructor""},{""anonymous"":false,""inputs"":[{""indexed"":false,""name"":""sender"",""type"":""address""},{""indexed"":true,""name"":""mobileNumber"",""type"":""int256""},{""indexed"":false,""name"":""from"",""type"":""string""},{""indexed"":false,""name"":""to"",""type"":""string""},{""indexed"":false,""name"":""dateTime"",""type"":""string""}],""name"":""PortingLog"",""type"":""event""}]"; | |
private const string byteCode = "606060405260006001556106ee806100176000396000f3606060405260e060020a60003504634f5d64ce811461003f5780637da67ba8146100f95780638babdb68146102b9578063c80fd72c146102fc575b610002565b34610002576103d56004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020604435808b0135601f810183900483028401830190945283835297998935999098606498509296509190910193509091508190840183828082843750949650505050505050604080516060810182526000602082018190529181018290528381526104a9855b6020015190565b34610002576040805160208082018352600080835283518083018552818152845180840186528281528551808501875283815286518086018852848152875180870189528581528851606081018a52868152968701869052868901869052855498516103e999959794969394929391929086908059106101765750595b90808252806020026020018201604052801561018d575b5094508560405180591061019e5750595b9080825280602002602001820160405280156101b5575b509350856040518059106101c65750595b9080825280602002602001820160405280156101dd575b509250600091505b858260ff161015610544576002600050600060006000508460ff168154811015610002579060005260206000209001600050548152602080820192909252604090810160002081516060810183528154808252600183015494820194909452600290910154918101919091528651909250869060ff8516908110156100025760209081029091018101919091528101518451859060ff851690811015610002576020908102909101015260408101518351849060ff85169081101561000257602090810290910101526001909101906101e5565b3461000257600435600090815260026020819052604090912080546001820154919092015460408051938452602084019290925282820152519081900360600190f35b346100025760408051602060046024803582810135601f81018590048502860185019096528585526103d59583359593946044949392909201918190840183828082843750506040805160209735808a0135601f81018a90048a0283018a019093528282529698976064979196506024919091019450909250829150840183828082843750506040805160209735808a0135601f81018a90048a0283018a0190935282825296989760849791965060249190910194509092508291508401838280828437509496505050505050506000610552836100f2565b604080519115158252519081900360200190f35b604051808060200180602001806020018481038452878181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050018481038352868181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050018481038252858181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f150905001965050505050505060405180910390f35b60208201526104b7836100f2565b6040820152600080546001810180835582818380158290116104fa576000838152602090206104fa9181019083015b8082111561054057600081556001016104e6565b5050506000928352506020808320909101869055948152600280865260409182902083518155958301516001808801919091559290910151940193909355509092915050565b5090565b509297919650945092505050565b6002600050600087815260200190815260200160002060005060020160005081905550847fabccf710b90915152627544bcdf03474e1571d51db9e4e212c9ade90cb9342d533868686604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001806020018481038452878181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561061f5780820380516001836020036101000a031916815260200191505b508481038352868181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106785780820380516001836020036101000a031916815260200191505b508481038252858181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106d15780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a250600194935050505056"; | |
private static string contractAddress = string.Empty; | |
static void Main(string[] args) | |
{ | |
try | |
{ | |
Initializer(); | |
} | |
catch (Exception ex) | |
{ | |
throw; | |
} | |
} | |
public async static void Initializer() | |
{ | |
try | |
{ | |
await Init(); | |
await AddAndGetCustomerDataTest(); | |
await PortingTest(); | |
await FilterLogsTest(); | |
} | |
catch (Exception ex) | |
{ | |
throw; | |
} | |
} | |
private static async Task Init() | |
{ | |
try | |
{ | |
var web3 = new Web3(); | |
var unlockAccountResult = | |
await web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, new HexBigInteger(120)); | |
var transactionHash = | |
await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, new HexBigInteger(1999990)); | |
var mineResult = await web3.Miner.Start.SendRequestAsync(2); | |
var receipt = await MineAndGetReceiptAsync(web3, transactionHash); | |
contractAddress = receipt.ContractAddress; | |
} | |
catch (Exception ex) | |
{ | |
throw; | |
} | |
} | |
public static async Task AddAndGetCustomerDataTest() | |
{ | |
var web3 = new Web3(); | |
var contract = web3.Eth.GetContract(abi, contractAddress); | |
var addCustomerFunction = contract.GetFunction("addCustomer"); | |
var getCustomersByMobileNumberFunction = contract.GetFunction("getCustomersByMobileNumber"); | |
var getAllCustomers = contract.GetFunction("getAllCustomers"); | |
var resultHash = await addCustomerFunction.SendTransactionAsync(senderAddress, new HexBigInteger(900000), new HexBigInteger(0), "Mahesh", 111, "Airtel"); | |
resultHash = await addCustomerFunction.SendTransactionAsync(senderAddress, new HexBigInteger(900000), new HexBigInteger(0), "Mahesh1", 222, "Airtel1"); | |
resultHash = await addCustomerFunction.SendTransactionAsync(senderAddress, new HexBigInteger(900000), new HexBigInteger(0), "Mahesh2", 333, "Airtel2"); | |
resultHash = await addCustomerFunction.SendTransactionAsync(senderAddress, new HexBigInteger(900000), new HexBigInteger(0), "Mahesh3", 444, "Airtel3"); | |
var receipt = await MineAndGetReceiptAsync(web3, resultHash); | |
var results = await getCustomersByMobileNumberFunction.CallDeserializingToObjectAsync<CustomerData>(111); | |
var results2 = await getCustomersByMobileNumberFunction.CallDeserializingToObjectAsync<CustomerData>(222); | |
} | |
public static async Task PortingTest() | |
{ | |
var web3 = new Web3(); | |
var contract = web3.Eth.GetContract(abi, contractAddress); | |
var portFunction = contract.GetFunction("Port"); | |
var getCustomersByMobileNumberFunction = contract.GetFunction("getCustomersByMobileNumber"); | |
var resultHash = await portFunction.SendTransactionAsync(senderAddress, new HexBigInteger(900000), new HexBigInteger(0), 111, "Airtel", "Vodafone"); | |
var receipt = await MineAndGetReceiptAsync(web3, resultHash); | |
var results = await getCustomersByMobileNumberFunction.CallDeserializingToObjectAsync<CustomerData>(111); | |
var results2 = await getCustomersByMobileNumberFunction.CallDeserializingToObjectAsync<CustomerData>(222); | |
} | |
public static async Task FilterLogsTest() | |
{ | |
var web3 = new Web3(); | |
var contract = web3.Eth.GetContract(abi, contractAddress); | |
var multipliedEventLog = contract.GetEvent("MultipliedLog"); | |
var filterAllLog = await multipliedEventLog.CreateFilterAsync(); | |
var multipliedLogEvents = await multipliedEventLog.GetFilterChanges<PortingLog>(filterAllLog); | |
} | |
public async static Task<TransactionReceipt> MineAndGetReceiptAsync(Web3 web3, string transactionHash) | |
{ | |
var miningResult = await web3.Miner.Start.SendRequestAsync(6); | |
var receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash); | |
while (receipt == null) | |
{ | |
Thread.Sleep(1000); | |
receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash); | |
} | |
miningResult = await web3.Miner.Stop.SendRequestAsync(); | |
return receipt; | |
} | |
} | |
public class PortingLog | |
{ | |
[Parameter("address", "sender", 1, true)] | |
public string Sender { get; set; } | |
[Parameter("uint", "mobileNumber", 2, true)] | |
public int MobileNumber { get; set; } | |
[Parameter("string", "from", 3, false)] | |
public string From { get; set; } | |
[Parameter("string", "to", 4, true)] | |
public string To { get; set; } | |
[Parameter("string", "to", 5, true)] | |
public string DateTime { get; set; } | |
} | |
[FunctionOutput] | |
public class CustomerDataList | |
{ | |
[Parameter("int256[]", "mobile", 1)] | |
public List<Int64> mobile { get; set; } | |
[Parameter("bytes32[]", "customerName", 2)] | |
public List<string> customerName { get; set; } | |
[Parameter("bytes32[]", "serviceProvider", 3)] | |
public List<string> serviceProvider { get; set; } | |
} | |
[FunctionOutput] | |
public class CustomerData | |
{ | |
[Parameter("int256", "mobile", 1)] | |
public Int64 mobile { get; set; } | |
[Parameter("bytes32", "customerName", 2)] | |
public string customerName { get; set; } | |
[Parameter("bytes32", "serviceProvider", 3)] | |
public string serviceProvider { get; set; } | |
} | |
[FunctionOutput] | |
public class AllCustomerData | |
{ | |
//[Parameter("int256[]", "mobile", 1)] | |
//public List<BigInteger> mobile { get; set; } | |
[Parameter("bytes32[]", "customerName", 1)] | |
public List<string> customerName { get; set; } | |
[Parameter("bytes32[]", "serviceProvider", 2)] | |
public List<string> serviceProvider { get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment