sol-dbg 0.6.3 → 0.6.4

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 (43) hide show
  1. package/dist/artifacts/solc.d.ts +14 -0
  2. package/dist/artifacts/solc.d.ts.map +1 -1
  3. package/dist/debug/{artifact_manager.d.ts → artifact_manager/artifact_manager.d.ts} +10 -8
  4. package/dist/debug/artifact_manager/artifact_manager.d.ts.map +1 -0
  5. package/dist/debug/{artifact_manager.js → artifact_manager/artifact_manager.js} +19 -2
  6. package/dist/debug/artifact_manager/artifact_manager.js.map +1 -0
  7. package/dist/debug/artifact_manager/bytecode_templates.d.ts +8 -0
  8. package/dist/debug/artifact_manager/bytecode_templates.d.ts.map +1 -0
  9. package/dist/debug/artifact_manager/bytecode_templates.js +52 -0
  10. package/dist/debug/artifact_manager/bytecode_templates.js.map +1 -0
  11. package/dist/debug/artifact_manager/index.d.ts +2 -0
  12. package/dist/debug/artifact_manager/index.d.ts.map +1 -0
  13. package/dist/debug/artifact_manager/index.js +18 -0
  14. package/dist/debug/artifact_manager/index.js.map +1 -0
  15. package/dist/debug/layout.d.ts +7 -1
  16. package/dist/debug/layout.d.ts.map +1 -1
  17. package/dist/debug/layout.js +20 -0
  18. package/dist/debug/layout.js.map +1 -1
  19. package/dist/debug/tracers/base_tracer.d.ts +23 -3
  20. package/dist/debug/tracers/base_tracer.d.ts.map +1 -1
  21. package/dist/debug/tracers/base_tracer.js +29 -4
  22. package/dist/debug/tracers/base_tracer.js.map +1 -1
  23. package/dist/debug/tracers/sol_debugger.d.ts +3 -3
  24. package/dist/debug/tracers/sol_debugger.d.ts.map +1 -1
  25. package/dist/debug/tracers/sol_debugger.js +2 -2
  26. package/dist/debug/tracers/sol_debugger.js.map +1 -1
  27. package/dist/debug/tracers/storage_decode_tracer.d.ts +24 -0
  28. package/dist/debug/tracers/storage_decode_tracer.d.ts.map +1 -0
  29. package/dist/debug/tracers/storage_decode_tracer.js +47 -0
  30. package/dist/debug/tracers/storage_decode_tracer.js.map +1 -0
  31. package/dist/debug/tracers/support_tracer.d.ts +3 -3
  32. package/dist/debug/tracers/support_tracer.d.ts.map +1 -1
  33. package/dist/debug/tracers/support_tracer.js +2 -2
  34. package/dist/debug/tracers/support_tracer.js.map +1 -1
  35. package/dist/debug/tracers/transformers/contract_lifetime.js +1 -1
  36. package/dist/debug/tracers/transformers/contract_lifetime.js.map +1 -1
  37. package/dist/utils/test_runner.d.ts +12 -45
  38. package/dist/utils/test_runner.d.ts.map +1 -1
  39. package/dist/utils/test_runner.js +36 -21
  40. package/dist/utils/test_runner.js.map +1 -1
  41. package/package.json +1 -1
  42. package/dist/debug/artifact_manager.d.ts.map +0 -1
  43. package/dist/debug/artifact_manager.js.map +0 -1
@@ -20,9 +20,23 @@ export interface SourceDescription {
20
20
  name?: string;
21
21
  contents?: string;
22
22
  }
23
+ export type RangeList = Array<{
24
+ start: number;
25
+ length: number;
26
+ }>;
27
+ export interface LinkReferences {
28
+ [fileName: string]: {
29
+ [contractName: string]: RangeList;
30
+ };
31
+ }
32
+ export interface ImmutableReferences {
33
+ [number: string | number]: RangeList;
34
+ }
23
35
  export interface PartialBytecodeDescription {
24
36
  object: UnprefixedHexString;
25
37
  sourceMap: string;
38
+ linkReferences?: LinkReferences;
39
+ immutableReferences?: ImmutableReferences;
26
40
  generatedSources?: SourceDescription[];
27
41
  }
