From bcd8bd32d719cb8969396a236e8fb041fbd9c279 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Mon, 16 Nov 2020 17:45:37 -0800 Subject: [PATCH] Add support for remote contracts data pre-loading --- lib/gasData.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/gasData.js b/lib/gasData.js index 769ca7e..778b0fb 100644 --- a/lib/gasData.js +++ b/lib/gasData.js @@ -67,6 +67,14 @@ class GasData { } } + if (contract.artifact.bytecodeHash) { + this.trackNameByPreloadedAddress( + contract.name, + contract.artifact.address, + contract.artifact.bytecodeHash + ); + } + // Decode, getMethodIDs const methodIDs = {}; @@ -120,6 +128,17 @@ class GasData { this.addressCache[address] = name; } + /** + * Map a contract name to pre-generated hash of the code stored at an address + * @param {String} name contract name + * @param {String} address contract address + */ + trackNameByPreloadedAddress(name, address, hash) { + if (this.addressIsCached(address)) return; + this.codeHashMap[hash] = name; + this.addressCache[address] = name; + } + /** * Get the name of the contract stored at contract address * @param {String} address contract address