Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //Web3 web3 = new Web3();
            var  ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient("./geth.ipc");
            Web3 web3      = new Web3(ipcClient);
            //Web3 web3 = new Web3("https://mainnet.infura.io/hZeiirtHOLO11uuyLySi");

            ulong startBlockNumber = 0;
            ulong endBlockNumber   = 100 * 1000;

            DateTime dtStart = DateTime.Now;

            for (ulong blockNumber = startBlockNumber; blockNumber <= endBlockNumber; blockNumber++) // BLOCKS
            {
                var taskGetBlockWithTx = GetBlockWithTx(web3, blockNumber);
                taskGetBlockWithTx.Wait(1000);
                var block = taskGetBlockWithTx.Result;
                if (blockNumber % 1000 == 0)
                {
                    Console.Write(".");
                }
            }
            Console.WriteLine();
            DateTime dtEnd           = DateTime.Now;
            TimeSpan tsElapsed       = dtEnd - dtStart;
            double   fElapsedMinutes = tsElapsed.TotalMinutes;

            Console.WriteLine("fElapsedMinutes:\t" + fElapsedMinutes.ToString());

            Console.WriteLine("Press Enter to exit...");
            Console.ReadLine();
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> ContractDetails(string transactionHash, string fromAddress)
        {
            var ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
            var web3      = new Web3(ipcClient);
            var reciept   = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);

            var contractAddress = "Contract Creation Transaction not mined yet.";

            if (reciept != null)
            {
                contractAddress = reciept.ContractAddress;
                //var contract = web3.Eth.GetContract(_abi, contractAddress);
                //reciept.
            }

            var model = new ContractDetailsModel()
            {
                TransactionHash = transactionHash,
                ContractAddress = contractAddress,
                //ContractBalance = "0",
                //ContractPrice = "10",
                //DestinationAddress = "0xblahblah",
                State       = "Created",
                FromAddress = fromAddress
            };

            return(View(model));
        }
Ejemplo n.º 4
0
        static Web3 GetWeb3Client()
        {
            //Web3 web3 = new Web3();
            //Web3 web3 = new Web3("https://mainnet.infura.io/hZeiirtHOLO11uuyLySi");
            var  ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient("./geth.ipc");
            Web3 web3      = new Web3(ipcClient);

            return(web3);
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> GetState(string contractAddress)
        {
            var ipcClient     = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
            var web3          = new Web3(ipcClient);
            var contract      = web3.Eth.GetContract(_abi, contractAddress);
            var abortFunction = contract.GetFunction("getState");
            var result        = await abortFunction.CallAsync <int>();

            var model = new GetStateViewModel()
            {
                ContractState = MapToContractStateEnum(result)
            };

            return(View(model));
        }
Ejemplo n.º 6
0
        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 }));
        }
Ejemplo n.º 7
0
        public async Task <ActionResult> PostDestinationAddressRouteConfirmed(DestinationAddressRouteConfirmedViewModel model)
        {
            var ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
            var web3      = new Web3(ipcClient);
            var contract  = web3.Eth.GetContract(_abi, model.ContractAddress);
            var destinationAddressRouteFoundFunction = contract.GetFunction("destinationAddressRouteConfirmed");

            // Unlock the caller's account with the given password
            var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(model.CallerAddress, model.CallerPassword, _accountUnlockTime);

            var transactionHash = await destinationAddressRouteFoundFunction.SendTransactionAsync(model.CallerAddress);

            model.TransactionHash = transactionHash;
            model.Message         = "Route Confrimation Transaction Sent.";
            return(View("DestinationAddressRouteConfirmed", model));
        }