28
42
  export interface PartialCompiledContract {
@@ -1 +1 @@
1
- {"version":3,"file":"solc.d.ts","sourceRoot":"","sources":["../../src/artifacts/solc.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC;AAEzB;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE;QACD,QAAQ,EAAE,0BAA0B,CAAC;QACrC,gBAAgB,EAAE,0BAA0B,CAAC;KAChD,CAAC;CACL;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAAC;KACzC,CAAC;IAEF,SAAS,EAAE;QACP,CAAC,QAAQ,EAAE,MAAM,GAAG;YAChB,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAAC;SACnD,CAAC;KACL,CAAC;CACL"}
1
+ {"version":3,"file":"solc.d.ts","sourceRoot":"","sources":["../../src/artifacts/solc.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC;AAEzB;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAChB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACL;AAED,MAAM,WAAW,mBAAmB;IAChC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE;QACD,QAAQ,EAAE,0BAA0B,CAAC;QACrC,gBAAgB,EAAE,0BAA0B,CAAC;KAChD,CAAC;CACL;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAAC;KACzC,CAAC;IAEF,SAAS,EAAE;QACP,CAAC,QAAQ,EAAE,MAAM,GAAG;YAChB,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAAC;SACnD,CAAC;KACL,CAAC;CACL"}
@@ -1,15 +1,15 @@
1
1
  import { PrefixedHexString } from "@ethereumjs/util";
2
2
  import { ASTContext, ASTNode, ContractDefinition, FunctionDefinition, InferType, SourceUnit, VariableDeclaration } from "solc-typed-ast";
3
3
  import { ABIEncoderVersion } from "solc-typed-ast/dist/types/abi";
4
- import { DecodedBytecodeSourceMapEntry, PartialCompiledContract, PartialSolcOutput, RawAST } from "..";
5
- import { HexString } from "../artifacts";
4
+ import { DecodedBytecodeSourceMapEntry, PartialCompiledContract, PartialSolcOutput, RawAST } from "../..";
5
+ import { HexString } from "../../artifacts";
6
6
  export interface IArtifactManager {
7
- getContractFromDeployedBytecode(code: string | Uint8Array): ContractInfo | undefined;
8
- getContractFromCreationBytecode(code: string | Uint8Array): ContractInfo | undefined;
7
+ getContractFromDeployedBytecode(code: Uint8Array): ContractInfo | undefined;
8
+ getContractFromCreationBytecode(code: Uint8Array): ContractInfo | undefined;
9
9
  getContractFromMDHash(hash: HexString): ContractInfo | undefined;
10
10
  artifacts(): ArtifactInfo[];
11
11
  contracts(): ContractInfo[];
12
- getFileById(id: number, code: string | Uint8Array, isCreation: boolean): SourceFileInfo | undefined;
12
+ getFileById(id: number, code: Uint8Array, isCreation: boolean): SourceFileInfo | undefined;
13
13
  infer(version: string): InferType;
14
14
  findMethod(selector: HexString | Uint8Array): [ContractInfo, FunctionDefinition | VariableDeclaration] | undefined;
15
15
  }
@@ -59,6 +59,8 @@ export declare class ArtifactManager implements IArtifactManager {
59
59
  private _contracts;
60
60
  private _mdHashToContractInfo;
61
61
  private _inferCache;
62
+ private _creationBytecodeTemplates;
63
+ private _deployedBytecodeTemplates;
62
64
  /**
63
65
  * Helper to pick a canonical ABI encode version for a set of units.
64
66
  * For now just pick the highest version among the files
@@ -68,9 +70,9 @@ export declare class ArtifactManager implements IArtifactManager {
68
70
  constructor(artifacts: PartialSolcOutput[]);
69
71
  artifacts(): ArtifactInfo[];
70
72
  getContractFromMDHash(hash: HexString): ContractInfo | undefined;
71
- getContractFromDeployedBytecode(bytecode: string | Uint8Array): ContractInfo | undefined;
72
- getContractFromCreationBytecode(creationBytecode: string | Uint8Array): ContractInfo | undefined;
73
- getFileById(id: number, arg: string | Uint8Array | ContractInfo, isCreation: boolean): SourceFileInfo | undefined;
73
+ getContractFromDeployedBytecode(bytecode: Uint8Array): ContractInfo | undefined;
74
+ getContractFromCreationBytecode(creationBytecode: Uint8Array): ContractInfo | undefined;
75
+ getFileById(id: number, arg: Uint8Array | ContractInfo, isCreation: boolean): SourceFileInfo | undefined;
74
76
  contracts(): ContractInfo[];
75
77
  infer(version: string): InferType;
76
78
  findMethod(selector: HexString | Uint8Array): [ContractInfo, FunctionDefinition | VariableDeclaration] | undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact_manager.d.ts","sourceRoot":"","sources":["../../../src/debug/artifact_manager/artifact_manager.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,9 @@ exports.getOffsetSrc = getOffsetSrc;
5
5
  const utils_1 = require("ethereum-cryptography/utils");
6
6
  const solc_typed_ast_1 = require("solc-typed-ast");
7
7
  const abi_1 = require("solc-typed-ast/dist/types/abi");
8
- const __1 = require("..");
9
- const opcodes_1 = require("./opcodes");
8
+ const __1 = require("../..");
9
+ const opcodes_1 = require("../opcodes");
10
+ const bytecode_templates_1 = require("./bytecode_templates");
10
11
  var SourceFileType;
11
12
  (function (SourceFileType) {
12
13
  SourceFileType["Solidity"] = "solidity";
@@ -60,6 +61,8 @@ class ArtifactManager {
60
61
  this._artifacts = [];
61
62
  this._contracts = [];
62
63
  this._mdHashToContractInfo = new Map();
64
+ this._creationBytecodeTemplates = [];
65
+ this._deployedBytecodeTemplates = [];
63
66
  for (const artifact of artifacts) {
64
67
  const reader = new solc_typed_ast_1.ASTReader();
65
68
  const compilerVersion = (0, __1.getArtifactCompilerVersion)(artifact);
@@ -143,6 +146,8 @@ class ArtifactManager {
143
146
  };
144
147
  this._contracts.push(contractInfo);
145
148
  this._mdHashToContractInfo.set(hash, contractInfo);
149
+ this._creationBytecodeTemplates.push((0, bytecode_templates_1.makeTemplate)(contractArtifact.evm.bytecode));
150
+ this._deployedBytecodeTemplates.push((0, bytecode_templates_1.makeTemplate)(contractArtifact.evm.deployedBytecode));
146
151
  }
147
152
  }
148
153
  }
@@ -158,6 +163,12 @@ class ArtifactManager {
158
163
  if (hash) {
159
164
  return this._mdHashToContractInfo.get(hash);
160
165
  }
166
+ for (let i = 0; i < this._deployedBytecodeTemplates.length; i++) {
167
+ const templ = this._deployedBytecodeTemplates[i];
168
+ if ((0, bytecode_templates_1.matchesTemplate)(bytecode, templ)) {
169
+ return this._contracts[i];
170
+ }
171
+ }
161
172
  return undefined;
162
173
  }
163
174
  getContractFromCreationBytecode(creationBytecode) {
@@ -165,6 +176,12 @@ class ArtifactManager {
165
176
  if (hash) {
166
177
  return this._mdHashToContractInfo.get(hash);
167
178
  }
179
+ for (let i = 0; i < this._creationBytecodeTemplates.length; i++) {
180
+ const templ = this._creationBytecodeTemplates[i];
181
+ if ((0, bytecode_templates_1.matchesTemplate)(creationBytecode, templ)) {
182
+ return this._contracts[i];
183
+ }
184
+ }
168
185
  return undefined;
169
186
  }
170
187
  getFileById(id, arg, isCreation) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact_manager.js","sourceRoot":"","sources":["../../../src/debug/artifact_manager/artifact_manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { PartialBytecodeDescription } from "../../artifacts";
2
+ export interface BytecodeTemplate {
3
+ object: Uint8Array;
4
+ skipRanges: Array<[number, number]>;
5
+ }
6
+ export declare function makeTemplate(artifact: PartialBytecodeDescription): BytecodeTemplate;
7
+ export declare function matchesTemplate(bytecode: Uint8Array, template: BytecodeTemplate): boolean;
8
+ //# sourceMappingURL=bytecode_templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytecode_templates.d.ts","sourceRoot":"","sources":["../../../src/debug/artifact_manager/bytecode_templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAa,MAAM,iBAAiB,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvC;AAMD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,0BAA0B,GAAG,gBAAgB,CAuBnF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CA2BzF"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeTemplate = makeTemplate;
4
+ exports.matchesTemplate = matchesTemplate;
5
+ const util_1 = require("@ethereumjs/util");
6
+ function makeSkipRanges(rawList) {
7
+ return rawList.map((raw) => [raw.start, raw.start + raw.length]);
8
+ }
9
+ function makeTemplate(artifact) {
10
+ const skipRanges = [];
11
+ if (artifact.linkReferences) {
12
+ for (const obj of Object.values(artifact.linkReferences)) {
13
+ for (const ranges of Object.values(obj)) {
14
+ skipRanges.push(...makeSkipRanges(ranges));
15
+ }
16
+ }
17
+ }
18
+ if (artifact.immutableReferences) {
19
+ for (const ranges of Object.values(artifact.immutableReferences)) {
20
+ skipRanges.push(...makeSkipRanges(ranges));
21
+ }
22
+ }
23
+ skipRanges.sort();
24
+ return {
25
+ object: (0, util_1.hexToBytes)("0x" + artifact.object),
26
+ skipRanges
27
+ };
28
+ }
29
+ function matchesTemplate(bytecode, template) {
30
+ if (bytecode.length !== template.object.length) {
31
+ return false;
32
+ }
33
+ let curIdx = 0;
34
+ let rangeIdx = 0;
35
+ while (curIdx < template.object.length) {
36
+ let nextIdx;
37
+ let compEnd;
38
+ if (rangeIdx < template.skipRanges.length) {
39
+ [compEnd, nextIdx] = template.skipRanges[rangeIdx];
40
+ }
41
+ else {
42
+ compEnd = nextIdx = template.object.length;
43
+ }
44
+ if (!(0, util_1.equalsBytes)(bytecode.slice(curIdx, compEnd), template.object.slice(curIdx, compEnd))) {
45
+ return false;
46
+ }
47
+ curIdx = nextIdx;
48
+ rangeIdx++;
49
+ }
50
+ return true;
51
+ }
52
+ //# sourceMappingURL=bytecode_templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytecode_templates.js","sourceRoot":"","sources":["../../../src/debug/artifact_manager/bytecode_templates.ts"],"names":[],"mappings":";;AAYA,oCAuBC;AAED,0CA2BC;AAhED,2CAA2D;AAQ3D,SAAS,cAAc,CAAC,OAAkB;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,YAAY,CAAC,QAAoC;IAC7D,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC/D,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAI,EAAE,CAAC;IAElB,OAAO;QACH,MAAM,EAAE,IAAA,iBAAU,EAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1C,UAAU;KACb,CAAC;AACN,CAAC;AAED,SAAgB,eAAe,CAAC,QAAoB,EAAE,QAA0B;IAC5E,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QAEpB,IAAI,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAA,kBAAW,EAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACxF,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,GAAG,OAAO,CAAC;QACjB,QAAQ,EAAE,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./artifact_manager";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/debug/artifact_manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./artifact_manager"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/debug/artifact_manager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
@@ -1,9 +1,15 @@
1
+ import { EVMStateManagerInterface } from "@ethereumjs/common";
2
+ import { Address } from "@ethereumjs/util";
1
3
  import { ContractDefinition, InferType } from "solc-typed-ast";
2
4
  import { IArtifactManager } from "./artifact_manager";
3
- import { MapKeys } from "./tracers";
5
+ import { KeccakPreimageMap, MapKeys } from "./tracers";
4
6
  import { Storage } from "./types";
5
7
  export interface ContractSolidityState {
6
8
  [key: string]: any;
7
9
  }
10
+ export type ContractStates = {
11
+ [addres: string]: ContractSolidityState;
12
+ };
13
+ export declare function decodeContractStates(artifactManager: IArtifactManager, contracts: Iterable<Address>, state: EVMStateManagerInterface, preimages: KeccakPreimageMap): Promise<ContractStates>;
8
14
  export declare function decodeContractState(artifactManager: IArtifactManager, infer: InferType, contract: ContractDefinition, storage: Storage, mapKeys?: MapKeys): ContractSolidityState | undefined;
9
15
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/debug/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,kBAAkB,EAClB,SAAS,EAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAoB,OAAO,EAAmB,MAAM,SAAS,CAAC;AAErE,MAAM,WAAW,qBAAqB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAMD,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,gBAAgB,EACjC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,GAClB,qBAAqB,GAAG,SAAS,CAqFnC"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/debug/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAEH,kBAAkB,EAClB,SAAS,EAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAA0B,iBAAiB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAoB,OAAO,EAAmB,MAAM,SAAS,CAAC;AAErE,MAAM,WAAW,qBAAqB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAAA;CAAE,CAAC;AAMzE,wBAAsB,oBAAoB,CACtC,eAAe,EAAE,gBAAgB,EACjC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC5B,KAAK,EAAE,wBAAwB,EAC/B,SAAS,EAAE,iBAAiB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA6BzB;AAED,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,gBAAgB,EACjC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,GAClB,qBAAqB,GAAG,SAAS,CAqFnC"}
@@ -1,12 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeContractStates = decodeContractStates;
3
4
  exports.decodeContractState = decodeContractState;
4
5
  const solc_typed_ast_1 = require("solc-typed-ast");
5
6
  const decoding_1 = require("./decoding");
7
+ const tracers_1 = require("./tracers");
6
8
  const types_1 = require("./types");
7
9
  function isTypeStringStatic32Bytes(t) {
8
10
  return t.endsWith("[]") || t.includes("mapping(");
9
11
  }
12
+ async function decodeContractStates(artifactManager, contracts, state, preimages) {
13
+ const res = {};
14
+ const mapKeys = (0, tracers_1.getMapKeys)(preimages);
15
+ for (const addr of contracts) {
16
+ const code = await state.getContractCode(addr);
17
+ const info = artifactManager.getContractFromDeployedBytecode(code);
18
+ if (!info || !info.ast) {
19
+ continue;
20
+ }
21
+ const infer = artifactManager.infer(info.artifact.compilerVersion);
22
+ const storage = await (0, tracers_1.getStorage)(state, addr);
23
+ const contractState = decodeContractState(artifactManager, infer, info.ast, storage, mapKeys);
24
+ if (contractState) {
25
+ res[addr.toString()] = contractState;
26
+ }
27
+ }
28
+ return res;
29
+ }
10
30
  function decodeContractState(artifactManager, infer, contract, storage, mapKeys) {
11
31
  const res = {};
12
32
  let loc = {
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/debug/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/debug/layout.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,16 @@ export interface TracerOpts {
11
11
  export interface FoundryTxResult extends RunTxResult {
12
12
  failCalled: boolean;
13
13
  }
14
- export declare abstract class BaseSolTxTracer<State> {
14
+ /**
15
+ * Base class for all trace processors. You can think of trace processing as a combination
16
+ * of a map operation from `InterpreterStep` -> `TraceT`, along with a reduce operation
17
+ * from `(TraceT, CtxT) -> CtxT`. All the map functions are stored in `transformers/` to allow
18
+ * for reusability between different tracers.
19
+ *
20
+ * There is yet no formal place for reducers to go to. Check out `storage_decode_tracer.ts` for an example
21
+ * of a reducer that accumulates live contracts and keccak preimages at each step.
22
+ */
23
+ export declare abstract class BaseSolTxTracer<TraceT, CtxT> {
15
24
  artifactManager: IArtifactManager;
16
25
  protected readonly strict: boolean;
17
26
  protected readonly foundryCheatcodes: boolean;
@@ -26,8 +35,19 @@ export declare abstract class BaseSolTxTracer<State> {
26
35
  */
27
36
  static releaseVM(vm: VM): void;
28
37
  static createVm(stateManager: EVMStateManagerInterface | undefined, foundryCheatcodes: boolean): Promise<VM>;
29
- abstract processRawTraceStep(vm: VM, step: InterpreterStep, trace: State[], tx: TypedTransaction): Promise<State>;
38
+ abstract processRawTraceStep(vm: VM, step: InterpreterStep, trace: TraceT[], tx: TypedTransaction, ctx: CtxT): Promise<[TraceT, CtxT]>;
39
+ /**
40
+ * Run a TX with the specified "transformers" returning a quadruple including:
41
+ *
42
+ * 1. An enriched trace
43
+ * 2. The TX result (with added info for Foundry TX)
44
+ * 3. The StateManager at the end of the TX
45
+ * 4. The final (reduced) context `CtxT`
46
+ */
30
47
  debugTx(tx: TypedTransaction, block: Block | undefined, // TODO: Make block required and add to processRawTraceStep
31
- stateBefore: EVMStateManagerInterface): Promise<[State[], FoundryTxResult, EVMStateManagerInterface]>;
48
+ stateBefore: EVMStateManagerInterface, ctx: CtxT): Promise<[TraceT[], FoundryTxResult, EVMStateManagerInterface, CtxT]>;
49
+ }
50
+ export declare abstract class MapOnlyTracer<TraceT> extends BaseSolTxTracer<TraceT, null> {
51
+ debugTx(tx: TypedTransaction, block: Block | undefined, stateBefore: EVMStateManagerInterface): Promise<[TraceT[], FoundryTxResult, EVMStateManagerInterface, null]>;
32
52
  }
33
53
  //# sourceMappingURL=base_tracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base_tracer.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/base_tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAiB,wBAAwB,EAAY,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAwB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,UAAU,EAAE,OAAO,CAAC;CACvB;AAQD,8BAAsB,eAAe,CAAC,KAAK;IACvC,eAAe,EAAG,gBAAgB,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAElC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU;mBAgB3C,MAAM;IA8B3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;WAUjB,QAAQ,CACjB,YAAY,EAAE,wBAAwB,GAAG,SAAS,EAClD,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,EAAE,CAAC;IA0Bd,QAAQ,CAAC,mBAAmB,CACxB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,KAAK,EAAE,EACd,EAAE,EAAE,gBAAgB,GACrB,OAAO,CAAC,KAAK,CAAC;IAEX,OAAO,CACT,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,2DAA2D;IACrF,WAAW,EAAE,wBAAwB,GACtC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;CAyCnE"}
1
+ {"version":3,"file":"base_tracer.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/base_tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAiB,wBAAwB,EAAY,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAwB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,UAAU,EAAE,OAAO,CAAC;CACvB;AAQD;;;;;;;;GAQG;AACH,8BAAsB,eAAe,CAAC,MAAM,EAAE,IAAI;IAC9C,eAAe,EAAG,gBAAgB,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAElC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU;mBAgB3C,MAAM;IA8B3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;WAUjB,QAAQ,CACjB,YAAY,EAAE,wBAAwB,GAAG,SAAS,EAClD,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,EAAE,CAAC;IA0Bd,QAAQ,CAAC,mBAAmB,CACxB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,EAAE,EACf,EAAE,EAAE,gBAAgB,EACpB,GAAG,EAAE,IAAI,GACV,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1B;;;;;;;OAOG;IACG,OAAO,CACT,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,2DAA2D;IACrF,WAAW,EAAE,wBAAwB,EACrC,GAAG,EAAE,IAAI,GACV,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;CA2C1E;AAED,8BAAsB,aAAa,CAAC,MAAM,CAAE,SAAQ,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;IACvE,OAAO,CACT,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,WAAW,EAAE,wBAAwB,GACtC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;CAG1E"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseSolTxTracer = void 0;
3
+ exports.MapOnlyTracer = exports.BaseSolTxTracer = void 0;
4
4
  const blockchain_1 = require("@ethereumjs/blockchain");
5
5
  const common_1 = require("@ethereumjs/common");
6
6
  const evm_1 = require("@ethereumjs/evm");
@@ -14,6 +14,15 @@ const opcode_interposing_1 = require("../opcode_interposing");
14
14
  * global listener map for foundry cheatcodes.
15
15
  */
16
16
  const vmToEVMMap = new Map();
17
+ /**
18
+ * Base class for all trace processors. You can think of trace processing as a combination
19
+ * of a map operation from `InterpreterStep` -> `TraceT`, along with a reduce operation
20
+ * from `(TraceT, CtxT) -> CtxT`. All the map functions are stored in `transformers/` to allow
21
+ * for reusability between different tracers.
22
+ *
23
+ * There is yet no formal place for reducers to go to. Check out `storage_decode_tracer.ts` for an example
24
+ * of a reducer that accumulates live contracts and keccak preimages at each step.
25
+ */
17
26
  class BaseSolTxTracer {
18
27
  constructor(artifactManager, opts) {
19
28
  this.artifactManager = artifactManager;
@@ -83,13 +92,22 @@ class BaseSolTxTracer {
83
92
  vmToEVMMap.set(vm, evm);
84
93
  return vm;
85
94
  }
95
+ /**
96
+ * Run a TX with the specified "transformers" returning a quadruple including:
97
+ *
98
+ * 1. An enriched trace
99
+ * 2. The TX result (with added info for Foundry TX)
100
+ * 3. The StateManager at the end of the TX
101
+ * 4. The final (reduced) context `CtxT`
102
+ */
86
103
  async debugTx(tx, block, // TODO: Make block required and add to processRawTraceStep
87
- stateBefore) {
104
+ stateBefore, ctx) {
88
105
  const vm = await BaseSolTxTracer.createVm(stateBefore.shallowCopy(true), this.foundryCheatcodes);
89
106
  const trace = [];
90
107
  (0, solc_typed_ast_1.assert)(vm.evm.events !== undefined, "Unable to access EVM events at this point");
91
108
  vm.evm.events.on("step", async (step, next) => {
92
- const curStep = await this.processRawTraceStep(vm, step, trace, tx);
109
+ const [curStep, newCtx] = await this.processRawTraceStep(vm, step, trace, tx, ctx);
110
+ ctx = newCtx;
93
111
  trace.push(curStep);
94
112
  next();
95
113
  });
@@ -110,9 +128,16 @@ class BaseSolTxTracer {
110
128
  ...txRes,
111
129
  failCalled: foundryFailCalled
112
130
  },
113
- stateAfter
131
+ stateAfter,
132
+ ctx
114
133
  ];
115
134
  }
116
135
  }
117
136
  exports.BaseSolTxTracer = BaseSolTxTracer;
137
+ class MapOnlyTracer extends BaseSolTxTracer {
138
+ async debugTx(tx, block, stateBefore) {
139
+ return super.debugTx(tx, block, stateBefore, null);
140
+ }
141
+ }
142
+ exports.MapOnlyTracer = MapOnlyTracer;
118
143
  //# sourceMappingURL=base_tracer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base_tracer.js","sourceRoot":"","sources":["../../../src/debug/tracers/base_tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base_tracer.js","sourceRoot":"","sources":["../../../src/debug/tracers/base_tracer.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import { InterpreterStep } from "@ethereumjs/evm";
2
2
  import { TypedTransaction } from "@ethereumjs/tx";
3
3
  import { VM } from "@ethereumjs/vm";
4
4
  import { StepState } from "../types";
5
- import { BaseSolTxTracer } from "./base_tracer";
6
- export declare class SolTxDebugger extends BaseSolTxTracer<StepState> {
7
- processRawTraceStep(vm: VM, step: InterpreterStep, trace: StepState[], tx: TypedTransaction): Promise<StepState>;
5
+ import { MapOnlyTracer } from "./base_tracer";
6
+ export declare class SolTxDebugger extends MapOnlyTracer<StepState> {
7
+ processRawTraceStep(vm: VM, step: InterpreterStep, trace: StepState[], tx: TypedTransaction): Promise<[StepState, null]>;
8
8
  }
9
9
  //# sourceMappingURL=sol_debugger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sol_debugger.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/sol_debugger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAYhD,qBAAa,aAAc,SAAQ,eAAe,CAAC,SAAS,CAAC;IACnD,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,EAAE,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,CAAC;CA6BxB"}
1
+ {"version":3,"file":"sol_debugger.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/sol_debugger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAY9C,qBAAa,aAAc,SAAQ,aAAa,CAAC,SAAS,CAAC;IACjD,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,EAAE,EAAE,gBAAgB,GACrB,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;CA6BhC"}
@@ -7,7 +7,7 @@ const events_1 = require("./transformers/events");
7
7
  const ext_stack_1 = require("./transformers/ext_stack");
8
8
  const int_stack_1 = require("./transformers/int_stack");
9
9
  const source_1 = require("./transformers/source");
10
- class SolTxDebugger extends base_tracer_1.BaseSolTxTracer {
10
+ class SolTxDebugger extends base_tracer_1.MapOnlyTracer {
11
11
  async processRawTraceStep(vm, step, trace, tx) {
12
12
  const opInfo = (0, transformers_1.addOpInfo)(vm, step, {});
13
13
  const basicInfo = await (0, transformers_1.addBasicInfo)(vm, step, opInfo, trace);
@@ -17,7 +17,7 @@ class SolTxDebugger extends base_tracer_1.BaseSolTxTracer {
17
17
  const events = await (0, events_1.addEventInfo)(vm, step, intStack);
18
18
  const contractLifetime = await (0, transformers_1.addContractLifetimeInfo)(vm, step, events, trace);
19
19
  const keccakPreimages = await (0, transformers_1.addKeccakInvertInfo)(vm, step, contractLifetime, trace);
20
- return keccakPreimages;
20
+ return [keccakPreimages, null];
21
21
  }
22
22
  }
23
23
  exports.SolTxDebugger = SolTxDebugger;
@@ -1 +1 @@
1
- {"version":3,"file":"sol_debugger.js","sourceRoot":"","sources":["../../../src/debug/tracers/sol_debugger.ts"],"names":[],"mappings":";;;AAIA,+CAAgD;AAChD,iDAKwB;AACxB,kDAAqD;AACrD,wDAA4D;AAC5D,wDAA4D;AAC5D,kDAAkD;AAElD,MAAa,aAAc,SAAQ,6BAA0B;IACzD,KAAK,CAAC,mBAAmB,CACrB,EAAM,EACN,IAAqB,EACrB,KAAkB,EAClB,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,4BAAgB,EACvC,EAAE,EACF,IAAI,EACJ,SAAS,EACT,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,EAAE,CACL,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAgB,EACnC,EAAE,EACF,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,MAAM,CACd,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAY,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEtD,MAAM,gBAAgB,GAAG,MAAM,IAAA,sCAAuB,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAEhF,MAAM,eAAe,GAAG,MAAM,IAAA,kCAAmB,EAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErF,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AAnCD,sCAmCC"}
1
+ {"version":3,"file":"sol_debugger.js","sourceRoot":"","sources":["../../../src/debug/tracers/sol_debugger.ts"],"names":[],"mappings":";;;AAIA,+CAA8C;AAC9C,iDAKwB;AACxB,kDAAqD;AACrD,wDAA4D;AAC5D,wDAA4D;AAC5D,kDAAkD;AAElD,MAAa,aAAc,SAAQ,2BAAwB;IACvD,KAAK,CAAC,mBAAmB,CACrB,EAAM,EACN,IAAqB,EACrB,KAAkB,EAClB,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,4BAAgB,EACvC,EAAE,EACF,IAAI,EACJ,SAAS,EACT,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,EAAE,CACL,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAgB,EACnC,EAAE,EACF,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,MAAM,CACd,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAY,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEtD,MAAM,gBAAgB,GAAG,MAAM,IAAA,sCAAuB,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAEhF,MAAM,eAAe,GAAG,MAAM,IAAA,kCAAmB,EAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErF,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ;AAnCD,sCAmCC"}
@@ -0,0 +1,24 @@
1
+ import { InterpreterStep } from "@ethereumjs/evm";
2
+ import { TypedTransaction } from "@ethereumjs/tx";
3
+ import { VM } from "@ethereumjs/vm";
4
+ import { ContractStates } from "../layout";
5
+ import { BaseSolTxTracer } from "./base_tracer";
6
+ import { BasicStepInfo, ContractLifeTimeInfo, ExternalFrameInfo, Keccak256InvertInfo, KeccakPreimageMap } from "./transformers";
7
+ export interface DecodedStorageInfo {
8
+ decodedStorage?: ContractStates;
9
+ }
10
+ export type StorageDecodeTracerInfo = BasicStepInfo & ExternalFrameInfo & ContractLifeTimeInfo & Keccak256InvertInfo & DecodedStorageInfo;
11
+ export interface StorageDecodeTracerCtx {
12
+ liveContracts: Set<string>;
13
+ preimages: KeccakPreimageMap;
14
+ targetSteps: Set<number>;
15
+ }
16
+ /**
17
+ * This tracer computes contract lifetime information and keccak256 pre-images for a TX.
18
+ * The information it collects supports the debugging for the main SolTxDebugger tracer.
19
+ * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them.
20
+ */
21
+ export declare class StorageDecodeTracer extends BaseSolTxTracer<StorageDecodeTracerInfo, StorageDecodeTracerCtx> {
22
+ processRawTraceStep(vm: VM, step: InterpreterStep, trace: StorageDecodeTracerInfo[], tx: TypedTransaction, ctx: StorageDecodeTracerCtx): Promise<[StorageDecodeTracerInfo, StorageDecodeTracerCtx]>;
23
+ }
24
+ //# sourceMappingURL=storage_decode_tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage_decode_tracer.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/storage_decode_tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAwB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAMH,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAC/C,iBAAiB,GACjB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,sBAAsB;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAkBD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,eAAe,CACpD,uBAAuB,EACvB,sBAAsB,CACzB;IACS,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,uBAAuB,EAAE,EAChC,EAAE,EAAE,gBAAgB,EACpB,GAAG,EAAE,sBAAsB,GAC5B,OAAO,CAAC,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;CAoChE"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageDecodeTracer = void 0;
4
+ const util_1 = require("@ethereumjs/util");
5
+ const layout_1 = require("../layout");
6
+ const base_tracer_1 = require("./base_tracer");
7
+ const transformers_1 = require("./transformers");
8
+ function reducer(state, ctx) {
9
+ if (state.contractCreated) {
10
+ ctx.liveContracts.add(state.contractCreated.toString());
11
+ }
12
+ if (state.contractKilled) {
13
+ ctx.liveContracts.delete(state.contractKilled.toString());
14
+ }
15
+ if (state.keccak) {
16
+ ctx.preimages.set(state.keccak.to, state.keccak.from);
17
+ }
18
+ }
19
+ /**
20
+ * This tracer computes contract lifetime information and keccak256 pre-images for a TX.
21
+ * The information it collects supports the debugging for the main SolTxDebugger tracer.
22
+ * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them.
23
+ */
24
+ class StorageDecodeTracer extends base_tracer_1.BaseSolTxTracer {
25
+ async processRawTraceStep(vm, step, trace, tx, ctx) {
26
+ const opInfo = (0, transformers_1.addOpInfo)(vm, step, {});
27
+ const basicInfo = await (0, transformers_1.addBasicInfo)(vm, step, opInfo, trace);
28
+ const extFrameInfo = await (0, transformers_1.addExternalFrame)(vm, step, basicInfo, trace, this.artifactManager, tx);
29
+ const contracLifetimeInfo = (0, transformers_1.addContractLifetimeInfo)(vm, step, extFrameInfo, trace);
30
+ const keccakInfo = (0, transformers_1.addKeccakInvertInfo)(vm, step, contracLifetimeInfo, trace);
31
+ reducer(keccakInfo, ctx);
32
+ if (!ctx.targetSteps.has(trace.length)) {
33
+ return [keccakInfo, ctx];
34
+ }
35
+ const state = vm.stateManager;
36
+ const decodedStorage = await (0, layout_1.decodeContractStates)(this.artifactManager, [...ctx.liveContracts].map(util_1.Address.fromString), state, ctx.preimages);
37
+ return [
38
+ {
39
+ ...keccakInfo,
40
+ decodedStorage
41
+ },
42
+ ctx
43
+ ];
44
+ }
45
+ }
46
+ exports.StorageDecodeTracer = StorageDecodeTracer;
47
+ //# sourceMappingURL=storage_decode_tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage_decode_tracer.js","sourceRoot":"","sources":["../../../src/debug/tracers/storage_decode_tracer.ts"],"names":[],"mappings":";;;AAEA,2CAA2C;AAE3C,sCAAiE;AACjE,+CAAgD;AAChD,iDAWwB;AAkBxB,SAAS,OAAO,CACZ,KAAiD,EACjD,GAA2B;IAE3B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC;AACD;;;;GAIG;AACH,MAAa,mBAAoB,SAAQ,6BAGxC;IACG,KAAK,CAAC,mBAAmB,CACrB,EAAM,EACN,IAAqB,EACrB,KAAgC,EAChC,EAAoB,EACpB,GAA2B;QAE3B,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,+BAAgB,EACvC,EAAE,EACF,IAAI,EACJ,SAAS,EACT,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,EAAE,CACL,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAA,sCAAuB,EAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,IAAA,kCAAmB,EAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAE7E,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC;QAC9B,MAAM,cAAc,GAAmB,MAAM,IAAA,6BAAoB,EAC7D,IAAI,CAAC,eAAe,EACpB,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,cAAO,CAAC,UAAU,CAAC,EAC9C,KAAK,EACL,GAAG,CAAC,SAAS,CAChB,CAAC;QAEF,OAAO;YACH;gBACI,GAAG,UAAU;gBACb,cAAc;aACjB;YACD,GAAG;SACN,CAAC;IACN,CAAC;CACJ;AA9CD,kDA8CC"}
@@ -1,7 +1,7 @@
1
1
  import { InterpreterStep } from "@ethereumjs/evm";
2
2
  import { TypedTransaction } from "@ethereumjs/tx";
3
3
  import { VM } from "@ethereumjs/vm";
4
- import { BaseSolTxTracer } from "./base_tracer";
4
+ import { MapOnlyTracer } from "./base_tracer";
5
5
  import { BasicStepInfo, ContractLifeTimeInfo, ExternalFrameInfo, Keccak256InvertInfo } from "./transformers";
6
6
  export type SupportTracerStepInfo = BasicStepInfo & ExternalFrameInfo & ContractLifeTimeInfo & Keccak256InvertInfo;
7
7
  /**
@@ -9,7 +9,7 @@ export type SupportTracerStepInfo = BasicStepInfo & ExternalFrameInfo & Contract
9
9
  * The information it collects supports the debugging for the main SolTxDebugger tracer.
10
10
  * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them.
11
11
  */
12
- export declare class SupportTracer extends BaseSolTxTracer<SupportTracerStepInfo> {
13
- processRawTraceStep(vm: VM, step: InterpreterStep, trace: SupportTracerStepInfo[], tx: TypedTransaction): Promise<SupportTracerStepInfo>;
12
+ export declare class SupportTracer extends MapOnlyTracer<SupportTracerStepInfo> {
13
+ processRawTraceStep(vm: VM, step: InterpreterStep, trace: SupportTracerStepInfo[], tx: TypedTransaction): Promise<[SupportTracerStepInfo, null]>;
14
14
  }
15
15
  //# sourceMappingURL=support_tracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"support_tracer.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/support_tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAMH,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAC7C,iBAAiB,GACjB,oBAAoB,GACpB,mBAAmB,CAAC;AACxB;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,eAAe,CAAC,qBAAqB,CAAC;IAC/D,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,qBAAqB,EAAE,EAC9B,EAAE,EAAE,gBAAgB,GACrB,OAAO,CAAC,qBAAqB,CAAC;CAgBpC"}
1
+ {"version":3,"file":"support_tracer.d.ts","sourceRoot":"","sources":["../../../src/debug/tracers/support_tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAMH,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAC7C,iBAAiB,GACjB,oBAAoB,GACpB,mBAAmB,CAAC;AACxB;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,aAAa,CAAC,qBAAqB,CAAC;IAC7D,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,qBAAqB,EAAE,EAC9B,EAAE,EAAE,gBAAgB,GACrB,OAAO,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;CAgB5C"}
@@ -8,14 +8,14 @@ const transformers_1 = require("./transformers");
8
8
  * The information it collects supports the debugging for the main SolTxDebugger tracer.
9
9
  * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them.
10
10
  */
11
- class SupportTracer extends base_tracer_1.BaseSolTxTracer {
11
+ class SupportTracer extends base_tracer_1.MapOnlyTracer {
12
12
  async processRawTraceStep(vm, step, trace, tx) {
13
13
  const opInfo = (0, transformers_1.addOpInfo)(vm, step, {});
14
14
  const basicInfo = await (0, transformers_1.addBasicInfo)(vm, step, opInfo, trace);
15
15
  const extFrameInfo = await (0, transformers_1.addExternalFrame)(vm, step, basicInfo, trace, this.artifactManager, tx);
16
16
  const contracLifetimeInfo = (0, transformers_1.addContractLifetimeInfo)(vm, step, extFrameInfo, trace);
17
17
  const keccakInfo = (0, transformers_1.addKeccakInvertInfo)(vm, step, contracLifetimeInfo, trace);
18
- return keccakInfo;
18
+ return [keccakInfo, null];
19
19
  }
20
20
  }
21
21
  exports.SupportTracer = SupportTracer;
@@ -1 +1 @@
1
- {"version":3,"file":"support_tracer.js","sourceRoot":"","sources":["../../../src/debug/tracers/support_tracer.ts"],"names":[],"mappings":";;;AAGA,+CAAgD;AAChD,iDAUwB;AAMxB;;;;GAIG;AACH,MAAa,aAAc,SAAQ,6BAAsC;IACrE,KAAK,CAAC,mBAAmB,CACrB,EAAM,EACN,IAAqB,EACrB,KAA8B,EAC9B,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,+BAAgB,EACvC,EAAE,EACF,IAAI,EACJ,SAAS,EACT,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,EAAE,CACL,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAA,sCAAuB,EAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,IAAA,kCAAmB,EAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAE7E,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAtBD,sCAsBC"}
1
+ {"version":3,"file":"support_tracer.js","sourceRoot":"","sources":["../../../src/debug/tracers/support_tracer.ts"],"names":[],"mappings":";;;AAGA,+CAA8C;AAC9C,iDAUwB;AAMxB;;;;GAIG;AACH,MAAa,aAAc,SAAQ,2BAAoC;IACnE,KAAK,CAAC,mBAAmB,CACrB,EAAM,EACN,IAAqB,EACrB,KAA8B,EAC9B,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAA,wBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,+BAAgB,EACvC,EAAE,EACF,IAAI,EACJ,SAAS,EACT,KAAK,EACL,IAAI,CAAC,eAAe,EACpB,EAAE,CACL,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAA,sCAAuB,EAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,IAAA,kCAAmB,EAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAE7E,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ;AAtBD,sCAsBC"}
@@ -31,7 +31,7 @@ function getContractGenKillSet(trace, res) {
31
31
  }
32
32
  return [gen, kill];
33
33
  }, [new Set(), new Set()]);
34
- if (res && res.createdAddress !== undefined) {
34
+ if (res && res.createdAddress !== undefined && res.execResult.exceptionError === undefined) {
35
35
  gen.add(res.createdAddress.toString());
36
36
  }
37
37
  return [gen, kill];
@@ -1 +1 @@
1
- {"version":3,"file":"contract_lifetime.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/contract_lifetime.ts"],"names":[],"mappings":";;AAgBA,sDAmCC;AAQD,0DAmCC;AA3FD,2CAAwC;AACxC,uCAAwC;AAExC,2CAA6D;AAO7D;;GAEG;AACH,SAAgB,qBAAqB,CACjC,KAA6B,EAC7B,GAAiB;IAEjB,6EAA6E;IAC7E,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CACzB,CAAC;IAEF,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACnC,EAAM,EACN,IAAqB,EACrB,KAAQ,EACR,KAAsC;IAEtC,wBAAwB;IACxB,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,YAAY,EAAE,CAAC;QAC3C,OAAO;YACH,cAAc,EAAE,KAAK,CAAC,OAAO;YAC7B,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,0CAA0C;IAC1C,IACI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;QAClC,aAAa,CAAC,IAAI,KAAK,iBAAS,CAAC,QAAQ;QACzC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,MAAM,EACvC,CAAC;QACC,OAAO;YACH,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"contract_lifetime.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/contract_lifetime.ts"],"names":[],"mappings":";;AAgBA,sDAmCC;AAQD,0DAmCC;AA3FD,2CAAwC;AACxC,uCAAwC;AAExC,2CAA6D;AAO7D;;GAEG;AACH,SAAgB,qBAAqB,CACjC,KAA6B,EAC7B,GAAiB;IAEjB,6EAA6E;IAC7E,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CACzB,CAAC;IAEF,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACnC,EAAM,EACN,IAAqB,EACrB,KAAQ,EACR,KAAsC;IAEtC,wBAAwB;IACxB,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,YAAY,EAAE,CAAC;QAC3C,OAAO;YACH,cAAc,EAAE,KAAK,CAAC,OAAO;YAC7B,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,0CAA0C;IAC1C,IACI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;QAClC,aAAa,CAAC,IAAI,KAAK,iBAAS,CAAC,QAAQ;QACzC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,MAAM,EACvC,CAAC;QACC,OAAO;YACH,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { Block } from "@ethereumjs/block";
2
2
  import { Common, EVMStateManagerInterface } from "@ethereumjs/common";
3
3
  import { TypedTransaction } from "@ethereumjs/tx";
4
- import { PrefixedHexString } from "@ethereumjs/util";
4
+ import { Address, PrefixedHexString } from "@ethereumjs/util";
5
5
  import { HexString } from "../artifacts";
6
- import { ContractSolidityState, FoundryTxResult, IArtifactManager, KeccakPreimageMap } from "../debug";
7
- export interface BaseTestStep {
6
+ import { ContractStates, FoundryTxResult, IArtifactManager, KeccakPreimageMap } from "../debug";
7
+ export interface TxDesc {
8
8
  address: HexString;
9
9
  gasLimit: HexString;
10
10
  gasPrice: HexString;
@@ -30,46 +30,12 @@ export interface InitialState {
30
30
  [address: HexString]: AccountDescription;
31
31
  };
32
32
  }
33
- export interface BaseTestCase {
33
+ export interface Scenario {
34
34
  initialState: InitialState;
35
- steps: BaseTestStep[];
36
- }
37
- export declare enum ResultKind {
38
- ContractCreated = "contract_created",
39
- ValueReturned = "value_returned",
40
- Revert = "revert",
41
- LastRevert = "last_revert",
42
- FoundryFail = "foundry_fail"
43
- }
44
- interface ResultContractCreated {
45
- kind: ResultKind.ContractCreated;
46
- address: string;
47
- }
48
- interface ResultValueReturned {
49
- kind: ResultKind.ValueReturned;
50
- value: HexString;
51
- }
52
- interface ResultRevert {
53
- kind: ResultKind.Revert;
54
- }
55
- interface ResultLastRevert {
56
- kind: ResultKind.LastRevert;
57
- }
58
- interface ResultFoundryFail {
59
- kind: ResultKind.FoundryFail;
60
- }
61
- export interface TestStep extends BaseTestStep {
62
- result: ResultContractCreated | ResultValueReturned | ResultRevert | ResultLastRevert | ResultFoundryFail;
63
- errorStack?: string[];
64
- errorString?: string;
65
- errorPathPrefix?: string;
66
- layoutBefore?: ContractSolidityState;
67
- }
68
- export interface TestCase extends BaseTestCase {
69
- steps: TestStep[];
35
+ steps: TxDesc[];
70
36
  }
71
37
  /**
72
- * Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
38
+ * Helper class to run a set of TX and record info to allow debugging any of the TXs independently. This includes:
73
39
  *
74
40
  * 1. The TX data for each
75
41
  * 2. The Block info for each TX
@@ -78,7 +44,7 @@ export interface TestCase extends BaseTestCase {
78
44
  * 5. The set of contracts before each TX
79
45
  * 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
80
46
  */
81
- export declare class VMTestRunner {
47
+ export declare class TxRunner {
82
48
  readonly artifactManager: IArtifactManager;
83
49
  private _foundryCheatcodes;
84
50
  private tracer;
@@ -89,16 +55,17 @@ export declare class VMTestRunner {
89
55
  private _contractsBeforeTx;
90
56
  private _keccakPreimagesBeforeTx;
91
57
  constructor(artifactManager: IArtifactManager, _foundryCheatcodes?: boolean);
92
- runTestCase(testCaseJSON: BaseTestCase): Promise<void>;
58
+ runScenario(scenario: Scenario): Promise<void>;
93
59
  private setupInitialState;
94
- harveyStepToTransaction(step: BaseTestStep, stateManager: EVMStateManagerInterface, common: Common): Promise<TypedTransaction>;
95
- harveyStepToBlock(step: BaseTestStep, common: Common): Block;
60
+ txDescToTx(step: TxDesc, stateManager: EVMStateManagerInterface, common: Common): Promise<TypedTransaction>;
61
+ private blockFromTxDesc;
96
62
  get txs(): TypedTransaction[];
97
63
  get results(): FoundryTxResult[];
98
64
  getStateBeforeTx(tx: TypedTransaction): EVMStateManagerInterface;
99
65
  getBlock(tx: TypedTransaction): Block;
100
66
  getContractsBefore(tx: TypedTransaction): Set<PrefixedHexString>;
101
67
  getKeccakPreimagesBefore(tx: TypedTransaction): KeccakPreimageMap;
68
+ getDecodedContractStatesBeforeTx(tx: TypedTransaction, contracts?: Iterable<Address>): Promise<ContractStates>;
69
+ getDecodedContractStatesOnTxStep(tx: TypedTransaction, stepNum: number): Promise<ContractStates | undefined>;
102
70
  }
103
- export {};
104
71
  //# 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":"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"}
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,MAAM,EAAE,wBAAwB,EAAY,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAW,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAEH,cAAc,EAEd,eAAe,EAGf,gBAAgB,EAChB,iBAAiB,EAEpB,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,EAAE,SAAS,CAAC;IACzB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QACL,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;KACvC,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE;QACN,CAAC,OAAO,EAAE,SAAS,GAAG,kBAAkB,CAAC;KAC5C,CAAC;CACL;AAED,MAAM,WAAW,QAAQ;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;aAUG,eAAe,EAAE,gBAAgB;IACjD,OAAO,CAAC,kBAAkB;IAV9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,wBAAwB,CAA8C;gBAG1D,eAAe,EAAE,gBAAgB,EACzC,kBAAkB,GAAE,OAAc;IAYxC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAoDtC,iBAAiB;IAyCzB,UAAU,CACZ,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,wBAAwB,EACtC,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IAoB5B,OAAO,CAAC,eAAe;IAiBvB,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAE5B;IAED,IAAI,OAAO,IAAI,eAAe,EAAE,CAE/B;IAED,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,wBAAwB;IAShE,QAAQ,CAAC,EAAE,EAAE,gBAAgB,GAAG,KAAK;IASrC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,iBAAiB,CAAC;IAShE,wBAAwB,CAAC,EAAE,EAAE,gBAAgB,GAAG,iBAAiB;IAS3D,gCAAgC,CAClC,EAAE,EAAE,gBAAgB,EACpB,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,cAAc,CAAC;IAWpB,gCAAgC,CAClC,EAAE,EAAE,gBAAgB,EACpB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAmBzC"}
@@ -1,25 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VMTestRunner = exports.ResultKind = void 0;
3
+ exports.TxRunner = void 0;
4
4
  const block_1 = require("@ethereumjs/block");
5
5
  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
9
  const debug_1 = require("../debug");
10
+ const storage_decode_tracer_1 = require("../debug/tracers/storage_decode_tracer");
10
11
  const map_1 = require("./map");
11
12
  const misc_1 = require("./misc");
12
13
  const set_1 = require("./set");
13
- var ResultKind;
14
- (function (ResultKind) {
15
- ResultKind["ContractCreated"] = "contract_created";
16
- ResultKind["ValueReturned"] = "value_returned";
17
- ResultKind["Revert"] = "revert";
18
- ResultKind["LastRevert"] = "last_revert";
19
- ResultKind["FoundryFail"] = "foundry_fail";
20
- })(ResultKind || (exports.ResultKind = ResultKind = {}));
21
14
  /**
22
- * Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
15
+ * Helper class to run a set of TX and record info to allow debugging any of the TXs independently. This includes:
23
16
  *
24
17
  * 1. The TX data for each
25
18
  * 2. The Block info for each TX
@@ -28,7 +21,7 @@ var ResultKind;
28
21
  * 5. The set of contracts before each TX
29
22
  * 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
30
23
  */
31
- class VMTestRunner {
24
+ class TxRunner {
32
25
  constructor(artifactManager, _foundryCheatcodes = true) {
33
26
  this.artifactManager = artifactManager;
34
27
  this._foundryCheatcodes = _foundryCheatcodes;
@@ -43,7 +36,7 @@ class VMTestRunner {
43
36
  this._results = [];
44
37
  this._txToBlock = new Map();
45
38
  }
46
- async runTestCase(testCaseJSON) {
39
+ async runScenario(scenario) {
47
40
  /**
48
41
  * Dummy VM used just to get a StateManager and a Common instance. The actual VM used for execution is created inside
49
42
  * SupportTracer. (@todo this is kinda ugly... oh well)
@@ -52,11 +45,11 @@ class VMTestRunner {
52
45
  let stateManager = dummyVM.stateManager.shallowCopy();
53
46
  const common = dummyVM.common.copy();
54
47
  debug_1.BaseSolTxTracer.releaseVM(dummyVM);
55
- const contractsBefore = await this.setupInitialState(testCaseJSON.initialState, stateManager);
48
+ const contractsBefore = await this.setupInitialState(scenario.initialState, stateManager);
56
49
  const keccakPreimages = new Map();
57
- for (let i = 0; i < testCaseJSON.steps.length; i++) {
58
- const tx = await this.harveyStepToTransaction(testCaseJSON.steps[i], stateManager, common);
59
- const block = this.harveyStepToBlock(testCaseJSON.steps[i], common);
50
+ for (let i = 0; i < scenario.steps.length; i++) {
51
+ const tx = await this.txDescToTx(scenario.steps[i], stateManager, common);
52
+ const block = this.blockFromTxDesc(scenario.steps[i], common);
60
53
  const txHash = (0, utils_1.bytesToHex)(tx.hash());
61
54
  // Store the sets before the TX
62
55
  this._txs.push(tx);
@@ -66,13 +59,12 @@ class VMTestRunner {
66
59
  this._keccakPreimagesBeforeTx.set(txHash, new Map(keccakPreimages));
67
60
  const [trace, res, stateAfter] = await this.tracer.debugTx(tx, block, stateManager);
68
61
  await stateManager.flush();
69
- // Update the set of live contracts
70
62
  const [gen, kill] = (0, debug_1.getContractGenKillSet)(trace, res);
71
63
  (0, set_1.set_add)(contractsBefore, gen);
72
64
  (0, set_1.set_subtract)(contractsBefore, kill);
65
+ // Update the keccak map
73
66
  const txKeccakPreimages = (0, debug_1.getKeccakPreimages)(trace);
74
67
  (0, map_1.map_add)(keccakPreimages, txKeccakPreimages);
75
- // Update the keccak map
76
68
  // Add results
77
69
  this._results.push(res);
78
70
  stateManager = stateAfter;
@@ -103,7 +95,7 @@ class VMTestRunner {
103
95
  await state.flush();
104
96
  return initialContracts;
105
97
  }
106
- async harveyStepToTransaction(step, stateManager, common) {
98
+ async txDescToTx(step, stateManager, common) {
107
99
  const senderAddress = util_1.Address.fromString(step.origin);
108
100
  const senderAccount = await stateManager.getAccount(senderAddress);
109
101
  const senderNonce = senderAccount !== undefined ? senderAccount.nonce : 0;
@@ -119,7 +111,7 @@ class VMTestRunner {
119
111
  }
120
112
  return (0, misc_1.makeFakeTransaction)(txData, step.origin, common);
121
113
  }
122
- harveyStepToBlock(step, common) {
114
+ blockFromTxDesc(step, common) {
123
115
  return block_1.Block.fromBlockData({
124
116
  header: {
125
117
  coinbase: step.origin,
@@ -162,6 +154,29 @@ class VMTestRunner {
162
154
  (0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find keccak preimages for tx ${txHash}`);
163
155
  return res;
164
156
  }
157
+ async getDecodedContractStatesBeforeTx(tx, contracts) {
158
+ const state = this.getStateBeforeTx(tx);
159
+ const preimages = this.getKeccakPreimagesBefore(tx);
160
+ if (contracts === undefined) {
161
+ contracts = [...this.getContractsBefore(tx)].map(util_1.Address.fromString);
162
+ }
163
+ return await (0, debug_1.decodeContractStates)(this.artifactManager, contracts, state, preimages);
164
+ }
165
+ async getDecodedContractStatesOnTxStep(tx, stepNum) {
166
+ const tracer = new storage_decode_tracer_1.StorageDecodeTracer(this.artifactManager);
167
+ const liveContracts = new Set(this.getContractsBefore(tx));
168
+ const preimages = new Map(this.getKeccakPreimagesBefore(tx));
169
+ const [trace, ,] = await tracer.debugTx(tx, this.getBlock(tx), this.getStateBeforeTx(tx), {
170
+ liveContracts,
171
+ preimages,
172
+ targetSteps: new Set([stepNum])
173
+ });
174
+ if (trace.length < stepNum) {
175
+ return undefined;
176
+ }
177
+ (0, solc_typed_ast_1.assert)(trace[stepNum].decodedStorage !== undefined, ``);
178
+ return trace[stepNum].decodedStorage;
179
+ }
165
180
  }
166
- exports.VMTestRunner = VMTestRunner;
181
+ exports.TxRunner = TxRunner;
167
182
  //# sourceMappingURL=test_runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sol-dbg",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "description": "Small (experimental) Solidity-level debugger built around EthereumJS",
5
5
  "keywords": [],
6
6
  "files": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifact_manager.d.ts","sourceRoot":"","sources":["../../src/debug/artifact_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EACH,UAAU,EACV,OAAO,EAEP,kBAAkB,EAClB,kBAAkB,EAElB,SAAS,EACT,UAAU,EAEV,mBAAmB,EAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACH,6BAA6B,EAE7B,uBAAuB,EACvB,iBAAiB,EACjB,MAAM,EAOT,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,WAAW,gBAAgB;IAC7B,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IACrF,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IACrF,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IACjE,SAAS,IAAI,YAAY,EAAE,CAAC;IAC5B,SAAS,IAAI,YAAY,EAAE,CAAC;IAE5B,WAAW,CACP,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,UAAU,EAAE,OAAO,GACpB,cAAc,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,CACN,QAAQ,EAAE,SAAS,GAAG,UAAU,GACjC,CAAC,YAAY,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY;IAGzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACxC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,MAAM,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAErC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,oBAAY,cAAc;IACtB,QAAQ,aAAa;IACrB,WAAW,iBAAiB;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;CACxB;AA4BD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,6BAA6B,CAU/F;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACpD,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,WAAW,CAAgC;IAEnD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;gBAYjB,SAAS,EAAE,iBAAiB,EAAE;IAyH1C,SAAS,IAAI,YAAY,EAAE;IAI3B,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;IAIhE,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS;IAUxF,+BAA+B,CAC3B,gBAAgB,EAAE,MAAM,GAAG,UAAU,GACtC,YAAY,GAAG,SAAS;IAU3B,WAAW,CACP,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,EACvC,UAAU,EAAE,OAAO,GACpB,cAAc,GAAG,SAAS;IA4B7B,SAAS,IAAI,YAAY,EAAE;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAQjC,UAAU,CACN,QAAQ,EAAE,SAAS,GAAG,UAAU,GACjC,CAAC,YAAY,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,SAAS;CAiC1E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifact_manager.js","sourceRoot":"","sources":["../../src/debug/artifact_manager.ts"],"names":[],"mappings":"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"}