simolus3 / web3dart

Ethereum library, written in Dart.
MIT License
441 stars 270 forks source link

Getting transactions with eth_getBlockByNumber #242

Open alexeyinkin opened 2 years ago

alexeyinkin commented 2 years ago

eth_getBlockByNumber returns either transaction hashes or full transactions depending on the second boolean argument. For this we have Web3Client.getBlockInformation that also has an optional boolean argument which is sent but the transactions from the response are never parsed.

I need to parse them and so to add this functionality. We need to decide on Dart data structure because it is a bad practice to use List<dynamic> for this.

I suggest to:

  1. Subclass BlockInformation with BlockInformationWithTransactions and BlockInformationWithTransactionHashes. The subclasses would have transactions field of corresponding list type. The base class would not have this field.

  2. Add 2 methods to Web3Client: getBlockByNumberWithTransactions, getBlockByNumberWithTransactionHashes. They would return the corresponding block types. Their names are chosen to more closely match the RPC names. They would accept BlockNum as the first argument instead of String that getBlockInformation currently accepts, this is for consistency across other methods and for ease of calling.

  3. Deprecate the existing getBlockInformation method.

I can do this myself. @simolus3 what do you think?