@aztec/simulator 0.51.0 → 0.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@ export class AvmSimulator {
33
33
  */
34
34
  async executeBytecode(bytecode) {
35
35
  const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
36
- assert(isAvmBytecode(decompressedBytecode), "AVM simulator can't execute non-AVM bytecode");
36
+ assert(await isAvmBytecode(decompressedBytecode), "AVM simulator can't execute non-AVM bytecode");
37
37
  this.bytecode = decompressedBytecode;
38
38
  return await this.executeInstructions(decodeFromBytecode(decompressedBytecode));
39
39
  }
@@ -84,4 +84,4 @@ export class AvmSimulator {
84
84
  }
85
85
  }
86
86
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwrQkFBK0IsRUFDL0IsOEJBQThCLEdBQy9CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyw4QkFBOEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDMUMsQ0FBQztRQUVGLGtGQUFrRjtRQUNsRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLDBC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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwrQkFBK0IsRUFDL0IsOEJBQThCLEdBQy9CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyw4QkFBOEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDMUMsQ0FBQztRQUVGLGtGQUFrRjtRQUNsRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLDBC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
@@ -4,21 +4,20 @@ import { Instruction } from './instruction.js';
4
4
  declare abstract class BaseStorageInstruction extends Instruction {
5
5
  protected indirect: number;
6
6
  protected aOffset: number;
7
- protected size: number;
8
7
  protected bOffset: number;
9
8
  static readonly wireFormat: OperandType[];
10
- constructor(indirect: number, aOffset: number, size: number, bOffset: number);
9
+ constructor(indirect: number, aOffset: number, bOffset: number);
11
10
  }
12
11
  export declare class SStore extends BaseStorageInstruction {
13
12
  static readonly type: string;
14
13
  static readonly opcode = Opcode.SSTORE;
15
- constructor(indirect: number, srcOffset: number, /*temporary*/ size: number, slotOffset: number);
14
+ constructor(indirect: number, srcOffset: number, slotOffset: number);
16
15
  execute(context: AvmContext): Promise<void>;
17
16
  }
18
17
  export declare class SLoad extends BaseStorageInstruction {
19
18
  static readonly type: string;
20
19
  static readonly opcode = Opcode.SLOAD;
21
- constructor(indirect: number, slotOffset: number, size: number, dstOffset: number);
20
+ constructor(indirect: number, slotOffset: number, dstOffset: number);
22
21
  execute(context: AvmContext): Promise<void>;
23
22
  }
24
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/storage.ts"],"names":[],"mappings":"AAEA,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;IAWrD,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAe,IAAI,EAAE,MAAM;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM;IAZ3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAM9C;gBAGU,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACD,IAAI,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAIlF,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAIpE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBzD"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/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;IAS3C,SAAS,CAAC,QAAQ,EAAE,MAAM;IAAE,SAAS,CAAC,OAAO,EAAE,MAAM;IAAE,SAAS,CAAC,OAAO,EAAE,MAAM;IAP5F,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAK9C;gBAEoB,QAAQ,EAAE,MAAM,EAAY,OAAO,EAAE,MAAM,EAAY,OAAO,EAAE,MAAM;CAG7F;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAezD"}
@@ -1,15 +1,13 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
1
  import { Field, TypeTag } from '../avm_memory_types.js';
3
2
  import { StaticCallAlterationError } from '../errors.js';
4
3
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
4
  import { Addressing } from './addressing_mode.js';
6
5
  import { Instruction } from './instruction.js';
