@aztec/simulator 0.0.1-commit.d1f2d6c → 0.0.1-commit.d431d1c
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/dest/public/avm/avm_memory_types.d.ts +1 -1
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +0 -3
- package/dest/public/avm/opcodes/contract.d.ts +1 -1
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +4 -4
- package/dest/public/avm/opcodes/storage.d.ts +12 -13
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +20 -30
- package/dest/public/fixtures/opcode_spammer.d.ts +1 -1
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
- package/dest/public/fixtures/opcode_spammer.js +8 -20
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -7
- package/package.json +16 -16
- package/src/public/avm/avm_memory_types.ts +0 -4
- package/src/public/avm/opcodes/contract.ts +4 -1
- package/src/public/avm/opcodes/storage.ts +20 -28
- package/src/public/fixtures/opcode_spammer.ts +8 -37
- package/src/public/fuzzing/avm_simulator_bin.ts +1 -11
|
@@ -272,4 +272,4 @@ export declare class TaggedMemory implements TaggedMemoryInterface {
|
|
|
272
272
|
static buildFromTagTruncating(v: bigint | number, tag: TypeTag): MemoryValue;
|
|
273
273
|
}
|
|
274
274
|
export {};
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21lbW9yeV90eXBlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX21lbW9yeV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU0zRCxzRUFBc0U7QUFDdEUsOEJBQXNCLFdBQVc7SUFDL0IsU0FBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ25ELFNBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuRCxTQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkQsU0FBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBRW5ELFNBQWdCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUNsRCxTQUFnQixFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFHOUMsU0FBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDO0lBRzlDLFNBQWdCLFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDNUIsTUFBTSxJQUFJLE9BQU8sQ0FFdkI7SUFHRCxTQUFnQixRQUFRLElBQUksTUFBTSxDQUFDO0lBRzVCLElBQUksSUFBSSxFQUFFLENBRWhCO0lBRU0sY0FBYyxJQUFJLFlBQVksQ0FFcEM7SUFHTSxRQUFRLElBQUksTUFBTSxDQUV4QjtJQUVNLFFBQVEsSUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_memory_types.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_memory_types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"avm_memory_types.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_memory_types.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3D,sEAAsE;AACtE,8BAAsB,WAAW;IAC/B,SAAgB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IACnD,SAAgB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IACnD,SAAgB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IACnD,SAAgB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IAEnD,SAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IAClD,SAAgB,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IAG9C,SAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAG9C,SAAgB,QAAQ,IAAI,MAAM,CAAC;IAC5B,MAAM,IAAI,OAAO,CAEvB;IAGD,SAAgB,QAAQ,IAAI,MAAM,CAAC;IAG5B,IAAI,IAAI,EAAE,CAEhB;IAEM,cAAc,IAAI,YAAY,CAEpC;IAGM,QAAQ,IAAI,MAAM,CAExB;IAEM,QAAQ,IAAI,MAAM,CAExB;CACF;AAED,iFAAiF;AACjF,8BAAsB,aAAc,SAAQ,WAAW;IACrD,SAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAAC;IACvD,SAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAAC;IACvD,SAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAAC;IACvD,SAAgB,EAAE,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAAC;IACtD,SAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAAC;IACvD,SAAgB,GAAG,IAAI,aAAa,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGD,qBAAa,KAAM,SAAQ,UAA8B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC5D,qBAAa,KAAM,SAAQ,UAA8B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC5D,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC9D,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC9D,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC9D,qBAAa,OAAQ,SAAQ,YAAgC;CAAG;AAEhE,qBAAa,KAAM,SAAQ,WAAW;IACpC,gBAAuB,OAAO,EAAE,MAAM,CAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IAEzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAG3C;IAEM,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAE7B;IAEM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAE5B;IAEM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAE5B;IAEM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAE5B;IAGM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAE5B;IAGM,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAE7B;IAEM,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAEjC;IAEM,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAE7B;IAEM,QAAQ,IAAI,MAAM,CAExB;IAEM,QAAQ,IAAI,MAAM,CAExB;CACF;AAED,oBAAY,OAAO;IACjB,KAAK,IAAa;IAClB,KAAK,IAAa;IAClB,KAAK,IAAa;IAClB,MAAM,IAAc;IACpB,MAAM,IAAc;IACpB,MAAM,IAAc;IACpB,OAAO,IAAe;IACtB,OAAO,IAAmB;CAC3B;AAGD,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAE9D,qBAAa,YAAa,YAAW,qBAAqB;IACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAwC;IAGnE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,UAAmC;IAKxE,MAAM,CAAC,QAAQ,CAAC,eAAe,SAAqB;IACpD,OAAO,CAAC,IAAI,CAA2B;IAEvC,cAEC;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAEM,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAEtC;IAEM,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CASjC;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAe3D;IAEM,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,CAEtD;IAEM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAE3D;IAEM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,QAIxC;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAWnD;IAEM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrC;IAED;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAK3C;IAED,OAAc,uBAAuB,CAAC,GAAG,EAAE,OAAO,yBAEjD;IAED,OAAc,kBAAkB,CAAC,GAAG,EAAE,OAAO,QAI5C;IAED,OAAc,eAAe,CAAC,SAAS,EAAE,MAAM,QAI9C;IAED;;OAEG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAIlD;IAED;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAGvD;IAED;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAIpE;IAED,OAAc,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAMxD;IAGD,OAAc,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW,CAoBlF;CACF"}
|
|
@@ -268,9 +268,6 @@ export class TaggedMemory {
|
|
|
268
268
|
/**
|
|
269
269
|
* Check tags for all memory in the specified range.
|
|
270
270
|
*/ checkTagsRange(tag, startOffset, size) {
|
|
271
|
-
if (startOffset + size > TaggedMemory.MAX_MEMORY_SIZE) {
|
|
272
|
-
throw new MemorySliceOutOfRangeError(startOffset, size);
|
|
273
|
-
}
|
|
274
271
|
for(let offset = startOffset; offset < startOffset + size; offset++){
|
|
275
272
|
this.checkTag(tag, offset);
|
|
276
273
|
}
|
|
@@ -17,4 +17,4 @@ export declare class GetContractInstance extends Instruction {
|
|
|
17
17
|
constructor(addressingMode: number, addressOffset: number, dstOffset: number, memberEnum: number);
|
|
18
18
|
execute(context: AvmContext): Promise<void>;
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL29wY29kZXMvY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0Msb0JBQVksc0JBQXNCO0lBQ2hDLFFBQVEsSUFBQTtJQUNSLFFBQVEsSUFBQTtJQUNSLFNBQVMsSUFBQTtDQUNWO0FBRUQscUJBQWEsbUJBQW9CLFNBQVEsV0FBVztJQWFoRCxPQUFPLENBQUMsY0FBYztJQUN0QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsVUFBVTtJQWZwQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQXlCO0lBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBOEI7SUFFNUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBTXZDO0lBRUYsWUFDVSxjQUFjLEVBQUUsTUFBTSxFQUN0QixhQUFhLEVBQUUsTUFBTSxFQUNyQixTQUFTLEVBQUUsTUFBTSxFQUNqQixVQUFVLEVBQUUsTUFBTSxFQUczQjtJQUVLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0F1Q2hEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,oBAAY,sBAAsB;IAChC,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,SAAS,IAAA;CACV;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAahD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAfpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAyB;IACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA8B;IAE5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;IAEF,YACU,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAG3B;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,oBAAY,sBAAsB;IAChC,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,SAAS,IAAA;CACV;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAahD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAfpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAyB;IACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA8B;IAE5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;IAEF,YACU,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAG3B;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChD;CACF"}
|
|
@@ -57,9 +57,9 @@ export class GetContractInstance extends Instruction {
|
|
|
57
57
|
break;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
const existsOffset = dstOffset;
|
|
61
|
+
const memberValueOffset = dstOffset + 1;
|
|
62
|
+
memory.set(existsOffset, new Uint1(exists ? 1 : 0));
|
|
63
|
+
memory.set(memberValueOffset, memberValue);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { Instruction } from './instruction.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare abstract class BaseStorageInstruction extends Instruction {
|
|
5
|
+
protected addressingMode: number;
|
|
6
|
+
protected aOffset: number;
|
|
7
|
+
protected bOffset: number;
|
|
8
|
+
static readonly wireFormat: OperandType[];
|
|
9
|
+
constructor(addressingMode: number, aOffset: number, bOffset: number);
|
|
10
|
+
}
|
|
11
|
+
export declare class SStore extends BaseStorageInstruction {
|
|
8
12
|
static readonly type: string;
|
|
9
13
|
static readonly opcode = Opcode.SSTORE;
|
|
10
|
-
static readonly wireFormat: OperandType[];
|
|
11
14
|
constructor(addressingMode: number, srcOffset: number, slotOffset: number);
|
|
12
15
|
execute(context: AvmContext): Promise<void>;
|
|
13
16
|
}
|
|
14
|
-
export declare class SLoad extends
|
|
15
|
-
private addressingMode;
|
|
16
|
-
private slotOffset;
|
|
17
|
-
private contractAddressOffset;
|
|
18
|
-
private dstOffset;
|
|
17
|
+
export declare class SLoad extends BaseStorageInstruction {
|
|
19
18
|
static readonly type: string;
|
|
20
19
|
static readonly opcode = Opcode.SLOAD;
|
|
21
|
-
|
|
22
|
-
constructor(addressingMode: number, slotOffset: number, contractAddressOffset: number, dstOffset: number);
|
|
20
|
+
constructor(addressingMode: number, slotOffset: number, dstOffset: number);
|
|
23
21
|
execute(context: AvmContext): Promise<void>;
|
|
24
22
|
}
|
|
25
|
-
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHVCQUFlLHNCQUF1QixTQUFRLFdBQVc7SUFVckQsU0FBUyxDQUFDLGNBQWMsRUFBRSxNQUFNO0lBQ2hDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTTtJQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU07SUFWM0IsZ0JBQXVCLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FLOUM7SUFFRixZQUNZLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLE1BQU0sRUFHMUI7Q0FDRjtBQUVELHFCQUFhLE1BQU8sU0FBUSxzQkFBc0I7SUFDaEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFZO0lBQ3hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxpQkFBaUI7SUFFdkMsWUFBWSxjQUFjLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFFeEU7SUFFWSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBMEJ2RDtDQUNGO0FBRUQscUJBQWEsS0FBTSxTQUFRLHNCQUFzQjtJQUMvQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQVc7SUFDdkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLGdCQUFnQjtJQUV0QyxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUV4RTtJQUVZLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FldkQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,sBAAuB,SAAQ,WAAW;IAUrD,SAAS,CAAC,cAAc,EAAE,MAAM;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM;IAV3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAK9C;IAEF,YACY,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;IAEvC,YAAY,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAExE;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvD;CACF;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,YAAY,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAExE;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAevD;CACF"}
|
|
@@ -3,12 +3,10 @@ import { StaticCallAlterationError } from '../errors.js';
|
|
|
3
3
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
4
4
|
import { Addressing } from './addressing_mode.js';
|
|
5
5
|
import { Instruction } from './instruction.js';
|
|
6
|
-
|
|
6
|
+
class BaseStorageInstruction extends Instruction {
|
|
7
7
|
addressingMode;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static type = 'SSTORE';
|
|
11
|
-
static opcode = Opcode.SSTORE;
|
|
8
|
+
aOffset;
|
|
9
|
+
bOffset;
|
|
12
10
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
13
11
|
static wireFormat = [
|
|
14
12
|
OperandType.UINT8,
|
|
@@ -16,8 +14,15 @@ export class SStore extends Instruction {
|
|
|
16
14
|
OperandType.UINT16,
|
|
17
15
|
OperandType.UINT16
|
|
18
16
|
];
|
|
17
|
+
constructor(addressingMode, aOffset, bOffset){
|
|
18
|
+
super(), this.addressingMode = addressingMode, this.aOffset = aOffset, this.bOffset = bOffset;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class SStore extends BaseStorageInstruction {
|
|
22
|
+
static type = 'SSTORE';
|
|
23
|
+
static opcode = Opcode.SSTORE;
|
|
19
24
|
constructor(addressingMode, srcOffset, slotOffset){
|
|
20
|
-
super(
|
|
25
|
+
super(addressingMode, srcOffset, slotOffset);
|
|
21
26
|
}
|
|
22
27
|
async execute(context) {
|
|
23
28
|
if (context.environment.isStaticCall) {
|
|
@@ -27,8 +32,8 @@ export class SStore extends Instruction {
|
|
|
27
32
|
const addressing = Addressing.fromWire(this.addressingMode);
|
|
28
33
|
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
29
34
|
const operands = [
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
35
|
+
this.aOffset,
|
|
36
|
+
this.bOffset
|
|
32
37
|
];
|
|
33
38
|
const [srcOffset, slotOffset] = addressing.resolve(operands, memory);
|
|
34
39
|
// We read before tag checking since it's needed for gas cost calculation
|
|
@@ -40,39 +45,24 @@ export class SStore extends Instruction {
|
|
|
40
45
|
await context.persistableState.writeStorage(context.environment.address, slot, value);
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
|
-
export class SLoad extends
|
|
44
|
-
addressingMode;
|
|
45
|
-
slotOffset;
|
|
46
|
-
contractAddressOffset;
|
|
47
|
-
dstOffset;
|
|
48
|
+
export class SLoad extends BaseStorageInstruction {
|
|
48
49
|
static type = 'SLOAD';
|
|
49
50
|
static opcode = Opcode.SLOAD;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
OperandType.UINT8,
|
|
53
|
-
OperandType.UINT8,
|
|
54
|
-
OperandType.UINT16,
|
|
55
|
-
OperandType.UINT16,
|
|
56
|
-
OperandType.UINT16
|
|
57
|
-
];
|
|
58
|
-
constructor(addressingMode, slotOffset, contractAddressOffset, dstOffset){
|
|
59
|
-
super(), this.addressingMode = addressingMode, this.slotOffset = slotOffset, this.contractAddressOffset = contractAddressOffset, this.dstOffset = dstOffset;
|
|
51
|
+
constructor(addressingMode, slotOffset, dstOffset){
|
|
52
|
+
super(addressingMode, slotOffset, dstOffset);
|
|
60
53
|
}
|
|
61
54
|
async execute(context) {
|
|
62
55
|
const memory = context.machineState.memory;
|
|
63
56
|
const addressing = Addressing.fromWire(this.addressingMode);
|
|
64
57
|
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
65
58
|
const operands = [
|
|
66
|
-
this.
|
|
67
|
-
this.
|
|
68
|
-
this.dstOffset
|
|
59
|
+
this.aOffset,
|
|
60
|
+
this.bOffset
|
|
69
61
|
];
|
|
70
|
-
const [slotOffset,
|
|
62
|
+
const [slotOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
71
63
|
memory.checkTag(TypeTag.FIELD, slotOffset);
|
|
72
|
-
memory.checkTag(TypeTag.FIELD, contractAddressOffset);
|
|
73
64
|
const slot = memory.get(slotOffset).toFr();
|
|
74
|
-
const
|
|
75
|
-
const value = await context.persistableState.readStorage(contractAddress, slot);
|
|
65
|
+
const value = await context.persistableState.readStorage(context.environment.address, slot);
|
|
76
66
|
memory.set(dstOffset, new Field(value));
|
|
77
67
|
}
|
|
78
68
|
}
|
|
@@ -120,4 +120,4 @@ export declare function createOpcodeSpamBytecode(config: SpamConfig): Buffer;
|
|
|
120
120
|
export declare function createSideEffectSpamBytecode(config: SpamConfig): Buffer;
|
|
121
121
|
export declare function testOpcodeSpamCase(tester: PublicTxSimulationTester, config: SpamConfig, expectToBeTrue?: (x: boolean) => void): Promise<PublicTxResult>;
|
|
122
122
|
export {};
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2RlX3NwYW1tZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvb3Bjb2RlX3NwYW1tZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0tBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQTJDLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLakYsT0FBTyxFQUFTLEtBQUssV0FBVyxFQUFnRCxNQUFNLDRCQUE0QixDQUFDO0FBa0RuSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFM0UsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1qRjs7R0FFRztBQUNILFVBQVUsUUFBUTtJQUNoQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsS0FBSyxFQUFFLFdBQVcsQ0FBQztDQUNwQjtBQUVEOzs7R0FHRztBQUNILEtBQUssU0FBUyxHQUFHLFFBQVEsR0FBRyxDQUFDLE1BQU0sVUFBVSxFQUFFLENBQUMsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sV0FBVyxVQUFVO0lBQ3pCLGlDQUFpQztJQUNqQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFFbkIsc0RBQXNEO0lBQ3RELGtCQUFrQixFQUFFLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFFdkMsMkRBQTJEO0lBQzNELG1CQUFtQixDQUFDLEVBQUUsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUV6Qzs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRWYsc0VBQXNFO0lBQ3RFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVmLDBEQUEwRDtJQUMxRCxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUM3QjtBQUVEOzs7R0FHRztBQUNILE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsa0NBQWtDO0lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFZixxREFBcUQ7SUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQ3ZCO0FBTUQ7OztHQUdHO0FBQ0gsZUFBTyxNQUFNLGNBQWMsSUFBc0IsQ0FBQztBQUNsRCxlQUFPLE1BQU0saUJBQWlCLElBQThCLENBQUM7QUFFN0QsdUdBQXVHO0FBQ3ZHLGVBQU8sTUFBTSxjQUFjLElBQTBCLENBQUM7QUFDdEQsZUFBTyxNQUFNLHNCQUFzQixjQUFrQyxDQUFDO0FBRXRFLHVGQUF1RjtBQUN2RixlQUFPLE1BQU0saUJBQWlCLElBQTBCLENBQUM7QUFDekQsZUFBTyxNQUFNLGtCQUFrQixJQUEwQixDQUFDO0FBRTFEOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0seUJBQXlCLEtBQUssQ0FBQztBQUM1QyxlQUFPLE1BQU0sNEJBQTRCLEtBQUssQ0FBQztBQUUvQzs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IscUJBQXFCLENBQ3pDLFdBQVcsRUFBRSx5QkFBeUIsRUFDdEMsZUFBZSxFQUFFLFlBQVksR0FDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWVmO0FBbUdEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLG9CQUFvQixFQUFFLFVBMEJsQyxDQUFDO0FBa0NGOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBNDhCOUQsQ0FBQztBQUVGOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLG1CQUFtQixHQUFFLE1BQWlCLEdBQUcsb0JBQW9CLEVBQUUsQ0FzQnRHO0FBNEZEOzs7R0FHRztBQUNILHdCQUFnQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FlbkU7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0IsNEJBQTRCLENBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxNQUFNLENBbUJ2RTtBQTRERCx3QkFBc0Isa0JBQWtCLENBQ3RDLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsTUFBTSxFQUFFLFVBQVUsRUFDbEIsY0FBYyxHQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxJQUFlLEdBQzlDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FLekIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opcode_spammer.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/opcode_spammer.ts"],"names":[],"mappings":"AAkKA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAKjF,OAAO,EAAS,KAAK,WAAW,EAAgD,MAAM,4BAA4B,CAAC;AAkDnH,OAAO,EAAE,MAAM,EAAE,MAAM,mDAAmD,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAMjF;;GAEG;AACH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;CACpB;AAED;;;GAGG;AACH,KAAK,SAAS,GAAG,QAAQ,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,KAAK,EAAE,SAAS,EAAE,CAAC;IAEnB,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,UAAU,EAAE,CAAC;IAEvC,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC;IAEzC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,qDAAqD;IACrD,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAMD;;;GAGG;AACH,eAAO,MAAM,cAAc,IAAsB,CAAC;AAClD,eAAO,MAAM,iBAAiB,IAA8B,CAAC;AAE7D,uGAAuG;AACvG,eAAO,MAAM,cAAc,IAA0B,CAAC;AACtD,eAAO,MAAM,sBAAsB,cAAkC,CAAC;AAEtE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,IAA0B,CAAC;AACzD,eAAO,MAAM,kBAAkB,IAA0B,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,yBAAyB,EACtC,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,IAAI,CAAC,CAef;AAmGD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,UA0BlC,CAAC;AAkCF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"opcode_spammer.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/opcode_spammer.ts"],"names":[],"mappings":"AAkKA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAKjF,OAAO,EAAS,KAAK,WAAW,EAAgD,MAAM,4BAA4B,CAAC;AAkDnH,OAAO,EAAE,MAAM,EAAE,MAAM,mDAAmD,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAMjF;;GAEG;AACH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;CACpB;AAED;;;GAGG;AACH,KAAK,SAAS,GAAG,QAAQ,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,KAAK,EAAE,SAAS,EAAE,CAAC;IAEnB,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,UAAU,EAAE,CAAC;IAEvC,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC;IAEzC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,qDAAqD;IACrD,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAMD;;;GAGG;AACH,eAAO,MAAM,cAAc,IAAsB,CAAC;AAClD,eAAO,MAAM,iBAAiB,IAA8B,CAAC;AAE7D,uGAAuG;AACvG,eAAO,MAAM,cAAc,IAA0B,CAAC;AACtD,eAAO,MAAM,sBAAsB,cAAkC,CAAC;AAEtE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,IAA0B,CAAC;AACzD,eAAO,MAAM,kBAAkB,IAA0B,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,yBAAyB,EACtC,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,IAAI,CAAC,CAef;AAmGD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,UA0BlC,CAAC;AAkCF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CA48B9D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,mBAAmB,GAAE,MAAiB,GAAG,oBAAoB,EAAE,CAsBtG;AA4FD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAenE;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAmBvE;AA4DD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,EAClB,cAAc,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAe,GAC9C,OAAO,CAAC,cAAc,CAAC,CAKzB"}
|
|
@@ -897,14 +897,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
897
897
|
{
|
|
898
898
|
offset: 0,
|
|
899
899
|
value: new Field(Fr.random())
|
|
900
|
-
}
|
|
901
|
-
()=>[
|
|
902
|
-
// Get current contract address into offset 1
|
|
903
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
904
|
-
]
|
|
900
|
+
}
|
|
905
901
|
],
|
|
906
902
|
targetInstructions: ()=>[
|
|
907
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*
|
|
903
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)
|
|
908
904
|
]
|
|
909
905
|
},
|
|
910
906
|
{
|
|
@@ -914,19 +910,15 @@ const STATIC_CALL_CONFIG = {
|
|
|
914
910
|
{
|
|
915
911
|
offset: 0,
|
|
916
912
|
value: new Field(WARM_STORAGE_SLOT)
|
|
917
|
-
}
|
|
918
|
-
()=>[
|
|
919
|
-
// Get current contract address into offset 1
|
|
920
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
921
|
-
]
|
|
913
|
+
}
|
|
922
914
|
],
|
|
923
915
|
targetInstructions: ()=>[
|
|
924
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*
|
|
916
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)
|
|
925
917
|
]
|
|
926
918
|
},
|
|
927
919
|
{
|
|
928
920
|
label: 'Warm read (SSTORE first, unique slot per SLOAD)',
|
|
929
|
-
// Memory layout: slot (incremented), value, constant 1,
|
|
921
|
+
// Memory layout: slot (incremented), value, constant 1, revertSize, loaded value
|
|
930
922
|
setup: [
|
|
931
923
|
{
|
|
932
924
|
offset: 0,
|
|
@@ -940,22 +932,18 @@ const STATIC_CALL_CONFIG = {
|
|
|
940
932
|
offset: 2,
|
|
941
933
|
value: new Field(1n)
|
|
942
934
|
},
|
|
943
|
-
()=>[
|
|
944
|
-
// Get current contract address into offset 3
|
|
945
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 3, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
946
|
-
],
|
|
947
935
|
{
|
|
948
|
-
offset:
|
|
936
|
+
offset: 3,
|
|
949
937
|
value: new Uint32(0n)
|
|
950
938
|
}
|
|
951
939
|
],
|
|
952
940
|
targetInstructions: ()=>[
|
|
953
941
|
new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 1, /*slotOffset=*/ 0),
|
|
954
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*
|
|
942
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 4),
|
|
955
943
|
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 2, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8)
|
|
956
944
|
],
|
|
957
945
|
cleanupInstructions: ()=>[
|
|
958
|
-
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/
|
|
946
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
959
947
|
],
|
|
960
948
|
limit: MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
961
949
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import {
|
|
2
|
+
import { deserializeFromMessagePack, serializeWithMessagePack } from '@aztec/stdlib/avm';
|
|
3
3
|
import { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
4
4
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
5
5
|
import { createInterface } from 'readline';
|
|
@@ -54,8 +54,7 @@ async function simulateWithFuzzer(dataDir, mapSizeKb, txHint, globals, rawContra
|
|
|
54
54
|
reverted: !result.revertCode.isOK(),
|
|
55
55
|
output,
|
|
56
56
|
revertReason: result.findRevertReason()?.message,
|
|
57
|
-
publicInputs: result.publicInputs
|
|
58
|
-
publicTxEffect: result.publicTxEffect
|
|
57
|
+
publicInputs: result.publicInputs
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
async function execute(base64Line) {
|
|
@@ -71,8 +70,7 @@ async function execute(base64Line) {
|
|
|
71
70
|
reverted: result.reverted,
|
|
72
71
|
output: result.output,
|
|
73
72
|
revertReason: result.revertReason ?? '',
|
|
74
|
-
endTreeSnapshots: result.publicInputs.endTreeSnapshots
|
|
75
|
-
publicTxEffect: result.publicTxEffect
|
|
73
|
+
endTreeSnapshots: result.publicInputs.endTreeSnapshots
|
|
76
74
|
});
|
|
77
75
|
const base64Response = resultBuffer.toString('base64') + '\n';
|
|
78
76
|
await writeOutput(base64Response);
|
|
@@ -82,8 +80,7 @@ async function execute(base64Line) {
|
|
|
82
80
|
reverted: true,
|
|
83
81
|
output: [],
|
|
84
82
|
revertReason: `Unexpected Error ${error.message}`,
|
|
85
|
-
endTreeSnapshots: TreeSnapshots.empty()
|
|
86
|
-
publicTxEffect: PublicTxEffect.empty()
|
|
83
|
+
endTreeSnapshots: TreeSnapshots.empty()
|
|
87
84
|
});
|
|
88
85
|
await writeOutput(errorResult.toString('base64') + '\n');
|
|
89
86
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.d431d1c",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -64,26 +64,26 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "0.0.1-commit.
|
|
68
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
69
|
-
"@aztec/native": "0.0.1-commit.
|
|
70
|
-
"@aztec/noir-acvm_js": "0.0.1-commit.
|
|
71
|
-
"@aztec/noir-noirc_abi": "0.0.1-commit.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
73
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
74
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
75
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
76
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
77
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
67
|
+
"@aztec/constants": "0.0.1-commit.d431d1c",
|
|
68
|
+
"@aztec/foundation": "0.0.1-commit.d431d1c",
|
|
69
|
+
"@aztec/native": "0.0.1-commit.d431d1c",
|
|
70
|
+
"@aztec/noir-acvm_js": "0.0.1-commit.d431d1c",
|
|
71
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.d431d1c",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.d431d1c",
|
|
73
|
+
"@aztec/noir-types": "0.0.1-commit.d431d1c",
|
|
74
|
+
"@aztec/protocol-contracts": "0.0.1-commit.d431d1c",
|
|
75
|
+
"@aztec/stdlib": "0.0.1-commit.d431d1c",
|
|
76
|
+
"@aztec/telemetry-client": "0.0.1-commit.d431d1c",
|
|
77
|
+
"@aztec/world-state": "0.0.1-commit.d431d1c",
|
|
78
78
|
"lodash.clonedeep": "^4.5.0",
|
|
79
79
|
"lodash.merge": "^4.6.2",
|
|
80
80
|
"tslib": "^2.4.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
84
|
-
"@aztec/merkle-tree": "0.0.1-commit.
|
|
85
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
86
|
-
"@aztec/noir-test-contracts.js": "0.0.1-commit.
|
|
83
|
+
"@aztec/kv-store": "0.0.1-commit.d431d1c",
|
|
84
|
+
"@aztec/merkle-tree": "0.0.1-commit.d431d1c",
|
|
85
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.d431d1c",
|
|
86
|
+
"@aztec/noir-test-contracts.js": "0.0.1-commit.d431d1c",
|
|
87
87
|
"@jest/globals": "^30.0.0",
|
|
88
88
|
"@types/jest": "^30.0.0",
|
|
89
89
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -369,10 +369,6 @@ export class TaggedMemory implements TaggedMemoryInterface {
|
|
|
369
369
|
* Check tags for all memory in the specified range.
|
|
370
370
|
*/
|
|
371
371
|
public checkTagsRange(tag: TypeTag, startOffset: number, size: number) {
|
|
372
|
-
if (startOffset + size > TaggedMemory.MAX_MEMORY_SIZE) {
|
|
373
|
-
throw new MemorySliceOutOfRangeError(startOffset, size);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
372
|
for (let offset = startOffset; offset < startOffset + size; offset++) {
|
|
377
373
|
this.checkTag(tag, offset);
|
|
378
374
|
}
|
|
@@ -67,6 +67,9 @@ export class GetContractInstance extends Instruction {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
const existsOffset = dstOffset;
|
|
71
|
+
const memberValueOffset = dstOffset + 1;
|
|
72
|
+
memory.set(existsOffset, new Uint1(exists ? 1 : 0));
|
|
73
|
+
memory.set(memberValueOffset, memberValue);
|
|
71
74
|
}
|
|
72
75
|
}
|
|
@@ -5,9 +5,7 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
|
|
|
5
5
|
import { Addressing } from './addressing_mode.js';
|
|
6
6
|
import { Instruction } from './instruction.js';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
static readonly type: string = 'SSTORE';
|
|
10
|
-
static readonly opcode = Opcode.SSTORE;
|
|
8
|
+
abstract class BaseStorageInstruction extends Instruction {
|
|
11
9
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
12
10
|
public static readonly wireFormat: OperandType[] = [
|
|
13
11
|
OperandType.UINT8,
|
|
@@ -17,12 +15,21 @@ export class SStore extends Instruction {
|
|
|
17
15
|
];
|
|
18
16
|
|
|
19
17
|
constructor(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
protected addressingMode: number,
|
|
19
|
+
protected aOffset: number,
|
|
20
|
+
protected bOffset: number,
|
|
23
21
|
) {
|
|
24
22
|
super();
|
|
25
23
|
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export class SStore extends BaseStorageInstruction {
|
|
27
|
+
static readonly type: string = 'SSTORE';
|
|
28
|
+
static readonly opcode = Opcode.SSTORE;
|
|
29
|
+
|
|
30
|
+
constructor(addressingMode: number, srcOffset: number, slotOffset: number) {
|
|
31
|
+
super(addressingMode, srcOffset, slotOffset);
|
|
32
|
+
}
|
|
26
33
|
|
|
27
34
|
public async execute(context: AvmContext): Promise<void> {
|
|
28
35
|
if (context.environment.isStaticCall) {
|
|
@@ -36,7 +43,7 @@ export class SStore extends Instruction {
|
|
|
36
43
|
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
37
44
|
);
|
|
38
45
|
|
|
39
|
-
const operands = [this.
|
|
46
|
+
const operands = [this.aOffset, this.bOffset];
|
|
40
47
|
const [srcOffset, slotOffset] = addressing.resolve(operands, memory);
|
|
41
48
|
// We read before tag checking since it's needed for gas cost calculation
|
|
42
49
|
const slot = memory.get(slotOffset).toFr();
|
|
@@ -53,25 +60,12 @@ export class SStore extends Instruction {
|
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
export class SLoad extends
|
|
63
|
+
export class SLoad extends BaseStorageInstruction {
|
|
57
64
|
static readonly type: string = 'SLOAD';
|
|
58
65
|
static readonly opcode = Opcode.SLOAD;
|
|
59
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
60
|
-
public static readonly wireFormat: OperandType[] = [
|
|
61
|
-
OperandType.UINT8,
|
|
62
|
-
OperandType.UINT8,
|
|
63
|
-
OperandType.UINT16,
|
|
64
|
-
OperandType.UINT16,
|
|
65
|
-
OperandType.UINT16,
|
|
66
|
-
];
|
|
67
66
|
|
|
68
|
-
constructor(
|
|
69
|
-
|
|
70
|
-
private slotOffset: number,
|
|
71
|
-
private contractAddressOffset: number,
|
|
72
|
-
private dstOffset: number,
|
|
73
|
-
) {
|
|
74
|
-
super();
|
|
67
|
+
constructor(addressingMode: number, slotOffset: number, dstOffset: number) {
|
|
68
|
+
super(addressingMode, slotOffset, dstOffset);
|
|
75
69
|
}
|
|
76
70
|
|
|
77
71
|
public async execute(context: AvmContext): Promise<void> {
|
|
@@ -82,14 +76,12 @@ export class SLoad extends Instruction {
|
|
|
82
76
|
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
83
77
|
);
|
|
84
78
|
|
|
85
|
-
const operands = [this.
|
|
86
|
-
const [slotOffset,
|
|
79
|
+
const operands = [this.aOffset, this.bOffset];
|
|
80
|
+
const [slotOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
87
81
|
memory.checkTag(TypeTag.FIELD, slotOffset);
|
|
88
|
-
memory.checkTag(TypeTag.FIELD, contractAddressOffset);
|
|
89
82
|
|
|
90
83
|
const slot = memory.get(slotOffset).toFr();
|
|
91
|
-
const
|
|
92
|
-
const value = await context.persistableState.readStorage(contractAddress, slot);
|
|
84
|
+
const value = await context.persistableState.readStorage(context.environment.address, slot);
|
|
93
85
|
memory.set(dstOffset, new Field(value));
|
|
94
86
|
}
|
|
95
87
|
}
|
|
@@ -966,63 +966,34 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
|
|
|
966
966
|
[Opcode.SLOAD]: [
|
|
967
967
|
{
|
|
968
968
|
label: 'Cold read (slot not written)',
|
|
969
|
-
setup: [
|
|
970
|
-
|
|
971
|
-
() => [
|
|
972
|
-
// Get current contract address into offset 1
|
|
973
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(
|
|
974
|
-
Opcode.GETENVVAR_16,
|
|
975
|
-
GetEnvVar.wireFormat16,
|
|
976
|
-
),
|
|
977
|
-
],
|
|
978
|
-
],
|
|
979
|
-
targetInstructions: () => [
|
|
980
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2),
|
|
981
|
-
],
|
|
969
|
+
setup: [{ offset: 0, value: new Field(Fr.random()) }], // random slot
|
|
970
|
+
targetInstructions: () => [new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)],
|
|
982
971
|
},
|
|
983
972
|
{
|
|
984
973
|
label: 'Warm read (from tree)',
|
|
985
974
|
// Uses pre-inserted storage from insertWarmTreeEntries() which is called after contract deployment
|
|
986
|
-
setup: [
|
|
987
|
-
|
|
988
|
-
() => [
|
|
989
|
-
// Get current contract address into offset 1
|
|
990
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(
|
|
991
|
-
Opcode.GETENVVAR_16,
|
|
992
|
-
GetEnvVar.wireFormat16,
|
|
993
|
-
),
|
|
994
|
-
],
|
|
995
|
-
],
|
|
996
|
-
targetInstructions: () => [
|
|
997
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2),
|
|
998
|
-
],
|
|
975
|
+
setup: [{ offset: 0, value: new Field(WARM_STORAGE_SLOT) }], // pre-inserted slot
|
|
976
|
+
targetInstructions: () => [new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)],
|
|
999
977
|
},
|
|
1000
978
|
{
|
|
1001
979
|
label: 'Warm read (SSTORE first, unique slot per SLOAD)',
|
|
1002
|
-
// Memory layout: slot (incremented), value, constant 1,
|
|
980
|
+
// Memory layout: slot (incremented), value, constant 1, revertSize, loaded value
|
|
1003
981
|
setup: [
|
|
1004
982
|
{ offset: 0, value: new Field(Fr.random()) }, // slot (will be incremented)
|
|
1005
983
|
{ offset: 1, value: new Field(Fr.random()) }, // value to store
|
|
1006
984
|
{ offset: 2, value: new Field(1n) }, // constant 1 for ADD
|
|
1007
|
-
()
|
|
1008
|
-
// Get current contract address into offset 3
|
|
1009
|
-
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 3, /*varEnum=*/ 0).as(
|
|
1010
|
-
Opcode.GETENVVAR_16,
|
|
1011
|
-
GetEnvVar.wireFormat16,
|
|
1012
|
-
),
|
|
1013
|
-
],
|
|
1014
|
-
{ offset: 4, value: new Uint32(0n) }, // revertSize
|
|
985
|
+
{ offset: 3, value: new Uint32(0n) }, // revertSize
|
|
1015
986
|
],
|
|
1016
987
|
targetInstructions: () => [
|
|
1017
988
|
new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 1, /*slotOffset=*/ 0),
|
|
1018
|
-
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*
|
|
989
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 4),
|
|
1019
990
|
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 2, /*dstOffset=*/ 0).as(
|
|
1020
991
|
Opcode.ADD_8,
|
|
1021
992
|
Add.wireFormat8,
|
|
1022
993
|
), // slot++
|
|
1023
994
|
],
|
|
1024
995
|
cleanupInstructions: () => [
|
|
1025
|
-
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/
|
|
996
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(
|
|
1026
997
|
Opcode.REVERT_8,
|
|
1027
998
|
Revert.wireFormat8,
|
|
1028
999
|
),
|
|
@@ -3,7 +3,6 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
3
3
|
import {
|
|
4
4
|
AvmCircuitPublicInputs,
|
|
5
5
|
type AvmTxHint,
|
|
6
|
-
PublicTxEffect,
|
|
7
6
|
deserializeFromMessagePack,
|
|
8
7
|
serializeWithMessagePack,
|
|
9
8
|
} from '@aztec/stdlib/avm';
|
|
@@ -59,13 +58,7 @@ async function simulateWithFuzzer(
|
|
|
59
58
|
rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
|
|
60
59
|
rawNoteHashes: any[], // Note hashes to apply before simulation
|
|
61
60
|
protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
|
|
62
|
-
): Promise<{
|
|
63
|
-
reverted: boolean;
|
|
64
|
-
output: Fr[];
|
|
65
|
-
revertReason?: string;
|
|
66
|
-
publicInputs: AvmCircuitPublicInputs;
|
|
67
|
-
publicTxEffect: PublicTxEffect;
|
|
68
|
-
}> {
|
|
61
|
+
): Promise<{ reverted: boolean; output: Fr[]; revertReason?: string; publicInputs: AvmCircuitPublicInputs }> {
|
|
69
62
|
const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
|
|
70
63
|
|
|
71
64
|
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
|
|
@@ -97,7 +90,6 @@ async function simulateWithFuzzer(
|
|
|
97
90
|
output,
|
|
98
91
|
revertReason: result.findRevertReason()?.message,
|
|
99
92
|
publicInputs: result.publicInputs!,
|
|
100
|
-
publicTxEffect: result.publicTxEffect,
|
|
101
93
|
};
|
|
102
94
|
}
|
|
103
95
|
|
|
@@ -127,7 +119,6 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
127
119
|
output: result.output,
|
|
128
120
|
revertReason: result.revertReason ?? '',
|
|
129
121
|
endTreeSnapshots: result.publicInputs.endTreeSnapshots,
|
|
130
|
-
publicTxEffect: result.publicTxEffect,
|
|
131
122
|
});
|
|
132
123
|
const base64Response = resultBuffer.toString('base64') + '\n';
|
|
133
124
|
await writeOutput(base64Response);
|
|
@@ -138,7 +129,6 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
138
129
|
output: [] as Fr[],
|
|
139
130
|
revertReason: `Unexpected Error ${error.message}`,
|
|
140
131
|
endTreeSnapshots: TreeSnapshots.empty(),
|
|
141
|
-
publicTxEffect: PublicTxEffect.empty(),
|
|
142
132
|
});
|
|
143
133
|
await writeOutput(errorResult.toString('base64') + '\n');
|
|
144
134
|
}
|