using System; using System.Threading.Tasks; using Nethereum.Hex.HexTypes; using Nethereum.JsonRpc.Client; using Nethereum.RPC.Eth.DTOs; namespace Nethereum.RPC.Eth.Blocks { /// /// eth_getBlockByNumber /// Returns information about a block by block number. /// Parameters /// QUANTITY|TAG - integer of a block number, or the string "earliest", "latest" or "pending", as in the default block /// parameter. /// Boolean - If true it returns the full transaction objects, if false only the hashes of the transactions. /// params: [ /// '0x1b4', // 436 /// true /// ] /// Returns /// See eth_getBlockByHash /// Example /// Request /// curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}' /// Returns /// Object - A block object, or null when no block was found: /// number: QUANTITY - the block number. null when its pending block. /// hash: DATA, 32 Bytes - hash of the block. null when its pending block. /// parentHash: DATA, 32 Bytes - hash of the parent block. /// nonce: DATA, 8 Bytes - hash of the generated proof-of-work. null when its pending block. /// sha3Uncles: DATA, 32 Bytes - SHA3 of the uncles data in the block. /// logsBloom: DATA, 256 Bytes - the bloom filter for the logs of the block. null when its pending block. /// transactionsRoot: DATA, 32 Bytes - the root of the transaction trie of the block. /// stateRoot: DATA, 32 Bytes - the root of the final state trie of the block. /// receiptsRoot: DATA, 32 Bytes - the root of the receipts trie of the block. /// miner: DATA, 20 Bytes - the address of the beneficiary to whom the mining rewards were given. /// difficulty: QUANTITY - integer of the difficulty for this block. /// totalDifficulty: QUANTITY - integer of the total difficulty of the chain until this block. /// extraData: DATA - the "extra data" field of this block. /// size: QUANTITY - integer the size of this block in bytes. /// gasLimit: QUANTITY - the maximum gas allowed in this block. /// gasUsed: QUANTITY - the total used gas by all transactions in this block. /// timestamp: QUANTITY - the unix timestamp for when the block was collated. /// transactions: Array - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given /// parameter. /// uncles: Array - Array of uncle hashes. /// Example /// Request /// curl -X POST --data /// '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", /// true],"id":1}' /// Result /// { /// "id":1, /// "jsonrpc":"2.0", /// "result": { /// "number": "0x1b4", // 436 /// "hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", /// "parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5", /// "nonce": "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2", /// "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", /// "logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", /// "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", /// "stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff", /// "miner": "0x4e65fda2159562a496f9f3522f89122a3088497a", /// "difficulty": "0x027f07", // 163591 /// "totalDifficulty": "0x027f07", // 163591 /// "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", /// "size": "0x027f07", // 163591 /// "gasLimit": "0x9f759", // 653145 /// "minGasPrice": "0x9f759", // 653145 /// "gasUsed": "0x9f759", // 653145 /// "timestamp": "0x54e34e8e" // 1424182926 /// "transactions": [{...},{ ... }] /// "uncles": ["0x1606e5...", "0xd5145a9..."] /// } /// } /// public class EthGetBlockWithTransactionsByNumber : RpcRequestResponseHandler, IEthGetBlockWithTransactionsByNumber { public EthGetBlockWithTransactionsByNumber(IClient client) : base(client, ApiMethods.eth_getBlockByNumber.ToString()) { } public Task SendRequestAsync(BlockParameter blockParameter, object id = null) { if (blockParameter == null) throw new ArgumentNullException(nameof(blockParameter)); return base.SendRequestAsync(id, blockParameter, true); } public Task SendRequestAsync(HexBigInteger number, object id = null) { if (number == null) throw new ArgumentNullException(nameof(number)); return base.SendRequestAsync(id, number, true); } public RpcRequest BuildRequest(HexBigInteger number, object id = null) { if (number == null) throw new ArgumentNullException(nameof(number)); return base.BuildRequest(id, number, true); } public RpcRequest BuildRequest(BlockParameter blockParameter, object id = null) { if (blockParameter == null) throw new ArgumentNullException(nameof(blockParameter)); return base.BuildRequest(id, blockParameter, true); } } }