hardhat 2.16.1-dev.0 → 2.16.1

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 (57) hide show
  1. package/internal/cli/bootstrap.js +0 -0
  2. package/internal/util/download.d.ts.map +1 -1
  3. package/internal/util/download.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/internal/util/download.ts +0 -2
  6. package/internal/hardhat-network/provider/RethnetState.d.ts +0 -29
  7. package/internal/hardhat-network/provider/RethnetState.d.ts.map +0 -1
  8. package/internal/hardhat-network/provider/RethnetState.js +0 -110
  9. package/internal/hardhat-network/provider/RethnetState.js.map +0 -1
  10. package/internal/hardhat-network/provider/utils/bloom.d.ts +0 -32
  11. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +0 -1
  12. package/internal/hardhat-network/provider/utils/bloom.js +0 -79
  13. package/internal/hardhat-network/provider/utils/bloom.js.map +0 -1
  14. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +0 -17
  15. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +0 -1
  16. package/internal/hardhat-network/provider/utils/convertToRethnet.js +0 -392
  17. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +0 -1
  18. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts +0 -14
  19. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts.map +0 -1
  20. package/internal/hardhat-network/provider/vm/block-builder/dual.js +0 -47
  21. package/internal/hardhat-network/provider/vm/block-builder/dual.js.map +0 -1
  22. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts +0 -27
  23. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts.map +0 -1
  24. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js +0 -136
  25. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js.map +0 -1
  26. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts +0 -20
  27. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts.map +0 -1
  28. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js +0 -55
  29. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js.map +0 -1
  30. package/internal/hardhat-network/provider/vm/block-builder.d.ts +0 -19
  31. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +0 -1
  32. package/internal/hardhat-network/provider/vm/block-builder.js +0 -24
  33. package/internal/hardhat-network/provider/vm/block-builder.js.map +0 -1
  34. package/internal/hardhat-network/provider/vm/creation.d.ts +0 -10
  35. package/internal/hardhat-network/provider/vm/creation.d.ts.map +0 -1
  36. package/internal/hardhat-network/provider/vm/creation.js +0 -29
  37. package/internal/hardhat-network/provider/vm/creation.js.map +0 -1
  38. package/internal/hardhat-network/provider/vm/dual.d.ts +0 -43
  39. package/internal/hardhat-network/provider/vm/dual.d.ts.map +0 -1
  40. package/internal/hardhat-network/provider/vm/dual.js +0 -487
  41. package/internal/hardhat-network/provider/vm/dual.js.map +0 -1
  42. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +0 -61
  43. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +0 -1
  44. package/internal/hardhat-network/provider/vm/ethereumjs.js +0 -517
  45. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +0 -1
  46. package/internal/hardhat-network/provider/vm/exit.d.ts +0 -24
  47. package/internal/hardhat-network/provider/vm/exit.d.ts.map +0 -1
  48. package/internal/hardhat-network/provider/vm/exit.js +0 -140
  49. package/internal/hardhat-network/provider/vm/exit.js.map +0 -1
  50. package/internal/hardhat-network/provider/vm/rethnet.d.ts +0 -87
  51. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +0 -1
  52. package/internal/hardhat-network/provider/vm/rethnet.js +0 -262
  53. package/internal/hardhat-network/provider/vm/rethnet.js.map +0 -1
  54. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +0 -53
  55. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +0 -1
  56. package/internal/hardhat-network/provider/vm/vm-adapter.js +0 -3
  57. package/internal/hardhat-network/provider/vm/vm-adapter.js.map +0 -1