Ejemplo n.º 8
0
        public async Task <ActionResult> AbortContract(AbortViewModel model)
        {
            var ipcClient     = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
            var web3          = new Web3(ipcClient);
            var contract      = web3.Eth.GetContract(_abi, model.ContractAddress);
            var abortFunction = contract.GetFunction("abort");
            //var result = await abortFunction.CallAsync<int>();

            // Unlock the caller's account with the given password
            var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(model.CallerAddress, model.CallerPassword, _accountUnlockTime);

            var transactionHash = await abortFunction.SendTransactionAsync(model.CallerAddress);

            model.TransactionHash = transactionHash;
            model.Message         = "Abort Transaction Sent.";
            return(View("Abort", model));
        }
Ejemplo n.º 9
0
        public async Task <ActionResult> ContractCreated(string fromAddress, string transactionHash, string contractAddress)
        {
            if (string.IsNullOrEmpty(contractAddress))
            {
                var ipcClient = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
                var web3      = new Web3(ipcClient);
                var reciept   = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);

                if (reciept != null)
                {
                    contractAddress = reciept.ContractAddress;
                }
            }

            return(View(new ContractCreatedModel()
            {
                TransactionHash = transactionHash, ContractAddress = contractAddress, FromAddress = fromAddress
            }));
        }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            var resultIdentity = string.Empty;
            var ipcClient      = new Nethereum.JsonRpc.IpcClient.IpcClient(_getAddress);
            var shh            = new ShhNewIdentity(ipcClient);

            Task.Run(async() =>
            {
                resultIdentity = await shh.SendRequestAsync();
            }).GetAwaiter().GetResult();

            Console.WriteLine("Identity:");
            Console.WriteLine(resultIdentity);
            var topics = new[] { "0x68656c6c6f20776f726c64" };
            var loop   = true;

            while (true)
            {
                var command = Console.ReadLine();
                switch (command)
                {
                case "post":
                    Task.Run(async() =>
                    {
                        var parameters = new[] {
                            new { from     = resultIdentity,
                                  to       = "0x0415ea5c7448f7eacd93f01352c8d26222ba0a4d36dfabcb4d38e9f02e4391381f16b8e0d45cd8246c84e308d8699f5e1b26faa9be99a092b94e1e274367f9b8bc",
                                  topics   = topics,
                                  payload  = "0x68656c6c6f20776f726c64",
                                  ttl      = "0x64",
                                  priority = "0x64" },
                        };

                        var rpcRequest = new EdjCase.JsonRpc.Core.RpcRequest(73, "shh_post", parameters);
                        var resultPost = await shh.Client.SendRequestAsync(rpcRequest);
                        Console.WriteLine("shh_post has errors:");
                        Console.WriteLine(resultPost.HasError.ToString());
                    }).GetAwaiter().GetResult();

                    break;

                case "get":
                    Task.Run(async() =>
                    {
                        var parameters = new[] { "0x7" };

                        var rpcRequest = new EdjCase.JsonRpc.Core.RpcRequest(73, "shh_getMessages", parameters);
                        var resultPost = await shh.Client.SendRequestAsync(rpcRequest);
                        Console.WriteLine("shh_getMessages has errors:");
                        Console.WriteLine(resultPost.HasError.ToString());
                        Console.WriteLine($"Count: {resultPost.Result?.Count()}");
                    }).GetAwaiter().GetResult();
                    break;

                case "filter":
                    Task.Run(async() =>
                    {
                        var parameters = new[] {
                            new { to     = resultIdentity,
                                  topics = topics, }
                        };

                        var rpcRequest = new EdjCase.JsonRpc.Core.RpcRequest(73, "shh_newFilter", parameters);
                        var resultPost = await shh.Client.SendRequestAsync(rpcRequest);
                        Console.WriteLine("shh_newFilter has errors:");
                        Console.WriteLine(resultPost.HasError.ToString());
                        Console.WriteLine($"Count: {resultPost.Result?.Count()}");
                    }).GetAwaiter().GetResult();
                    break;

                default:
                    loop = false;
                    break;
                }
            }

            Console.WriteLine("Enter to quit");
            Console.ReadLine();
        }