From fe17a295816214d063f3d6bd4f3273e0ce0c3eac Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Thu, 22 Oct 2020 21:03:51 -0400 Subject: [PATCH] Allow 0x as a numeric value for 0 in Provider formatter (#1104). --- packages/providers/src.ts/etherscan-provider.ts | 12 ++++++------ packages/providers/src.ts/formatter.ts | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/providers/src.ts/etherscan-provider.ts b/packages/providers/src.ts/etherscan-provider.ts index c40bc80f2..f94a5a694 100644 --- a/packages/providers/src.ts/etherscan-provider.ts +++ b/packages/providers/src.ts/etherscan-provider.ts @@ -349,19 +349,19 @@ export class EtherscanProvider extends BaseProvider{ const logs: Array = await get(url, null, getResult); // Cache txHash => blockHash - let txs: { [hash: string]: string } = {}; + let blocks: { [tag: string]: string } = {}; // Add any missing blockHash to the logs for (let i = 0; i < logs.length; i++) { const log = logs[i]; if (log.blockHash != null) { continue; } - if (txs[log.transactionHash] == null) { - const tx = await this.getTransaction(log.transactionHash); - if (tx) { - txs[log.transactionHash] = tx.blockHash + if (blocks[log.blockNumber] == null) { + const block = await this.getBlock(log.blockNumber); + if (block) { + blocks[log.blockNumber] = block.hash; } } - log.blockHash = txs[log.transactionHash]; + log.blockHash = blocks[log.blockNumber]; } return logs; diff --git a/packages/providers/src.ts/formatter.ts b/packages/providers/src.ts/formatter.ts index 531875cbf..c83141a7d 100644 --- a/packages/providers/src.ts/formatter.ts +++ b/packages/providers/src.ts/formatter.ts @@ -164,6 +164,7 @@ export class Formatter { // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number // Strict! Used on input. number(number: any): number { + if (number === "0x") { return 0; } return BigNumber.from(number).toNumber(); }