@aztec/stdlib 3.0.0-nightly.20251115 → 3.0.0-nightly.20251119
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/avm/avm.d.ts +42 -48
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +26 -24
- package/dest/avm/avm_proving_request.d.ts +21 -21
- package/dest/interfaces/proving-job.d.ts +21 -21
- package/dest/tests/factories.d.ts +4 -4
- package/dest/tests/factories.js +11 -11
- package/dest/tx/public_simulation_output.d.ts +2 -0
- package/dest/tx/public_simulation_output.d.ts.map +1 -1
- package/dest/tx/public_simulation_output.js +8 -1
- package/dest/vks/verification_key.d.ts +9 -0
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/verification_key.js +20 -0
- package/package.json +8 -8
- package/src/avm/avm.ts +28 -35
- package/src/tests/factories.ts +18 -18
- package/src/tx/public_simulation_output.ts +18 -1
- package/src/vks/verification_key.ts +25 -0
package/src/avm/avm.ts
CHANGED
|
@@ -27,7 +27,6 @@ import {
|
|
|
27
27
|
PublicCallRequestWithCalldata,
|
|
28
28
|
TreeSnapshots,
|
|
29
29
|
type Tx,
|
|
30
|
-
TxExecutionPhase,
|
|
31
30
|
} from '../tx/index.js';
|
|
32
31
|
import { WorldStateRevision } from '../world-state/world_state_revision.js';
|
|
33
32
|
import { AvmCircuitPublicInputs } from './avm_circuit_public_inputs.js';
|
|
@@ -667,9 +666,9 @@ export class AvmRevertCheckpointHint {
|
|
|
667
666
|
}
|
|
668
667
|
}
|
|
669
668
|
|
|
670
|
-
export class
|
|
671
|
-
export class
|
|
672
|
-
export class
|
|
669
|
+
export class AvmContractDbCreateCheckpointHint extends AvmCheckpointActionNoStateChangeHint {}
|
|
670
|
+
export class AvmContractDbCommitCheckpointHint extends AvmCheckpointActionNoStateChangeHint {}
|
|
671
|
+
export class AvmContractDbRevertCheckpointHint extends AvmCheckpointActionNoStateChangeHint {}
|
|
673
672
|
|
|
674
673
|
////////////////////////////////////////////////////////////////////////////
|
|
675
674
|
// Hints (other)
|
|
@@ -859,9 +858,9 @@ export class AvmExecutionHints {
|
|
|
859
858
|
public readonly contractClasses: AvmContractClassHint[] = [],
|
|
860
859
|
public readonly bytecodeCommitments: AvmBytecodeCommitmentHint[] = [],
|
|
861
860
|
public readonly debugFunctionNames: AvmDebugFunctionNameHint[] = [],
|
|
862
|
-
public readonly
|
|
863
|
-
public readonly
|
|
864
|
-
public readonly
|
|
861
|
+
public readonly contractDbCreateCheckpointHints: AvmContractDbCreateCheckpointHint[] = [],
|
|
862
|
+
public readonly contractDbCommitCheckpointHints: AvmContractDbCommitCheckpointHint[] = [],
|
|
863
|
+
public readonly contractDbRevertCheckpointHints: AvmContractDbRevertCheckpointHint[] = [],
|
|
865
864
|
// Merkle DB hints.
|
|
866
865
|
public startingTreeRoots: TreeSnapshots = TreeSnapshots.empty(),
|
|
867
866
|
public readonly getSiblingPathHints: AvmGetSiblingPathHint[] = [],
|
|
@@ -896,9 +895,9 @@ export class AvmExecutionHints {
|
|
|
896
895
|
obj.contractClasses?.map((c: any) => AvmContractClassHint.fromPlainObject(c)) || [],
|
|
897
896
|
obj.bytecodeCommitments?.map((b: any) => AvmBytecodeCommitmentHint.fromPlainObject(b)) || [],
|
|
898
897
|
obj.debugFunctionNames?.map((d: any) => AvmDebugFunctionNameHint.fromPlainObject(d)) || [],
|
|
899
|
-
obj.
|
|
900
|
-
obj.
|
|
901
|
-
obj.
|
|
898
|
+
obj.contractDbCreateCheckpointHints?.map((h: any) => AvmContractDbCreateCheckpointHint.fromPlainObject(h)) || [],
|
|
899
|
+
obj.contractDbCommitCheckpointHints?.map((h: any) => AvmContractDbCommitCheckpointHint.fromPlainObject(h)) || [],
|
|
900
|
+
obj.contractDbRevertCheckpointHints?.map((h: any) => AvmContractDbRevertCheckpointHint.fromPlainObject(h)) || [],
|
|
902
901
|
obj.startingTreeRoots ? TreeSnapshots.fromPlainObject(obj.startingTreeRoots) : TreeSnapshots.empty(),
|
|
903
902
|
obj.getSiblingPathHints?.map((h: any) => AvmGetSiblingPathHint.fromPlainObject(h)) || [],
|
|
904
903
|
obj.getPreviousValueIndexHints?.map((h: any) => AvmGetPreviousValueIndexHint.fromPlainObject(h)) || [],
|
|
@@ -935,9 +934,9 @@ export class AvmExecutionHints {
|
|
|
935
934
|
contractClasses: AvmContractClassHint.schema.array(),
|
|
936
935
|
bytecodeCommitments: AvmBytecodeCommitmentHint.schema.array(),
|
|
937
936
|
debugFunctionNames: AvmDebugFunctionNameHint.schema.array(),
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
937
|
+
contractDbCreateCheckpointHints: AvmContractDbCreateCheckpointHint.schema.array(),
|
|
938
|
+
contractDbCommitCheckpointHints: AvmContractDbCommitCheckpointHint.schema.array(),
|
|
939
|
+
contractDbRevertCheckpointHints: AvmContractDbRevertCheckpointHint.schema.array(),
|
|
941
940
|
startingTreeRoots: TreeSnapshots.schema,
|
|
942
941
|
getSiblingPathHints: AvmGetSiblingPathHint.schema.array(),
|
|
943
942
|
getPreviousValueIndexHints: AvmGetPreviousValueIndexHint.schema.array(),
|
|
@@ -960,9 +959,9 @@ export class AvmExecutionHints {
|
|
|
960
959
|
contractClasses,
|
|
961
960
|
bytecodeCommitments,
|
|
962
961
|
debugFunctionNames,
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
962
|
+
contractDbCreateCheckpointHints,
|
|
963
|
+
contractDbCommitCheckpointHints,
|
|
964
|
+
contractDbRevertCheckpointHints,
|
|
966
965
|
startingTreeRoots,
|
|
967
966
|
getSiblingPathHints,
|
|
968
967
|
getPreviousValueIndexHints,
|
|
@@ -984,9 +983,9 @@ export class AvmExecutionHints {
|
|
|
984
983
|
contractClasses,
|
|
985
984
|
bytecodeCommitments,
|
|
986
985
|
debugFunctionNames,
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
986
|
+
contractDbCreateCheckpointHints,
|
|
987
|
+
contractDbCommitCheckpointHints,
|
|
988
|
+
contractDbRevertCheckpointHints,
|
|
990
989
|
startingTreeRoots,
|
|
991
990
|
getSiblingPathHints,
|
|
992
991
|
getPreviousValueIndexHints,
|
|
@@ -1043,14 +1042,6 @@ export class AvmCircuitInputs {
|
|
|
1043
1042
|
}
|
|
1044
1043
|
}
|
|
1045
1044
|
|
|
1046
|
-
export type ProcessedPhase = {
|
|
1047
|
-
phase: TxExecutionPhase;
|
|
1048
|
-
durationMs?: number;
|
|
1049
|
-
returnValues: NestedProcessReturnValues[];
|
|
1050
|
-
reverted: boolean;
|
|
1051
|
-
revertReason?: SimulationError;
|
|
1052
|
-
};
|
|
1053
|
-
|
|
1054
1045
|
export class PublicTxResult {
|
|
1055
1046
|
constructor(
|
|
1056
1047
|
// Simulation result.
|
|
@@ -1058,7 +1049,10 @@ export class PublicTxResult {
|
|
|
1058
1049
|
public revertCode: RevertCode,
|
|
1059
1050
|
public revertReason: SimulationError | undefined, // Revert reason, if any
|
|
1060
1051
|
// These are only guaranteed to be present if the simulator is configured to collect them.
|
|
1061
|
-
|
|
1052
|
+
// NOTE: This list will be populated with one NestedProcessReturnValues per app logic enqueued call.
|
|
1053
|
+
// IMPORTANT: The nesting will only be 1 level deep! You will get one result per enqueued call
|
|
1054
|
+
// but no information about nested calls. This can be added later.
|
|
1055
|
+
public appLogicReturnValues: NestedProcessReturnValues[], // One per enqueued call.
|
|
1062
1056
|
public logs: DebugLog[] | undefined,
|
|
1063
1057
|
// For the proving request.
|
|
1064
1058
|
public hints: AvmExecutionHints | undefined,
|
|
@@ -1075,7 +1069,7 @@ export class PublicTxResult {
|
|
|
1075
1069
|
},
|
|
1076
1070
|
RevertCode.OK,
|
|
1077
1071
|
/*revertReason=*/ undefined,
|
|
1078
|
-
/*
|
|
1072
|
+
/*appLogicReturnValues=*/ [],
|
|
1079
1073
|
/*logs=*/ [],
|
|
1080
1074
|
/*hints=*/ AvmExecutionHints.empty(),
|
|
1081
1075
|
/*publicInputs=*/ AvmCircuitPublicInputs.empty(),
|
|
@@ -1088,20 +1082,19 @@ export class PublicTxResult {
|
|
|
1088
1082
|
gasUsed: schemas.GasUsed,
|
|
1089
1083
|
revertCode: RevertCode.schema,
|
|
1090
1084
|
revertReason: NullishToUndefined(SimulationError.schema),
|
|
1091
|
-
|
|
1092
|
-
processedPhases: NullishToUndefined(z.any().array()),
|
|
1085
|
+
appLogicReturnValues: NestedProcessReturnValues.schema.array(),
|
|
1093
1086
|
logs: NullishToUndefined(DebugLog.schema.array()),
|
|
1094
1087
|
// For the proving request.
|
|
1095
1088
|
publicInputs: AvmCircuitPublicInputs.schema,
|
|
1096
1089
|
hints: NullishToUndefined(AvmExecutionHints.schema),
|
|
1097
1090
|
})
|
|
1098
1091
|
.transform(
|
|
1099
|
-
({ gasUsed, revertCode, revertReason,
|
|
1092
|
+
({ gasUsed, revertCode, revertReason, appLogicReturnValues, logs, hints, publicInputs }) =>
|
|
1100
1093
|
new PublicTxResult(
|
|
1101
1094
|
gasUsed,
|
|
1102
1095
|
revertCode as RevertCode,
|
|
1103
1096
|
revertReason,
|
|
1104
|
-
|
|
1097
|
+
appLogicReturnValues,
|
|
1105
1098
|
logs,
|
|
1106
1099
|
hints,
|
|
1107
1100
|
publicInputs,
|
|
@@ -1114,7 +1107,7 @@ export class PublicTxResult {
|
|
|
1114
1107
|
GasUsed.fromPlainObject(obj.gasUsed),
|
|
1115
1108
|
RevertCode.fromPlainObject(obj.revertCode),
|
|
1116
1109
|
/*revertReason=*/ undefined, // TODO(fcarreiro/mwood): add.
|
|
1117
|
-
/*
|
|
1110
|
+
/*appLogicReturnValues=*/ obj.appLogicReturnValues.map(NestedProcessReturnValues.fromPlainObject),
|
|
1118
1111
|
obj.logs?.map(DebugLog.fromPlainObject),
|
|
1119
1112
|
obj.hints ? AvmExecutionHints.fromPlainObject(obj.hints) : undefined,
|
|
1120
1113
|
AvmCircuitPublicInputs.fromPlainObject(obj.publicInputs),
|
|
@@ -1126,7 +1119,7 @@ export class PublicSimulatorConfig {
|
|
|
1126
1119
|
constructor(
|
|
1127
1120
|
public readonly proverId: Fr,
|
|
1128
1121
|
public readonly skipFeeEnforcement: boolean,
|
|
1129
|
-
public readonly collectCallMetadata: boolean, //
|
|
1122
|
+
public readonly collectCallMetadata: boolean, // appLogicReturnValues.
|
|
1130
1123
|
public readonly collectHints: boolean, // hints.
|
|
1131
1124
|
public readonly collectDebugLogs: boolean, // logs.
|
|
1132
1125
|
public readonly maxDebugLogMemoryReads: number,
|
package/src/tests/factories.ts
CHANGED
|
@@ -57,9 +57,9 @@ import {
|
|
|
57
57
|
AvmCircuitPublicInputs,
|
|
58
58
|
AvmCommitCheckpointHint,
|
|
59
59
|
AvmContractClassHint,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
AvmContractDbCommitCheckpointHint,
|
|
61
|
+
AvmContractDbCreateCheckpointHint,
|
|
62
|
+
AvmContractDbRevertCheckpointHint,
|
|
63
63
|
AvmContractInstanceHint,
|
|
64
64
|
AvmCreateCheckpointHint,
|
|
65
65
|
AvmDebugFunctionNameHint,
|
|
@@ -1426,24 +1426,24 @@ export function makeAvmCheckpointActionRevertCheckpointHint(seed = 0): AvmRevert
|
|
|
1426
1426
|
);
|
|
1427
1427
|
}
|
|
1428
1428
|
|
|
1429
|
-
export function
|
|
1430
|
-
return new
|
|
1429
|
+
export function makeAvmContractDbCheckpointActionCreateCheckpointHint(seed = 0): AvmContractDbCreateCheckpointHint {
|
|
1430
|
+
return new AvmContractDbCreateCheckpointHint(
|
|
1431
1431
|
/*actionCounter=*/ seed,
|
|
1432
1432
|
/*oldCheckpointId=*/ seed + 1,
|
|
1433
1433
|
/*newCheckpointId=*/ seed + 2,
|
|
1434
1434
|
);
|
|
1435
1435
|
}
|
|
1436
1436
|
|
|
1437
|
-
export function
|
|
1438
|
-
return new
|
|
1437
|
+
export function makeAvmContractDbCheckpointActionCommitCheckpointHint(seed = 0): AvmContractDbCommitCheckpointHint {
|
|
1438
|
+
return new AvmContractDbCommitCheckpointHint(
|
|
1439
1439
|
/*actionCounter=*/ seed,
|
|
1440
1440
|
/*oldCheckpointId=*/ seed + 1,
|
|
1441
1441
|
/*newCheckpointId=*/ seed + 2,
|
|
1442
1442
|
);
|
|
1443
1443
|
}
|
|
1444
1444
|
|
|
1445
|
-
export function
|
|
1446
|
-
return new
|
|
1445
|
+
export function makeAvmContractDbCheckpointActionRevertCheckpointHint(seed = 0): AvmContractDbRevertCheckpointHint {
|
|
1446
|
+
return new AvmContractDbRevertCheckpointHint(
|
|
1447
1447
|
/*actionCounter=*/ seed,
|
|
1448
1448
|
/*oldCheckpointId=*/ seed + 1,
|
|
1449
1449
|
/*newCheckpointId=*/ seed + 2,
|
|
@@ -1565,19 +1565,19 @@ export async function makeAvmExecutionHints(
|
|
|
1565
1565
|
contractClasses: makeArray(baseLength + 5, makeAvmContractClassHint, seed + 0x4900),
|
|
1566
1566
|
bytecodeCommitments: await makeArrayAsync(baseLength + 5, makeAvmBytecodeCommitmentHint, seed + 0x4900),
|
|
1567
1567
|
debugFunctionNames: makeArray(baseLength + 5, makeAvmDebugFunctionNameHint, seed + 0x4a00),
|
|
1568
|
-
|
|
1568
|
+
contractDbCreateCheckpointHints: makeArray(
|
|
1569
1569
|
baseLength + 5,
|
|
1570
|
-
|
|
1570
|
+
makeAvmContractDbCheckpointActionCreateCheckpointHint,
|
|
1571
1571
|
seed + 0x5900,
|
|
1572
1572
|
),
|
|
1573
|
-
|
|
1573
|
+
contractDbCommitCheckpointHints: makeArray(
|
|
1574
1574
|
baseLength + 5,
|
|
1575
|
-
|
|
1575
|
+
makeAvmContractDbCheckpointActionCommitCheckpointHint,
|
|
1576
1576
|
seed + 0x5b00,
|
|
1577
1577
|
),
|
|
1578
|
-
|
|
1578
|
+
contractDbRevertCheckpointHints: makeArray(
|
|
1579
1579
|
baseLength + 5,
|
|
1580
|
-
|
|
1580
|
+
makeAvmContractDbCheckpointActionRevertCheckpointHint,
|
|
1581
1581
|
seed + 0x5d00,
|
|
1582
1582
|
),
|
|
1583
1583
|
startingTreeRoots: makeTreeSnapshots(seed + 0x4900),
|
|
@@ -1615,9 +1615,9 @@ export async function makeAvmExecutionHints(
|
|
|
1615
1615
|
fields.contractClasses,
|
|
1616
1616
|
fields.bytecodeCommitments,
|
|
1617
1617
|
fields.debugFunctionNames,
|
|
1618
|
-
fields.
|
|
1619
|
-
fields.
|
|
1620
|
-
fields.
|
|
1618
|
+
fields.contractDbCreateCheckpointHints,
|
|
1619
|
+
fields.contractDbCommitCheckpointHints,
|
|
1620
|
+
fields.contractDbRevertCheckpointHints,
|
|
1621
1621
|
fields.startingTreeRoots,
|
|
1622
1622
|
fields.getSiblingPathHints,
|
|
1623
1623
|
fields.getPreviousValueIndexHints,
|
|
@@ -7,6 +7,7 @@ import { z } from 'zod';
|
|
|
7
7
|
import { SimulationError } from '../errors/simulation_error.js';
|
|
8
8
|
import { Gas } from '../gas/gas.js';
|
|
9
9
|
import type { GasUsed } from '../gas/gas_used.js';
|
|
10
|
+
import { NullishToUndefined } from '../schemas/schemas.js';
|
|
10
11
|
import { TxEffect } from '../tx/tx_effect.js';
|
|
11
12
|
import { GlobalVariables } from './global_variables.js';
|
|
12
13
|
|
|
@@ -23,15 +24,31 @@ export class NestedProcessReturnValues {
|
|
|
23
24
|
this.nested = nested ?? [];
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
equals(other: NestedProcessReturnValues): boolean {
|
|
28
|
+
return (
|
|
29
|
+
this.values?.length === other.values?.length &&
|
|
30
|
+
this.nested.length === other.nested.length &&
|
|
31
|
+
(this.values === undefined || this.values.every((v, i) => v.equals(other.values![i]))) &&
|
|
32
|
+
this.nested.every((n, i) => n.equals(other.nested[i]))
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
static get schema(): ZodFor<NestedProcessReturnValues> {
|
|
27
37
|
return z
|
|
28
38
|
.object({
|
|
29
|
-
values: z.array(schemas.Fr)
|
|
39
|
+
values: NullishToUndefined(z.array(schemas.Fr)),
|
|
30
40
|
nested: z.array(z.lazy(() => NestedProcessReturnValues.schema)),
|
|
31
41
|
})
|
|
32
42
|
.transform(({ values, nested }) => new NestedProcessReturnValues(values, nested));
|
|
33
43
|
}
|
|
34
44
|
|
|
45
|
+
static fromPlainObject(obj: any): NestedProcessReturnValues {
|
|
46
|
+
return new NestedProcessReturnValues(
|
|
47
|
+
obj.values?.map(Fr.fromPlainObject),
|
|
48
|
+
obj.nested?.map(NestedProcessReturnValues.fromPlainObject),
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
35
52
|
static empty() {
|
|
36
53
|
return new NestedProcessReturnValues([]);
|
|
37
54
|
}
|
|
@@ -134,6 +134,13 @@ export class VerificationKeyAsFields {
|
|
|
134
134
|
return new VerificationKeyAsFields(reader.readVector(Fr), reader.readObject(Fr));
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
static fromFrBuffer(vkBytes: Buffer): Promise<VerificationKeyAsFields> {
|
|
138
|
+
const numFields = vkBytes.length / Fr.SIZE_IN_BYTES;
|
|
139
|
+
const reader = BufferReader.asReader(vkBytes);
|
|
140
|
+
const fields = reader.readArray(numFields, Fr);
|
|
141
|
+
return VerificationKeyAsFields.fromKey(fields);
|
|
142
|
+
}
|
|
143
|
+
|
|
137
144
|
/**
|
|
138
145
|
* Builds a fake verification key that should be accepted by circuits.
|
|
139
146
|
* @returns A fake verification key.
|
|
@@ -250,6 +257,20 @@ export class VerificationKey {
|
|
|
250
257
|
times(16, i => i),
|
|
251
258
|
);
|
|
252
259
|
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Builds a fake MegaHonk verification key buffer for testing.
|
|
263
|
+
* Uses a real VK from a compiled contract to ensure proper format.
|
|
264
|
+
*
|
|
265
|
+
* @returns A valid MegaHonk VK buffer (4064 bytes)
|
|
266
|
+
*/
|
|
267
|
+
static makeFakeMegaHonk(): Buffer {
|
|
268
|
+
// This is a real MegaFlavor VK from token_contract, base64-encoded
|
|
269
|
+
// Size: 4064 bytes (127 fields × 32 bytes)
|
|
270
|
+
const vk =
|
|
271
|
+
'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';
|
|
272
|
+
return Buffer.from(vk, 'base64');
|
|
273
|
+
}
|
|
253
274
|
}
|
|
254
275
|
|
|
255
276
|
export class VerificationKeyData {
|
|
@@ -305,6 +326,10 @@ export class VerificationKeyData {
|
|
|
305
326
|
return new VerificationKeyData(verificationKeyAsFields, bytes);
|
|
306
327
|
}
|
|
307
328
|
|
|
329
|
+
static async fromFrBuffer(vkBytes: Buffer): Promise<VerificationKeyData> {
|
|
330
|
+
return new VerificationKeyData(await VerificationKeyAsFields.fromFrBuffer(vkBytes), vkBytes);
|
|
331
|
+
}
|
|
332
|
+
|
|
308
333
|
static fromString(str: string): VerificationKeyData {
|
|
309
334
|
return VerificationKeyData.fromBuffer(hexToBuffer(str));
|
|
310
335
|
}
|