From 3cbc0b0d3ccea10b8b6ddedc0d52177cf1d86cdd Mon Sep 17 00:00:00 2001 From: Willian Mitsuda Date: Mon, 2 Aug 2021 15:43:37 -0300 Subject: [PATCH] Make use of the new ots_getBlockDetails API --- src/Block.tsx | 2 +- src/useErigonHooks.ts | 38 +++++++++++++++++--------------------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/Block.tsx b/src/Block.tsx index a515036..298ef01 100644 --- a/src/Block.tsx +++ b/src/Block.tsx @@ -83,7 +83,7 @@ const Block: React.FC = () => { className="bg-link-blue bg-opacity-10 text-link-blue hover:bg-opacity-100 hover:text-white rounded-lg px-2 py-1 text-xs" to={blockTxsURL(block.number)} > - {block.transactions.length} transactions + {block.transactionCount} transactions {" "} in this block diff --git a/src/useErigonHooks.ts b/src/useErigonHooks.ts index 999ad5f..ac8a5aa 100644 --- a/src/useErigonHooks.ts +++ b/src/useErigonHooks.ts @@ -22,6 +22,7 @@ export interface ExtendedBlock extends ethers.providers.Block { sha3Uncles: string; stateRoot: string; totalDifficulty: BigNumber; + transactionCount: number; } export const readBlock = async ( @@ -30,38 +31,33 @@ export const readBlock = async ( ) => { let blockPromise: Promise; if (ethers.utils.isHexString(blockNumberOrHash, 32)) { + // TODO: fix blockPromise = provider.send("eth_getBlockByHash", [ blockNumberOrHash, false, ]); } else { - blockPromise = provider.send("eth_getBlockByNumber", [ - blockNumberOrHash, - false, - ]); + blockPromise = provider.send("ots_getBlockDetails", [blockNumberOrHash]); } - const [_rawBlock, _rawIssuance, _rawReceipts] = await Promise.all([ - blockPromise, - provider.send("erigon_issuance", [blockNumberOrHash]), - provider.send("eth_getBlockReceipts", [blockNumberOrHash]), - ]); - const receipts = (_rawReceipts as any[]).map((r) => - provider.formatter.receipt(r) - ); - const fees = receipts.reduce( - (acc, r) => acc.add(r.effectiveGasPrice.mul(r.gasUsed)), - BigNumber.from(0) - ); - const _block = provider.formatter.block(_rawBlock); + const _rawBlock = await blockPromise; + const _block = provider.formatter.block(_rawBlock.block); + const _rawIssuance = _rawBlock.issuance; + const fees = provider.formatter.bigNumber(_rawBlock.totalFees); + const extBlock: ExtendedBlock = { blockReward: provider.formatter.bigNumber(_rawIssuance.blockReward ?? 0), unclesReward: provider.formatter.bigNumber(_rawIssuance.uncleReward ?? 0), feeReward: fees, - size: provider.formatter.number(_rawBlock.size), - sha3Uncles: _rawBlock.sha3Uncles, - stateRoot: _rawBlock.stateRoot, - totalDifficulty: provider.formatter.bigNumber(_rawBlock.totalDifficulty), + size: provider.formatter.number(_rawBlock.block.size), + sha3Uncles: _rawBlock.block.sha3Uncles, + stateRoot: _rawBlock.block.stateRoot, + totalDifficulty: provider.formatter.bigNumber( + _rawBlock.block.totalDifficulty + ), + transactionCount: provider.formatter.number( + _rawBlock.block.transactionCount + ), ..._block, }; return extBlock;