0

I use Nethereum in my project to get all pending transactions on a specific smartcontract address. To do that based on the existing docs and Nethereum playground I try the following:

private async Task MonitorPendingTransactions()
{
    var web = new Web3Geth("http://***.***.***.***:8545");
    var transferEventHandler = web3.Eth.GetEvent<TransferEventDTO>(contractAddr);
    var filterAllTransferEventsForContract = transferEventHandler.CreateFilterInput();
    var allTransferEventsForContract = await transferEventHandler.GetAllChanges(filterAllTransferEventsForContract);
    Thread.Sleep(10000);
    allTransferEventsForContract = await transferEventHandler.GetAllChanges(filterAllTransferEventsForContract);
}

My TransferEventDTO is the same as in the official docs in the same place:

[Event("Transfer")]
public class TransferEventDTO : IEventDTO
{
    [Parameter("address", "_from", 1, true)]
    public string From { get; set; }

    [Parameter("address", "_to", 2, true)]
    public string To { get; set; }

    [Parameter("uint256", "_value", 3, false)]
    public BigInteger Value { get; set; }
}

So far i have 2 issue:

  1. I cant specify the starting block from which i'd like to get output, like pending instead of latest
  2. GetAllChanges() always returns 0 objects, no matter how long i wait, am I doing something wrong in filter configuration or pending transactions should be queried via some other way?
0

Can you change to use Web3? Please refer to my code!

   var _web3 = new Web3("https://ropsten.infura.io/v3/APIKEY");
        var _transactionRpcResult = _web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync("0x02fca948c467b0247030d12f4e1bb6811a626f5b55013d3dbec10cea82f72110");
        var blockNumberResult = _web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();
        blockNumberResult.Wait();
        ulong _currentblockNumber = (ulong)blockNumberResult.Result.Value;
        var transferEventHandler = _web3.Eth.GetEvent<TransferEventDTO>("0xfc420e5a883d3b08ab1fd8299a9fcc18cab74527");
        var filter = transferEventHandler.CreateFilterInput(fromBlock: new BlockParameter(_transactionRpcResult.Result.BlockNumber), toBlock: new BlockParameter(_currentblockNumber));
        var logsresult = transferEventHandler.GetAllChanges(filter);
        logsresult.Wait();
        var logs = logsresult.Result;

TransferEventDTO

[Event("Transfer")]
public class TransferEventDTO : IEventDTO
{
    [Parameter("address", "_from", 1, true)]
    public string From { get; set; }

    [Parameter("address", "_to", 2, true)]
    public string To { get; set; }

    [Parameter("uint256", "_value", 3, false)]
    public BigInteger Value { get; set; }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.