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,11 +1,16 @@
|
|
|
1
1
|
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
2
2
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
LegacyTransaction,
|
|
5
5
|
TransactionFactory,
|
|
6
6
|
TypedTransaction,
|
|
7
7
|
} from "@nomicfoundation/ethereumjs-tx";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
Address,
|
|
10
|
+
equalsBytes,
|
|
11
|
+
toBytes,
|
|
12
|
+
toRpcSig,
|
|
13
|
+
} from "@nomicfoundation/ethereumjs-util";
|
|
9
14
|
import * as t from "io-ts";
|
|
10
15
|
import cloneDeep from "lodash/cloneDeep";
|
|
11
16
|
import { BoundExperimentalHardhatNetworkMessageTraceHook } from "../../../../types";
|
|
@@ -376,7 +381,9 @@ export class EthModule extends Base {
|
|
|
376
381
|
await this._runHardhatNetworkMessageTraceHooks(trace, true);
|
|
377
382
|
|
|
378
383
|
if (error !== undefined && this._throwOnCallFailures) {
|
|
379
|
-
const callReturnData = trace?.returnData.toString(
|
|
384
|
+
const callReturnData = Buffer.from(trace?.returnData ?? []).toString(
|
|
385
|
+
"hex"
|
|
386
|
+
);
|
|
380
387
|
(error as any).data = `0x${callReturnData}`;
|
|
381
388
|
|
|
382
389
|
throw error;
|
|
@@ -452,7 +459,9 @@ export class EthModule extends Base {
|
|
|
452
459
|
error
|
|
453
460
|
);
|
|
454
461
|
|
|
455
|
-
const callReturnData = trace?.returnData.toString(
|
|
462
|
+
const callReturnData = Buffer.from(trace?.returnData ?? []).toString(
|
|
463
|
+
"hex"
|
|
464
|
+
);
|
|
456
465
|
(error as any).data = `0x${callReturnData}`;
|
|
457
466
|
|
|
458
467
|
throw error;
|
|
@@ -819,7 +828,7 @@ export class EthModule extends Base {
|
|
|
819
828
|
}
|
|
820
829
|
|
|
821
830
|
const index = block.transactions.findIndex((btx) =>
|
|
822
|
-
btx.hash()
|
|
831
|
+
equalsBytes(btx.hash(), hash)
|
|
823
832
|
);
|
|
824
833
|
const tx = block.transactions[index];
|
|
825
834
|
if (tx === undefined) {
|
|
@@ -970,10 +979,10 @@ export class EthModule extends Base {
|
|
|
970
979
|
try {
|
|
971
980
|
tx = TransactionFactory.fromSerializedData(rawTx, {
|
|
972
981
|
common: this._common,
|
|
973
|
-
|
|
982
|
+
allowUnlimitedInitCodeSize: true,
|
|
974
983
|
});
|
|
975
984
|
|
|
976
|
-
this._validateEip3860MaxInitCodeSize(tx.to?.
|
|
985
|
+
this._validateEip3860MaxInitCodeSize(tx.to?.toBytes(), tx.data);
|
|
977
986
|
} catch (error) {
|
|
978
987
|
// This section of the code is incredibly dependant of TransactionFactory.fromSerializedData
|
|
979
988
|
// AccessListEIP2930Transaction.fromSerializedTx and Transaction.fromSerializedTx
|
|
@@ -1014,7 +1023,7 @@ export class EthModule extends Base {
|
|
|
1014
1023
|
throw new InvalidArgumentsError("Invalid Signature");
|
|
1015
1024
|
}
|
|
1016
1025
|
|
|
1017
|
-
if (tx instanceof
|
|
1026
|
+
if (tx instanceof LegacyTransaction) {
|
|
1018
1027
|
this._validateEip155HardforkRequirement(tx);
|
|
1019
1028
|
}
|
|
1020
1029
|
|
|
@@ -1266,7 +1275,7 @@ export class EthModule extends Base {
|
|
|
1266
1275
|
gasLimit:
|
|
1267
1276
|
rpcTx.gas !== undefined ? rpcTx.gas : this._node.getBlockGasLimit(),
|
|
1268
1277
|
value: rpcTx.value !== undefined ? rpcTx.value : 0n,
|
|
1269
|
-
data: rpcTx.data !== undefined ? rpcTx.data :
|
|
1278
|
+
data: rpcTx.data !== undefined ? rpcTx.data : toBytes([]),
|
|
1270
1279
|
nonce:
|
|
1271
1280
|
rpcTx.nonce !== undefined
|
|
1272
1281
|
? rpcTx.nonce
|
|
@@ -1503,7 +1512,9 @@ export class EthModule extends Base {
|
|
|
1503
1512
|
if (trace.error !== undefined && this._throwOnTransactionFailures) {
|
|
1504
1513
|
const e = trace.error;
|
|
1505
1514
|
|
|
1506
|
-
const returnData = trace.trace?.returnData.toString(
|
|
1515
|
+
const returnData = Buffer.from(trace.trace?.returnData ?? []).toString(
|
|
1516
|
+
"hex"
|
|
1517
|
+
);
|
|
1507
1518
|
(e as any).data = `0x${returnData}`;
|
|
1508
1519
|
(e as any).transactionHash = bufferToRpcData(tx.hash());
|
|
1509
1520
|
|
|
@@ -1611,7 +1622,7 @@ export class EthModule extends Base {
|
|
|
1611
1622
|
const transactions = result.block.transactions;
|
|
1612
1623
|
for (let i = 0; i < transactions.length; i++) {
|
|
1613
1624
|
const blockTx = transactions[i];
|
|
1614
|
-
if (blockTx.hash()
|
|
1625
|
+
if (equalsBytes(blockTx.hash(), tx.hash())) {
|
|
1615
1626
|
return [result, i];
|
|
1616
1627
|
}
|
|
1617
1628
|
}
|
|
@@ -1638,6 +1649,15 @@ export class EthModule extends Base {
|
|
|
1638
1649
|
private _validateTransactionAndCallRequest(
|
|
1639
1650
|
rpcRequest: RpcCallRequest | RpcTransactionRequest
|
|
1640
1651
|
) {
|
|
1652
|
+
if (
|
|
1653
|
+
rpcRequest.blobs !== undefined ||
|
|
1654
|
+
rpcRequest.blobVersionedHashes !== undefined
|
|
1655
|
+
) {
|
|
1656
|
+
throw new InvalidInputError(
|
|
1657
|
+
`An EIP-4844 (shard blob) transaction was received, but Hardhat doesn't have support for them yet.`
|
|
1658
|
+
);
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1641
1661
|
if (
|
|
1642
1662
|
(rpcRequest.maxFeePerGas !== undefined ||
|
|
1643
1663
|
rpcRequest.maxPriorityFeePerGas !== undefined) &&
|
|
@@ -1689,7 +1709,7 @@ You can use them by running Hardhat Network with 'hardfork' ${ACCESS_LIST_MIN_HA
|
|
|
1689
1709
|
}
|
|
1690
1710
|
|
|
1691
1711
|
// TODO: Find a better place for this
|
|
1692
|
-
private _validateEip155HardforkRequirement(tx:
|
|
1712
|
+
private _validateEip155HardforkRequirement(tx: LegacyTransaction) {
|
|
1693
1713
|
// 27 and 28 are only valid for non-EIP-155 legacy txs
|
|
1694
1714
|
if (tx.v === 27n || tx.v === 28n) {
|
|
1695
1715
|
return;
|
|
@@ -1703,8 +1723,8 @@ You can use them by running Hardhat Network with 'hardfork' ${EIP155_MIN_HARDFOR
|
|
|
1703
1723
|
}
|
|
1704
1724
|
|
|
1705
1725
|
private _validateEip3860MaxInitCodeSize(
|
|
1706
|
-
to:
|
|
1707
|
-
data:
|
|
1726
|
+
to: Uint8Array | undefined,
|
|
1727
|
+
data: Uint8Array
|
|
1708
1728
|
) {
|
|
1709
1729
|
if (!this._common.gteHardfork(EIP3860_MIN_HARDFORK)) {
|
|
1710
1730
|
// this check is only relevant after shanghai
|
|
@@ -1730,6 +1750,12 @@ Enable the 'allowUnlimitedContractSize' option to allow init codes of any length
|
|
|
1730
1750
|
}
|
|
1731
1751
|
|
|
1732
1752
|
private _validateRawTransactionHardforkRequirements(rawTx: Buffer) {
|
|
1753
|
+
if (rawTx[0] <= 0x7f && rawTx[0] === 3) {
|
|
1754
|
+
throw new InvalidInputError(
|
|
1755
|
+
`An EIP-4844 (shard blob) transaction was received, but Hardhat doesn't have support for them yet.`
|
|
1756
|
+
);
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1733
1759
|
if (rawTx[0] <= 0x7f && rawTx[0] !== 1 && rawTx[0] !== 2) {
|
|
1734
1760
|
throw new InvalidArgumentsError(`Invalid transaction type ${rawTx[0]}.
|
|
1735
1761
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
2
2
|
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
bytesToHex as bufferToHex,
|
|
5
|
+
equalsBytes,
|
|
6
|
+
} from "@nomicfoundation/ethereumjs-util";
|
|
4
7
|
import ansiEscapes from "ansi-escapes";
|
|
5
8
|
import chalk, { Chalk } from "chalk";
|
|
6
9
|
import util from "util";
|
|
@@ -89,8 +92,8 @@ export class ModulesLogger {
|
|
|
89
92
|
|
|
90
93
|
public logBlockFromAutomine(
|
|
91
94
|
result: MineBlockResult,
|
|
92
|
-
codes:
|
|
93
|
-
txHashToHighlight:
|
|
95
|
+
codes: Uint8Array[],
|
|
96
|
+
txHashToHighlight: Uint8Array
|
|
94
97
|
) {
|
|
95
98
|
const { block, blockResult, traces } = result;
|
|
96
99
|
const { results } = blockResult;
|
|
@@ -113,7 +116,7 @@ export class ModulesLogger {
|
|
|
113
116
|
const txTrace = traces[i];
|
|
114
117
|
const code = codes[i];
|
|
115
118
|
|
|
116
|
-
const highlightTxHash = tx.hash()
|
|
119
|
+
const highlightTxHash = equalsBytes(tx.hash(), txHashToHighlight);
|
|
117
120
|
|
|
118
121
|
this._logTxInsideBlock(tx, txTrace, code, txGasUsed, {
|
|
119
122
|
highlightTxHash,
|
|
@@ -216,8 +219,8 @@ export class ModulesLogger {
|
|
|
216
219
|
|
|
217
220
|
this._logWithTitle("Transaction", txHash);
|
|
218
221
|
|
|
219
|
-
this._logTxFrom(tx.getSenderAddress().
|
|
220
|
-
this._logTxTo(tx.to?.
|
|
222
|
+
this._logTxFrom(Buffer.from(tx.getSenderAddress().toBytes()));
|
|
223
|
+
this._logTxTo(tx.to?.toBytes(), txTrace.trace);
|
|
221
224
|
this._logTxValue(tx.value);
|
|
222
225
|
this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
|
|
223
226
|
|
|
@@ -251,8 +254,8 @@ export class ModulesLogger {
|
|
|
251
254
|
|
|
252
255
|
this._logWithTitle("Transaction", txHash);
|
|
253
256
|
|
|
254
|
-
this._logTxFrom(tx.getSenderAddress().
|
|
255
|
-
this._logTxTo(tx.to?.
|
|
257
|
+
this._logTxFrom(tx.getSenderAddress().toBytes());
|
|
258
|
+
this._logTxTo(tx.to?.toBytes(), txTrace.trace);
|
|
256
259
|
this._logTxValue(tx.value);
|
|
257
260
|
this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
|
|
258
261
|
|
|
@@ -565,7 +568,7 @@ export class ModulesLogger {
|
|
|
565
568
|
private _logTxInsideBlock(
|
|
566
569
|
tx: TypedTransaction,
|
|
567
570
|
txTrace: GatherTracesResult,
|
|
568
|
-
code:
|
|
571
|
+
code: Uint8Array,
|
|
569
572
|
txGasUsed: bigint,
|
|
570
573
|
{
|
|
571
574
|
highlightTxHash,
|
|
@@ -586,8 +589,8 @@ export class ModulesLogger {
|
|
|
586
589
|
|
|
587
590
|
this._indent(() => {
|
|
588
591
|
this._logContractAndFunctionName(txTrace.trace, code);
|
|
589
|
-
this._logTxFrom(tx.getSenderAddress().
|
|
590
|
-
this._logTxTo(tx.to?.
|
|
592
|
+
this._logTxFrom(tx.getSenderAddress().toBytes());
|
|
593
|
+
this._logTxTo(tx.to?.toBytes(), txTrace.trace);
|
|
591
594
|
this._logTxValue(tx.value);
|
|
592
595
|
this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
|
|
593
596
|
|
|
@@ -637,7 +640,7 @@ export class ModulesLogger {
|
|
|
637
640
|
|
|
638
641
|
private _logContractAndFunctionName(
|
|
639
642
|
trace: MessageTrace | undefined,
|
|
640
|
-
code:
|
|
643
|
+
code: Uint8Array,
|
|
641
644
|
{
|
|
642
645
|
printNonContractCalled = false,
|
|
643
646
|
}: { printNonContractCalled?: boolean } = {}
|
|
@@ -721,7 +724,7 @@ export class ModulesLogger {
|
|
|
721
724
|
this._methodCollapsedCount = 0;
|
|
722
725
|
}
|
|
723
726
|
|
|
724
|
-
private _logTxTo(to:
|
|
727
|
+
private _logTxTo(to: Uint8Array | undefined, trace?: MessageTrace) {
|
|
725
728
|
if (trace !== undefined && isCreateTrace(trace)) {
|
|
726
729
|
return;
|
|
727
730
|
}
|
|
@@ -740,7 +743,7 @@ export class ModulesLogger {
|
|
|
740
743
|
this._logWithTitle("Value", weiToHumanReadableString(value));
|
|
741
744
|
}
|
|
742
745
|
|
|
743
|
-
private _logTxFrom(from:
|
|
746
|
+
private _logTxFrom(from: Uint8Array) {
|
|
744
747
|
this._logWithTitle("From", bufferToHex(from));
|
|
745
748
|
}
|
|
746
749
|
|
|
@@ -61,14 +61,14 @@ export interface GenesisAccount {
|
|
|
61
61
|
balance: string | number | bigint;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export type AccessListBufferItem = [
|
|
64
|
+
export type AccessListBufferItem = [Uint8Array, Uint8Array[]];
|
|
65
65
|
|
|
66
66
|
export interface CallParams {
|
|
67
|
-
to?:
|
|
68
|
-
from:
|
|
67
|
+
to?: Uint8Array;
|
|
68
|
+
from: Uint8Array;
|
|
69
69
|
gasLimit: bigint;
|
|
70
70
|
value: bigint;
|
|
71
|
-
data:
|
|
71
|
+
data: Uint8Array;
|
|
72
72
|
// We use this access list format because @nomicfoundation/ethereumjs-tx access list data
|
|
73
73
|
// forces us to use it or stringify them
|
|
74
74
|
accessList?: AccessListBufferItem[];
|
|
@@ -81,15 +81,16 @@ export interface CallParams {
|
|
|
81
81
|
export type TransactionParams =
|
|
82
82
|
| LegacyTransactionParams
|
|
83
83
|
| AccessListTransactionParams
|
|
84
|
-
| EIP1559TransactionParams
|
|
84
|
+
| EIP1559TransactionParams
|
|
85
|
+
| BlobTransactionParams;
|
|
85
86
|
|
|
86
87
|
interface BaseTransactionParams {
|
|
87
88
|
// `to` should be undefined for contract creation
|
|
88
|
-
to?:
|
|
89
|
-
from:
|
|
89
|
+
to?: Uint8Array;
|
|
90
|
+
from: Uint8Array;
|
|
90
91
|
gasLimit: bigint;
|
|
91
92
|
value: bigint;
|
|
92
|
-
data:
|
|
93
|
+
data: Uint8Array;
|
|
93
94
|
nonce: bigint;
|
|
94
95
|
}
|
|
95
96
|
|
|
@@ -112,25 +113,31 @@ export interface EIP1559TransactionParams extends BaseTransactionParams {
|
|
|
112
113
|
maxPriorityFeePerGas: bigint;
|
|
113
114
|
}
|
|
114
115
|
|
|
116
|
+
export interface BlobTransactionParams extends EIP1559TransactionParams {
|
|
117
|
+
blobs: Uint8Array[];
|
|
118
|
+
blobVersionedHashes: Uint8Array[];
|
|
119
|
+
}
|
|
120
|
+
|
|
115
121
|
export interface FilterParams {
|
|
116
122
|
fromBlock: bigint;
|
|
117
123
|
toBlock: bigint;
|
|
118
|
-
addresses:
|
|
119
|
-
normalizedTopics: Array<Array<
|
|
124
|
+
addresses: Uint8Array[];
|
|
125
|
+
normalizedTopics: Array<Array<Uint8Array | null> | null>;
|
|
120
126
|
}
|
|
121
127
|
|
|
122
128
|
export interface Snapshot {
|
|
123
129
|
id: number;
|
|
124
130
|
date: Date;
|
|
125
131
|
latestBlock: Block;
|
|
126
|
-
stateRoot:
|
|
132
|
+
stateRoot: Uint8Array;
|
|
127
133
|
txPoolSnapshotId: number;
|
|
128
134
|
blockTimeOffsetSeconds: bigint;
|
|
129
135
|
nextBlockTimestamp: bigint;
|
|
130
|
-
irregularStatesByBlockNumber: Map<bigint,
|
|
136
|
+
irregularStatesByBlockNumber: Map<bigint, Uint8Array>;
|
|
131
137
|
userProvidedNextBlockBaseFeePerGas: bigint | undefined;
|
|
132
138
|
coinbase: string;
|
|
133
139
|
mixHashGenerator: RandomBufferGenerator;
|
|
140
|
+
parentBeaconBlockRootGenerator: RandomBufferGenerator;
|
|
134
141
|
}
|
|
135
142
|
|
|
136
143
|
export type SendTransactionResult =
|