@aztec/stdlib 3.0.0-nightly.20251208 → 3.0.0-nightly.20251209
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 +334 -306
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +53 -7
- package/dest/block/in_block.d.ts +23 -7
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/in_block.js +14 -5
- package/dest/interfaces/aztec-node.d.ts +1 -1
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +2 -2
- package/dest/logs/public_log.d.ts +2 -1
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +3 -0
- package/dest/messaging/l2_to_l1_message.d.ts +2 -1
- package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_message.js +3 -0
- package/dest/tests/mocks.d.ts +1 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +4 -2
- package/dest/tx/in_tx.d.ts +26 -0
- package/dest/tx/in_tx.d.ts.map +1 -0
- package/dest/tx/in_tx.js +14 -0
- package/dest/tx/index.d.ts +2 -1
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +1 -0
- package/dest/tx/indexed_tx_effect.d.ts +5 -4
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +3 -3
- package/dest/tx/processed_tx.d.ts +3 -2
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +4 -6
- package/package.json +8 -8
- package/src/avm/avm.ts +88 -5
- package/src/block/in_block.ts +14 -5
- package/src/interfaces/aztec-node.ts +2 -2
- package/src/logs/public_log.ts +7 -0
- package/src/messaging/l2_to_l1_message.ts +4 -0
- package/src/tests/mocks.ts +13 -0
- package/src/tx/in_tx.ts +24 -0
- package/src/tx/index.ts +1 -0
- package/src/tx/indexed_tx_effect.ts +3 -3
- package/src/tx/processed_tx.ts +10 -13
package/dest/tests/mocks.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
5
5
|
import { padArrayEnd, times } from '@aztec/foundation/collection';
|
|
6
6
|
import { Secp256k1Signer, randomBytes } from '@aztec/foundation/crypto';
|
|
7
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
8
|
+
import { PublicTxEffect } from '../avm/avm.js';
|
|
8
9
|
import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
|
|
9
10
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
10
11
|
import { RevertCode } from '../avm/revert_code.js';
|
|
@@ -183,10 +184,11 @@ gasUsed = Gas.from({
|
|
|
183
184
|
billedGas: Gas.empty()
|
|
184
185
|
};
|
|
185
186
|
await tx.recomputeHash();
|
|
186
|
-
|
|
187
|
+
const publicTxEffect = new PublicTxEffect(avmOutput.transactionFee, avmOutput.accumulatedData.noteHashes.filter((h)=>!h.isZero()), avmOutput.accumulatedData.nullifiers.filter((h)=>!h.isZero()), avmOutput.accumulatedData.l2ToL1Msgs.filter((h)=>!h.isEmpty()), avmOutput.accumulatedData.publicLogs.toLogs(), avmOutput.accumulatedData.publicDataWrites.filter((h)=>!h.isEmpty()));
|
|
188
|
+
return makeProcessedTxFromTxWithPublicCalls(tx, globalVariables, {
|
|
187
189
|
type: ProvingRequestType.PUBLIC_VM,
|
|
188
190
|
inputs: avmCircuitInputs
|
|
189
|
-
}, gasUsed, RevertCode.OK, undefined /* revertReason */ );
|
|
191
|
+
}, publicTxEffect, gasUsed, RevertCode.OK, undefined /* revertReason */ );
|
|
190
192
|
}
|
|
191
193
|
}
|
|
192
194
|
const emptyPrivateCallExecutionResult = ()=>new PrivateCallExecutionResult(Buffer.from(''), Buffer.from(''), new Map(), PrivateCircuitPublicInputs.empty(), new Map(), [], new Map(), [], [], [], [], []);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type InBlock } from '../block/in_block.js';
|
|
3
|
+
import { TxHash } from './tx_hash.js';
|
|
4
|
+
export type InTx = InBlock & {
|
|
5
|
+
txHash: TxHash;
|
|
6
|
+
};
|
|
7
|
+
export declare function randomInTx(): InTx;
|
|
8
|
+
export declare function inTxSchema(): z.ZodIntersection<z.ZodObject<{
|
|
9
|
+
l2BlockNumber: z.ZodEffects<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodNumber>, import("../../../foundation/dest/branded-types/block_number.js").BlockNumber, string | number | bigint>;
|
|
10
|
+
l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, import("../block/block_hash.js").L2BlockHash, string>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
l2BlockNumber: number & {
|
|
13
|
+
_branding: "BlockNumber";
|
|
14
|
+
};
|
|
15
|
+
l2BlockHash: import("../block/block_hash.js").L2BlockHash;
|
|
16
|
+
}, {
|
|
17
|
+
l2BlockNumber: string | number | bigint;
|
|
18
|
+
l2BlockHash: string;
|
|
19
|
+
}>, z.ZodObject<{
|
|
20
|
+
txHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, TxHash, string>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
txHash: TxHash;
|
|
23
|
+
}, {
|
|
24
|
+
txHash: string;
|
|
25
|
+
}>>;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5fdHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eC9pbl90eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBZ0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE1BQU0sTUFBTSxJQUFJLEdBQUcsT0FBTyxHQUFHO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQUVGLHdCQUFnQixVQUFVLElBQUksSUFBSSxDQUtqQztBQUVELHdCQUFnQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztJQU96QiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in_tx.d.ts","sourceRoot":"","sources":["../../src/tx/in_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED,wBAAgB,UAAU;;;;;;;;;;;;;;;;;IAOzB"}
|
package/dest/tx/in_tx.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { inBlockSchema, randomInBlock } from '../block/in_block.js';
|
|
3
|
+
import { TxHash } from './tx_hash.js';
|
|
4
|
+
export function randomInTx() {
|
|
5
|
+
return {
|
|
6
|
+
...randomInBlock(),
|
|
7
|
+
txHash: TxHash.random()
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function inTxSchema() {
|
|
11
|
+
return z.intersection(inBlockSchema(), z.object({
|
|
12
|
+
txHash: TxHash.schema
|
|
13
|
+
}));
|
|
14
|
+
}
|
package/dest/tx/index.d.ts
CHANGED
|
@@ -32,4 +32,5 @@ export * from './offchain_effect.js';
|
|
|
32
32
|
export * from './profiling.js';
|
|
33
33
|
export * from './protocol_contracts.js';
|
|
34
34
|
export * from './execution_payload.js';
|
|
35
|
-
|
|
35
|
+
export * from './in_tx.js';
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsWUFBWSxDQUFDIn0=
|
package/dest/tx/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC"}
|
package/dest/tx/index.js
CHANGED
|
@@ -6,25 +6,26 @@ export type IndexedTxEffect = DataInBlock<TxEffect> & {
|
|
|
6
6
|
txIndexInBlock: number;
|
|
7
7
|
};
|
|
8
8
|
export declare function indexedTxSchema(): import("zod").ZodObject<{
|
|
9
|
-
data: import("@aztec/foundation/schemas").ZodFor<TxEffect>;
|
|
10
9
|
l2BlockNumber: import("zod").ZodEffects<import("zod").ZodPipeline<import("zod").ZodUnion<[import("zod").ZodNumber, import("zod").ZodBigInt, import("zod").ZodString]>, import("zod").ZodNumber>, BlockNumber, string | number | bigint>;
|
|
11
10
|
l2BlockHash: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
|
|
11
|
+
} & {
|
|
12
|
+
data: import("@aztec/foundation/schemas").ZodFor<TxEffect>;
|
|
12
13
|
} & {
|
|
13
14
|
txIndexInBlock: import("zod").ZodPipeline<import("zod").ZodUnion<[import("zod").ZodBigInt, import("zod").ZodNumber, import("zod").ZodString]>, import("zod").ZodNumber>;
|
|
14
15
|
}, "strip", import("zod").ZodTypeAny, {
|
|
15
|
-
data: TxEffect;
|
|
16
16
|
l2BlockNumber: number & {
|
|
17
17
|
_branding: "BlockNumber";
|
|
18
18
|
};
|
|
19
19
|
l2BlockHash: L2BlockHash;
|
|
20
|
+
data: TxEffect;
|
|
20
21
|
txIndexInBlock: number;
|
|
21
22
|
}, {
|
|
22
|
-
data?: any;
|
|
23
23
|
l2BlockNumber: string | number | bigint;
|
|
24
24
|
l2BlockHash: string;
|
|
25
|
+
data?: any;
|
|
25
26
|
txIndexInBlock: string | number | bigint;
|
|
26
27
|
}>;
|
|
27
28
|
export declare function randomIndexedTxEffect(): Promise<IndexedTxEffect>;
|
|
28
29
|
export declare function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer;
|
|
29
30
|
export declare function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF90eF9lZmZlY3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eC9pbmRleGVkX3R4X2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBMkMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FBQztBQUVqRix3QkFBZ0IsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUU5QjtBQUVELHdCQUFzQixxQkFBcUIsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLENBS3RFO0FBRUQsd0JBQWdCLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxlQUFlLEdBQUcsTUFBTSxDQUV4RTtBQUVELHdCQUFnQiwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FjMUUifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexed_tx_effect.d.ts","sourceRoot":"","sources":["../../src/tx/indexed_tx_effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"indexed_tx_effect.d.ts","sourceRoot":"","sources":["../../src/tx/indexed_tx_effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAgB,eAAe;;;;;;;;;;;;;;;;;;;GAE9B;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAKtE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAExE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAc1E"}
|
|
@@ -2,16 +2,16 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
3
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
4
|
import { L2BlockHash } from '../block/block_hash.js';
|
|
5
|
-
import {
|
|
5
|
+
import { dataInBlockSchemaFor, randomDataInBlock } from '../block/in_block.js';
|
|
6
6
|
import { TxEffect } from './tx_effect.js';
|
|
7
7
|
export function indexedTxSchema() {
|
|
8
|
-
return
|
|
8
|
+
return dataInBlockSchemaFor(TxEffect.schema).extend({
|
|
9
9
|
txIndexInBlock: schemas.Integer
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
export async function randomIndexedTxEffect() {
|
|
13
13
|
return {
|
|
14
|
-
...
|
|
14
|
+
...randomDataInBlock(await TxEffect.random({
|
|
15
15
|
numNullifiers: 1 + Math.floor(Math.random() * 64)
|
|
16
16
|
})),
|
|
17
17
|
txIndexInBlock: Math.floor(Math.random() * 1000)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { PublicTxEffect } from '../avm/avm.js';
|
|
2
3
|
import type { AvmProvingRequest } from '../avm/avm_proving_request.js';
|
|
3
4
|
import type { PublicDataWrite } from '../avm/public_data_write.js';
|
|
4
5
|
import { RevertCode } from '../avm/revert_code.js';
|
|
@@ -68,5 +69,5 @@ export type FailedTx = {
|
|
|
68
69
|
error: Error;
|
|
69
70
|
};
|
|
70
71
|
export declare function makeProcessedTxFromPrivateOnlyTx(tx: Tx, transactionFee: Fr, feePaymentPublicDataWrite: PublicDataWrite, globalVariables: GlobalVariables): ProcessedTx;
|
|
71
|
-
export declare function makeProcessedTxFromTxWithPublicCalls(tx: Tx, avmProvingRequest: AvmProvingRequest, gasUsed: GasUsed, revertCode: RevertCode, revertReason: SimulationError | undefined): ProcessedTx;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
export declare function makeProcessedTxFromTxWithPublicCalls(tx: Tx, globalVariables: GlobalVariables, avmProvingRequest: AvmProvingRequest | undefined, publicTxEffect: PublicTxEffect, gasUsed: GasUsed, revertCode: RevertCode, revertReason: SimulationError | undefined): ProcessedTx;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2VkX3R4LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHJvY2Vzc2VkX3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sS0FBSyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkgsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0Msb0JBQVksZ0JBQWdCO0lBQzFCLEtBQUssSUFBQTtJQUNMLFNBQVMsSUFBQTtJQUNULFFBQVEsSUFBQTtDQUNUO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxNQUFNLFdBQVcsR0FBRztJQUN4Qjs7T0FFRztJQUNILElBQUksRUFBRSxNQUFNLENBQUM7SUFDYjs7T0FFRztJQUNILElBQUksRUFBRSxvQ0FBb0MsQ0FBQztJQUMzQzs7T0FFRztJQUNILFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdkI7O09BRUc7SUFDSCxpQkFBaUIsRUFBRSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDakQ7O09BRUc7SUFDSCxlQUFlLEVBQUUsZUFBZSxDQUFDO0lBQ2pDOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUluQixPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCOztPQUVHO0lBQ0gsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2Qjs7T0FFRztJQUNILFlBQVksRUFBRSxlQUFlLEdBQUcsU0FBUyxDQUFDO0NBQzNDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sTUFBTSxRQUFRLEdBQUc7SUFDckI7O09BRUc7SUFDSCxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ1A7O09BRUc7SUFDSCxLQUFLLEVBQUUsS0FBSyxDQUFDO0NBQ2QsQ0FBQztBQUVGLHdCQUFnQixnQ0FBZ0MsQ0FDOUMsRUFBRSxFQUFFLEVBQUUsRUFDTixjQUFjLEVBQUUsRUFBRSxFQUNsQix5QkFBeUIsRUFBRSxlQUFlLEVBQzFDLGVBQWUsRUFBRSxlQUFlLEdBQy9CLFdBQVcsQ0E0Q2I7QUFFRCx3QkFBZ0Isb0NBQW9DLENBQ2xELEVBQUUsRUFBRSxFQUFFLEVBQ04sZUFBZSxFQUFFLGVBQWUsRUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxFQUNoRCxjQUFjLEVBQUUsY0FBYyxFQUM5QixPQUFPLEVBQUUsT0FBTyxFQUNoQixVQUFVLEVBQUUsVUFBVSxFQUN0QixZQUFZLEVBQUUsZUFBZSxHQUFHLFNBQVMsR0FDeEMsV0FBVyxDQWtEYiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processed_tx.d.ts","sourceRoot":"","sources":["../../src/tx/processed_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,oBAAY,gBAAgB;IAC1B,KAAK,IAAA;IACL,SAAS,IAAA;IACT,QAAQ,IAAA;CACT;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,oCAAoC,CAAC;IAC3C;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IACjC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAInB,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,EAAE,EAAE,EAAE,CAAC;IACP;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,EAAE,EAClB,yBAAyB,EAAE,eAAe,EAC1C,eAAe,EAAE,eAAe,GAC/B,WAAW,CA4Cb;AAED,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,EAAE,EACN,iBAAiB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"processed_tx.d.ts","sourceRoot":"","sources":["../../src/tx/processed_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,oBAAY,gBAAgB;IAC1B,KAAK,IAAA;IACL,SAAS,IAAA;IACT,QAAQ,IAAA;CACT;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,oCAAoC,CAAC;IAC3C;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IACjC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAInB,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,EAAE,EAAE,EAAE,CAAC;IACP;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,EAAE,EAClB,yBAAyB,EAAE,eAAe,EAC1C,eAAe,EAAE,eAAe,GAC/B,WAAW,CA4Cb;AAED,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,EAAE,EACN,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,EAChD,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,eAAe,GAAG,SAAS,GACxC,WAAW,CAkDb"}
|
package/dest/tx/processed_tx.js
CHANGED
|
@@ -39,22 +39,20 @@ export function makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentP
|
|
|
39
39
|
revertReason: undefined
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
-
export function makeProcessedTxFromTxWithPublicCalls(tx, avmProvingRequest, gasUsed, revertCode, revertReason) {
|
|
43
|
-
const avmPublicInputs = avmProvingRequest.inputs.publicInputs;
|
|
44
|
-
const globalVariables = avmPublicInputs.globalVariables;
|
|
45
|
-
const publicDataWrites = avmPublicInputs.accumulatedData.publicDataWrites.filter((w)=>!w.isEmpty());
|
|
42
|
+
export function makeProcessedTxFromTxWithPublicCalls(tx, globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason) {
|
|
46
43
|
const privateLogs = [
|
|
47
44
|
...tx.data.forPublic.nonRevertibleAccumulatedData.privateLogs,
|
|
48
45
|
...revertCode.isOK() ? tx.data.forPublic.revertibleAccumulatedData.privateLogs : []
|
|
49
46
|
].filter((l)=>!l.isEmpty());
|
|
50
47
|
const contractClassLogs = revertCode.isOK() ? tx.getContractClassLogs() : tx.getSplitContractClassLogs(false);
|
|
51
|
-
const txEffect = new TxEffect(revertCode, tx.getTxHash(),
|
|
48
|
+
const txEffect = new TxEffect(revertCode, tx.getTxHash(), publicTxEffect.transactionFee, publicTxEffect.noteHashes, publicTxEffect.nullifiers, publicTxEffect.l2ToL1Msgs // convert messages to hashes.
|
|
49
|
+
.filter((msg)=>!msg.contractAddress.isZero()).map((msg)=>computeL2ToL1MessageHash({
|
|
52
50
|
l2Sender: msg.contractAddress,
|
|
53
51
|
l1Recipient: msg.message.recipient,
|
|
54
52
|
content: msg.message.content,
|
|
55
53
|
rollupVersion: globalVariables.version,
|
|
56
54
|
chainId: globalVariables.chainId
|
|
57
|
-
})), publicDataWrites, privateLogs,
|
|
55
|
+
})), publicTxEffect.publicDataWrites, privateLogs, publicTxEffect.publicLogs, contractClassLogs);
|
|
58
56
|
// Some callers expect a revert reason if the tx reverted.
|
|
59
57
|
const finalRevertReason = revertReason === undefined && !revertCode.isOK() ? new SimulationError('TX reverted', /*functionErrorStack=*/ [], /*revertData=*/ []) : revertReason;
|
|
60
58
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251209",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -72,13 +72,13 @@
|
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
74
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
75
|
-
"@aztec/bb.js": "3.0.0-nightly.
|
|
76
|
-
"@aztec/blob-lib": "3.0.0-nightly.
|
|
77
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
78
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
79
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
80
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
81
|
-
"@aztec/noir-noirc_abi": "3.0.0-nightly.
|
|
75
|
+
"@aztec/bb.js": "3.0.0-nightly.20251209",
|
|
76
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251209",
|
|
77
|
+
"@aztec/constants": "3.0.0-nightly.20251209",
|
|
78
|
+
"@aztec/ethereum": "3.0.0-nightly.20251209",
|
|
79
|
+
"@aztec/foundation": "3.0.0-nightly.20251209",
|
|
80
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251209",
|
|
81
|
+
"@aztec/noir-noirc_abi": "3.0.0-nightly.20251209",
|
|
82
82
|
"@google-cloud/storage": "^7.15.0",
|
|
83
83
|
"axios": "^1.12.0",
|
|
84
84
|
"json-stringify-deterministic": "1.0.12",
|
package/src/avm/avm.ts
CHANGED
|
@@ -15,6 +15,7 @@ import { GasSettings } from '../gas/gas_settings.js';
|
|
|
15
15
|
import { GasUsed } from '../gas/gas_used.js';
|
|
16
16
|
import { PublicKeys } from '../keys/public_keys.js';
|
|
17
17
|
import { DebugLog } from '../logs/debug_log.js';
|
|
18
|
+
import { PublicLog } from '../logs/public_log.js';
|
|
18
19
|
import { ScopedL2ToL1Message } from '../messaging/l2_to_l1_message.js';
|
|
19
20
|
import { NullishToUndefined, type ZodFor, schemas } from '../schemas/schemas.js';
|
|
20
21
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
@@ -33,6 +34,7 @@ import { TxExecutionPhase } from '../tx/processed_tx.js';
|
|
|
33
34
|
import { WorldStateRevision } from '../world-state/world_state_revision.js';
|
|
34
35
|
import { AvmCircuitPublicInputs } from './avm_circuit_public_inputs.js';
|
|
35
36
|
import { serializeWithMessagePack } from './message_pack.js';
|
|
37
|
+
import { PublicDataWrite } from './public_data_write.js';
|
|
36
38
|
import { RevertCode } from './revert_code.js';
|
|
37
39
|
|
|
38
40
|
////////////////////////////////////////////////////////////////////////////
|
|
@@ -1174,11 +1176,78 @@ export class CallStackMetadata {
|
|
|
1174
1176
|
}
|
|
1175
1177
|
}
|
|
1176
1178
|
|
|
1179
|
+
export class PublicTxEffect {
|
|
1180
|
+
constructor(
|
|
1181
|
+
public transactionFee: Fr,
|
|
1182
|
+
public noteHashes: Fr[],
|
|
1183
|
+
public nullifiers: Fr[],
|
|
1184
|
+
public l2ToL1Msgs: ScopedL2ToL1Message[],
|
|
1185
|
+
public publicLogs: PublicLog[],
|
|
1186
|
+
public publicDataWrites: PublicDataWrite[],
|
|
1187
|
+
) {}
|
|
1188
|
+
|
|
1189
|
+
static empty() {
|
|
1190
|
+
return new PublicTxEffect(Fr.ZERO, [], [], [], [], []);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
static get schema(): ZodFor<PublicTxEffect> {
|
|
1194
|
+
return z
|
|
1195
|
+
.object({
|
|
1196
|
+
transactionFee: Fr.schema,
|
|
1197
|
+
noteHashes: Fr.schema.array(),
|
|
1198
|
+
nullifiers: Fr.schema.array(),
|
|
1199
|
+
l2ToL1Msgs: ScopedL2ToL1Message.schema.array(),
|
|
1200
|
+
publicLogs: PublicLog.schema.array(),
|
|
1201
|
+
publicDataWrites: PublicDataWrite.schema.array(),
|
|
1202
|
+
})
|
|
1203
|
+
.transform(PublicTxEffect.from);
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
static from(obj: any): PublicTxEffect {
|
|
1207
|
+
return new PublicTxEffect(
|
|
1208
|
+
obj.transactionFee,
|
|
1209
|
+
obj.noteHashes,
|
|
1210
|
+
obj.nullifiers,
|
|
1211
|
+
obj.l2ToL1Msgs,
|
|
1212
|
+
obj.publicLogs,
|
|
1213
|
+
obj.publicDataWrites,
|
|
1214
|
+
);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
static fromPlainObject(obj: any): PublicTxEffect {
|
|
1218
|
+
return new PublicTxEffect(
|
|
1219
|
+
Fr.fromPlainObject(obj.transactionFee),
|
|
1220
|
+
obj.noteHashes.map((h: any) => Fr.fromPlainObject(h)),
|
|
1221
|
+
obj.nullifiers.map((n: any) => Fr.fromPlainObject(n)),
|
|
1222
|
+
obj.l2ToL1Msgs.map((m: any) => ScopedL2ToL1Message.fromPlainObject(m)),
|
|
1223
|
+
obj.publicLogs.map((l: any) => PublicLog.fromPlainObject(l)),
|
|
1224
|
+
obj.publicDataWrites.map((w: any) => PublicDataWrite.fromPlainObject(w)),
|
|
1225
|
+
);
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
equals(other: PublicTxEffect): boolean {
|
|
1229
|
+
return (
|
|
1230
|
+
this.transactionFee.equals(other.transactionFee) &&
|
|
1231
|
+
this.noteHashes.length === other.noteHashes.length &&
|
|
1232
|
+
this.noteHashes.every((h, i) => h.equals(other.noteHashes[i])) &&
|
|
1233
|
+
this.nullifiers.length === other.nullifiers.length &&
|
|
1234
|
+
this.nullifiers.every((h, i) => h.equals(other.nullifiers[i])) &&
|
|
1235
|
+
this.l2ToL1Msgs.length === other.l2ToL1Msgs.length &&
|
|
1236
|
+
this.l2ToL1Msgs.every((m, i) => m.equals(other.l2ToL1Msgs[i])) &&
|
|
1237
|
+
this.publicLogs.length === other.publicLogs.length &&
|
|
1238
|
+
this.publicLogs.every((l, i) => l.equals(other.publicLogs[i])) &&
|
|
1239
|
+
this.publicDataWrites.length === other.publicDataWrites.length &&
|
|
1240
|
+
this.publicDataWrites.every((w, i) => w.equals(other.publicDataWrites[i]))
|
|
1241
|
+
);
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1177
1245
|
export class PublicTxResult {
|
|
1178
1246
|
constructor(
|
|
1179
1247
|
// Simulation result.
|
|
1180
1248
|
public gasUsed: GasUsed,
|
|
1181
1249
|
public revertCode: RevertCode,
|
|
1250
|
+
public publicTxEffect: PublicTxEffect,
|
|
1182
1251
|
// These are only guaranteed to be present if the simulator is configured to collect them.
|
|
1183
1252
|
// TODO(fcarreiro): Remove NestedProcessReturnValues[] once we migrate to the C++ simulator.
|
|
1184
1253
|
public callStackMetadata:
|
|
@@ -1187,7 +1256,7 @@ export class PublicTxResult {
|
|
|
1187
1256
|
public logs: DebugLog[] | undefined,
|
|
1188
1257
|
// For the proving request.
|
|
1189
1258
|
public hints: AvmExecutionHints | undefined,
|
|
1190
|
-
public publicInputs: AvmCircuitPublicInputs,
|
|
1259
|
+
public publicInputs: AvmCircuitPublicInputs | undefined,
|
|
1191
1260
|
) {}
|
|
1192
1261
|
|
|
1193
1262
|
static empty() {
|
|
@@ -1199,6 +1268,7 @@ export class PublicTxResult {
|
|
|
1199
1268
|
billedGas: Gas.empty(),
|
|
1200
1269
|
},
|
|
1201
1270
|
RevertCode.OK,
|
|
1271
|
+
PublicTxEffect.empty(),
|
|
1202
1272
|
/*callStackMetadata=*/ [] as CallStackMetadata[],
|
|
1203
1273
|
/*logs=*/ [],
|
|
1204
1274
|
/*hints=*/ AvmExecutionHints.empty(),
|
|
@@ -1212,15 +1282,24 @@ export class PublicTxResult {
|
|
|
1212
1282
|
gasUsed: schemas.GasUsed,
|
|
1213
1283
|
revertCode: RevertCode.schema,
|
|
1214
1284
|
revertReason: NullishToUndefined(SimulationError.schema),
|
|
1285
|
+
publicTxEffect: PublicTxEffect.schema,
|
|
1215
1286
|
callStackMetadata: z.union([CallStackMetadata.schema.array(), NestedProcessReturnValues.schema.array()]),
|
|
1216
1287
|
logs: NullishToUndefined(DebugLog.schema.array()),
|
|
1217
1288
|
// For the proving request.
|
|
1218
|
-
publicInputs: AvmCircuitPublicInputs.schema,
|
|
1289
|
+
publicInputs: NullishToUndefined(AvmCircuitPublicInputs.schema),
|
|
1219
1290
|
hints: NullishToUndefined(AvmExecutionHints.schema),
|
|
1220
1291
|
})
|
|
1221
1292
|
.transform(
|
|
1222
|
-
({ gasUsed, revertCode, callStackMetadata, logs, hints, publicInputs }) =>
|
|
1223
|
-
new PublicTxResult(
|
|
1293
|
+
({ gasUsed, revertCode, publicTxEffect, callStackMetadata, logs, hints, publicInputs }) =>
|
|
1294
|
+
new PublicTxResult(
|
|
1295
|
+
gasUsed,
|
|
1296
|
+
revertCode as RevertCode,
|
|
1297
|
+
publicTxEffect,
|
|
1298
|
+
callStackMetadata,
|
|
1299
|
+
logs,
|
|
1300
|
+
hints,
|
|
1301
|
+
publicInputs,
|
|
1302
|
+
),
|
|
1224
1303
|
);
|
|
1225
1304
|
}
|
|
1226
1305
|
|
|
@@ -1235,10 +1314,11 @@ export class PublicTxResult {
|
|
|
1235
1314
|
return new PublicTxResult(
|
|
1236
1315
|
GasUsed.fromPlainObject(obj.gasUsed),
|
|
1237
1316
|
RevertCode.fromPlainObject(obj.revertCode),
|
|
1317
|
+
PublicTxEffect.fromPlainObject(obj.publicTxEffect),
|
|
1238
1318
|
obj.callStackMetadata.map(CallStackMetadata.fromPlainObject), // Always CallStackMetadata[] from MessagePack.
|
|
1239
1319
|
obj.logs?.map(DebugLog.fromPlainObject),
|
|
1240
1320
|
obj.hints ? AvmExecutionHints.fromPlainObject(obj.hints) : undefined,
|
|
1241
|
-
AvmCircuitPublicInputs.fromPlainObject(obj.publicInputs),
|
|
1321
|
+
obj.publicInputs ? AvmCircuitPublicInputs.fromPlainObject(obj.publicInputs) : undefined,
|
|
1242
1322
|
);
|
|
1243
1323
|
}
|
|
1244
1324
|
|
|
@@ -1336,6 +1416,7 @@ export class PublicSimulatorConfig {
|
|
|
1336
1416
|
public readonly skipFeeEnforcement: boolean,
|
|
1337
1417
|
public readonly collectCallMetadata: boolean, // appLogicReturnValues.
|
|
1338
1418
|
public readonly collectHints: boolean, // hints.
|
|
1419
|
+
public readonly collectPublicInputs: boolean, // public inputs.
|
|
1339
1420
|
public readonly collectDebugLogs: boolean, // logs.
|
|
1340
1421
|
public readonly collectStatistics: boolean, // timings etc.
|
|
1341
1422
|
public readonly collectionLimits: CollectionLimitsConfig,
|
|
@@ -1347,6 +1428,7 @@ export class PublicSimulatorConfig {
|
|
|
1347
1428
|
obj.skipFeeEnforcement ?? false,
|
|
1348
1429
|
obj.collectCallMetadata ?? false,
|
|
1349
1430
|
obj.collectHints ?? false,
|
|
1431
|
+
obj.collectPublicInputs ?? false,
|
|
1350
1432
|
obj.collectDebugLogs ?? false,
|
|
1351
1433
|
obj.collectStatistics ?? false,
|
|
1352
1434
|
obj.collectionLimits ?? CollectionLimitsConfig.empty(),
|
|
@@ -1364,6 +1446,7 @@ export class PublicSimulatorConfig {
|
|
|
1364
1446
|
skipFeeEnforcement: z.boolean(),
|
|
1365
1447
|
collectCallMetadata: z.boolean(),
|
|
1366
1448
|
collectHints: z.boolean(),
|
|
1449
|
+
collectPublicInputs: z.boolean(),
|
|
1367
1450
|
collectDebugLogs: z.boolean(),
|
|
1368
1451
|
collectStatistics: z.boolean(),
|
|
1369
1452
|
collectionLimits: CollectionLimitsConfig.schema,
|
package/src/block/in_block.ts
CHANGED
|
@@ -15,15 +15,21 @@ export type DataInBlock<T> = {
|
|
|
15
15
|
data: T;
|
|
16
16
|
} & InBlock;
|
|
17
17
|
|
|
18
|
-
export function randomInBlock
|
|
18
|
+
export function randomInBlock(): InBlock {
|
|
19
19
|
return {
|
|
20
|
-
data,
|
|
21
20
|
l2BlockNumber: BlockNumber(Math.floor(Math.random() * 1000)),
|
|
22
21
|
l2BlockHash: L2BlockHash.random(),
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
export
|
|
25
|
+
export function randomDataInBlock<T>(data: T): DataInBlock<T> {
|
|
26
|
+
return {
|
|
27
|
+
...randomInBlock(),
|
|
28
|
+
data,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export async function wrapDataInBlock<T>(data: T, block: L2Block): Promise<DataInBlock<T>> {
|
|
27
33
|
return {
|
|
28
34
|
data,
|
|
29
35
|
l2BlockNumber: block.number,
|
|
@@ -31,10 +37,13 @@ export async function wrapInBlock<T>(data: T, block: L2Block): Promise<DataInBlo
|
|
|
31
37
|
};
|
|
32
38
|
}
|
|
33
39
|
|
|
34
|
-
export function
|
|
40
|
+
export function inBlockSchema() {
|
|
35
41
|
return z.object({
|
|
36
|
-
data: schema,
|
|
37
42
|
l2BlockNumber: BlockNumberSchema,
|
|
38
43
|
l2BlockHash: L2BlockHash.schema,
|
|
39
44
|
});
|
|
40
45
|
}
|
|
46
|
+
|
|
47
|
+
export function dataInBlockSchemaFor<T extends ZodTypeAny>(schema: T) {
|
|
48
|
+
return inBlockSchema().extend({ data: schema });
|
|
49
|
+
}
|
|
@@ -21,7 +21,7 @@ import { z } from 'zod';
|
|
|
21
21
|
|
|
22
22
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
23
23
|
import { type BlockParameter, BlockParameterSchema } from '../block/block_parameter.js';
|
|
24
|
-
import { type DataInBlock,
|
|
24
|
+
import { type DataInBlock, dataInBlockSchemaFor } from '../block/in_block.js';
|
|
25
25
|
import { L2Block } from '../block/l2_block.js';
|
|
26
26
|
import { type L2BlockSource, type L2Tips, L2TipsSchema } from '../block/l2_block_source.js';
|
|
27
27
|
import { PublishedL2Block } from '../block/published_l2_block.js';
|
|
@@ -502,7 +502,7 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
|
|
|
502
502
|
findLeavesIndexes: z
|
|
503
503
|
.function()
|
|
504
504
|
.args(BlockParameterSchema, z.nativeEnum(MerkleTreeId), z.array(schemas.Fr).max(MAX_RPC_LEN))
|
|
505
|
-
.returns(z.array(optional(
|
|
505
|
+
.returns(z.array(optional(dataInBlockSchemaFor(schemas.BigInt)))),
|
|
506
506
|
|
|
507
507
|
getNullifierSiblingPath: z
|
|
508
508
|
.function()
|
package/src/logs/public_log.ts
CHANGED
|
@@ -172,6 +172,13 @@ export class PublicLog {
|
|
|
172
172
|
return new PublicLog(reader.readObject(AztecAddress), reader.readArray(fieldsLength, Fr));
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
+
static fromPlainObject(obj: any): PublicLog {
|
|
176
|
+
return new PublicLog(
|
|
177
|
+
AztecAddress.fromPlainObject(obj.contractAddress),
|
|
178
|
+
obj.fields.map((f: any) => Fr.fromPlainObject(f)),
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
|
|
175
182
|
static async random() {
|
|
176
183
|
return new PublicLog(
|
|
177
184
|
await AztecAddress.random(),
|
|
@@ -160,6 +160,10 @@ export class ScopedL2ToL1Message {
|
|
|
160
160
|
return new ScopedL2ToL1Message(L2ToL1Message.empty(), AztecAddress.ZERO);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
equals(other: ScopedL2ToL1Message): boolean {
|
|
164
|
+
return this.message.equals(other.message) && this.contractAddress.equals(other.contractAddress);
|
|
165
|
+
}
|
|
166
|
+
|
|
163
167
|
/**
|
|
164
168
|
* Creates a ScopedL2ToL1Message instance from a plain object without Zod validation.
|
|
165
169
|
* This method is optimized for performance and skips validation, making it suitable
|
package/src/tests/mocks.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { Secp256k1Signer, randomBytes } from '@aztec/foundation/crypto';
|
|
|
14
14
|
import { Fr } from '@aztec/foundation/fields';
|
|
15
15
|
|
|
16
16
|
import type { ContractArtifact } from '../abi/abi.js';
|
|
17
|
+
import { PublicTxEffect } from '../avm/avm.js';
|
|
17
18
|
import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
|
|
18
19
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
19
20
|
import { RevertCode } from '../avm/revert_code.js';
|
|
@@ -320,12 +321,24 @@ export async function mockProcessedTx({
|
|
|
320
321
|
} satisfies GasUsed;
|
|
321
322
|
|
|
322
323
|
await tx.recomputeHash();
|
|
324
|
+
|
|
325
|
+
const publicTxEffect = new PublicTxEffect(
|
|
326
|
+
avmOutput.transactionFee,
|
|
327
|
+
avmOutput.accumulatedData.noteHashes.filter(h => !h.isZero()),
|
|
328
|
+
avmOutput.accumulatedData.nullifiers.filter(h => !h.isZero()),
|
|
329
|
+
avmOutput.accumulatedData.l2ToL1Msgs.filter(h => !h.isEmpty()),
|
|
330
|
+
avmOutput.accumulatedData.publicLogs.toLogs(),
|
|
331
|
+
avmOutput.accumulatedData.publicDataWrites.filter(h => !h.isEmpty()),
|
|
332
|
+
);
|
|
333
|
+
|
|
323
334
|
return makeProcessedTxFromTxWithPublicCalls(
|
|
324
335
|
tx,
|
|
336
|
+
globalVariables,
|
|
325
337
|
{
|
|
326
338
|
type: ProvingRequestType.PUBLIC_VM,
|
|
327
339
|
inputs: avmCircuitInputs,
|
|
328
340
|
},
|
|
341
|
+
publicTxEffect,
|
|
329
342
|
gasUsed,
|
|
330
343
|
RevertCode.OK,
|
|
331
344
|
undefined /* revertReason */,
|
package/src/tx/in_tx.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { type InBlock, inBlockSchema, randomInBlock } from '../block/in_block.js';
|
|
4
|
+
import { TxHash } from './tx_hash.js';
|
|
5
|
+
|
|
6
|
+
export type InTx = InBlock & {
|
|
7
|
+
txHash: TxHash;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function randomInTx(): InTx {
|
|
11
|
+
return {
|
|
12
|
+
...randomInBlock(),
|
|
13
|
+
txHash: TxHash.random(),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function inTxSchema() {
|
|
18
|
+
return z.intersection(
|
|
19
|
+
inBlockSchema(),
|
|
20
|
+
z.object({
|
|
21
|
+
txHash: TxHash.schema,
|
|
22
|
+
}),
|
|
23
|
+
);
|
|
24
|
+
}
|
package/src/tx/index.ts
CHANGED
|
@@ -3,18 +3,18 @@ import { schemas } from '@aztec/foundation/schemas';
|
|
|
3
3
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
4
|
|
|
5
5
|
import { L2BlockHash } from '../block/block_hash.js';
|
|
6
|
-
import { type DataInBlock,
|
|
6
|
+
import { type DataInBlock, dataInBlockSchemaFor, randomDataInBlock } from '../block/in_block.js';
|
|
7
7
|
import { TxEffect } from './tx_effect.js';
|
|
8
8
|
|
|
9
9
|
export type IndexedTxEffect = DataInBlock<TxEffect> & { txIndexInBlock: number };
|
|
10
10
|
|
|
11
11
|
export function indexedTxSchema() {
|
|
12
|
-
return
|
|
12
|
+
return dataInBlockSchemaFor(TxEffect.schema).extend({ txIndexInBlock: schemas.Integer });
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export async function randomIndexedTxEffect(): Promise<IndexedTxEffect> {
|
|
16
16
|
return {
|
|
17
|
-
...
|
|
17
|
+
...randomDataInBlock(await TxEffect.random({ numNullifiers: 1 + Math.floor(Math.random() * 64) })),
|
|
18
18
|
txIndexInBlock: Math.floor(Math.random() * 1000),
|
|
19
19
|
};
|
|
20
20
|
}
|