hardhat 2.16.0-dev.0 → 2.16.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.
Files changed (72) hide show
  1. package/builtin-tasks/compile.js +18 -18
  2. package/builtin-tasks/compile.js.map +1 -1
  3. package/console.sol +3 -4
  4. package/internal/cli/analytics.d.ts +6 -6
  5. package/internal/cli/analytics.d.ts.map +1 -1
  6. package/internal/cli/analytics.js +43 -115
  7. package/internal/cli/analytics.js.map +1 -1
  8. package/internal/cli/bootstrap.js +0 -0
  9. package/internal/cli/cli.js +1 -1
  10. package/internal/cli/cli.js.map +1 -1
  11. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
  12. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
  13. package/package.json +1 -3
  14. package/src/builtin-tasks/compile.ts +43 -35
  15. package/src/internal/cli/analytics.ts +82 -134
  16. package/src/internal/cli/cli.ts +1 -1
  17. package/internal/core/config/extenders.d.ts +0 -7
  18. package/internal/core/config/extenders.d.ts.map +0 -1
  19. package/internal/core/config/extenders.js +0 -16
  20. package/internal/core/config/extenders.js.map +0 -1
  21. package/internal/hardhat-network/provider/RethnetState.d.ts +0 -29
  22. package/internal/hardhat-network/provider/RethnetState.d.ts.map +0 -1
  23. package/internal/hardhat-network/provider/RethnetState.js +0 -110
  24. package/internal/hardhat-network/provider/RethnetState.js.map +0 -1
  25. package/internal/hardhat-network/provider/utils/bloom.d.ts +0 -32
  26. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +0 -1
  27. package/internal/hardhat-network/provider/utils/bloom.js +0 -79
  28. package/internal/hardhat-network/provider/utils/bloom.js.map +0 -1
  29. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +0 -17
  30. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +0 -1
  31. package/internal/hardhat-network/provider/utils/convertToRethnet.js +0 -390
  32. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +0 -1
  33. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts +0 -14
  34. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts.map +0 -1
  35. package/internal/hardhat-network/provider/vm/block-builder/dual.js +0 -47
  36. package/internal/hardhat-network/provider/vm/block-builder/dual.js.map +0 -1
  37. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts +0 -27
  38. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts.map +0 -1
  39. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js +0 -136
  40. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js.map +0 -1
  41. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts +0 -20
  42. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts.map +0 -1
  43. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js +0 -55
  44. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js.map +0 -1
  45. package/internal/hardhat-network/provider/vm/block-builder.d.ts +0 -19
  46. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +0 -1
  47. package/internal/hardhat-network/provider/vm/block-builder.js +0 -24
  48. package/internal/hardhat-network/provider/vm/block-builder.js.map +0 -1
  49. package/internal/hardhat-network/provider/vm/creation.d.ts +0 -10
  50. package/internal/hardhat-network/provider/vm/creation.d.ts.map +0 -1
  51. package/internal/hardhat-network/provider/vm/creation.js +0 -29
  52. package/internal/hardhat-network/provider/vm/creation.js.map +0 -1
  53. package/internal/hardhat-network/provider/vm/dual.d.ts +0 -43
  54. package/internal/hardhat-network/provider/vm/dual.d.ts.map +0 -1
  55. package/internal/hardhat-network/provider/vm/dual.js +0 -487
  56. package/internal/hardhat-network/provider/vm/dual.js.map +0 -1
  57. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +0 -61
  58. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +0 -1
  59. package/internal/hardhat-network/provider/vm/ethereumjs.js +0 -517
  60. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +0 -1
  61. package/internal/hardhat-network/provider/vm/exit.d.ts +0 -24
  62. package/internal/hardhat-network/provider/vm/exit.d.ts.map +0 -1
  63. package/internal/hardhat-network/provider/vm/exit.js +0 -140
  64. package/internal/hardhat-network/provider/vm/exit.js.map +0 -1
  65. package/internal/hardhat-network/provider/vm/rethnet.d.ts +0 -87
  66. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +0 -1
  67. package/internal/hardhat-network/provider/vm/rethnet.js +0 -262
  68. package/internal/hardhat-network/provider/vm/rethnet.js.map +0 -1
  69. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +0 -53
  70. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +0 -1
  71. package/internal/hardhat-network/provider/vm/vm-adapter.js +0 -3
  72. package/internal/hardhat-network/provider/vm/vm-adapter.js.map +0 -1