7
6
  class BaseStorageInstruction extends Instruction {
8
- constructor(indirect, aOffset, size, bOffset) {
7
+ constructor(indirect, aOffset, bOffset) {
9
8
  super();
10
9
  this.indirect = indirect;
11
10
  this.aOffset = aOffset;
12
- this.size = size;
13
11
  this.bOffset = bOffset;
14
12
  }
15
13
  }
@@ -19,28 +17,24 @@ BaseStorageInstruction.wireFormat = [
19
17
  OperandType.UINT8,
20
18
  OperandType.UINT32,
21
19
  OperandType.UINT32,
22
- OperandType.UINT32,
23
20
  ];
24
21
  export class SStore extends BaseStorageInstruction {
25
- constructor(indirect, srcOffset, /*temporary*/ size, slotOffset) {
26
- super(indirect, srcOffset, size, slotOffset);
22
+ constructor(indirect, srcOffset, slotOffset) {
23
+ super(indirect, srcOffset, slotOffset);
27
24
  }
28
25
  async execute(context) {
29
26
  if (context.environment.isStaticCall) {
30
27
  throw new StaticCallAlterationError();
31
28
  }
32
- const memoryOperations = { reads: this.size + 1, indirect: this.indirect };
29
+ const memoryOperations = { reads: 2, indirect: this.indirect };
33
30
  const memory = context.machineState.memory.track(this.type);
34
- context.machineState.consumeGas(this.gasCost({ ...memoryOperations, dynMultiplier: this.size }));
31
+ context.machineState.consumeGas(this.gasCost({ ...memoryOperations }));
35
32
  const [srcOffset, slotOffset] = Addressing.fromWire(this.indirect).resolve([this.aOffset, this.bOffset], memory);
36
33
  memory.checkTag(TypeTag.FIELD, slotOffset);
37
- memory.checkTagsRange(TypeTag.FIELD, srcOffset, this.size);
34
+ memory.checkTag(TypeTag.FIELD, srcOffset);
38
35
  const slot = memory.get(slotOffset).toFr();
39
- const data = memory.getSlice(srcOffset, this.size).map(field => field.toFr());
40
- for (const [index, value] of Object.entries(data)) {
41
- const adjustedSlot = slot.add(new Fr(BigInt(index)));
42
- context.persistableState.writeStorage(context.environment.storageAddress, adjustedSlot, value);
43
- }
36
+ const value = memory.get(srcOffset).toFr();
37
+ context.persistableState.writeStorage(context.environment.storageAddress, slot, value);
44
38
  memory.assert(memoryOperations);
45
39
  context.machineState.incrementPc();
46
40
  }
@@ -48,25 +42,22 @@ export class SStore extends BaseStorageInstruction {
48
42
  SStore.type = 'SSTORE';
49
43
  SStore.opcode = Opcode.SSTORE;
50
44
  export class SLoad extends BaseStorageInstruction {
51
- constructor(indirect, slotOffset, size, dstOffset) {
52
- super(indirect, slotOffset, size, dstOffset);
45
+ constructor(indirect, slotOffset, dstOffset) {
46
+ super(indirect, slotOffset, dstOffset);
53
47
  }
54
48
  async execute(context) {
55
- const memoryOperations = { writes: this.size, reads: 1, indirect: this.indirect };
49
+ const memoryOperations = { writes: 1, reads: 1, indirect: this.indirect };
56
50
  const memory = context.machineState.memory.track(this.type);
57
- context.machineState.consumeGas(this.gasCost({ ...memoryOperations, dynMultiplier: this.size }));
51
+ context.machineState.consumeGas(this.gasCost({ ...memoryOperations }));
58
52
  const [slotOffset, dstOffset] = Addressing.fromWire(this.indirect).resolve([this.aOffset, this.bOffset], memory);
59
53
  memory.checkTag(TypeTag.FIELD, slotOffset);
60
- const slot = memory.get(slotOffset);
61
- // Write each read value from storage into memory
62
- for (let i = 0; i < this.size; i++) {
63
- const data = await context.persistableState.readStorage(context.environment.storageAddress, new Fr(slot.toBigInt() + BigInt(i)));
64
- memory.set(dstOffset + i, new Field(data));
65
- }
54
+ const slot = memory.get(slotOffset).toFr();
55
+ const value = await context.persistableState.readStorage(context.environment.storageAddress, slot);
56
+ memory.set(dstOffset, new Field(value));
66
57
  context.machineState.incrementPc();
67
58
  memory.assert(memoryOperations);
68
59
  }
69
60
  }
70
61
  SLoad.type = 'SLOAD';
71
62
  SLoad.opcode = Opcode.SLOAD;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsTUFBZSxzQkFBdUIsU0FBUSxXQUFXO0lBVXZELFlBQ1ksUUFBZ0IsRUFDaEIsT0FBZSxFQUNELElBQVksRUFDMUIsT0FBZTtRQUV6QixLQUFLLEVBQUUsQ0FBQztRQUxFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNELFNBQUksR0FBSixJQUFJLENBQVE7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUczQixDQUFDOztBQWhCRCwwREFBMEQ7QUFDbkMsaUNBQVUsR0FBa0I7SUFDakQsV0FBVyxDQUFDLEtBQUs7SUFDakIsV0FBVyxDQUFDLEtBQUs7SUFDakIsV0FBVyxDQUFDLE1BQU07SUFDbEIsV0FBVyxDQUFDLE1BQU07SUFDbEIsV0FBVyxDQUFDLE1BQU07Q0FDbkIsQ0FBQztBQVlKLE1BQU0sT0FBTyxNQUFPLFNBQVEsc0JBQXNCO0lBSWhELFlBQVksUUFBZ0IsRUFBRSxTQUFpQixFQUFFLGFBQWEsQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDN0YsS0FBSyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUs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
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLHNCQUF1QixTQUFRLFdBQVc7SUFTdkQsWUFBc0IsUUFBZ0IsRUFBWSxPQUFlLEVBQVksT0FBZTtRQUMxRixLQUFLLEVBQUUsQ0FBQztRQURZLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBWSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVksWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUU1RixDQUFDOztBQVZELDBEQUEwRDtBQUNuQyxpQ0FBVSxHQUFrQjtJQUNqRCxXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsTUFBTTtJQUNsQixXQUFXLENBQUMsTUFBTTtDQUNuQixDQUFDO0FBT0osTUFBTSxPQUFPLE1BQU8sU0FBUSxzQkFBc0I7SUFJaEQsWUFBWSxRQUFnQixFQUFFLFNBQWlCLEVBQUUsVUFBa0I7UUFDakUsS0FBSyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkUsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqSCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2RixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOztBQTFCZSxXQUFJLEdBQVcsUUFBUSxDQUFDO0FBQ3hCLGFBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBNEJ6QyxNQUFNLE9BQU8sS0FBTSxTQUFRLHNCQUFzQjtJQUkvQyxZQUFZLFFBQWdCLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtRQUNqRSxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2RSxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUzQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O0FBckJlLFVBQUksR0FBVyxPQUFPLENBQUM7QUFDdkIsWUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/simulator",
3
- "version": "0.51.0",
3
+ "version": "0.51.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -56,14 +56,14 @@
56
56
  ]
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/circuit-types": "0.51.0",
60
- "@aztec/circuits.js": "0.51.0",
61
- "@aztec/foundation": "0.51.0",
62
- "@aztec/noir-protocol-circuits-types": "0.51.0",
63
- "@aztec/protocol-contracts": "0.51.0",
64
- "@aztec/telemetry-client": "0.51.0",
65
- "@aztec/types": "0.51.0",
66
- "@aztec/world-state": "0.51.0",
59
+ "@aztec/circuit-types": "0.51.1",
60
+ "@aztec/circuits.js": "0.51.1",
61
+ "@aztec/foundation": "0.51.1",
62
+ "@aztec/noir-protocol-circuits-types": "0.51.1",
63
+ "@aztec/protocol-contracts": "0.51.1",
64
+ "@aztec/telemetry-client": "0.51.1",
65
+ "@aztec/types": "0.51.1",
66
+ "@aztec/world-state": "0.51.1",
67
67
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
68
68
  "@noir-lang/types": "portal:../../noir/packages/types",
69
69
  "levelup": "^5.1.1",
@@ -54,7 +54,7 @@ export class AvmSimulator {
54
54
  */
55
55
  public async executeBytecode(bytecode: Buffer): Promise<AvmContractCallResult> {
56
56
  const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
57
- assert(isAvmBytecode(decompressedBytecode), "AVM simulator can't execute non-AVM bytecode");
57
+ assert(await isAvmBytecode(decompressedBytecode), "AVM simulator can't execute non-AVM bytecode");
58
58
 
59
59
  this.bytecode = decompressedBytecode;
60
60
  return await this.executeInstructions(decodeFromBytecode(decompressedBytecode));
@@ -1,5 +1,3 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
-
3
1
  import type { AvmContext } from '../avm_context.js';
4
2
  import { Field, TypeTag } from '../avm_memory_types.js';
5
3
  import { StaticCallAlterationError } from '../errors.js';
@@ -14,15 +12,9 @@ abstract class BaseStorageInstruction extends Instruction {
14
12
  OperandType.UINT8,
15
13
  OperandType.UINT32,
16
14
  OperandType.UINT32,
17
- OperandType.UINT32,
18
15
  ];
19
16
 
20
- constructor(
21
- protected indirect: number,
22
- protected aOffset: number,
23
- protected /*temporary*/ size: number,
24
- protected bOffset: number,
25
- ) {
17
+ constructor(protected indirect: number, protected aOffset: number, protected bOffset: number) {
26
18
  super();
27
19
  }
28
20
  }
@@ -31,8 +23,8 @@ export class SStore extends BaseStorageInstruction {
31
23
  static readonly type: string = 'SSTORE';
32
24
  static readonly opcode = Opcode.SSTORE;
33
25
 
34
- constructor(indirect: number, srcOffset: number, /*temporary*/ size: number, slotOffset: number) {
35
- super(indirect, srcOffset, size, slotOffset);
26
+ constructor(indirect: number, srcOffset: number, slotOffset: number) {
27
+ super(indirect, srcOffset, slotOffset);
36
28
  }
37
29
 
38
30
  public async execute(context: AvmContext): Promise<void> {
@@ -40,21 +32,17 @@ export class SStore extends BaseStorageInstruction {
40
32
  throw new StaticCallAlterationError();
41
33
  }
42
34
 
43
- const memoryOperations = { reads: this.size + 1, indirect: this.indirect };
35
+ const memoryOperations = { reads: 2, indirect: this.indirect };
44
36
  const memory = context.machineState.memory.track(this.type);
45
- context.machineState.consumeGas(this.gasCost({ ...memoryOperations, dynMultiplier: this.size }));
37
+ context.machineState.consumeGas(this.gasCost({ ...memoryOperations }));
46
38
 
47
39
  const [srcOffset, slotOffset] = Addressing.fromWire(this.indirect).resolve([this.aOffset, this.bOffset], memory);
48
40
  memory.checkTag(TypeTag.FIELD, slotOffset);
49
- memory.checkTagsRange(TypeTag.FIELD, srcOffset, this.size);
41
+ memory.checkTag(TypeTag.FIELD, srcOffset);
50
42
 
51
43
  const slot = memory.get(slotOffset).toFr();
52
- const data = memory.getSlice(srcOffset, this.size).map(field => field.toFr());
53
-
54
- for (const [index, value] of Object.entries(data)) {
55
- const adjustedSlot = slot.add(new Fr(BigInt(index)));
56
- context.persistableState.writeStorage(context.environment.storageAddress, adjustedSlot, value);
57
- }
44
+ const value = memory.get(srcOffset).toFr();
45
+ context.persistableState.writeStorage(context.environment.storageAddress, slot, value);
58
46
 
59
47
  memory.assert(memoryOperations);
60
48
  context.machineState.incrementPc();
@@ -65,29 +53,21 @@ export class SLoad extends BaseStorageInstruction {
65
53
  static readonly type: string = 'SLOAD';
66
54
  static readonly opcode = Opcode.SLOAD;
67
55
 
68
- constructor(indirect: number, slotOffset: number, size: number, dstOffset: number) {
69
- super(indirect, slotOffset, size, dstOffset);
56
+ constructor(indirect: number, slotOffset: number, dstOffset: number) {
57
+ super(indirect, slotOffset, dstOffset);
70
58
  }
71
59
 
72
60
  public async execute(context: AvmContext): Promise<void> {
73
- const memoryOperations = { writes: this.size, reads: 1, indirect: this.indirect };
61
+ const memoryOperations = { writes: 1, reads: 1, indirect: this.indirect };
74
62
  const memory = context.machineState.memory.track(this.type);
75
- context.machineState.consumeGas(this.gasCost({ ...memoryOperations, dynMultiplier: this.size }));
63
+ context.machineState.consumeGas(this.gasCost({ ...memoryOperations }));
76
64
 
77
65
  const [slotOffset, dstOffset] = Addressing.fromWire(this.indirect).resolve([this.aOffset, this.bOffset], memory);
78
66
  memory.checkTag(TypeTag.FIELD, slotOffset);
79
67
 
80
- const slot = memory.get(slotOffset);
81
-
82
- // Write each read value from storage into memory
83
- for (let i = 0; i < this.size; i++) {
84
- const data: Fr = await context.persistableState.readStorage(
85
- context.environment.storageAddress,
86
- new Fr(slot.toBigInt() + BigInt(i)),
87
- );
88
-
89
- memory.set(dstOffset + i, new Field(data));
90
- }
68
+ const slot = memory.get(slotOffset).toFr();
69
+ const value = await context.persistableState.readStorage(context.environment.storageAddress, slot);
70
+ memory.set(dstOffset, new Field(value));
91
71
 
92
72
  context.machineState.incrementPc();
93
73
  memory.assert(memoryOperations);