Exemplo n.º 1
0
        public async void ShouldDecodeTransactionDeployment()
        {
            //EthereumClientIntegrationFixture.AccountAddress
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new StandardTokenDeployment
            {
                TotalSupply = 10000,
                FromAddress = senderAddress,
                Gas         = new HexBigInteger(900000)
            };

            var deploymentHandler  = web3.Eth.GetContractDeploymentHandler <StandardTokenDeployment>();
            var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage).ConfigureAwait(false);

            var transaction =
                await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(transactionReceipt.TransactionHash).ConfigureAwait(false);

            var deploymentMessageDecoded = transaction.DecodeTransactionToDeploymentMessage <StandardTokenDeployment>();

            Assert.Equal(deploymentMessage.TotalSupply, deploymentMessageDecoded.TotalSupply);
            Assert.Equal(deploymentMessage.FromAddress.ToLower(), deploymentMessageDecoded.FromAddress.ToLower());
            Assert.Equal(deploymentMessage.Gas, deploymentMessageDecoded.Gas);
        }
Exemplo n.º 2
0
        public async void Test()
        {
            var senderAddress = AccountFactory.Address;
            var web3          = Web3Factory.GetWeb3();

            var deploymentMessage = new StandardTokenDeployment
            {
                TotalSupply = 10000,
                FromAddress = senderAddress,
                Gas         = new HexBigInteger(900000)
            };

            var deploymentHandler  = web3.Eth.GetContractDeploymentHandler <StandardTokenDeployment>();
            var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

            var contractAddress = transactionReceipt.ContractAddress;
            var newAddress      = "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe";

            var transactionMessage = new TransferFunction
            {
                FromAddress = senderAddress,
                To          = newAddress,
                TokenAmount = 1000
            };

            var transferHandler = web3.Eth.GetContractTransactionHandler <TransferFunction>();
            var transferReceipt =
                await transferHandler.SendRequestAndWaitForReceiptAsync(transactionMessage, contractAddress);

            var balanceOfFunctionMessage = new BalanceOfFunction
            {
                Owner       = newAddress,
                FromAddress = senderAddress
            };

            var balanceHandler          = web3.Eth.GetContractQueryHandler <BalanceOfFunction>();
            var balanceFirstTransaction =
                await balanceHandler.QueryAsync <int>(balanceOfFunctionMessage, contractAddress);


            Assert.Equal(1000, balanceFirstTransaction);

            var transferReceipt2 =
                await transferHandler.SendRequestAndWaitForReceiptAsync(transactionMessage, contractAddress);

            var balanceSecondTransaction =
                await balanceHandler.QueryDeserializingToObjectAsync <BalanceOfFunctionOutput>(balanceOfFunctionMessage,
                                                                                               contractAddress);

            Assert.Equal(2000, balanceSecondTransaction.Balance);

            var balanceFirstTransactionHistory =
                await balanceHandler.QueryDeserializingToObjectAsync <BalanceOfFunctionOutput>(balanceOfFunctionMessage,
                                                                                               contractAddress, new BlockParameter(transferReceipt.BlockNumber));

            Assert.Equal(1000, balanceFirstTransactionHistory.Balance);
        }
Exemplo n.º 3
0
        public async void ShouldDecodeTransactionInput()
        {
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new StandardTokenDeployment
            {
                TotalSupply = 10000,
                FromAddress = senderAddress,
                Gas         = new HexBigInteger(900000)
            };

            var deploymentHandler  = web3.Eth.GetContractDeploymentHandler <StandardTokenDeployment>();
            var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

            var contractAddress = transactionReceipt.ContractAddress;
            var newAddress      = "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe";


            var transactionMessage = new TransferFunction
            {
                FromAddress = senderAddress,
                To          = newAddress,
                TokenAmount = 1000
            };

            var transferHandler = web3.Eth.GetContractTransactionHandler <TransferFunction>();
            var transferReceipt =
                await transferHandler.SendRequestAndWaitForReceiptAsync(contractAddress, transactionMessage);

            var transaction =
                await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(transferReceipt.TransactionHash);

            var transferDecoded = transaction.DecodeTransactionToFunctionMessage <TransferFunction>();

            Assert.Equal(transactionMessage.To.ToLower(), transferDecoded.To.ToLower());
            Assert.Equal(transactionMessage.FromAddress.ToLower(), transferDecoded.FromAddress.ToLower());
            Assert.Equal(transactionMessage.TokenAmount, transferDecoded.TokenAmount);
        }
Exemplo n.º 4
0
        public async void Test()
        {
            var senderAddress = EthereumClientIntegrationFixture.AccountAddress;
            var web3          = _ethereumClientIntegrationFixture.GetWeb3();

            var deploymentMessage = new StandardTokenDeployment
            {
                TotalSupply = 10000,
                FromAddress = senderAddress,
                Gas         = new HexBigInteger(900000)
            };

            var deploymentHandler  = web3.Eth.GetContractDeploymentHandler <StandardTokenDeployment>();
            var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);

            var contractAddress = transactionReceipt.ContractAddress;
            var newAddress      = "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe";


            var transactionMessage = new TransferFunction
            {
                FromAddress = senderAddress,
                To          = newAddress,
                TokenAmount = 1000
            };

            var transferHandler = web3.Eth.GetContractTransactionHandler <TransferFunction>();

            var estimatedGas = await transferHandler.EstimateGasAsync(contractAddress, transactionMessage);

            // for demo purpouses gas estimation it is done in the background so we don't set it
            transactionMessage.Gas = estimatedGas.Value;

            var transferReceipt =
                await transferHandler.SendRequestAndWaitForReceiptAsync(contractAddress, transactionMessage);

            var balanceOfFunctionMessage = new BalanceOfFunction
            {
                Owner       = newAddress,
                FromAddress = senderAddress
            };

            var balanceHandler          = web3.Eth.GetContractQueryHandler <BalanceOfFunction>();
            var balanceFirstTransaction =
                await balanceHandler.QueryAsync <int>(contractAddress, balanceOfFunctionMessage);


            Assert.Equal(1000, balanceFirstTransaction);

            var transferReceipt2 =
                await transferHandler.SendRequestAndWaitForReceiptAsync(contractAddress, transactionMessage);

            var balanceSecondTransaction =
                await balanceHandler.QueryDeserializingToObjectAsync <BalanceOfFunctionOutput>(balanceOfFunctionMessage,
                                                                                               contractAddress);

            Assert.Equal(2000, balanceSecondTransaction.Balance);

            var balanceFirstTransactionHistory =
                await balanceHandler.QueryDeserializingToObjectAsync <BalanceOfFunctionOutput>(balanceOfFunctionMessage,
                                                                                               contractAddress, new BlockParameter(transferReceipt.BlockNumber));

            Assert.Equal(1000, balanceFirstTransactionHistory.Balance);
        }