hardhat 2.19.5 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtin-tasks/node.js +3 -3
- package/builtin-tasks/node.js.map +1 -1
- package/internal/cli/analytics.d.ts.map +1 -1
- package/internal/cli/analytics.js +2 -1
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/project-creation.d.ts +1 -1
- package/internal/cli/project-creation.js +1 -1
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +1 -0
- package/internal/constants.js.map +1 -1
- package/internal/core/config/config-resolution.d.ts.map +1 -1
- package/internal/core/config/config-resolution.js +8 -0
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +10 -0
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +11 -0
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/jsonrpc/types/base-types.d.ts +1 -1
- package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/base-types.js +7 -5
- package/internal/core/jsonrpc/types/base-types.js.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts +2 -0
- package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.js +2 -0
- package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +4 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.js +2 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/output/block.d.ts +6 -0
- package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/block.js +3 -0
- package/internal/core/jsonrpc/types/output/block.js.map +1 -1
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +10 -10
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/util.js +2 -2
- package/internal/core/providers/util.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts +3 -3
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +9 -9
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
- package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +10 -10
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +7 -0
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +14 -2
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.d.ts +2 -3
- package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +16 -16
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
- package/internal/hardhat-network/provider/filter.d.ts +5 -6
- package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
- package/internal/hardhat-network/provider/filter.js +2 -2
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +7 -0
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +21 -4
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +16 -9
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +42 -25
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +3 -0
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/base.js +4 -4
- package/internal/hardhat-network/provider/modules/base.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +16 -9
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +17 -17
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +17 -13
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +6 -2
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +148 -79
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +3 -0
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +23 -9
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.d.ts +3 -4
- package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +4 -3
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +8 -10
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +8 -10
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +9 -10
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +6 -7
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +5 -6
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +4 -5
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +7 -8
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +7 -8
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +4 -5
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.js +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +5 -3
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js +15 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -3
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +6 -2
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/utils/random.d.ts +3 -3
- package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/random.js +2 -2
- package/internal/hardhat-network/provider/utils/random.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +42 -44
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/constants.js +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +12 -12
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +5 -4
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/library-utils.d.ts +4 -4
- package/internal/hardhat-network/stack-traces/library-utils.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/library-utils.js.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -9
- package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.d.ts +5 -5
- package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +5 -5
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -3
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +3 -2
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +34 -28
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +1 -2
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +9 -9
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +2 -2
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/solidity/compiler/solc-info.d.ts.map +1 -1
- package/internal/solidity/compiler/solc-info.js +1 -0
- package/internal/solidity/compiler/solc-info.js.map +1 -1
- package/internal/util/abi-helpers.d.ts +2 -3
- package/internal/util/abi-helpers.d.ts.map +1 -1
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/bigint.d.ts +1 -2
- package/internal/util/bigint.d.ts.map +1 -1
- package/internal/util/bigint.js +2 -2
- package/internal/util/bigint.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -1
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +2 -0
- package/internal/util/hardforks.js.map +1 -1
- package/internal/util/keccak.d.ts +1 -2
- package/internal/util/keccak.d.ts.map +1 -1
- package/internal/util/keccak.js +1 -1
- package/internal/util/keccak.js.map +1 -1
- package/package.json +12 -11
- package/sample-projects/javascript/contracts/Lock.sol +1 -1
- package/sample-projects/javascript/hardhat.config.js +1 -1
- package/sample-projects/javascript-esm/contracts/Lock.sol +1 -1
- package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
- package/sample-projects/typescript/contracts/Lock.sol +1 -1
- package/sample-projects/typescript/hardhat.config.ts +1 -1
- package/sample-projects/typescript-viem/contracts/Lock.sol +1 -1
- package/sample-projects/typescript-viem/hardhat.config.ts +1 -1
- package/src/builtin-tasks/node.ts +8 -4
- package/src/internal/cli/analytics.ts +4 -1
- package/src/internal/cli/project-creation.ts +1 -1
- package/src/internal/constants.ts +1 -0
- package/src/internal/core/config/config-resolution.ts +13 -0
- package/src/internal/core/config/config-validation.ts +19 -0
- package/src/internal/core/config/default-config.ts +11 -0
- package/src/internal/core/jsonrpc/types/base-types.ts +12 -7
- package/src/internal/core/jsonrpc/types/input/callRequest.ts +3 -0
- package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +5 -1
- package/src/internal/core/jsonrpc/types/output/block.ts +3 -0
- package/src/internal/core/providers/accounts.ts +24 -13
- package/src/internal/core/providers/util.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/client.ts +7 -4
- package/src/internal/hardhat-network/provider/BlockchainData.ts +6 -6
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +28 -3
- package/src/internal/hardhat-network/provider/TxPool.ts +19 -16
- package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +4 -5
- package/src/internal/hardhat-network/provider/filter.ts +11 -8
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +40 -7
- package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +79 -39
- package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +3 -0
- package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +2 -2
- package/src/internal/hardhat-network/provider/modules/base.ts +5 -5
- package/src/internal/hardhat-network/provider/modules/eth.ts +40 -14
- package/src/internal/hardhat-network/provider/modules/logger.ts +17 -14
- package/src/internal/hardhat-network/provider/node-types.ts +19 -12
- package/src/internal/hardhat-network/provider/node.ts +210 -86
- package/src/internal/hardhat-network/provider/output.ts +35 -8
- package/src/internal/hardhat-network/provider/return-data.ts +6 -5
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +24 -25
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +24 -25
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +27 -16
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +7 -8
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +6 -5
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +15 -8
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +15 -8
- package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +4 -4
- package/src/internal/hardhat-network/provider/utils/makeAccount.ts +2 -2
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +9 -3
- package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +21 -7
- package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +3 -3
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +10 -5
- package/src/internal/hardhat-network/provider/utils/random.ts +5 -5
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +13 -13
- package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +4 -4
- package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +6 -5
- package/src/internal/hardhat-network/stack-traces/library-utils.ts +6 -6
- package/src/internal/hardhat-network/stack-traces/message-trace.ts +8 -8
- package/src/internal/hardhat-network/stack-traces/model.ts +5 -5
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +4 -2
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -2
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +49 -38
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +15 -13
- package/src/internal/solidity/compiler/downloader.ts +3 -2
- package/src/internal/solidity/compiler/solc-info.ts +1 -0
- package/src/internal/util/abi-helpers.ts +2 -2
- package/src/internal/util/bigint.ts +4 -4
- package/src/internal/util/hardforks.ts +2 -0
- package/src/internal/util/keccak.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keccak.d.ts","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keccak.d.ts","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEtD"}
|
package/internal/util/keccak.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.keccak256 = void 0;
|
|
7
7
|
const keccak_1 = __importDefault(require("keccak"));
|
|
8
8
|
function keccak256(data) {
|
|
9
|
-
return (0, keccak_1.default)("keccak256").update(data).digest();
|
|
9
|
+
return (0, keccak_1.default)("keccak256").update(Buffer.from(data)).digest();
|
|
10
10
|
}
|
|
11
11
|
exports.keccak256 = keccak256;
|
|
12
12
|
//# sourceMappingURL=keccak.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keccak.js","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsC;AAEtC,SAAgB,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"keccak.js","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsC;AAEtC,SAAgB,SAAS,CAAC,IAAgB;IACxC,OAAO,IAAA,gBAAgB,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1E,CAAC;AAFD,8BAEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hardhat",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"author": "Nomic Labs LLC",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://hardhat.org",
|
|
@@ -84,16 +84,17 @@
|
|
|
84
84
|
"dependencies": {
|
|
85
85
|
"@ethersproject/abi": "^5.1.2",
|
|
86
86
|
"@metamask/eth-sig-util": "^4.0.0",
|
|
87
|
-
"@nomicfoundation/ethereumjs-block": "5.0.
|
|
88
|
-
"@nomicfoundation/ethereumjs-blockchain": "7.0.
|
|
89
|
-
"@nomicfoundation/ethereumjs-common": "4.0.
|
|
90
|
-
"@nomicfoundation/ethereumjs-evm": "2.0.
|
|
91
|
-
"@nomicfoundation/ethereumjs-rlp": "5.0.
|
|
92
|
-
"@nomicfoundation/ethereumjs-statemanager": "2.0.
|
|
93
|
-
"@nomicfoundation/ethereumjs-trie": "6.0.
|
|
94
|
-
"@nomicfoundation/ethereumjs-tx": "5.0.
|
|
95
|
-
"@nomicfoundation/ethereumjs-util": "9.0.
|
|
96
|
-
"@nomicfoundation/ethereumjs-
|
|
87
|
+
"@nomicfoundation/ethereumjs-block": "5.0.4",
|
|
88
|
+
"@nomicfoundation/ethereumjs-blockchain": "7.0.4",
|
|
89
|
+
"@nomicfoundation/ethereumjs-common": "4.0.4",
|
|
90
|
+
"@nomicfoundation/ethereumjs-evm": "2.0.4",
|
|
91
|
+
"@nomicfoundation/ethereumjs-rlp": "5.0.4",
|
|
92
|
+
"@nomicfoundation/ethereumjs-statemanager": "2.0.4",
|
|
93
|
+
"@nomicfoundation/ethereumjs-trie": "6.0.4",
|
|
94
|
+
"@nomicfoundation/ethereumjs-tx": "5.0.4",
|
|
95
|
+
"@nomicfoundation/ethereumjs-util": "9.0.4",
|
|
96
|
+
"@nomicfoundation/ethereumjs-verkle": "0.0.2",
|
|
97
|
+
"@nomicfoundation/ethereumjs-vm": "7.0.4",
|
|
97
98
|
"@nomicfoundation/solidity-analyzer": "^0.1.0",
|
|
98
99
|
"@sentry/node": "^5.18.1",
|
|
99
100
|
"@types/bn.js": "^5.1.0",
|
|
@@ -51,8 +51,12 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
|
|
|
51
51
|
!Array.isArray(networkConfig.accounts) &&
|
|
52
52
|
networkConfig.accounts.mnemonic === HARDHAT_NETWORK_MNEMONIC;
|
|
53
53
|
|
|
54
|
-
const {
|
|
55
|
-
|
|
54
|
+
const {
|
|
55
|
+
bytesToHex: bufferToHex,
|
|
56
|
+
privateToAddress,
|
|
57
|
+
toBytes,
|
|
58
|
+
toChecksumAddress,
|
|
59
|
+
} = require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
|
|
56
60
|
|
|
57
61
|
console.log("Accounts");
|
|
58
62
|
console.log("========");
|
|
@@ -69,7 +73,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
|
|
|
69
73
|
|
|
70
74
|
for (const [index, account] of accounts.entries()) {
|
|
71
75
|
const address = toChecksumAddress(
|
|
72
|
-
bufferToHex(privateToAddress(
|
|
76
|
+
bufferToHex(privateToAddress(toBytes(account.privateKey)))
|
|
73
77
|
);
|
|
74
78
|
|
|
75
79
|
const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
|
|
@@ -77,7 +81,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
|
|
|
77
81
|
let entry = `Account #${index}: ${address} (${balance} ETH)`;
|
|
78
82
|
|
|
79
83
|
if (isDefaultConfig) {
|
|
80
|
-
const privateKey = bufferToHex(
|
|
84
|
+
const privateKey = bufferToHex(toBytes(account.privateKey));
|
|
81
85
|
entry += `
|
|
82
86
|
Private Key: ${privateKey}`;
|
|
83
87
|
}
|
|
@@ -126,7 +126,10 @@ export class Analytics {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
let eventParams = {};
|
|
129
|
-
if (
|
|
129
|
+
if (
|
|
130
|
+
(scopeName === "ignition" && taskName === "deploy") ||
|
|
131
|
+
(scopeName === undefined && taskName === "deploy")
|
|
132
|
+
) {
|
|
130
133
|
eventParams = {
|
|
131
134
|
scope: scopeName,
|
|
132
135
|
task: taskName,
|
|
@@ -251,7 +251,7 @@ async function printRecommendedDepsInstallationInstructions(
|
|
|
251
251
|
// exported so we can test that it uses the latest supported version of solidity
|
|
252
252
|
export const EMPTY_HARDHAT_CONFIG = `/** @type import('hardhat/config').HardhatUserConfig */
|
|
253
253
|
module.exports = {
|
|
254
|
-
solidity: "0.8.
|
|
254
|
+
solidity: "0.8.24",
|
|
255
255
|
};
|
|
256
256
|
`;
|
|
257
257
|
|
|
@@ -238,6 +238,19 @@ function resolveHardhatNetworkConfig(
|
|
|
238
238
|
delete config.initialBaseFeePerGas;
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
+
if (
|
|
242
|
+
hardhatNetworkConfig.enableTransientStorage === true &&
|
|
243
|
+
hardhatNetworkConfig.hardfork === undefined
|
|
244
|
+
) {
|
|
245
|
+
config.hardfork = "cancun";
|
|
246
|
+
}
|
|
247
|
+
if (
|
|
248
|
+
hardhatNetworkConfig.enableTransientStorage === false &&
|
|
249
|
+
hardhatNetworkConfig.hardfork === undefined
|
|
250
|
+
) {
|
|
251
|
+
config.hardfork = "shanghai";
|
|
252
|
+
}
|
|
253
|
+
|
|
241
254
|
return config;
|
|
242
255
|
}
|
|
243
256
|
|
|
@@ -498,6 +498,25 @@ export function getValidationErrors(config: any): string[] {
|
|
|
498
498
|
}
|
|
499
499
|
});
|
|
500
500
|
}
|
|
501
|
+
|
|
502
|
+
if (hardhatNetwork.hardfork !== undefined) {
|
|
503
|
+
if (
|
|
504
|
+
!hardforkGte(hardhatNetwork.hardfork, HardforkName.CANCUN) &&
|
|
505
|
+
hardhatNetwork.enableTransientStorage === true
|
|
506
|
+
) {
|
|
507
|
+
errors.push(
|
|
508
|
+
`'enableTransientStorage' cannot be enabled if the hardfork is explicitly set to a pre-cancun value. If you want to use transient storage, use 'cancun' as the hardfork.`
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
if (
|
|
512
|
+
hardforkGte(hardhatNetwork.hardfork, HardforkName.CANCUN) &&
|
|
513
|
+
hardhatNetwork.enableTransientStorage === false
|
|
514
|
+
) {
|
|
515
|
+
errors.push(
|
|
516
|
+
`'enableTransientStorage' cannot be disabled if the hardfork is explicitly set to cancun or later. If you want to disable transient storage, use a hardfork before 'cancun'.`
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
501
520
|
}
|
|
502
521
|
|
|
503
522
|
for (const [networkName, netConfig] of Object.entries<any>(
|
|
@@ -129,6 +129,17 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
129
129
|
]),
|
|
130
130
|
},
|
|
131
131
|
],
|
|
132
|
+
[
|
|
133
|
+
11155111, // sepolia
|
|
134
|
+
{
|
|
135
|
+
hardforkHistory: new Map([
|
|
136
|
+
[HardforkName.GRAY_GLACIER, 0],
|
|
137
|
+
[HardforkName.MERGE, 1_450_409],
|
|
138
|
+
[HardforkName.SHANGHAI, 2_990_908],
|
|
139
|
+
[HardforkName.CANCUN, 5_187_023],
|
|
140
|
+
]),
|
|
141
|
+
},
|
|
142
|
+
],
|
|
132
143
|
]),
|
|
133
144
|
};
|
|
134
145
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
bufferToHex,
|
|
2
|
+
bytesToHex as bufferToHex,
|
|
3
3
|
isValidAddress,
|
|
4
|
-
|
|
4
|
+
toBytes,
|
|
5
5
|
} from "@nomicfoundation/ethereumjs-util";
|
|
6
6
|
import * as t from "io-ts";
|
|
7
7
|
|
|
@@ -22,14 +22,16 @@ export const rpcQuantity = new t.Type<bigint>(
|
|
|
22
22
|
export const rpcData = new t.Type<Buffer>(
|
|
23
23
|
"DATA",
|
|
24
24
|
Buffer.isBuffer,
|
|
25
|
-
(u, c) =>
|
|
25
|
+
(u, c) =>
|
|
26
|
+
isRpcDataString(u) ? t.success(Buffer.from(toBytes(u))) : t.failure(u, c),
|
|
26
27
|
t.identity
|
|
27
28
|
);
|
|
28
29
|
|
|
29
30
|
export const rpcHash = new t.Type<Buffer>(
|
|
30
31
|
"HASH",
|
|
31
32
|
(v): v is Buffer => Buffer.isBuffer(v) && v.length === HASH_LENGTH_BYTES,
|
|
32
|
-
(u, c) =>
|
|
33
|
+
(u, c) =>
|
|
34
|
+
isRpcHashString(u) ? t.success(Buffer.from(toBytes(u))) : t.failure(u, c),
|
|
33
35
|
t.identity
|
|
34
36
|
);
|
|
35
37
|
|
|
@@ -96,7 +98,10 @@ function validateStorageSlot(u: unknown, c: t.Context): t.Validation<bigint> {
|
|
|
96
98
|
export const rpcAddress = new t.Type<Buffer>(
|
|
97
99
|
"ADDRESS",
|
|
98
100
|
(v): v is Buffer => Buffer.isBuffer(v) && v.length === ADDRESS_LENGTH_BYTES,
|
|
99
|
-
(u, c) =>
|
|
101
|
+
(u, c) =>
|
|
102
|
+
isRpcAddressString(u)
|
|
103
|
+
? t.success(Buffer.from(toBytes(u)))
|
|
104
|
+
: t.failure(u, c),
|
|
100
105
|
t.identity
|
|
101
106
|
);
|
|
102
107
|
|
|
@@ -173,7 +178,7 @@ export function rpcDataToBigInt(data: string): bigint {
|
|
|
173
178
|
}
|
|
174
179
|
|
|
175
180
|
export function bufferToRpcData(
|
|
176
|
-
buffer:
|
|
181
|
+
buffer: Uint8Array,
|
|
177
182
|
padToBytes: number = 0
|
|
178
183
|
): string {
|
|
179
184
|
let s = bufferToHex(buffer);
|
|
@@ -191,7 +196,7 @@ export function rpcDataToBuffer(data: string): Buffer {
|
|
|
191
196
|
});
|
|
192
197
|
}
|
|
193
198
|
|
|
194
|
-
return
|
|
199
|
+
return Buffer.from(toBytes(data));
|
|
195
200
|
}
|
|
196
201
|
|
|
197
202
|
// Type guards
|
|
@@ -5,6 +5,7 @@ import { rpcAccessList } from "../access-list";
|
|
|
5
5
|
import {
|
|
6
6
|
rpcAddress,
|
|
7
7
|
rpcData,
|
|
8
|
+
rpcHash,
|
|
8
9
|
rpcQuantity,
|
|
9
10
|
rpcStorageSlot,
|
|
10
11
|
rpcStorageSlotHexString,
|
|
@@ -23,6 +24,8 @@ export const rpcCallRequest = t.type(
|
|
|
23
24
|
accessList: optionalOrNullable(rpcAccessList),
|
|
24
25
|
maxFeePerGas: optionalOrNullable(rpcQuantity),
|
|
25
26
|
maxPriorityFeePerGas: optionalOrNullable(rpcQuantity),
|
|
27
|
+
blobs: optionalOrNullable(t.array(rpcData)),
|
|
28
|
+
blobVersionedHashes: optionalOrNullable(t.array(rpcHash)),
|
|
26
29
|
},
|
|
27
30
|
"RpcCallRequest"
|
|
28
31
|
);
|
|
@@ -2,7 +2,7 @@ import * as t from "io-ts";
|
|
|
2
2
|
|
|
3
3
|
import { optionalOrNullable } from "../../../../util/io-ts";
|
|
4
4
|
import { rpcAccessList } from "../access-list";
|
|
5
|
-
import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
|
|
5
|
+
import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
|
|
6
6
|
|
|
7
7
|
// Type used by eth_sendTransaction
|
|
8
8
|
export const rpcTransactionRequest = t.type(
|
|
@@ -18,6 +18,8 @@ export const rpcTransactionRequest = t.type(
|
|
|
18
18
|
chainId: optionalOrNullable(rpcQuantity),
|
|
19
19
|
maxFeePerGas: optionalOrNullable(rpcQuantity),
|
|
20
20
|
maxPriorityFeePerGas: optionalOrNullable(rpcQuantity),
|
|
21
|
+
blobs: optionalOrNullable(t.array(rpcData)),
|
|
22
|
+
blobVersionedHashes: optionalOrNullable(t.array(rpcHash)),
|
|
21
23
|
},
|
|
22
24
|
"RpcTransactionRequest"
|
|
23
25
|
);
|
|
@@ -38,6 +40,8 @@ export interface RpcTransactionRequestInput {
|
|
|
38
40
|
}>;
|
|
39
41
|
maxFeePerGas?: string;
|
|
40
42
|
maxPriorityFeePerGas?: string;
|
|
43
|
+
blobs?: string[];
|
|
44
|
+
blobVersionedHashes?: string[];
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
export type RpcTransactionRequest = t.TypeOf<typeof rpcTransactionRequest>;
|
|
@@ -38,6 +38,9 @@ const baseBlockResponse = {
|
|
|
38
38
|
baseFeePerGas: optional(rpcQuantity),
|
|
39
39
|
withdrawals: optional(t.array(rpcWithdrawalItem)),
|
|
40
40
|
withdrawalsRoot: optional(rpcHash),
|
|
41
|
+
parentBeaconBlockRoot: optional(rpcHash),
|
|
42
|
+
blobGasUsed: optional(rpcQuantity),
|
|
43
|
+
excessBlobGas: optional(rpcQuantity),
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
export type RpcBlock = t.TypeOf<typeof rpcBlock>;
|
|
@@ -43,8 +43,13 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
public async request(args: RequestArguments): Promise<unknown> {
|
|
46
|
-
const {
|
|
47
|
-
|
|
46
|
+
const {
|
|
47
|
+
ecsign,
|
|
48
|
+
hashPersonalMessage,
|
|
49
|
+
toRpcSig,
|
|
50
|
+
toBytes,
|
|
51
|
+
bytesToHex: bufferToHex,
|
|
52
|
+
} = await import("@nomicfoundation/ethereumjs-util");
|
|
48
53
|
|
|
49
54
|
if (
|
|
50
55
|
args.method === "eth_accounts" ||
|
|
@@ -65,7 +70,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
const privateKey = this._getPrivateKeyForAddress(address);
|
|
68
|
-
const messageHash = hashPersonalMessage(
|
|
73
|
+
const messageHash = hashPersonalMessage(toBytes(data));
|
|
69
74
|
const signature = ecsign(messageHash, privateKey);
|
|
70
75
|
return toRpcSig(signature.v, signature.r, signature.s);
|
|
71
76
|
}
|
|
@@ -84,7 +89,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
84
89
|
}
|
|
85
90
|
|
|
86
91
|
const privateKey = this._getPrivateKeyForAddress(address);
|
|
87
|
-
const messageHash = hashPersonalMessage(
|
|
92
|
+
const messageHash = hashPersonalMessage(toBytes(data));
|
|
88
93
|
const signature = ecsign(messageHash, privateKey);
|
|
89
94
|
return toRpcSig(signature.v, signature.r, signature.s);
|
|
90
95
|
}
|
|
@@ -189,13 +194,13 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
189
194
|
|
|
190
195
|
private _initializePrivateKeys(localAccountsHexPrivateKeys: string[]) {
|
|
191
196
|
const {
|
|
192
|
-
bufferToHex,
|
|
193
|
-
|
|
197
|
+
bytesToHex: bufferToHex,
|
|
198
|
+
toBytes,
|
|
194
199
|
privateToAddress,
|
|
195
200
|
} = require("@nomicfoundation/ethereumjs-util");
|
|
196
201
|
|
|
197
202
|
const privateKeys: Buffer[] = localAccountsHexPrivateKeys.map((h) =>
|
|
198
|
-
|
|
203
|
+
toBytes(h)
|
|
199
204
|
);
|
|
200
205
|
|
|
201
206
|
for (const pk of privateKeys) {
|
|
@@ -205,7 +210,9 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
205
210
|
}
|
|
206
211
|
|
|
207
212
|
private _getPrivateKeyForAddress(address: Buffer): Buffer {
|
|
208
|
-
const {
|
|
213
|
+
const {
|
|
214
|
+
bytesToHex: bufferToHex,
|
|
215
|
+
} = require("@nomicfoundation/ethereumjs-util");
|
|
209
216
|
const pk = this._addressToPrivateKey.get(bufferToHex(address));
|
|
210
217
|
if (pk === undefined) {
|
|
211
218
|
throw new HardhatError(ERRORS.NETWORK.NOT_LOCAL_ACCOUNT, {
|
|
@@ -225,7 +232,9 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
225
232
|
}
|
|
226
233
|
|
|
227
234
|
private async _getNonce(address: Buffer): Promise<bigint> {
|
|
228
|
-
const { bufferToHex } = await import(
|
|
235
|
+
const { bytesToHex: bufferToHex } = await import(
|
|
236
|
+
"@nomicfoundation/ethereumjs-util"
|
|
237
|
+
);
|
|
229
238
|
|
|
230
239
|
const response = (await this._wrappedProvider.request({
|
|
231
240
|
method: "eth_getTransactionCount",
|
|
@@ -239,8 +248,8 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
239
248
|
transactionRequest: RpcTransactionRequest,
|
|
240
249
|
chainId: number,
|
|
241
250
|
privateKey: Buffer
|
|
242
|
-
): Promise<
|
|
243
|
-
const { AccessListEIP2930Transaction,
|
|
251
|
+
): Promise<Uint8Array> {
|
|
252
|
+
const { AccessListEIP2930Transaction, LegacyTransaction } = await import(
|
|
244
253
|
"@nomicfoundation/ethereumjs-tx"
|
|
245
254
|
);
|
|
246
255
|
|
|
@@ -282,7 +291,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
282
291
|
{ common }
|
|
283
292
|
);
|
|
284
293
|
} else {
|
|
285
|
-
transaction =
|
|
294
|
+
transaction = LegacyTransaction.fromTxData(txData, { common });
|
|
286
295
|
}
|
|
287
296
|
|
|
288
297
|
const signedTransaction = transaction.sign(privateKey);
|
|
@@ -311,7 +320,9 @@ export class HDWalletProvider extends LocalAccountsProvider {
|
|
|
311
320
|
passphrase
|
|
312
321
|
);
|
|
313
322
|
|
|
314
|
-
const {
|
|
323
|
+
const {
|
|
324
|
+
bytesToHex: bufferToHex,
|
|
325
|
+
} = require("@nomicfoundation/ethereumjs-util");
|
|
315
326
|
const privateKeysAsHex = privateKeys.map((pk) => bufferToHex(pk));
|
|
316
327
|
super(provider, privateKeysAsHex);
|
|
317
328
|
}
|
|
@@ -53,7 +53,7 @@ export function normalizeHardhatNetworkAccountsConfig(
|
|
|
53
53
|
return accountsConfig;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const {
|
|
56
|
+
const { bytesToHex } = require("@nomicfoundation/ethereumjs-util");
|
|
57
57
|
|
|
58
58
|
return derivePrivateKeys(
|
|
59
59
|
accountsConfig.mnemonic,
|
|
@@ -62,7 +62,7 @@ export function normalizeHardhatNetworkAccountsConfig(
|
|
|
62
62
|
accountsConfig.count,
|
|
63
63
|
accountsConfig.passphrase
|
|
64
64
|
).map((pk) => ({
|
|
65
|
-
privateKey:
|
|
65
|
+
privateKey: bytesToHex(pk),
|
|
66
66
|
balance: accountsConfig.accountsBalance ?? DEFAULT_HARDHAT_NETWORK_BALANCE,
|
|
67
67
|
}));
|
|
68
68
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Address,
|
|
3
|
+
bytesToHex as bufferToHex,
|
|
4
|
+
} from "@nomicfoundation/ethereumjs-util";
|
|
2
5
|
import fsExtra from "fs-extra";
|
|
3
6
|
import * as t from "io-ts";
|
|
4
7
|
import path from "path";
|
|
@@ -136,7 +139,7 @@ export class JsonRpcClient {
|
|
|
136
139
|
);
|
|
137
140
|
}
|
|
138
141
|
|
|
139
|
-
public async getTransactionCount(address:
|
|
142
|
+
public async getTransactionCount(address: Uint8Array, blockNumber: bigint) {
|
|
140
143
|
return this._perform(
|
|
141
144
|
"eth_getTransactionCount",
|
|
142
145
|
[bufferToHex(address), numberToRpcQuantity(blockNumber)],
|
|
@@ -157,8 +160,8 @@ export class JsonRpcClient {
|
|
|
157
160
|
public async getLogs(options: {
|
|
158
161
|
fromBlock: bigint;
|
|
159
162
|
toBlock: bigint;
|
|
160
|
-
address?:
|
|
161
|
-
topics?: Array<Array<
|
|
163
|
+
address?: Uint8Array | Uint8Array[];
|
|
164
|
+
topics?: Array<Array<Uint8Array | null> | null>;
|
|
162
165
|
}) {
|
|
163
166
|
let address: string | string[] | undefined;
|
|
164
167
|
if (options.address !== undefined) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
2
2
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
3
3
|
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
4
|
-
import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
|
|
4
|
+
import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
|
|
5
5
|
import { Bloom } from "@nomicfoundation/ethereumjs-vm";
|
|
6
6
|
|
|
7
7
|
import { assertHardhatInvariant } from "../../core/errors";
|
|
@@ -52,23 +52,23 @@ export class BlockchainData {
|
|
|
52
52
|
return this._blocksByNumber.get(blockNumber);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
public getBlockByHash(blockHash:
|
|
55
|
+
public getBlockByHash(blockHash: Uint8Array) {
|
|
56
56
|
return this._blocksByHash.get(bufferToHex(blockHash));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
public getBlockByTransactionHash(transactionHash:
|
|
59
|
+
public getBlockByTransactionHash(transactionHash: Uint8Array) {
|
|
60
60
|
return this._blocksByTransactions.get(bufferToHex(transactionHash));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
public getTransaction(transactionHash:
|
|
63
|
+
public getTransaction(transactionHash: Uint8Array) {
|
|
64
64
|
return this._transactions.get(bufferToHex(transactionHash));
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
public getTransactionReceipt(transactionHash:
|
|
67
|
+
public getTransactionReceipt(transactionHash: Uint8Array) {
|
|
68
68
|
return this._transactionReceipts.get(bufferToHex(transactionHash));
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
public getTotalDifficulty(blockHash:
|
|
71
|
+
public getTotalDifficulty(blockHash: Uint8Array) {
|
|
72
72
|
return this._totalDifficulty.get(bufferToHex(blockHash));
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
2
|
+
import {
|
|
3
|
+
BlockchainInterface,
|
|
4
|
+
BlockchainEvents,
|
|
5
|
+
} from "@nomicfoundation/ethereumjs-blockchain";
|
|
2
6
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
3
7
|
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
4
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
AsyncEventEmitter,
|
|
10
|
+
equalsBytes,
|
|
11
|
+
zeros,
|
|
12
|
+
} from "@nomicfoundation/ethereumjs-util";
|
|
5
13
|
|
|
6
14
|
import { BlockchainBase } from "./BlockchainBase";
|
|
7
15
|
import { FilterParams } from "./node-types";
|
|
@@ -15,11 +23,28 @@ export class HardhatBlockchain
|
|
|
15
23
|
implements HardhatBlockchainInterface
|
|
16
24
|
{
|
|
17
25
|
private _length = 0n;
|
|
26
|
+
public events?: AsyncEventEmitter<BlockchainEvents> | undefined;
|
|
18
27
|
|
|
19
28
|
constructor(common: Common) {
|
|
20
29
|
super(common);
|
|
21
30
|
}
|
|
22
31
|
|
|
32
|
+
public shallowCopy(): BlockchainInterface {
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public getIteratorHead(_name?: string | undefined): Promise<Block> {
|
|
37
|
+
throw new Error("Method not implemented.");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public setIteratorHead(_tag: string, _headHash: Uint8Array): Promise<void> {
|
|
41
|
+
throw new Error("Method not implemented.");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public getCanonicalHeadBlock(): Promise<Block> {
|
|
45
|
+
throw new Error("Method not implemented.");
|
|
46
|
+
}
|
|
47
|
+
|
|
23
48
|
public getLatestBlockNumber(): bigint {
|
|
24
49
|
return BigInt(this._length - 1n);
|
|
25
50
|
}
|
|
@@ -99,10 +124,10 @@ export class HardhatBlockchain
|
|
|
99
124
|
}
|
|
100
125
|
|
|
101
126
|
if (
|
|
102
|
-
(blockNumber === 0n && !parentHash
|
|
127
|
+
(blockNumber === 0n && !equalsBytes(parentHash, zeros(32))) ||
|
|
103
128
|
(blockNumber > 0 &&
|
|
104
129
|
parent !== undefined &&
|
|
105
|
-
!parentHash
|
|
130
|
+
!equalsBytes(parentHash, parent.hash()))
|
|
106
131
|
) {
|
|
107
132
|
throw new Error("Invalid parent hash");
|
|
108
133
|
}
|