sol-dbg 0.5.0 → 0.6.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.
- package/dist/debug/decoding/general.d.ts +2 -1
- package/dist/debug/decoding/general.d.ts.map +1 -1
- package/dist/debug/decoding/general.js +5 -5
- package/dist/debug/decoding/general.js.map +1 -1
- package/dist/debug/decoding/storage.d.ts +6 -3
- package/dist/debug/decoding/storage.d.ts.map +1 -1
- package/dist/debug/decoding/storage.js +73 -13
- package/dist/debug/decoding/storage.js.map +1 -1
- package/dist/debug/foundry_cheatcodes.d.ts +2 -1
- package/dist/debug/foundry_cheatcodes.d.ts.map +1 -1
- package/dist/debug/foundry_cheatcodes.js +4 -0
- package/dist/debug/foundry_cheatcodes.js.map +1 -1
- package/dist/debug/index.d.ts +1 -0
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +1 -0
- package/dist/debug/index.js.map +1 -1
- package/dist/debug/layout.d.ts +9 -0
- package/dist/debug/layout.d.ts.map +1 -0
- package/dist/debug/layout.js +80 -0
- package/dist/debug/layout.js.map +1 -0
- package/dist/debug/tracers/base_tracer.d.ts +4 -1
- package/dist/debug/tracers/base_tracer.d.ts.map +1 -1
- package/dist/debug/tracers/base_tracer.js +13 -3
- package/dist/debug/tracers/base_tracer.js.map +1 -1
- package/dist/debug/tracers/index.d.ts +1 -0
- package/dist/debug/tracers/index.d.ts.map +1 -1
- package/dist/debug/tracers/index.js +1 -0
- package/dist/debug/tracers/index.js.map +1 -1
- package/dist/debug/tracers/support_tracer.d.ts +15 -0
- package/dist/debug/tracers/support_tracer.d.ts.map +1 -0
- package/dist/debug/tracers/support_tracer.js +22 -0
- package/dist/debug/tracers/support_tracer.js.map +1 -0
- package/dist/debug/tracers/transformers/basic_info.d.ts +2 -0
- package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/basic_info.js +2 -0
- package/dist/debug/tracers/transformers/basic_info.js.map +1 -1
- package/dist/debug/tracers/transformers/contract_lifetime.d.ts +21 -0
- package/dist/debug/tracers/transformers/contract_lifetime.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/contract_lifetime.js +70 -0
- package/dist/debug/tracers/transformers/contract_lifetime.js.map +1 -0
- package/dist/debug/tracers/transformers/index.d.ts +2 -0
- package/dist/debug/tracers/transformers/index.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/index.js +2 -0
- package/dist/debug/tracers/transformers/index.js.map +1 -1
- package/dist/debug/tracers/transformers/keccak256_invert.d.ts +29 -0
- package/dist/debug/tracers/transformers/keccak256_invert.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/keccak256_invert.js +65 -0
- package/dist/debug/tracers/transformers/keccak256_invert.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/map.d.ts +5 -0
- package/dist/utils/map.d.ts.map +1 -0
- package/dist/utils/map.js +12 -0
- package/dist/utils/map.js.map +1 -0
- package/dist/utils/pp.d.ts +2 -1
- package/dist/utils/pp.d.ts.map +1 -1
- package/dist/utils/pp.js +2 -2
- package/dist/utils/pp.js.map +1 -1
- package/dist/utils/set.d.ts +9 -0
- package/dist/utils/set.d.ts.map +1 -0
- package/dist/utils/set.js +21 -0
- package/dist/utils/set.js.map +1 -0
- package/dist/utils/test_runner.d.ts +22 -10
- package/dist/utils/test_runner.d.ts.map +1 -1
- package/dist/utils/test_runner.js +73 -33
- package/dist/utils/test_runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Block } from "@ethereumjs/block";
|
|
2
|
-
import { EVMStateManagerInterface } from "@ethereumjs/common";
|
|
2
|
+
import { Common, EVMStateManagerInterface } from "@ethereumjs/common";
|
|
3
3
|
import { TypedTransaction } from "@ethereumjs/tx";
|
|
4
|
-
import {
|
|
4
|
+
import { PrefixedHexString } from "@ethereumjs/util";
|
|
5
5
|
import { HexString } from "../artifacts";
|
|
6
|
+
import { ContractSolidityState, FoundryTxResult, IArtifactManager, KeccakPreimageMap } from "../debug";
|
|
6
7
|
export interface BaseTestStep {
|
|
7
8
|
address: HexString;
|
|
8
9
|
gasLimit: HexString;
|
|
@@ -62,30 +63,41 @@ export interface TestStep extends BaseTestStep {
|
|
|
62
63
|
errorStack?: string[];
|
|
63
64
|
errorString?: string;
|
|
64
65
|
errorPathPrefix?: string;
|
|
66
|
+
layoutBefore?: ContractSolidityState;
|
|
65
67
|
}
|
|
66
68
|
export interface TestCase extends BaseTestCase {
|
|
67
69
|
steps: TestStep[];
|
|
68
70
|
}
|
|
69
71
|
/**
|
|
70
|
-
* Helper class to
|
|
72
|
+
* Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
|
|
73
|
+
*
|
|
74
|
+
* 1. The TX data for each
|
|
75
|
+
* 2. The Block info for each TX
|
|
76
|
+
* 3. The State of the world before each TX
|
|
77
|
+
* 4. The result of the TX
|
|
78
|
+
* 5. The set of contracts before each TX
|
|
79
|
+
* 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
|
|
71
80
|
*/
|
|
72
81
|
export declare class VMTestRunner {
|
|
73
|
-
private
|
|
82
|
+
private _foundryCheatcodes;
|
|
83
|
+
private tracer;
|
|
74
84
|
private _txs;
|
|
75
85
|
private _txToBlock;
|
|
76
86
|
private _results;
|
|
77
87
|
private _stateRootBeforeTx;
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
private _contractsBeforeTx;
|
|
89
|
+
private _keccakPreimagesBeforeTx;
|
|
90
|
+
constructor(artifactManager: IArtifactManager, _foundryCheatcodes?: boolean);
|
|
80
91
|
runTestCase(testCaseJSON: BaseTestCase): Promise<void>;
|
|
81
92
|
private setupInitialState;
|
|
82
|
-
harveyStepToTransaction(step: BaseTestStep): Promise<TypedTransaction>;
|
|
83
|
-
harveyStepToBlock(step: BaseTestStep): Block;
|
|
84
|
-
private _runTxInt;
|
|
93
|
+
harveyStepToTransaction(step: BaseTestStep, stateManager: EVMStateManagerInterface, common: Common): Promise<TypedTransaction>;
|
|
94
|
+
harveyStepToBlock(step: BaseTestStep, common: Common): Block;
|
|
85
95
|
get txs(): TypedTransaction[];
|
|
86
|
-
get results():
|
|
96
|
+
get results(): FoundryTxResult[];
|
|
87
97
|
getStateBeforeTx(tx: TypedTransaction): EVMStateManagerInterface;
|
|
88
98
|
getBlock(tx: TypedTransaction): Block;
|
|
99
|
+
getContractsBefore(tx: TypedTransaction): Set<PrefixedHexString>;
|
|
100
|
+
getKeccakPreimagesBefore(tx: TypedTransaction): KeccakPreimageMap;
|
|
89
101
|
}
|
|
90
102
|
export {};
|
|
91
103
|
//# sourceMappingURL=test_runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAY,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@ const common_1 = require("@ethereumjs/common");
|
|
|
6
6
|
const util_1 = require("@ethereumjs/util");
|
|
7
7
|
const utils_1 = require("ethereum-cryptography/utils");
|
|
8
8
|
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
9
|
+
const debug_1 = require("../debug");
|
|
10
|
+
const map_1 = require("./map");
|
|
9
11
|
const misc_1 = require("./misc");
|
|
12
|
+
const set_1 = require("./set");
|
|
10
13
|
var ResultKind;
|
|
11
14
|
(function (ResultKind) {
|
|
12
15
|
ResultKind["ContractCreated"] = "contract_created";
|
|
@@ -16,30 +19,66 @@ var ResultKind;
|
|
|
16
19
|
ResultKind["FoundryFail"] = "foundry_fail";
|
|
17
20
|
})(ResultKind || (exports.ResultKind = ResultKind = {}));
|
|
18
21
|
/**
|
|
19
|
-
* Helper class to
|
|
22
|
+
* Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
|
|
23
|
+
*
|
|
24
|
+
* 1. The TX data for each
|
|
25
|
+
* 2. The Block info for each TX
|
|
26
|
+
* 3. The State of the world before each TX
|
|
27
|
+
* 4. The result of the TX
|
|
28
|
+
* 5. The set of contracts before each TX
|
|
29
|
+
* 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
|
|
20
30
|
*/
|
|
21
31
|
class VMTestRunner {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
constructor(vm) {
|
|
32
|
+
constructor(artifactManager, _foundryCheatcodes = true) {
|
|
33
|
+
this._foundryCheatcodes = _foundryCheatcodes;
|
|
26
34
|
this._stateRootBeforeTx = new Map();
|
|
27
|
-
this.
|
|
35
|
+
this._contractsBeforeTx = new Map();
|
|
36
|
+
this._keccakPreimagesBeforeTx = new Map();
|
|
37
|
+
this.tracer = new debug_1.SupportTracer(artifactManager, {
|
|
38
|
+
strict: true,
|
|
39
|
+
foundryCheatcodes: this._foundryCheatcodes
|
|
40
|
+
});
|
|
28
41
|
this._txs = [];
|
|
29
42
|
this._results = [];
|
|
30
43
|
this._txToBlock = new Map();
|
|
31
44
|
}
|
|
32
45
|
async runTestCase(testCaseJSON) {
|
|
33
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Dummy VM used just to get a StateManager and a Common instance. The actual VM used for execution is created inside
|
|
48
|
+
* SupportTracer. (@todo this is kinda ugly... oh well)
|
|
49
|
+
*/
|
|
50
|
+
const dummyVM = await debug_1.BaseSolTxTracer.createVm(undefined, this._foundryCheatcodes);
|
|
51
|
+
let stateManager = dummyVM.stateManager.shallowCopy();
|
|
52
|
+
const common = dummyVM.common.copy();
|
|
53
|
+
debug_1.BaseSolTxTracer.releaseVM(dummyVM);
|
|
54
|
+
const contractsBefore = await this.setupInitialState(testCaseJSON.initialState, stateManager);
|
|
55
|
+
const keccakPreimages = new Map();
|
|
34
56
|
for (let i = 0; i < testCaseJSON.steps.length; i++) {
|
|
35
|
-
const tx = await this.harveyStepToTransaction(testCaseJSON.steps[i]);
|
|
36
|
-
const block = this.harveyStepToBlock(testCaseJSON.steps[i]);
|
|
37
|
-
const
|
|
57
|
+
const tx = await this.harveyStepToTransaction(testCaseJSON.steps[i], stateManager, common);
|
|
58
|
+
const block = this.harveyStepToBlock(testCaseJSON.steps[i], common);
|
|
59
|
+
const txHash = (0, utils_1.bytesToHex)(tx.hash());
|
|
60
|
+
// Store the sets before the TX
|
|
61
|
+
this._txs.push(tx);
|
|
62
|
+
this._stateRootBeforeTx.set(txHash, stateManager);
|
|
63
|
+
this._txToBlock.set(txHash, block);
|
|
64
|
+
this._contractsBeforeTx.set(txHash, new Set(contractsBefore));
|
|
65
|
+
this._keccakPreimagesBeforeTx.set(txHash, new Map(keccakPreimages));
|
|
66
|
+
const [trace, res, stateAfter] = await this.tracer.debugTx(tx, block, stateManager);
|
|
67
|
+
await stateManager.flush();
|
|
68
|
+
// Update the set of live contracts
|
|
69
|
+
const [gen, kill] = (0, debug_1.getContractGenKillSet)(trace, res);
|
|
70
|
+
(0, set_1.set_add)(contractsBefore, gen);
|
|
71
|
+
(0, set_1.set_subtract)(contractsBefore, kill);
|
|
72
|
+
const txKeccakPreimages = (0, debug_1.getKeccakPreimages)(trace);
|
|
73
|
+
(0, map_1.map_add)(keccakPreimages, txKeccakPreimages);
|
|
74
|
+
// Update the keccak map
|
|
75
|
+
// Add results
|
|
38
76
|
this._results.push(res);
|
|
77
|
+
stateManager = stateAfter;
|
|
39
78
|
}
|
|
40
79
|
}
|
|
41
|
-
async setupInitialState(initialState) {
|
|
42
|
-
const
|
|
80
|
+
async setupInitialState(initialState, state) {
|
|
81
|
+
const initialContracts = new Set();
|
|
43
82
|
await state.checkpoint();
|
|
44
83
|
for (const addressStr of Object.keys(initialState.accounts)) {
|
|
45
84
|
const { nonce, balance, code, storage } = initialState.accounts[addressStr];
|
|
@@ -55,13 +94,17 @@ class VMTestRunner {
|
|
|
55
94
|
await state.putContractStorage(address, keyBuf, valBuf);
|
|
56
95
|
}
|
|
57
96
|
await state.putContractCode(address, codeBuf);
|
|
97
|
+
if (codeBuf.length > 0) {
|
|
98
|
+
initialContracts.add(address.toString());
|
|
99
|
+
}
|
|
58
100
|
}
|
|
59
101
|
await state.commit();
|
|
60
102
|
await state.flush();
|
|
103
|
+
return initialContracts;
|
|
61
104
|
}
|
|
62
|
-
async harveyStepToTransaction(step) {
|
|
105
|
+
async harveyStepToTransaction(step, stateManager, common) {
|
|
63
106
|
const senderAddress = util_1.Address.fromString(step.origin);
|
|
64
|
-
const senderAccount = await
|
|
107
|
+
const senderAccount = await stateManager.getAccount(senderAddress);
|
|
65
108
|
const senderNonce = senderAccount !== undefined ? senderAccount.nonce : 0;
|
|
66
109
|
const txData = {
|
|
67
110
|
value: step.value,
|
|
@@ -73,36 +116,21 @@ class VMTestRunner {
|
|
|
73
116
|
if (step.address !== misc_1.ZERO_ADDRESS_STRING) {
|
|
74
117
|
txData.to = step.address;
|
|
75
118
|
}
|
|
76
|
-
return (0, misc_1.makeFakeTransaction)(txData, step.origin,
|
|
119
|
+
return (0, misc_1.makeFakeTransaction)(txData, step.origin, common);
|
|
77
120
|
}
|
|
78
|
-
harveyStepToBlock(step) {
|
|
121
|
+
harveyStepToBlock(step, common) {
|
|
79
122
|
return block_1.Block.fromBlockData({
|
|
80
123
|
header: {
|
|
81
124
|
coinbase: step.origin,
|
|
82
|
-
difficulty:
|
|
125
|
+
difficulty: common.hardfork() === common_1.Hardfork.Shanghai ? 0 : step.blockDifficulty,
|
|
83
126
|
gasLimit: step.blockGasLimit,
|
|
84
127
|
number: step.blockNumber,
|
|
85
128
|
timestamp: step.blockTime
|
|
86
129
|
}
|
|
87
130
|
}, {
|
|
88
|
-
common:
|
|
131
|
+
common: common
|
|
89
132
|
});
|
|
90
133
|
}
|
|
91
|
-
async _runTxInt(tx, block) {
|
|
92
|
-
const txHash = (0, utils_1.bytesToHex)(tx.hash());
|
|
93
|
-
this._txs.push(tx);
|
|
94
|
-
this._stateRootBeforeTx.set(txHash, this.vm.stateManager.shallowCopy(true));
|
|
95
|
-
this._txToBlock.set(txHash, block);
|
|
96
|
-
const res = this.vm.runTx({
|
|
97
|
-
tx,
|
|
98
|
-
block,
|
|
99
|
-
skipBalance: true,
|
|
100
|
-
skipNonce: true,
|
|
101
|
-
skipBlockGasLimitValidation: true
|
|
102
|
-
});
|
|
103
|
-
await this.vm.stateManager.flush();
|
|
104
|
-
return res;
|
|
105
|
-
}
|
|
106
134
|
get txs() {
|
|
107
135
|
return this._txs;
|
|
108
136
|
}
|
|
@@ -121,6 +149,18 @@ class VMTestRunner {
|
|
|
121
149
|
(0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find block for tx ${txHash}`);
|
|
122
150
|
return res;
|
|
123
151
|
}
|
|
152
|
+
getContractsBefore(tx) {
|
|
153
|
+
const txHash = (0, utils_1.bytesToHex)(tx.hash());
|
|
154
|
+
const res = this._contractsBeforeTx.get(txHash);
|
|
155
|
+
(0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find contracts for tx ${txHash}`);
|
|
156
|
+
return res;
|
|
157
|
+
}
|
|
158
|
+
getKeccakPreimagesBefore(tx) {
|
|
159
|
+
const txHash = (0, utils_1.bytesToHex)(tx.hash());
|
|
160
|
+
const res = this._keccakPreimagesBeforeTx.get(txHash);
|
|
161
|
+
(0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find keccak preimages for tx ${txHash}`);
|
|
162
|
+
return res;
|
|
163
|
+
}
|
|
124
164
|
}
|
|
125
165
|
exports.VMTestRunner = VMTestRunner;
|
|
126
166
|
//# sourceMappingURL=test_runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,+
|
|
1
|
+
{"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
|