public async Task <byte[]> CallAsync(Transaction transaction, long blockNumber) { var result = await _proxy.eth_call(CallTransactionModel.FromTransaction(transaction), BlockParameterModel.FromNumber(blockNumber)); return(result?.IsValid == true ? result.Result ?? Array.Empty <byte>() : Array.Empty <byte>()); }
public async Task eth_call_should_invoke_client_method() { var callTransaction = new CallTransactionModel(); var blockParameter = BlockParameterModel.Latest; await _proxy.eth_call(callTransaction, blockParameter); await _client.Received().SendAsync <byte[]>(nameof(_proxy.eth_call), callTransaction, blockParameter.Type); }
private async Task RenderBalanceAsync() { var addressLabel = new Label(1, 1, $"Address: {_address}"); var balanceLabel = new Label(60, 1, "Balance:"); _syncingInfoLabel = new Label(70, 1, "Syncing..."); _window.Add(addressLabel, balanceLabel, _syncingInfoLabel); var balanceResult = await _ethJsonRpcClientProxy.eth_getBalance(_address); _balance = WeiToEth(balanceResult.Result.ToString()); _balanceValueLabel = new Label(70, 1, $"{_balance} ETH"); _window.Remove(_syncingInfoLabel); _window.Add(_balanceValueLabel); var quitButton = new Button(1, 11, "Quit"); var transferButton = new Button(12, 11, "Transfer"); quitButton.Clicked = () => { Application.Top.Running = false; Application.RequestStop(); }; transferButton.Clicked = () => { TransferClicked?.Invoke(this, new TransferClickedEventArgs(_address, _balance)); }; _window.Add(quitButton, transferButton); var tokenTransaction = new CallTransactionModel(); var tokenSignature = "0x70a08231"; var tokenData = tokenSignature + "000000000000000000000000" + _address.ToString().Substring(2); tokenTransaction.Data = Bytes.FromHexString(tokenData); var tokens = InitTokens(); var y = 1; foreach (var token in tokens) { y += 2; tokenTransaction.To = token.Address; var call = await _ethJsonRpcClientProxy.eth_call(tokenTransaction, BlockParameterModel.Latest); var resultHex = call.Result.ToHexString(); token.Balance = UInt256.Parse(resultHex, NumberStyles.HexNumber); var tokenBalanceLabel = new Label(1, y, $"{token.Name}: {WeiToEth(token.Balance.ToString())}"); _window.Add(tokenBalanceLabel); } }
public async Task call_should_invoke_proxy_eth_call_with_transaction_argument() { var transaction = Build.A.Transaction.TestObject; var data = new byte[] { 0, 1, 2 }; var callModel = CallTransactionModel.FromTransaction(transaction); _proxy.eth_call(Arg.Is <CallTransactionModel>(x => x.From == callModel.From && x.To == callModel.To && x.Gas == callModel.Gas && x.GasPrice == callModel.GasPrice && x.Value == callModel.Value && x.Data.SequenceEqual(callModel.Data))) .Returns(RpcResult <byte[]> .Ok(data)); var result = await _ndmBridge.CallAsync(transaction); await _proxy.Received().eth_call(Arg.Any <CallTransactionModel>()); result.Should().BeSameAs(data); }
public async Task call_with_transaction_number_should_invoke_proxy_eth_call_and_return_data() { const int blockNumber = 1; var transaction = Build.A.Transaction.TestObject; var data = new byte[] { 0, 1, 2 }; var callModel = CallTransactionModel.FromTransaction(transaction); _proxy.eth_call(Arg.Is <CallTransactionModel>(x => x.From == callModel.From && x.To == callModel.To && x.Gas == callModel.Gas && x.GasPrice == callModel.GasPrice && x.Value == callModel.Value && x.Data.SequenceEqual(callModel.Data)), Arg.Is <BlockParameterModel>(x => x.Number == blockNumber)) .Returns(RpcResult <byte[]> .Ok(data)); var result = await _ndmBridge.CallAsync(transaction, blockNumber); await _proxy.Received().eth_call(Arg.Any <CallTransactionModel>(), Arg.Is <BlockParameterModel>(x => x.Number == blockNumber)); result.Should().BeSameAs(data); }
public Task <RpcResult <byte[]> > eth_call(CallTransactionModel transaction, BlockParameterModel blockParameter = null) => _proxy.SendAsync <byte[]>(nameof(eth_call), transaction, MapBlockParameter(blockParameter));
public async Task <byte[]> CallAsync(Transaction transaction) { var result = await _proxy.eth_call(CallTransactionModel.FromTransaction(transaction)); return(result?.IsValid == true ? result.Result ?? Array.Empty <byte>() : Array.Empty <byte>()); }