@@ -1,392 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rethnetResultToRunTxResult = exports.rethnetBlockToEthereumJS = exports.ethereumjsTransactionToRethnetTransactionRequest = exports.ethereumjsTransactionToRethnetPendingTransaction = exports.ethereumjsHeaderDataToRethnetBlockOptions = exports.ethereumjsHeaderDataToRethnetBlockConfig = exports.ethereumsjsHardforkToRethnet = exports.rethnetBlockHeaderToEthereumJSBlockData = exports.ethereumjsBlockHeaderToRethnet = void 0;
4
- const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
5
- const ethereumjs_tx_1 = require("@nomicfoundation/ethereumjs-tx");
6
- const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
7
- const bigint_1 = require("../../../util/bigint");
8
- const hardforks_1 = require("../../../util/hardforks");
9
- const message_trace_1 = require("../../stack-traces/message-trace");
10
- const exit_1 = require("../vm/exit");
11
- const FakeSenderEIP1559Transaction_1 = require("../transactions/FakeSenderEIP1559Transaction");
12
- const FakeSenderAccessListEIP2930Transaction_1 = require("../transactions/FakeSenderAccessListEIP2930Transaction");
13
- const FakeSenderTransaction_1 = require("../transactions/FakeSenderTransaction");
14
- const bloom_1 = require("./bloom");
15
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
16
- function ethereumjsBlockHeaderToRethnet(blockHeader) {
17
- return {
18
- parentHash: blockHeader.parentHash,
19
- ommersHash: blockHeader.uncleHash,
20
- beneficiary: blockHeader.coinbase.buf,
21
- stateRoot: blockHeader.stateRoot,
22
- transactionsRoot: blockHeader.transactionsTrie,
23
- receiptsRoot: blockHeader.receiptTrie,
24
- logsBloom: blockHeader.logsBloom,
25
- difficulty: blockHeader.difficulty,
26
- number: blockHeader.number,
27
- gasLimit: blockHeader.gasLimit,
28
- gasUsed: blockHeader.gasUsed,
29
- timestamp: blockHeader.timestamp,
30
- extraData: blockHeader.extraData,
31
- mixHash: blockHeader.mixHash,
32
- nonce: blockHeader.nonce,
33
- baseFeePerGas: blockHeader.baseFeePerGas,
34
- withdrawalsRoot: blockHeader.withdrawalsRoot,
35
- };
36
- }
37
- exports.ethereumjsBlockHeaderToRethnet = ethereumjsBlockHeaderToRethnet;
38
- function rethnetBlockHeaderToEthereumJSBlockData(blockHeader) {
39
- return {
40
- parentHash: blockHeader.parentHash,
41
- uncleHash: blockHeader.ommersHash,
42
- coinbase: new ethereumjs_util_1.Address(blockHeader.beneficiary),
43
- stateRoot: blockHeader.stateRoot,
44
- transactionsTrie: blockHeader.transactionsRoot,
45
- receiptTrie: blockHeader.receiptsRoot,
46
- logsBloom: blockHeader.logsBloom,
47
- difficulty: blockHeader.difficulty,
48
- number: blockHeader.number,
49
- gasLimit: blockHeader.gasLimit,
50
- gasUsed: blockHeader.gasUsed,
51
- timestamp: blockHeader.timestamp,
52
- extraData: blockHeader.extraData,
53
- mixHash: blockHeader.mixHash,
54
- nonce: blockHeader.nonce,
55
- baseFeePerGas: blockHeader.baseFeePerGas,
56
- withdrawalsRoot: blockHeader.withdrawalsRoot,
57
- };
58
- }
59
- exports.rethnetBlockHeaderToEthereumJSBlockData = rethnetBlockHeaderToEthereumJSBlockData;
60
- function ethereumsjsHardforkToRethnet(hardfork) {
61
- switch (hardfork) {
62
- case hardforks_1.HardforkName.FRONTIER:
63
- return 0 /* SpecId.Frontier */;
64
- case hardforks_1.HardforkName.HOMESTEAD:
65
- return 2 /* SpecId.Homestead */;
66
- case hardforks_1.HardforkName.DAO:
67
- return 3 /* SpecId.DaoFork */;
68
- case hardforks_1.HardforkName.TANGERINE_WHISTLE:
69
- return 4 /* SpecId.Tangerine */;
70
- case hardforks_1.HardforkName.SPURIOUS_DRAGON:
71
- return 5 /* SpecId.SpuriousDragon */;
72
- case hardforks_1.HardforkName.BYZANTIUM:
73
- return 6 /* SpecId.Byzantium */;
74
- case hardforks_1.HardforkName.CONSTANTINOPLE:
75
- return 7 /* SpecId.Constantinople */;
76
- case hardforks_1.HardforkName.PETERSBURG:
77
- return 8 /* SpecId.Petersburg */;
78
- case hardforks_1.HardforkName.ISTANBUL:
79
- return 9 /* SpecId.Istanbul */;
80
- case hardforks_1.HardforkName.MUIR_GLACIER:
81
- return 10 /* SpecId.MuirGlacier */;
82
- case hardforks_1.HardforkName.BERLIN:
83
- return 11 /* SpecId.Berlin */;
84
- case hardforks_1.HardforkName.LONDON:
85
- return 12 /* SpecId.London */;
86
- case hardforks_1.HardforkName.ARROW_GLACIER:
87
- return 13 /* SpecId.ArrowGlacier */;
88
- case hardforks_1.HardforkName.GRAY_GLACIER:
89
- return 14 /* SpecId.GrayGlacier */;
90
- case hardforks_1.HardforkName.MERGE:
91
- return 15 /* SpecId.Merge */;
92
- case hardforks_1.HardforkName.SHANGHAI:
93
- return 16 /* SpecId.Shanghai */;
94
- default:
95
- const _exhaustiveCheck = hardfork;
96
- throw new Error(`Unknown hardfork name '${hardfork}', this shouldn't happen`);
97
- }
98
- }
99
- exports.ethereumsjsHardforkToRethnet = ethereumsjsHardforkToRethnet;
100
- function ethereumjsHeaderDataToRethnetBlockConfig(headerData, difficulty, mixHash) {
101
- const beneficiary = headerData?.coinbase === undefined
102
- ? undefined
103
- : (0, ethereumjs_util_1.toBuffer)(headerData.coinbase);
104
- return {
105
- number: (0, bigint_1.fromBigIntLike)(headerData?.number),
106
- beneficiary,
107
- timestamp: (0, bigint_1.fromBigIntLike)(headerData?.timestamp),
108
- difficulty,
109
- mixHash,
110
- baseFee: (0, bigint_1.fromBigIntLike)(headerData?.baseFeePerGas),
111
- gasLimit: (0, bigint_1.fromBigIntLike)(headerData?.gasLimit),
112
- parentHash: headerData?.parentHash,
113
- };
114
- }
115
- exports.ethereumjsHeaderDataToRethnetBlockConfig = ethereumjsHeaderDataToRethnetBlockConfig;
116
- function ethereumjsHeaderDataToRethnetBlockOptions(headerData) {
117
- if (headerData === undefined) {
118
- return {};
119
- }
120
- // Ensure that we leave leave options undefined, as opposed to `toBuffer`
121
- function fromBufferLike(bufferLike) {
122
- if (bufferLike === undefined) {
123
- return bufferLike;
124
- }
125
- return (0, ethereumjs_util_1.toBuffer)(bufferLike);
126
- }
127
- return {
128
- parentHash: fromBufferLike(headerData.parentHash),
129
- beneficiary: fromBufferLike(headerData.coinbase),
130
- stateRoot: fromBufferLike(headerData.stateRoot),
131
- receiptsRoot: fromBufferLike(headerData.receiptTrie),
132
- logsBloom: fromBufferLike(headerData.logsBloom),
133
- difficulty: (0, bigint_1.fromBigIntLike)(headerData.difficulty),
134
- number: (0, bigint_1.fromBigIntLike)(headerData.number),
135
- gasLimit: (0, bigint_1.fromBigIntLike)(headerData.gasLimit),
136
- timestamp: (0, bigint_1.fromBigIntLike)(headerData.timestamp),
137
- extraData: fromBufferLike(headerData.extraData),
138
- mixHash: fromBufferLike(headerData.mixHash),
139
- nonce: fromBufferLike(headerData.nonce),
140
- baseFee: (0, bigint_1.fromBigIntLike)(headerData.baseFeePerGas),
141
- };
142
- }
143
- exports.ethereumjsHeaderDataToRethnetBlockOptions = ethereumjsHeaderDataToRethnetBlockOptions;
144
- function ethereumjsTransactionToRethnetPendingTransaction(tx) {
145
- const caller = tx.getSenderAddress().toBuffer();
146
- if (tx instanceof ethereumjs_tx_1.AccessListEIP2930Transaction) {
147
- const transaction = {
148
- chainId: tx.chainId,
149
- nonce: tx.nonce,
150
- gasPrice: tx.gasPrice,
151
- gasLimit: tx.gasLimit,
152
- to: tx.to?.buf,
153
- value: tx.value,
154
- input: tx.data,
155
- accessList: tx.accessList.map((value, _index, _array) => {
156
- return {
157
- address: value[0],
158
- storageKeys: value[1],
159
- };
160
- }),
161
- oddYParity: (tx.v ?? BigInt(0)) > 0,
162
- r: (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.toBuffer)(tx.r ?? BigInt(0)), 32),
163
- s: (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.toBuffer)(tx.s ?? BigInt(0)), 32),
164
- };
165
- return {
166
- transaction,
167
- caller,
168
- };
169
- }
170
- else if (tx instanceof ethereumjs_tx_1.FeeMarketEIP1559Transaction) {
171
- return {
172
- transaction: {
173
- chainId: tx.chainId,
174
- nonce: tx.nonce,
175
- maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
176
- maxFeePerGas: tx.maxFeePerGas,
177
- gasLimit: tx.gasLimit,
178
- to: tx.to?.buf,
179
- value: tx.value,
180
- input: tx.data,
181
- accessList: tx.accessList.map((value, _index, _array) => {
182
- return {
183
- address: value[0],
184
- storageKeys: value[1],
185
- };
186
- }),
187
- oddYParity: (tx.v ?? BigInt(0)) > 0,
188
- r: (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.toBuffer)(tx.r ?? BigInt(0)), 32),
189
- s: (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.toBuffer)(tx.s ?? BigInt(0)), 32),
190
- },
191
- caller,
192
- };
193
- }
194
- else {
195
- return {
196
- transaction: {
197
- nonce: tx.nonce,
198
- gasPrice: tx.gasPrice,
199
- gasLimit: tx.gasLimit,
200
- to: tx.to?.buf,
201
- value: tx.value,
202
- input: tx.data,
203
- signature: {
204
- r: tx.r,
205
- s: tx.s,
206
- v: tx.v,
207
- },
208
- },
209
- caller,
210
- };
211
- }
212
- }
213
- exports.ethereumjsTransactionToRethnetPendingTransaction = ethereumjsTransactionToRethnetPendingTransaction;
214
- function ethereumjsTransactionToRethnetTransactionRequest(tx) {
215
- if (tx instanceof ethereumjs_tx_1.AccessListEIP2930Transaction) {
216
- return {
217
- chainId: tx.chainId,
218
- nonce: tx.nonce,
219
- gasPrice: tx.gasPrice,
220
- gasLimit: tx.gasLimit,
221
- from: tx.getSenderAddress().toBuffer(),
222
- to: tx.to?.buf,
223
- value: tx.value,
224
- input: tx.data,
225
- accessList: tx.accessList.map((value, _index, _array) => {
226
- return {
227
- address: value[0],
228
- storageKeys: value[1],
229
- };
230
- }),
231
- };
232
- }
233
- else if (tx instanceof ethereumjs_tx_1.FeeMarketEIP1559Transaction) {
234
- return {
235
- chainId: tx.chainId,
236
- nonce: tx.nonce,
237
- gasPriorityFee: tx.maxPriorityFeePerGas,
238
- gasPrice: tx.maxFeePerGas,
239
- gasLimit: tx.gasLimit,
240
- from: tx.getSenderAddress().toBuffer(),
241
- to: tx.to?.buf,
242
- value: tx.value,
243
- input: tx.data,
244
- accessList: tx.accessList.map((value, _index, _array) => {
245
- return {
246
- address: value[0],
247
- storageKeys: value[1],
248
- };
249
- }),
250
- };
251
- }
252
- else {
253
- return {
254
- nonce: tx.nonce,
255
- gasPrice: tx.gasPrice,
256
- gasLimit: tx.gasLimit,
257
- from: tx.getSenderAddress().toBuffer(),
258
- to: tx.to?.buf,
259
- value: tx.value,
260
- input: tx.data,
261
- };
262
- }
263
- }
264
- exports.ethereumjsTransactionToRethnetTransactionRequest = ethereumjsTransactionToRethnetTransactionRequest;
265
- function rethnetBlockToEthereumJS(block, common) {
266
- const callers = block.callers;
267
- const blockData = {
268
- header: rethnetBlockHeaderToEthereumJSBlockData(block.header),
269
- transactions: block.transactions.map((transaction, index, _array) => {
270
- return rethnetSignedTransactionToEthereumJSTypedTransaction(transaction, new ethereumjs_util_1.Address(callers[index]));
271
- }),
272
- };
273
- return ethereumjs_block_1.Block.fromBlockData(blockData, {
274
- common,
275
- skipConsensusFormatValidation: true,
276
- });
277
- }
278
- exports.rethnetBlockToEthereumJS = rethnetBlockToEthereumJS;
279
- function rethnetLogsToBloom(logs) {
280
- const bloom = new bloom_1.Bloom();
281
- for (const log of logs) {
282
- bloom.add(log.address);
283
- for (const topic of log.topics) {
284
- bloom.add(topic);
285
- }
286
- }
287
- return bloom;
288
- }
289
- function rethnetResultToRunTxResult(rethnetResult, blockGasUsed) {
290
- const createdAddress = (0, message_trace_1.isSuccessResult)(rethnetResult.result) &&
291
- (0, message_trace_1.isCreateOutput)(rethnetResult.result.output)
292
- ? rethnetResult.result.output.address
293
- : undefined;
294
- const exit = (0, message_trace_1.isSuccessResult)(rethnetResult.result)
295
- ? exit_1.Exit.fromRethnetSuccessReason(rethnetResult.result.reason)
296
- : (0, message_trace_1.isHaltResult)(rethnetResult.result)
297
- ? exit_1.Exit.fromRethnetExceptionalHalt(rethnetResult.result.reason)
298
- : new exit_1.Exit(exit_1.ExitCode.REVERT);
299
- const returnValue = (0, message_trace_1.isRevertResult)(rethnetResult.result)
300
- ? rethnetResult.result.output
301
- : (0, message_trace_1.isSuccessResult)(rethnetResult.result)
302
- ? rethnetResult.result.output.returnValue
303
- : Buffer.from([]);
304
- const bloom = (0, message_trace_1.isSuccessResult)(rethnetResult.result)
305
- ? rethnetLogsToBloom(rethnetResult.result.logs)
306
- : new bloom_1.Bloom(undefined);
307
- return {
308
- gasUsed: rethnetResult.result.gasUsed,
309
- createdAddress: createdAddress !== undefined ? new ethereumjs_util_1.Address(createdAddress) : undefined,
310
- exit,
311
- returnValue,
312
- bloom,
313
- receipt: {
314
- // Receipts have a 0 as status on error
315
- status: exit.isError() ? 0 : 1,
316
- cumulativeBlockGasUsed: blockGasUsed + rethnetResult.result.gasUsed,
317
- bitvector: bloom.bitvector,
318
- logs: (0, message_trace_1.isSuccessResult)(rethnetResult.result)
319
- ? rethnetResult.result.logs.map((log) => {
320
- return [log.address, log.topics, log.data];
321
- })
322
- : [],
323
- },
324
- };
325
- }
326
- exports.rethnetResultToRunTxResult = rethnetResultToRunTxResult;
327
- function rethnetSignedTransactionToEthereumJSTypedTransaction(transaction, caller) {
328
- if (isEip1559SignedTransaction(transaction)) {
329
- return new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(caller, {
330
- maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
331
- maxFeePerGas: transaction.maxFeePerGas,
332
- chainId: transaction.chainId,
333
- accessList: transaction.accessList.map((value, _index, _array) => {
334
- return [value.address, value.storageKeys];
335
- }),
336
- nonce: transaction.nonce,
337
- gasLimit: transaction.gasLimit,
338
- to: transaction.to,
339
- value: transaction.value,
340
- data: transaction.input,
341
- v: BigInt(transaction.oddYParity),
342
- r: transaction.r,
343
- s: transaction.s,
344
- });
345
- }
346
- else if (isEip2930SignedTransaction(transaction)) {
347
- return new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(caller, {
348
- chainId: transaction.chainId,
349
- accessList: transaction.accessList.map((value, _index, _array) => {
350
- return [value.address, value.storageKeys];
351
- }),
352
- nonce: transaction.nonce,
353
- gasPrice: transaction.gasPrice,
354
- gasLimit: transaction.gasLimit,
355
- to: transaction.to,
356
- value: transaction.value,
357
- data: transaction.input,
358
- v: BigInt(transaction.oddYParity),
359
- r: transaction.r,
360
- s: transaction.s,
361
- });
362
- }
363
- else if (isLegacySignedTransaction(transaction)) {
364
- return new FakeSenderTransaction_1.FakeSenderTransaction(caller, {
365
- nonce: transaction.nonce,
366
- gasPrice: transaction.gasPrice,
367
- gasLimit: transaction.gasLimit,
368
- to: transaction.to,
369
- value: transaction.value,
370
- data: transaction.input,
371
- v: transaction.signature.v,
372
- r: transaction.signature.r,
373
- s: transaction.signature.s,
374
- });
375
- }
376
- else {
377
- throw new Error("Unknown signed transaction type");
378
- }
379
- }
380
- function isLegacySignedTransaction(transaction) {
381
- // Only need to check for one unique field
382
- return "signature" in transaction;
383
- }
384
- function isEip1559SignedTransaction(transaction) {
385
- // Only need to check for one unique field
386
- return "maxPriorityFeePerGas" in transaction;
387
- }
388
- function isEip2930SignedTransaction(transaction) {
389
- // Only need to check for one unique field
390
- return (!isEip1559SignedTransaction(transaction) && "oddYParity" in transaction);
391
- }
392
- //# sourceMappingURL=convertToRethnet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToRethnet.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/utils/convertToRethnet.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { Block } from "@nomicfoundation/ethereumjs-block";
2
- import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
3
- import { BlockBuilderAdapter, Reward } from "../block-builder";
4
- import { RunTxResult } from "../vm-adapter";
5
- export declare class DualModeBlockBuilder implements BlockBuilderAdapter {
6
- private _ethereumJSBuilder;
7
- private _rethnetBuilder;
8
- constructor(_ethereumJSBuilder: BlockBuilderAdapter, _rethnetBuilder: BlockBuilderAdapter);
9
- addTransaction(tx: TypedTransaction): Promise<RunTxResult>;
10
- finalize(rewards: Reward[], _timestamp?: bigint): Promise<Block>;
11
- revert(): Promise<void>;
12
- getGasUsed(): Promise<bigint>;
13
- }
14
- //# sourceMappingURL=dual.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dual.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/dual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,qBAAa,oBAAqB,YAAW,mBAAmB;IAE5D,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,eAAe;gBADf,kBAAkB,EAAE,mBAAmB,EACvC,eAAe,EAAE,mBAAmB;IAGjC,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAY1D,QAAQ,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;IAcJ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAiB3C"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DualModeBlockBuilder = void 0;
4
- const assertions_1 = require("../../utils/assertions");
5
- const rethnet_1 = require("../rethnet");
6
- const ForkStateManager_1 = require("../../fork/ForkStateManager");
7
- class DualModeBlockBuilder {
8
- constructor(_ethereumJSBuilder, _rethnetBuilder) {
9
- this._ethereumJSBuilder = _ethereumJSBuilder;
10
- this._rethnetBuilder = _rethnetBuilder;
11
- }
12
- async addTransaction(tx) {
13
- const ethereumJSResult = await this._ethereumJSBuilder.addTransaction(tx);
14
- const rethnetResult = await this._rethnetBuilder.addTransaction(tx);
15
- // Matches EthereumJS' runCall checkpoint call
16
- rethnet_1.globalRethnetContext.setHashGeneratorSeed((0, ForkStateManager_1.randomHashSeed)());
17
- (0, assertions_1.assertEqualRunTxResults)(ethereumJSResult, rethnetResult);
18
- return rethnetResult;
19
- }
20
- async finalize(rewards, _timestamp) {
21
- const ethereumJSBlock = await this._ethereumJSBuilder.finalize(rewards);
22
- const rethnetBlock = await this._rethnetBuilder.finalize(rewards,
23
- // We have to overwite rethnet's timestamp, as the blocks might have
24
- // been made and slightly different times
25
- ethereumJSBlock.header.timestamp);
26
- (0, assertions_1.assertEqualBlocks)(ethereumJSBlock, rethnetBlock);
27
- return rethnetBlock;
28
- }
29
- async revert() {
30
- await this._ethereumJSBuilder.revert();
31
- await this._rethnetBuilder.revert();
32
- }
33
- async getGasUsed() {
34
- const [ethereumJSGasUsed, rethnetGasUsed] = await Promise.all([
35
- this._ethereumJSBuilder.getGasUsed(),
36
- this._rethnetBuilder.getGasUsed(),
37
- ]);
38
- if (ethereumJSGasUsed !== rethnetGasUsed) {
39
- console.trace(`Different gas used in block: ${ethereumJSGasUsed} (ethereumjs) !== ${rethnetGasUsed} (rethnet)`);
40
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
41
- throw new Error("Different gas used in block");
42
- }
43
- return rethnetGasUsed;
44
- }
45
- }
46
- exports.DualModeBlockBuilder = DualModeBlockBuilder;
47
- //# sourceMappingURL=dual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dual.js","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/dual.ts"],"names":[],"mappings":";;;AAIA,uDAGgC;AAChC,wCAAkD;AAClD,kEAA6D;AAE7D,MAAa,oBAAoB;IAC/B,YACU,kBAAuC,EACvC,eAAoC;QADpC,uBAAkB,GAAlB,kBAAkB,CAAqB;QACvC,oBAAe,GAAf,eAAe,CAAqB;IAC3C,CAAC;IAEG,KAAK,CAAC,cAAc,CAAC,EAAoB;QAC9C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAEpE,8CAA8C;QAC9C,8BAAoB,CAAC,oBAAoB,CAAC,IAAA,iCAAc,GAAE,CAAC,CAAC;QAE5D,IAAA,oCAAuB,EAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEzD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,OAAiB,EACjB,UAAmB;QAEnB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CACtD,OAAO;QACP,oEAAoE;QACpE,yCAAyC;QACzC,eAAe,CAAC,MAAM,CAAC,SAAS,CACjC,CAAC;QAEF,IAAA,8BAAiB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAEjD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;YACpC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;SAClC,CAAC,CAAC;QAEH,IAAI,iBAAiB,KAAK,cAAc,EAAE;YACxC,OAAO,CAAC,KAAK,CACX,gCAAgC,iBAAiB,qBAAqB,cAAc,YAAY,CACjG,CAAC;YAEF,yEAAyE;YACzE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAzDD,oDAyDC"}
@@ -1,27 +0,0 @@
1
- /// <reference types="node" />
2
- import type { Common } from "@nomicfoundation/ethereumjs-common";
3
- import { Block } from "@nomicfoundation/ethereumjs-block";
4
- import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
5
- import { BlockBuilderAdapter, BuildBlockOpts, Reward } from "../block-builder";
6
- import { RunTxResult, VMAdapter } from "../vm-adapter";
7
- export declare class HardhatBlockBuilder implements BlockBuilderAdapter {
8
- private _vm;
9
- private _common;
10
- private _opts;
11
- private _blockStartStateRoot;
12
- private _state;
13
- private _gasUsed;
14
- private _transactions;
15
- private _transactionResults;
16
- constructor(_vm: VMAdapter, _common: Common, _opts: BuildBlockOpts, _blockStartStateRoot: Buffer);
17
- static create(vm: VMAdapter, common: Common, opts: BuildBlockOpts): Promise<HardhatBlockBuilder>;
18
- addTransaction(tx: TypedTransaction): Promise<RunTxResult>;
19
- finalize(rewards: Reward[]): Promise<Block>;
20
- revert(): Promise<void>;
21
- getGasUsed(): Promise<bigint>;
22
- getTransactionResults(): RunTxResult[];
23
- private _getTransactionsTrie;
24
- private _getReceiptsTrie;
25
- private _getLogsBloom;
26
- }
27
- //# sourceMappingURL=hardhat.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hardhat.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/hardhat.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,MAAM,EAEP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AASvD,qBAAa,mBAAoB,YAAW,mBAAmB;IAO3D,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,oBAAoB;IAT9B,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,mBAAmB,CAAqB;gBAGtC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,EACrB,oBAAoB,EAAE,MAAM;WAGlB,MAAM,CACxB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAMlB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAyD3C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,qBAAqB,IAAI,WAAW,EAAE;YAI/B,oBAAoB;YAQpB,gBAAgB;IAU9B,OAAO,CAAC,aAAa;CAQtB"}
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HardhatBlockBuilder = void 0;
4
- const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
5
- const ethereumjs_rlp_1 = require("@nomicfoundation/ethereumjs-rlp");
6
- const ethereumjs_trie_1 = require("@nomicfoundation/ethereumjs-trie");
7
- const bigint_1 = require("../../../../util/bigint");
8
- const bloom_1 = require("../../utils/bloom");
9
- const block_builder_1 = require("../block-builder");
10
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
11
- class HardhatBlockBuilder {
12
- constructor(_vm, _common, _opts, _blockStartStateRoot) {
13
- this._vm = _vm;
14
- this._common = _common;
15
- this._opts = _opts;
16
- this._blockStartStateRoot = _blockStartStateRoot;
17
- this._state = "started";
18
- this._gasUsed = 0n;
19
- this._transactions = [];
20
- this._transactionResults = [];
21
- }
22
- static async create(vm, common, opts) {
23
- const blockStartStateRoot = await vm.getStateRoot();
24
- return new HardhatBlockBuilder(vm, common, opts, blockStartStateRoot);
25
- }
26
- async addTransaction(tx) {
27
- if (this._state !== "started") {
28
- throw new Error(`BlockBuilder.addTransaction cannot be used in state ${this._state}`);
29
- }
30
- const blockGasLimit = (0, bigint_1.fromBigIntLike)(this._opts.headerData?.gasLimit) ?? 1000000n;
31
- const blockGasRemaining = blockGasLimit - this._gasUsed;
32
- if (tx.gasLimit > blockGasRemaining) {
33
- throw new Error("tx has a higher gas limit than the remaining gas in the block");
34
- }
35
- const header = {
36
- ...this._opts.headerData,
37
- gasUsed: this._gasUsed,
38
- };
39
- if (header.number === undefined) {
40
- header.number = this._opts.parentBlock.header.number + 1n;
41
- }
42
- const blockData = { header, transactions: this._transactions };
43
- const block = ethereumjs_block_1.Block.fromBlockData(blockData, {
44
- common: this._common,
45
- skipConsensusFormatValidation: true,
46
- calcDifficultyFromHeader: this._opts.parentBlock.header,
47
- });
48
- const [result] = await this._vm.runTxInBlock(tx, block);
49
- this._transactions.push(tx);
50
- this._transactionResults.push(result);
51
- this._gasUsed += result.gasUsed;
52
- return result;
53
- }
54
- async finalize(rewards) {
55
- if (this._state !== "started") {
56
- throw new Error(`BlockBuilder.seal cannot be used in state ${this._state}`);
57
- }
58
- for (const [address, reward] of rewards) {
59
- const account = await this._vm.getAccount(address);
60
- account.balance += reward;
61
- await this._vm.putAccount(address, account);
62
- }
63
- const stateRoot = await this._vm.getStateRoot();
64
- const transactionsTrie = await this._getTransactionsTrie();
65
- const receiptTrie = await this._getReceiptsTrie();
66
- const logsBloom = this._getLogsBloom();
67
- const gasUsed = this._gasUsed;
68
- const timestamp = this._opts.headerData?.timestamp ?? Math.round(Date.now() / 1000);
69
- const headerData = {
70
- ...this._opts.headerData,
71
- stateRoot,
72
- transactionsTrie,
73
- receiptTrie,
74
- logsBloom,
75
- gasUsed,
76
- timestamp,
77
- };
78
- const blockData = {
79
- header: {
80
- ...headerData,
81
- parentHash: this._opts.headerData?.parentHash ?? this._opts.parentBlock.hash(),
82
- number: this._opts.headerData?.number ??
83
- this._opts.parentBlock.header.number + BigInt(1),
84
- gasLimit: this._opts.headerData?.gasLimit ??
85
- this._opts.parentBlock.header.gasLimit,
86
- },
87
- transactions: this._transactions,
88
- };
89
- const block = ethereumjs_block_1.Block.fromBlockData(blockData, {
90
- common: this._common,
91
- skipConsensusFormatValidation: true,
92
- calcDifficultyFromHeader: this._opts.parentBlock.header,
93
- });
94
- this._state = "sealed";
95
- return block;
96
- }
97
- async revert() {
98
- if (this._state !== "started") {
99
- throw new Error(`BlockBuilder.revert cannot be used in state ${this._state}`);
100
- }
101
- await this._vm.restoreContext(this._blockStartStateRoot);
102
- this._state = "reverted";
103
- }
104
- async getGasUsed() {
105
- return this._gasUsed;
106
- }
107
- getTransactionResults() {
108
- return this._transactionResults;
109
- }
110
- async _getTransactionsTrie() {
111
- const trie = new ethereumjs_trie_1.Trie();
112
- for (const [i, tx] of this._transactions.entries()) {
113
- await trie.put(Buffer.from(ethereumjs_rlp_1.RLP.encode(i)), tx.serialize());
114
- }
115
- return trie.root();
116
- }
117
- async _getReceiptsTrie() {
118
- const receiptTrie = new ethereumjs_trie_1.Trie();
119
- for (const [i, txResult] of this._transactionResults.entries()) {
120
- const tx = this._transactions[i];
121
- const encodedReceipt = (0, block_builder_1.encodeReceipt)(txResult.receipt, tx.type);
122
- await receiptTrie.put(Buffer.from(ethereumjs_rlp_1.RLP.encode(i)), encodedReceipt);
123
- }
124
- return receiptTrie.root();
125
- }
126
- _getLogsBloom() {
127
- const bloom = new bloom_1.Bloom();
128
- for (const txResult of this._transactionResults) {
129
- // Combine blooms via bitwise OR
130
- bloom.or(txResult.bloom);
131
- }
132
- return bloom.bitvector;
133
- }
134
- }
135
- exports.HardhatBlockBuilder = HardhatBlockBuilder;
136
- //# sourceMappingURL=hardhat.js.map