diff --git a/packages/providers/src.ts/formatter.ts b/packages/providers/src.ts/formatter.ts index 1810825a41..c7cf69f80a 100644 --- a/packages/providers/src.ts/formatter.ts +++ b/packages/providers/src.ts/formatter.ts @@ -328,28 +328,39 @@ export class Formatter { } */ - let result = Formatter.check(this.formats.transaction, transaction); + let result: TransactionResponse = Formatter.check(this.formats.transaction, transaction); - let networkId = transaction.networkId; + if (transaction.chainId != null) { + let chainId = transaction.chainId; - // geth-etc returns chainId - if (transaction.chainId != null && networkId == null && result.v == null) { - networkId = transaction.chainId; - } + if (isHexString(chainId)) { + chainId = BigNumber.from(chainId).toNumber(); + } - if (isHexString(networkId)) { - networkId = BigNumber.from(networkId).toNumber(); - } + result.chainId = chainId; - if (typeof(networkId) !== "number" && result.v != null) { - networkId = (result.v - 35) / 2; - if (networkId < 0) { networkId = 0; } - networkId = parseInt(networkId); - } + } else { + let chainId = transaction.networkId; - if (typeof(networkId) !== "number") { networkId = 0; } + // geth-etc returns chainId + if (chainId == null && result.v == null) { + chainId = transaction.chainId; + } - result.networkId = networkId; + if (isHexString(chainId)) { + chainId = BigNumber.from(chainId).toNumber(); + } + + if (typeof(chainId) !== "number" && result.v != null) { + chainId = (result.v - 35) / 2; + if (chainId < 0) { chainId = 0; } + chainId = parseInt(chainId); + } + + if (typeof(chainId) !== "number") { chainId = 0; } + + result.chainId = chainId; + } // 0x0000... should actually be null if (result.blockHash && result.blockHash.replace(/0/g, "") === "x") {