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,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 { RunBlockResult } from "@nomicfoundation/ethereumjs-vm";
|
|
6
6
|
|
|
7
7
|
import * as BigIntUtils from "../../util/bigint";
|
|
@@ -42,6 +42,11 @@ export interface RpcBlockOutput {
|
|
|
42
42
|
baseFeePerGas?: string;
|
|
43
43
|
withdrawals?: RpcWithdrawalItem[];
|
|
44
44
|
withdrawalsRoot?: string;
|
|
45
|
+
|
|
46
|
+
// Only present after Cancun hard-fork
|
|
47
|
+
parentBeaconBlockRoot?: string | null;
|
|
48
|
+
blobGasUsed?: string | null;
|
|
49
|
+
excessBlobGas?: string | null;
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
export type RpcTransactionOutput =
|
|
@@ -184,7 +189,7 @@ export function getRpcBlock(
|
|
|
184
189
|
transactionsRoot: bufferToRpcData(block.header.transactionsTrie),
|
|
185
190
|
stateRoot: bufferToRpcData(block.header.stateRoot),
|
|
186
191
|
receiptsRoot: bufferToRpcData(block.header.receiptTrie),
|
|
187
|
-
miner: bufferToRpcData(block.header.coinbase.
|
|
192
|
+
miner: bufferToRpcData(block.header.coinbase.toBytes()),
|
|
188
193
|
difficulty: numberToRpcQuantity(block.header.difficulty),
|
|
189
194
|
totalDifficulty: numberToRpcQuantity(totalDifficulty),
|
|
190
195
|
extraData: bufferToRpcData(block.header.extraData),
|
|
@@ -204,16 +209,38 @@ export function getRpcBlock(
|
|
|
204
209
|
output.withdrawals = block.withdrawals?.map((withdrawal) => ({
|
|
205
210
|
index: numberToRpcQuantity(withdrawal.index),
|
|
206
211
|
validatorIndex: numberToRpcQuantity(withdrawal.validatorIndex),
|
|
207
|
-
address: bufferToRpcData(withdrawal.address.
|
|
212
|
+
address: bufferToRpcData(withdrawal.address.toBytes()),
|
|
208
213
|
amount: numberToRpcQuantity(withdrawal.amount),
|
|
209
214
|
}));
|
|
210
215
|
|
|
211
216
|
output.withdrawalsRoot = bufferToRpcData(block.header.withdrawalsRoot);
|
|
212
217
|
}
|
|
213
218
|
|
|
219
|
+
addCancunPropertiesIfPresent(output, block, pending);
|
|
220
|
+
|
|
214
221
|
return output;
|
|
215
222
|
}
|
|
216
223
|
|
|
224
|
+
function addCancunPropertiesIfPresent(
|
|
225
|
+
output: RpcBlockOutput,
|
|
226
|
+
block: Block,
|
|
227
|
+
pending: boolean
|
|
228
|
+
) {
|
|
229
|
+
if (block.header.parentBeaconBlockRoot !== undefined) {
|
|
230
|
+
output.parentBeaconBlockRoot = pending
|
|
231
|
+
? null
|
|
232
|
+
: bufferToRpcData(block.header.parentBeaconBlockRoot, 32);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (block.header.blobGasUsed !== undefined) {
|
|
236
|
+
output.blobGasUsed = numberToRpcQuantity(block.header.blobGasUsed);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (block.header.excessBlobGas !== undefined) {
|
|
240
|
+
output.excessBlobGas = numberToRpcQuantity(block.header.excessBlobGas);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
217
244
|
export function getRpcTransaction(
|
|
218
245
|
tx: TypedTransaction,
|
|
219
246
|
showTransactionType: boolean,
|
|
@@ -245,12 +272,12 @@ export function getRpcTransaction(
|
|
|
245
272
|
blockHash: block === "pending" ? null : bufferToRpcData(block.hash()),
|
|
246
273
|
blockNumber:
|
|
247
274
|
block === "pending" ? null : numberToRpcQuantity(block.header.number),
|
|
248
|
-
from: bufferToRpcData(tx.getSenderAddress().
|
|
275
|
+
from: bufferToRpcData(tx.getSenderAddress().toBytes()),
|
|
249
276
|
gas: numberToRpcQuantity(tx.gasLimit),
|
|
250
277
|
hash: bufferToRpcData(tx.hash()),
|
|
251
278
|
input: bufferToRpcData(tx.data),
|
|
252
279
|
nonce: numberToRpcQuantity(tx.nonce),
|
|
253
|
-
to: tx.to === undefined ? null : bufferToRpcData(tx.to.
|
|
280
|
+
to: tx.to === undefined ? null : bufferToRpcData(tx.to.toBytes()),
|
|
254
281
|
transactionIndex: index !== undefined ? numberToRpcQuantity(index) : null,
|
|
255
282
|
value: numberToRpcQuantity(tx.value),
|
|
256
283
|
v: numberToRpcQuantity(tx.v),
|
|
@@ -329,13 +356,13 @@ export function getRpcReceiptOutputsFromLocalBlockExecution(
|
|
|
329
356
|
transactionIndex: numberToRpcQuantity(i),
|
|
330
357
|
blockHash: bufferToRpcData(block.hash()),
|
|
331
358
|
blockNumber: numberToRpcQuantity(block.header.number),
|
|
332
|
-
from: bufferToRpcData(tx.getSenderAddress().
|
|
333
|
-
to: tx.to === undefined ? null : bufferToRpcData(tx.to.
|
|
359
|
+
from: bufferToRpcData(tx.getSenderAddress().toBytes()),
|
|
360
|
+
to: tx.to === undefined ? null : bufferToRpcData(tx.to.toBytes()),
|
|
334
361
|
cumulativeGasUsed: numberToRpcQuantity(receipt.cumulativeBlockGasUsed),
|
|
335
362
|
gasUsed: numberToRpcQuantity(totalGasSpent),
|
|
336
363
|
contractAddress:
|
|
337
364
|
createdAddress !== undefined
|
|
338
|
-
? bufferToRpcData(createdAddress.
|
|
365
|
+
? bufferToRpcData(createdAddress.toBytes())
|
|
339
366
|
: null,
|
|
340
367
|
logs,
|
|
341
368
|
logsBloom: bufferToRpcData(receipt.bitvector),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bytesToBigInt } from "@nomicfoundation/ethereumjs-util";
|
|
1
2
|
import { assertHardhatInvariant } from "../../core/errors";
|
|
2
3
|
|
|
3
4
|
const { rawDecode } = require("ethereumjs-abi");
|
|
@@ -13,9 +14,9 @@ const PANIC_SELECTOR = "4e487b71";
|
|
|
13
14
|
export class ReturnData {
|
|
14
15
|
private _selector: string | undefined;
|
|
15
16
|
|
|
16
|
-
constructor(public value:
|
|
17
|
+
constructor(public value: Uint8Array) {
|
|
17
18
|
if (value.length >= 4) {
|
|
18
|
-
this._selector = value.slice(0, 4).toString("hex");
|
|
19
|
+
this._selector = Buffer.from(value.slice(0, 4)).toString("hex");
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
|
|
@@ -23,12 +24,12 @@ export class ReturnData {
|
|
|
23
24
|
return this.value.length === 0;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
public matchesSelector(selector:
|
|
27
|
+
public matchesSelector(selector: Uint8Array): boolean {
|
|
27
28
|
if (this._selector === undefined) {
|
|
28
29
|
return false;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
return this._selector === selector.toString("hex");
|
|
32
|
+
return this._selector === Buffer.from(selector).toString("hex");
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
public isErrorReturnData(): boolean {
|
|
@@ -63,7 +64,7 @@ export class ReturnData {
|
|
|
63
64
|
);
|
|
64
65
|
|
|
65
66
|
// we are assuming that panic codes are smaller than Number.MAX_SAFE_INTEGER
|
|
66
|
-
const errorCode =
|
|
67
|
+
const errorCode = bytesToBigInt(this.value.slice(4));
|
|
67
68
|
|
|
68
69
|
return errorCode;
|
|
69
70
|
}
|
package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
2
2
|
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
3
|
-
import { AccessListEIP2930Transaction } from "@nomicfoundation/ethereumjs-tx";
|
|
4
3
|
import {
|
|
4
|
+
AccessListEIP2930Transaction,
|
|
5
5
|
AccessListEIP2930TxData,
|
|
6
|
-
|
|
6
|
+
TransactionType,
|
|
7
7
|
TxOptions,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
arrToBufArr,
|
|
12
|
-
bufferToInt,
|
|
13
|
-
} from "@nomicfoundation/ethereumjs-util";
|
|
8
|
+
TxValuesArray,
|
|
9
|
+
} from "@nomicfoundation/ethereumjs-tx";
|
|
10
|
+
import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
|
|
14
11
|
|
|
15
12
|
import {
|
|
16
13
|
InternalError,
|
|
@@ -34,7 +31,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
34
31
|
}
|
|
35
32
|
|
|
36
33
|
public static fromSerializedTx(
|
|
37
|
-
_serialized:
|
|
34
|
+
_serialized: Uint8Array,
|
|
38
35
|
_opts?: TxOptions
|
|
39
36
|
): never {
|
|
40
37
|
throw new InternalError(
|
|
@@ -43,7 +40,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
public static fromRlpSerializedTx(
|
|
46
|
-
_serialized:
|
|
43
|
+
_serialized: Uint8Array,
|
|
47
44
|
_opts?: TxOptions
|
|
48
45
|
): never {
|
|
49
46
|
throw new InternalError(
|
|
@@ -52,7 +49,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
52
49
|
}
|
|
53
50
|
|
|
54
51
|
public static fromValuesArray(
|
|
55
|
-
_values:
|
|
52
|
+
_values: TxValuesArray[TransactionType.AccessListEIP2930],
|
|
56
53
|
_opts?: TxOptions
|
|
57
54
|
): never {
|
|
58
55
|
throw new InternalError(
|
|
@@ -62,7 +59,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
62
59
|
|
|
63
60
|
public static fromSenderAndRlpSerializedTx(
|
|
64
61
|
sender: Address,
|
|
65
|
-
serialized:
|
|
62
|
+
serialized: Uint8Array,
|
|
66
63
|
opts?: TxOptions
|
|
67
64
|
) {
|
|
68
65
|
if (serialized[0] !== 1) {
|
|
@@ -71,7 +68,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
71
68
|
);
|
|
72
69
|
}
|
|
73
70
|
|
|
74
|
-
const values =
|
|
71
|
+
const values = rlp.decode(serialized.slice(1));
|
|
75
72
|
|
|
76
73
|
checkIsAccessListEIP2930ValuesArray(values);
|
|
77
74
|
|
|
@@ -80,7 +77,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
80
77
|
|
|
81
78
|
public static fromSenderAndValuesArray(
|
|
82
79
|
sender: Address,
|
|
83
|
-
values:
|
|
80
|
+
values: TxValuesArray[TransactionType.AccessListEIP2930],
|
|
84
81
|
opts: TxOptions = {}
|
|
85
82
|
): FakeSenderAccessListEIP2930Transaction {
|
|
86
83
|
const [
|
|
@@ -106,11 +103,11 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
106
103
|
gasLimit,
|
|
107
104
|
to: to !== undefined && to.length > 0 ? to : undefined,
|
|
108
105
|
value,
|
|
109
|
-
data: data ??
|
|
106
|
+
data: data ?? Uint8Array.from([]),
|
|
110
107
|
accessList: accessList ?? [],
|
|
111
|
-
v: v !== undefined ?
|
|
112
|
-
r: r !== undefined && r.length !== 0 ?
|
|
113
|
-
s: s !== undefined && s.length !== 0 ?
|
|
108
|
+
v: v !== undefined ? bytesToInt(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)
|
|
109
|
+
r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
|
|
110
|
+
s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
|
|
114
111
|
},
|
|
115
112
|
opts
|
|
116
113
|
);
|
|
@@ -134,7 +131,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
134
131
|
r: data.r ?? fakeSignature.r,
|
|
135
132
|
s: data.s ?? fakeSignature.s,
|
|
136
133
|
},
|
|
137
|
-
{ ...opts, freeze: false,
|
|
134
|
+
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
138
135
|
);
|
|
139
136
|
|
|
140
137
|
this.common = this._getCommon(opts?.common);
|
|
@@ -155,13 +152,13 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
155
152
|
);
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
public _processSignature(_v: bigint, _r:
|
|
155
|
+
public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
|
|
159
156
|
throw new InternalError(
|
|
160
157
|
"`_processSignature` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
161
158
|
);
|
|
162
159
|
}
|
|
163
160
|
|
|
164
|
-
public sign(_privateKey:
|
|
161
|
+
public sign(_privateKey: Uint8Array): never {
|
|
165
162
|
throw new InternalError(
|
|
166
163
|
"`sign` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
167
164
|
);
|
|
@@ -192,10 +189,12 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
192
189
|
|
|
193
190
|
function checkIsAccessListEIP2930ValuesArray(
|
|
194
191
|
values: unknown
|
|
195
|
-
): asserts values is
|
|
192
|
+
): asserts values is TxValuesArray[TransactionType.AccessListEIP2930] {
|
|
196
193
|
if (!Array.isArray(values)) {
|
|
197
194
|
throw new InvalidArgumentsError(
|
|
198
|
-
`Invalid deserialized tx. Expected a
|
|
195
|
+
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
196
|
+
values as any
|
|
197
|
+
}'`
|
|
199
198
|
);
|
|
200
199
|
}
|
|
201
200
|
|
|
@@ -217,9 +216,9 @@ function checkIsAccessListEIP2930ValuesArray(
|
|
|
217
216
|
);
|
|
218
217
|
}
|
|
219
218
|
} else {
|
|
220
|
-
if (!
|
|
219
|
+
if (!(values[i] instanceof Uint8Array)) {
|
|
221
220
|
throw new InvalidArgumentsError(
|
|
222
|
-
`Invalid deserialized tx. Expected a
|
|
221
|
+
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
223
222
|
);
|
|
224
223
|
}
|
|
225
224
|
}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
2
|
-
import { FeeMarketEIP1559Transaction } from "@nomicfoundation/ethereumjs-tx";
|
|
3
2
|
import {
|
|
3
|
+
FeeMarketEIP1559Transaction,
|
|
4
4
|
FeeMarketEIP1559TxData,
|
|
5
|
-
|
|
5
|
+
TransactionType,
|
|
6
6
|
TxOptions,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
arrToBufArr,
|
|
11
|
-
bufferToInt,
|
|
12
|
-
} from "@nomicfoundation/ethereumjs-util";
|
|
7
|
+
TxValuesArray,
|
|
8
|
+
} from "@nomicfoundation/ethereumjs-tx";
|
|
9
|
+
import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
|
|
13
10
|
|
|
14
11
|
import {
|
|
15
12
|
InternalError,
|
|
@@ -33,7 +30,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
33
30
|
}
|
|
34
31
|
|
|
35
32
|
public static fromSerializedTx(
|
|
36
|
-
_serialized:
|
|
33
|
+
_serialized: Uint8Array,
|
|
37
34
|
_opts?: TxOptions
|
|
38
35
|
): never {
|
|
39
36
|
throw new InternalError(
|
|
@@ -42,7 +39,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
42
39
|
}
|
|
43
40
|
|
|
44
41
|
public static fromRlpSerializedTx(
|
|
45
|
-
_serialized:
|
|
42
|
+
_serialized: Uint8Array,
|
|
46
43
|
_opts?: TxOptions
|
|
47
44
|
): never {
|
|
48
45
|
throw new InternalError(
|
|
@@ -51,7 +48,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
51
48
|
}
|
|
52
49
|
|
|
53
50
|
public static fromValuesArray(
|
|
54
|
-
_values:
|
|
51
|
+
_values: TxValuesArray[TransactionType.FeeMarketEIP1559],
|
|
55
52
|
_opts?: TxOptions
|
|
56
53
|
): never {
|
|
57
54
|
throw new InternalError(
|
|
@@ -61,7 +58,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
61
58
|
|
|
62
59
|
public static fromSenderAndRlpSerializedTx(
|
|
63
60
|
sender: Address,
|
|
64
|
-
serialized:
|
|
61
|
+
serialized: Uint8Array,
|
|
65
62
|
opts?: TxOptions
|
|
66
63
|
) {
|
|
67
64
|
if (serialized[0] !== 2) {
|
|
@@ -70,7 +67,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
70
67
|
);
|
|
71
68
|
}
|
|
72
69
|
|
|
73
|
-
const values =
|
|
70
|
+
const values = rlp.decode(serialized.slice(1));
|
|
74
71
|
|
|
75
72
|
checkIsFeeMarketEIP1559ValuesArray(values);
|
|
76
73
|
|
|
@@ -79,7 +76,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
79
76
|
|
|
80
77
|
public static fromSenderAndValuesArray(
|
|
81
78
|
sender: Address,
|
|
82
|
-
values:
|
|
79
|
+
values: TxValuesArray[TransactionType.FeeMarketEIP1559],
|
|
83
80
|
opts: TxOptions = {}
|
|
84
81
|
): FakeSenderEIP1559Transaction {
|
|
85
82
|
const [
|
|
@@ -107,11 +104,11 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
107
104
|
gasLimit,
|
|
108
105
|
to: to !== undefined && to.length > 0 ? to : undefined,
|
|
109
106
|
value,
|
|
110
|
-
data: data ??
|
|
107
|
+
data: data ?? Uint8Array.from([]),
|
|
111
108
|
accessList: accessList ?? [],
|
|
112
|
-
v: v !== undefined ?
|
|
113
|
-
r: r !== undefined && r.length !== 0 ?
|
|
114
|
-
s: s !== undefined && s.length !== 0 ?
|
|
109
|
+
v: v !== undefined ? bytesToInt(v) : undefined, // EIP1559 supports v's with value 0 (empty Buffer)
|
|
110
|
+
r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
|
|
111
|
+
s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
|
|
115
112
|
},
|
|
116
113
|
opts
|
|
117
114
|
);
|
|
@@ -133,7 +130,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
133
130
|
r: data.r ?? fakeSignature.r,
|
|
134
131
|
s: data.s ?? fakeSignature.s,
|
|
135
132
|
},
|
|
136
|
-
{ ...opts, freeze: false,
|
|
133
|
+
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
137
134
|
);
|
|
138
135
|
|
|
139
136
|
this._sender = sender;
|
|
@@ -153,13 +150,13 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
153
150
|
);
|
|
154
151
|
}
|
|
155
152
|
|
|
156
|
-
public _processSignature(_v: bigint, _r:
|
|
153
|
+
public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
|
|
157
154
|
throw new InternalError(
|
|
158
155
|
"`_processSignature` is not implemented in FakeSenderEIP1559Transaction"
|
|
159
156
|
);
|
|
160
157
|
}
|
|
161
158
|
|
|
162
|
-
public sign(_privateKey:
|
|
159
|
+
public sign(_privateKey: Uint8Array): never {
|
|
163
160
|
throw new InternalError(
|
|
164
161
|
"`sign` is not implemented in FakeSenderEIP1559Transaction"
|
|
165
162
|
);
|
|
@@ -190,10 +187,12 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
190
187
|
|
|
191
188
|
function checkIsFeeMarketEIP1559ValuesArray(
|
|
192
189
|
values: unknown
|
|
193
|
-
): asserts values is
|
|
190
|
+
): asserts values is TxValuesArray[TransactionType.FeeMarketEIP1559] {
|
|
194
191
|
if (!Array.isArray(values)) {
|
|
195
192
|
throw new InvalidArgumentsError(
|
|
196
|
-
`Invalid deserialized tx. Expected a
|
|
193
|
+
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
194
|
+
values as any
|
|
195
|
+
}'`
|
|
197
196
|
);
|
|
198
197
|
}
|
|
199
198
|
|
|
@@ -215,9 +214,9 @@ function checkIsFeeMarketEIP1559ValuesArray(
|
|
|
215
214
|
);
|
|
216
215
|
}
|
|
217
216
|
} else {
|
|
218
|
-
if (!
|
|
217
|
+
if (!(values[i] instanceof Uint8Array)) {
|
|
219
218
|
throw new InvalidArgumentsError(
|
|
220
|
-
`Invalid deserialized tx. Expected a
|
|
219
|
+
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
221
220
|
);
|
|
222
221
|
}
|
|
223
222
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
2
2
|
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
LegacyTransaction,
|
|
5
|
+
LegacyTxData,
|
|
6
|
+
TxOptions,
|
|
7
|
+
} from "@nomicfoundation/ethereumjs-tx";
|
|
8
|
+
import { Address } from "@nomicfoundation/ethereumjs-util";
|
|
5
9
|
|
|
6
10
|
import {
|
|
7
11
|
InternalError,
|
|
@@ -20,15 +24,15 @@ import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
|
20
24
|
* The sender's private key is never recovered from the signature. Instead,
|
|
21
25
|
* the sender's address is received as parameter.
|
|
22
26
|
*/
|
|
23
|
-
export class FakeSenderTransaction extends
|
|
24
|
-
public static fromTxData(_txData:
|
|
27
|
+
export class FakeSenderTransaction extends LegacyTransaction {
|
|
28
|
+
public static fromTxData(_txData: LegacyTxData, _opts?: TxOptions): never {
|
|
25
29
|
throw new InternalError(
|
|
26
30
|
"`fromTxData` is not implemented in FakeSenderTransaction"
|
|
27
31
|
);
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
public static fromSerializedTx(
|
|
31
|
-
_serialized:
|
|
35
|
+
_serialized: Uint8Array,
|
|
32
36
|
_opts?: TxOptions
|
|
33
37
|
): never {
|
|
34
38
|
throw new InternalError(
|
|
@@ -37,7 +41,7 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
public static fromRlpSerializedTx(
|
|
40
|
-
_serialized:
|
|
44
|
+
_serialized: Uint8Array,
|
|
41
45
|
_opts?: TxOptions
|
|
42
46
|
): never {
|
|
43
47
|
throw new InternalError(
|
|
@@ -45,7 +49,10 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
45
49
|
);
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
public static fromValuesArray(
|
|
52
|
+
public static fromValuesArray(
|
|
53
|
+
_values: Uint8Array[],
|
|
54
|
+
_opts?: TxOptions
|
|
55
|
+
): never {
|
|
49
56
|
throw new InternalError(
|
|
50
57
|
"`fromRlpSerializedTx` is not implemented in FakeSenderTransaction"
|
|
51
58
|
);
|
|
@@ -53,10 +60,10 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
53
60
|
|
|
54
61
|
public static fromSenderAndRlpSerializedTx(
|
|
55
62
|
sender: Address,
|
|
56
|
-
serialized:
|
|
63
|
+
serialized: Uint8Array,
|
|
57
64
|
opts?: TxOptions
|
|
58
65
|
) {
|
|
59
|
-
const values =
|
|
66
|
+
const values = rlp.decode(serialized);
|
|
60
67
|
|
|
61
68
|
checkIsFlatBufferArray(values);
|
|
62
69
|
|
|
@@ -65,7 +72,7 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
65
72
|
|
|
66
73
|
public static fromSenderAndValuesArray(
|
|
67
74
|
sender: Address,
|
|
68
|
-
values:
|
|
75
|
+
values: Uint8Array[],
|
|
69
76
|
opts?: TxOptions
|
|
70
77
|
) {
|
|
71
78
|
if (values.length !== 6 && values.length !== 9) {
|
|
@@ -97,7 +104,7 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
97
104
|
|
|
98
105
|
private readonly _sender: Address;
|
|
99
106
|
|
|
100
|
-
constructor(sender: Address, data:
|
|
107
|
+
constructor(sender: Address, data: LegacyTxData = {}, opts?: TxOptions) {
|
|
101
108
|
const fakeSignature = makeFakeSignature(data, sender);
|
|
102
109
|
|
|
103
110
|
super(
|
|
@@ -107,7 +114,7 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
107
114
|
r: data.r ?? fakeSignature.r,
|
|
108
115
|
s: data.s ?? fakeSignature.s,
|
|
109
116
|
},
|
|
110
|
-
{ ...opts, freeze: false,
|
|
117
|
+
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
111
118
|
);
|
|
112
119
|
|
|
113
120
|
this.common = this._getCommon(opts?.common);
|
|
@@ -188,17 +195,21 @@ FakeSenderTransactionPrototype._processSignature = function () {
|
|
|
188
195
|
);
|
|
189
196
|
};
|
|
190
197
|
|
|
191
|
-
function checkIsFlatBufferArray(
|
|
198
|
+
function checkIsFlatBufferArray(
|
|
199
|
+
values: unknown
|
|
200
|
+
): asserts values is Uint8Array[] {
|
|
192
201
|
if (!Array.isArray(values)) {
|
|
193
202
|
throw new InvalidArgumentsError(
|
|
194
|
-
`Invalid deserialized tx. Expected a
|
|
203
|
+
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
204
|
+
values as any
|
|
205
|
+
}'`
|
|
195
206
|
);
|
|
196
207
|
}
|
|
197
208
|
|
|
198
209
|
for (const [i, value] of values.entries()) {
|
|
199
|
-
if (!
|
|
210
|
+
if (!(value instanceof Uint8Array)) {
|
|
200
211
|
throw new InvalidArgumentsError(
|
|
201
|
-
`Invalid deserialized tx. Expected a
|
|
212
|
+
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
202
213
|
);
|
|
203
214
|
}
|
|
204
215
|
}
|
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
2
2
|
import {
|
|
3
3
|
FeeMarketEIP1559Transaction,
|
|
4
|
+
TransactionType,
|
|
4
5
|
TxOptions,
|
|
6
|
+
TxValuesArray,
|
|
5
7
|
} from "@nomicfoundation/ethereumjs-tx";
|
|
6
8
|
import { Address } from "@nomicfoundation/ethereumjs-util";
|
|
7
9
|
|
|
8
|
-
import {
|
|
9
|
-
FeeMarketEIP1559TxData,
|
|
10
|
-
FeeMarketEIP1559ValuesArray,
|
|
11
|
-
} from "@nomicfoundation/ethereumjs-tx/src/types";
|
|
10
|
+
import { FeeMarketEIP1559TxData } from "@nomicfoundation/ethereumjs-tx/src/types";
|
|
12
11
|
import { InternalError } from "../../../core/providers/errors";
|
|
13
12
|
import * as BigIntUtils from "../../../util/bigint";
|
|
14
13
|
|
|
@@ -28,7 +27,7 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
|
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
public static fromSerializedTx(
|
|
31
|
-
_serialized:
|
|
30
|
+
_serialized: Uint8Array,
|
|
32
31
|
_opts?: TxOptions
|
|
33
32
|
): never {
|
|
34
33
|
throw new InternalError(
|
|
@@ -37,7 +36,7 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
|
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
public static fromRlpSerializedTx(
|
|
40
|
-
_serialized:
|
|
39
|
+
_serialized: Uint8Array,
|
|
41
40
|
_opts?: TxOptions
|
|
42
41
|
): never {
|
|
43
42
|
throw new InternalError(
|
|
@@ -46,7 +45,7 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
|
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
public static fromValuesArray(
|
|
49
|
-
_values:
|
|
48
|
+
_values: TxValuesArray[TransactionType.FeeMarketEIP1559],
|
|
50
49
|
_opts?: TxOptions
|
|
51
50
|
): never {
|
|
52
51
|
throw new InternalError(
|
|
@@ -70,7 +69,7 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
|
|
|
70
69
|
|
|
71
70
|
super(data, {
|
|
72
71
|
freeze: false,
|
|
73
|
-
|
|
72
|
+
allowUnlimitedInitCodeSize: true,
|
|
74
73
|
common: fakeCommon,
|
|
75
74
|
});
|
|
76
75
|
|
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts
CHANGED
|
@@ -2,8 +2,9 @@ import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
|
2
2
|
import {
|
|
3
3
|
AccessListEIP2930Transaction,
|
|
4
4
|
AccessListEIP2930TxData,
|
|
5
|
-
|
|
5
|
+
TransactionType,
|
|
6
6
|
TxOptions,
|
|
7
|
+
TxValuesArray,
|
|
7
8
|
} from "@nomicfoundation/ethereumjs-tx";
|
|
8
9
|
import { Address } from "@nomicfoundation/ethereumjs-util";
|
|
9
10
|
|
|
@@ -27,7 +28,7 @@ export class ReadOnlyValidEIP2930Transaction extends AccessListEIP2930Transactio
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
public static fromSerializedTx(
|
|
30
|
-
_serialized:
|
|
31
|
+
_serialized: Uint8Array,
|
|
31
32
|
_opts?: TxOptions
|
|
32
33
|
): never {
|
|
33
34
|
throw new InternalError(
|
|
@@ -36,7 +37,7 @@ export class ReadOnlyValidEIP2930Transaction extends AccessListEIP2930Transactio
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
public static fromRlpSerializedTx(
|
|
39
|
-
_serialized:
|
|
40
|
+
_serialized: Uint8Array,
|
|
40
41
|
_opts?: TxOptions
|
|
41
42
|
): never {
|
|
42
43
|
throw new InternalError(
|
|
@@ -45,7 +46,7 @@ export class ReadOnlyValidEIP2930Transaction extends AccessListEIP2930Transactio
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
public static fromValuesArray(
|
|
48
|
-
_values:
|
|
49
|
+
_values: TxValuesArray[TransactionType.AccessListEIP2930],
|
|
49
50
|
_opts?: TxOptions
|
|
50
51
|
): never {
|
|
51
52
|
throw new InternalError(
|
|
@@ -69,7 +70,7 @@ export class ReadOnlyValidEIP2930Transaction extends AccessListEIP2930Transactio
|
|
|
69
70
|
|
|
70
71
|
super(data, {
|
|
71
72
|
freeze: false,
|
|
72
|
-
|
|
73
|
+
allowUnlimitedInitCodeSize: true,
|
|
73
74
|
common: fakeCommon,
|
|
74
75
|
});
|
|
75
76
|
|