@@ -1,140 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exit = exports.ExitCode = void 0;
4
- const ethereumjs_evm_1 = require("@nomicfoundation/ethereumjs-evm");
5
- const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/exceptions");
6
- var ExitCode;
7
- (function (ExitCode) {
8
- ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
9
- ExitCode[ExitCode["REVERT"] = 1] = "REVERT";
10
- ExitCode[ExitCode["OUT_OF_GAS"] = 2] = "OUT_OF_GAS";
11
- ExitCode[ExitCode["INTERNAL_ERROR"] = 3] = "INTERNAL_ERROR";
12
- ExitCode[ExitCode["INVALID_OPCODE"] = 4] = "INVALID_OPCODE";
13
- ExitCode[ExitCode["STACK_UNDERFLOW"] = 5] = "STACK_UNDERFLOW";
14
- ExitCode[ExitCode["CODESIZE_EXCEEDS_MAXIMUM"] = 6] = "CODESIZE_EXCEEDS_MAXIMUM";
15
- ExitCode[ExitCode["CREATE_COLLISION"] = 7] = "CREATE_COLLISION";
16
- })(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
17
- class Exit {
18
- constructor(kind) {
19
- this.kind = kind;
20
- }
21
- static fromRethnetSuccessReason(reason) {
22
- switch (reason) {
23
- case 0 /* SuccessReason.Stop */:
24
- case 1 /* SuccessReason.Return */:
25
- case 2 /* SuccessReason.SelfDestruct */:
26
- return new Exit(ExitCode.SUCCESS);
27
- // TODO: Should we throw an error if default is hit?
28
- }
29
- }
30
- static fromRethnetExceptionalHalt(halt) {
31
- switch (halt) {
32
- case 0 /* ExceptionalHalt.OutOfGas */:
33
- return new Exit(ExitCode.OUT_OF_GAS);
34
- case 1 /* ExceptionalHalt.OpcodeNotFound */:
35
- case 2 /* ExceptionalHalt.InvalidFEOpcode */:
36
- return new Exit(ExitCode.INVALID_OPCODE);
37
- case 5 /* ExceptionalHalt.StackUnderflow */:
38
- return new Exit(ExitCode.STACK_UNDERFLOW);
39
- case 8 /* ExceptionalHalt.CreateCollision */:
40
- return new Exit(ExitCode.CREATE_COLLISION);
41
- case 11 /* ExceptionalHalt.CreateContractSizeLimit */:
42
- return new Exit(ExitCode.CODESIZE_EXCEEDS_MAXIMUM);
43
- default: {
44
- // TODO temporary, should be removed in production
45
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
46
- throw new Error(`Unmatched rethnet exceptional halt: ${halt}`);
47
- }
48
- }
49
- }
50
- static fromEthereumJSEvmError(evmError) {
51
- if (evmError === undefined) {
52
- return new Exit(ExitCode.SUCCESS);
53
- }
54
- if (evmError.error === exceptions_1.ERROR.REVERT) {
55
- return new Exit(ExitCode.REVERT);
56
- }
57
- if (evmError.error === exceptions_1.ERROR.OUT_OF_GAS) {
58
- return new Exit(ExitCode.OUT_OF_GAS);
59
- }
60
- if (evmError.error === exceptions_1.ERROR.INTERNAL_ERROR) {
61
- return new Exit(ExitCode.INTERNAL_ERROR);
62
- }
63
- if (evmError.error === exceptions_1.ERROR.INVALID_OPCODE) {
64
- return new Exit(ExitCode.INVALID_OPCODE);
65
- }
66
- if (evmError.error === exceptions_1.ERROR.STACK_UNDERFLOW) {
67
- return new Exit(ExitCode.STACK_UNDERFLOW);
68
- }
69
- if (evmError.error === exceptions_1.ERROR.CODESIZE_EXCEEDS_MAXIMUM) {
70
- return new Exit(ExitCode.CODESIZE_EXCEEDS_MAXIMUM);
71
- }
72
- if (evmError.error === exceptions_1.ERROR.CREATE_COLLISION) {
73
- return new Exit(ExitCode.CREATE_COLLISION);
74
- }
75
- // TODO temporary, should be removed in production
76
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
77
- throw new Error(`Unmatched evm error: ${evmError.error}`);
78
- }
79
- isError() {
80
- return this.kind !== ExitCode.SUCCESS;
81
- }
82
- getReason() {
83
- switch (this.kind) {
84
- case ExitCode.SUCCESS:
85
- return "Success";
86
- case ExitCode.REVERT:
87
- return "Reverted";
88
- case ExitCode.OUT_OF_GAS:
89
- return "Out of gas";
90
- case ExitCode.INTERNAL_ERROR:
91
- return "Internal error";
92
- case ExitCode.INVALID_OPCODE:
93
- return "Invalid opcode";
94
- case ExitCode.STACK_UNDERFLOW:
95
- return "Stack underflow";
96
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
97
- return "Codesize exceeds maximum";
98
- case ExitCode.CREATE_COLLISION:
99
- return "Create collision";
100
- }
101
- const _exhaustiveCheck = this.kind;
102
- }
103
- getEthereumJSError() {
104
- switch (this.kind) {
105
- case ExitCode.SUCCESS:
106
- return undefined;
107
- case ExitCode.REVERT:
108
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.REVERT);
109
- case ExitCode.OUT_OF_GAS:
110
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.OUT_OF_GAS);
111
- case ExitCode.INTERNAL_ERROR:
112
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.INTERNAL_ERROR);
113
- case ExitCode.INVALID_OPCODE:
114
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.INVALID_OPCODE);
115
- case ExitCode.STACK_UNDERFLOW:
116
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.STACK_UNDERFLOW);
117
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
118
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.CODESIZE_EXCEEDS_MAXIMUM);
119
- case ExitCode.CREATE_COLLISION:
120
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.CREATE_COLLISION);
121
- }
122
- const _exhaustiveCheck = this.kind;
123
- }
124
- getRethnetExceptionalHalt() {
125
- switch (this.kind) {
126
- case ExitCode.OUT_OF_GAS:
127
- return 0 /* ExceptionalHalt.OutOfGas */;
128
- case ExitCode.INVALID_OPCODE:
129
- return 1 /* ExceptionalHalt.OpcodeNotFound */;
130
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
131
- return 11 /* ExceptionalHalt.CreateContractSizeLimit */;
132
- default:
133
- // TODO temporary, should be removed in production
134
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
135
- throw new Error(`Unmatched rethnet exceptional halt: ${this.kind}`);
136
- }
137
- }
138
- }
139
- exports.Exit = Exit;
140
- //# sourceMappingURL=exit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/exit.ts"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- /// <reference types="node" />
2
- import { Block } from "@nomicfoundation/ethereumjs-block";
3
- import { Common } from "@nomicfoundation/ethereumjs-common";
4
- import { Account, Address } from "@nomicfoundation/ethereumjs-util";
5
- import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
6
- import { Blockchain, Rethnet, RethnetContext } from "rethnet-evm";
7
- import { NodeConfig } from "../node-types";
8
- import { RpcDebugTraceOutput } from "../output";
9
- import { RethnetStateManager } from "../RethnetState";
10
- import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
11
- import { MessageTrace } from "../../stack-traces/message-trace";
12
- import { RunTxResult, Trace, VMAdapter } from "./vm-adapter";
13
- import { BlockBuilderAdapter, BuildBlockOpts } from "./block-builder";
14
- export declare const globalRethnetContext: RethnetContext;
15
- export declare class RethnetAdapter implements VMAdapter {
16
- private _blockchain;
17
- private _state;
18
- private _rethnet;
19
- private readonly _selectHardfork;
20
- private _vmTracer;
21
- constructor(_blockchain: Blockchain, _state: RethnetStateManager, _rethnet: Rethnet, _selectHardfork: (blockNumber: bigint) => string, common: Common);
22
- static create(config: NodeConfig, selectHardfork: (blockNumber: bigint) => string, getBlockHash: (blockNumber: bigint) => Promise<Buffer>, common: Common): Promise<RethnetAdapter>;
23
- /**
24
- * Run `tx` with the given `blockContext`, without modifying the state.
25
- */
26
- dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
27
- /**
28
- * Get the account info for the given address.
29
- */
30
- getAccount(address: Address): Promise<Account>;
31
- /**
32
- * Get the storage value at the given address and slot.
33
- */
34
- getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
35
- /**
36
- * Get the contract code at the given address.
37
- */
38
- getContractCode(address: Address): Promise<Buffer>;
39
- /**
40
- * Update the account info for the given address.
41
- */
42
- putAccount(address: Address, account: Account): Promise<void>;
43
- /**
44
- * Update the contract code for the given address.
45
- */
46
- putContractCode(address: Address, value: Buffer): Promise<void>;
47
- /**
48
- * Update the value of the given storage slot.
49
- */
50
- putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
51
- /**
52
- * Get the root of the current state trie.
53
- */
54
- getStateRoot(): Promise<Buffer>;
55
- /**
56
- * Reset the state trie to the point after `block` was mined. If
57
- * `irregularStateOrUndefined` is passed, use it as the state root.
58
- */
59
- setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
60
- /**
61
- * Reset the state trie to the point where it had the given state root.
62
- *
63
- * Throw if it can't.
64
- */
65
- restoreContext(stateRoot: Buffer): Promise<void>;
66
- /**
67
- * Must be called after `startBlock`, and before `seal`.
68
- */
69
- runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
70
- /**
71
- * Re-execute the transactions in the block up until the transaction with the
72
- * given hash, and trace the execution of that transaction.
73
- */
74
- traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
75
- makeSnapshot(): Promise<Buffer>;
76
- removeSnapshot(stateRoot: Buffer): Promise<void>;
77
- getLastTrace(): {
78
- trace: MessageTrace | undefined;
79
- error: Error | undefined;
80
- };
81
- clearLastError(): void;
82
- printState(): Promise<void>;
83
- createBlockBuilder(common: Common, opts: BuildBlockOpts): Promise<BlockBuilderAdapter>;
84
- private _getBlockEnvDifficulty;
85
- private _getBlockPrevRandao;
86
- }
87
- //# sourceMappingURL=rethnet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rethnet.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
@@ -1,262 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RethnetAdapter = exports.globalRethnetContext = void 0;
4
- const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
5
- const ethereumjs_tx_1 = require("@nomicfoundation/ethereumjs-tx");
6
- const rethnet_evm_1 = require("rethnet-evm");
7
- const node_types_1 = require("../node-types");
8
- const convertToRethnet_1 = require("../utils/convertToRethnet");
9
- const hardforks_1 = require("../../../util/hardforks");
10
- const keccak_1 = require("../../../util/keccak");
11
- const RethnetState_1 = require("../RethnetState");
12
- const vm_tracer_1 = require("../../stack-traces/vm-tracer");
13
- const rethnet_1 = require("./block-builder/rethnet");
14
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
15
- /* eslint-disable @typescript-eslint/no-unused-vars */
16
- exports.globalRethnetContext = new rethnet_evm_1.RethnetContext();
17
- class RethnetAdapter {
18
- constructor(_blockchain, _state, _rethnet, _selectHardfork, common) {
19
- this._blockchain = _blockchain;
20
- this._state = _state;
21
- this._rethnet = _rethnet;
22
- this._selectHardfork = _selectHardfork;
23
- this._vmTracer = new vm_tracer_1.VMTracer(common, false);
24
- }
25
- static async create(config, selectHardfork, getBlockHash, common) {
26
- const blockchain = new rethnet_evm_1.Blockchain(getBlockHash);
27
- const limitContractCodeSize = config.allowUnlimitedContractSize === true ? 2n ** 64n - 1n : undefined;
28
- let state;
29
- if ((0, node_types_1.isForkedNodeConfig)(config)) {
30
- state = await RethnetState_1.RethnetStateManager.forkRemote(exports.globalRethnetContext, config.forkConfig, config.genesisAccounts);
31
- }
32
- else {
33
- state = RethnetState_1.RethnetStateManager.withGenesisAccounts(exports.globalRethnetContext, config.genesisAccounts);
34
- }
35
- const rethnet = new rethnet_evm_1.Rethnet(blockchain, state.asInner(), {
36
- chainId: BigInt(config.chainId),
37
- specId: (0, convertToRethnet_1.ethereumsjsHardforkToRethnet)(config.hardfork),
38
- limitContractCodeSize,
39
- disableBlockGasLimit: true,
40
- disableEip3607: true,
41
- });
42
- return new RethnetAdapter(blockchain, state, rethnet, selectHardfork, common);
43
- }
44
- /**
45
- * Run `tx` with the given `blockContext`, without modifying the state.
46
- */
47
- async dryRun(tx, blockContext, forceBaseFeeZero) {
48
- if (tx.supports(ethereumjs_tx_1.Capability.EIP1559FeeMarket) &&
49
- !blockContext._common.hardforkGteHardfork(this._selectHardfork(blockContext.header.number), "london")) {
50
- throw new Error("Cannot run transaction: EIP 1559 is not activated.");
51
- }
52
- const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnetTransactionRequest)(tx);
53
- const difficulty = this._getBlockEnvDifficulty(blockContext.header.difficulty);
54
- const prevRandao = this._getBlockPrevRandao(blockContext.header.number, blockContext.header.mixHash);
55
- const rethnetResult = await this._rethnet.guaranteedDryRun(rethnetTx, {
56
- number: blockContext.header.number,
57
- beneficiary: blockContext.header.coinbase.buf,
58
- timestamp: blockContext.header.timestamp,
59
- baseFee: forceBaseFeeZero === true ? 0n : blockContext.header.baseFeePerGas,
60
- gasLimit: blockContext.header.gasLimit,
61
- difficulty,
62
- mixHash: prevRandao,
63
- }, true);
64
- const trace = rethnetResult.trace;
65
- for (const traceItem of trace) {
66
- if ("pc" in traceItem) {
67
- await this._vmTracer.addStep(traceItem);
68
- }
69
- else if ("executionResult" in traceItem) {
70
- await this._vmTracer.addAfterMessage(traceItem);
71
- }
72
- else {
73
- await this._vmTracer.addBeforeMessage(traceItem);
74
- }
75
- }
76
- try {
77
- const result = (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.result, blockContext.header.gasUsed);
78
- return [result, trace];
79
- }
80
- catch (e) {
81
- // console.log("Rethnet trace");
82
- // console.log(rethnetResult.execResult.trace);
83
- throw e;
84
- }
85
- }
86
- /**
87
- * Get the account info for the given address.
88
- */
89
- async getAccount(address) {
90
- const [accountInfo, storageRoot] = await Promise.all([
91
- this._state.getAccount(address),
92
- this._state.getAccountStorageRoot(address),
93
- ]);
94
- return new ethereumjs_util_1.Account(accountInfo?.nonce, accountInfo?.balance, storageRoot ?? undefined, accountInfo?.code?.hash);
95
- }
96
- /**
97
- * Get the storage value at the given address and slot.
98
- */
99
- async getContractStorage(address, key) {
100
- return this._state.getContractStorage(address, key);
101
- }
102
- /**
103
- * Get the contract code at the given address.
104
- */
105
- async getContractCode(address) {
106
- return this._state.getContractCode(address);
107
- }
108
- /**
109
- * Update the account info for the given address.
110
- */
111
- async putAccount(address, account) {
112
- const contractCode = account.codeHash === ethereumjs_util_1.KECCAK256_NULL
113
- ? undefined
114
- : await this._state.getContractCode(address);
115
- return this._state.modifyAccount(address, async function (balance, nonce, code) {
116
- const newCode = account.codeHash === ethereumjs_util_1.KECCAK256_NULL
117
- ? undefined
118
- : account.codeHash === code?.hash
119
- ? code
120
- : {
121
- hash: account.codeHash,
122
- code: contractCode,
123
- };
124
- return {
125
- balance: account.balance,
126
- nonce: account.nonce,
127
- code: newCode,
128
- };
129
- });
130
- }
131
- /**
132
- * Update the contract code for the given address.
133
- */
134
- async putContractCode(address, value) {
135
- const codeHash = (0, keccak_1.keccak256)(value);
136
- return this._state.modifyAccount(address, async function (balance, nonce, code) {
137
- const newCode = codeHash === ethereumjs_util_1.KECCAK256_NULL
138
- ? undefined
139
- : codeHash === code?.hash
140
- ? code
141
- : {
142
- hash: codeHash,
143
- code: value,
144
- };
145
- return {
146
- balance,
147
- nonce,
148
- code: newCode,
149
- };
150
- });
151
- }
152
- /**
153
- * Update the value of the given storage slot.
154
- */
155
- async putContractStorage(address, key, value) {
156
- await this._state.putContractStorage(address, key, value);
157
- }
158
- /**
159
- * Get the root of the current state trie.
160
- */
161
- async getStateRoot() {
162
- return this._state.getStateRoot();
163
- }
164
- /**
165
- * Reset the state trie to the point after `block` was mined. If
166
- * `irregularStateOrUndefined` is passed, use it as the state root.
167
- */
168
- async setBlockContext(block, irregularStateOrUndefined) {
169
- return this._state.setBlockContext(irregularStateOrUndefined ?? block.header.stateRoot, block.header.number);
170
- }
171
- /**
172
- * Reset the state trie to the point where it had the given state root.
173
- *
174
- * Throw if it can't.
175
- */
176
- async restoreContext(stateRoot) {
177
- return this._state.setBlockContext(stateRoot);
178
- }
179
- /**
180
- * Must be called after `startBlock`, and before `seal`.
181
- */
182
- async runTxInBlock(tx, block) {
183
- if (tx.supports(ethereumjs_tx_1.Capability.EIP1559FeeMarket) &&
184
- !block._common.hardforkGteHardfork(this._selectHardfork(block.header.number), "london")) {
185
- throw new Error("Cannot run transaction: EIP 1559 is not activated.");
186
- }
187
- const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnetTransactionRequest)(tx);
188
- const difficulty = this._getBlockEnvDifficulty(block.header.difficulty);
189
- const prevRandao = this._getBlockPrevRandao(block.header.number, block.header.mixHash);
190
- const rethnetResult = await this._rethnet.run(rethnetTx, (0, convertToRethnet_1.ethereumjsHeaderDataToRethnetBlockConfig)(block.header, difficulty, prevRandao), true);
191
- const trace = rethnetResult.trace;
192
- for (const traceItem of trace) {
193
- if ("pc" in traceItem) {
194
- await this._vmTracer.addStep(traceItem);
195
- }
196
- else if ("executionResult" in traceItem) {
197
- await this._vmTracer.addAfterMessage(traceItem);
198
- }
199
- else {
200
- await this._vmTracer.addBeforeMessage(traceItem);
201
- }
202
- }
203
- try {
204
- const result = (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.result, block.header.gasUsed);
205
- return [result, this._vmTracer.getLastTopLevelMessageTrace()];
206
- }
207
- catch (e) {
208
- // console.log("Rethnet trace");
209
- // console.log(rethnetResult.trace);
210
- throw e;
211
- }
212
- }
213
- /**
214
- * Re-execute the transactions in the block up until the transaction with the
215
- * given hash, and trace the execution of that transaction.
216
- */
217
- async traceTransaction(hash, block, config) {
218
- throw new Error("traceTransaction not implemented for Rethnet");
219
- }
220
- async makeSnapshot() {
221
- return this._state.makeSnapshot();
222
- }
223
- async removeSnapshot(stateRoot) {
224
- return this._state.removeSnapshot(stateRoot);
225
- }
226
- getLastTrace() {
227
- const trace = this._vmTracer.getLastTopLevelMessageTrace();
228
- const error = this._vmTracer.getLastError();
229
- return { trace, error };
230
- }
231
- clearLastError() {
232
- this._vmTracer.clearLastError();
233
- }
234
- async printState() {
235
- console.log(await this._state.serialize());
236
- }
237
- async createBlockBuilder(common, opts) {
238
- await this._state.checkpoint();
239
- return rethnet_1.RethnetBlockBuilder.create(this._blockchain, this._state, this._vmTracer, this._rethnet.config(), common, opts);
240
- }
241
- _getBlockEnvDifficulty(difficulty) {
242
- const MAX_DIFFICULTY = 2n ** 32n - 1n;
243
- if (difficulty !== undefined && difficulty > MAX_DIFFICULTY) {
244
- console.warn("Difficulty is larger than U256::max:", difficulty.toString(16));
245
- return MAX_DIFFICULTY;
246
- }
247
- return difficulty;
248
- }
249
- _getBlockPrevRandao(blockNumber, mixHash) {
250
- const hardfork = this._selectHardfork(blockNumber);
251
- const isPostMergeHardfork = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.MERGE);
252
- if (isPostMergeHardfork) {
253
- if (mixHash === undefined) {
254
- throw new Error("mixHash must be set for post-merge hardfork");
255
- }
256
- return mixHash;
257
- }
258
- return undefined;
259
- }
260
- }
261
- exports.RethnetAdapter = RethnetAdapter;
262
- //# sourceMappingURL=rethnet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rethnet.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /// <reference types="node" />
2
- import type { Block } from "@nomicfoundation/ethereumjs-block";
3
- import type { Common } from "@nomicfoundation/ethereumjs-common";
4
- import type { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
5
- import type { Account, Address } from "@nomicfoundation/ethereumjs-util";
6
- import type { TxReceipt } from "@nomicfoundation/ethereumjs-vm";
7
- import type { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
8
- import type { RpcDebugTraceOutput } from "../output";
9
- import { MessageTrace } from "../../stack-traces/message-trace";
10
- import { Bloom } from "../utils/bloom";
11
- import { Exit } from "./exit";
12
- import { BlockBuilderAdapter, BuildBlockOpts } from "./block-builder";
13
- export declare type Trace = any;
14
- export interface RunTxResult {
15
- bloom: Bloom;
16
- createdAddress?: Address;
17
- gasUsed: bigint;
18
- returnValue: Buffer;
19
- exit: Exit;
20
- receipt: TxReceipt;
21
- }
22
- export interface RunBlockResult {
23
- results: RunTxResult[];
24
- receipts: TxReceipt[];
25
- stateRoot: Buffer;
26
- logsBloom: Buffer;
27
- receiptsRoot: Buffer;
28
- gasUsed: bigint;
29
- }
30
- export interface VMAdapter {
31
- dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
32
- getAccount(address: Address): Promise<Account>;
33
- getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
34
- getContractCode(address: Address): Promise<Buffer>;
35
- putAccount(address: Address, account: Account): Promise<void>;
36
- putContractCode(address: Address, value: Buffer): Promise<void>;
37
- putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
38
- getStateRoot(): Promise<Buffer>;
39
- setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
40
- restoreContext(stateRoot: Buffer): Promise<void>;
41
- runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
42
- getLastTrace(): {
43
- trace: MessageTrace | undefined;
44
- error: Error | undefined;
45
- };
46
- clearLastError(): void;
47
- traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
48
- makeSnapshot(): Promise<Buffer>;
49
- removeSnapshot(stateRoot: Buffer): Promise<void>;
50
- printState(): Promise<void>;
51
- createBlockBuilder(common: Common, opts: BuildBlockOpts): Promise<BlockBuilderAdapter>;
52
- }
53
- //# sourceMappingURL=vm-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vm-adapter.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=vm-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vm-adapter.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":""}