@aztec/stdlib 4.0.0-rc.1 → 4.0.0-rc.10
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/abi/decoder.d.ts +1 -1
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +1 -4
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +9 -5
- package/dest/avm/revert_code.d.ts +16 -1
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +15 -5
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
- package/dest/config/sequencer-config.d.ts +5 -3
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +13 -0
- package/dest/contract/contract_class.d.ts +2 -3
- package/dest/contract/contract_class.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.d.ts +7 -4
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +7 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +1 -0
- package/dest/interfaces/validator.d.ts +5 -2
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +1 -0
- package/dest/logs/debug_log_store.d.ts +30 -0
- package/dest/logs/debug_log_store.d.ts.map +1 -0
- package/dest/logs/debug_log_store.js +30 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
- package/dest/logs/index.d.ts +3 -2
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +2 -1
- package/dest/logs/pre_tag.d.ts +16 -11
- package/dest/logs/pre_tag.d.ts.map +1 -1
- package/dest/logs/pre_tag.js +2 -2
- package/dest/logs/siloed_tag.d.ts +5 -3
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +6 -1
- package/dest/logs/tag.js +1 -1
- package/dest/p2p/attestation_utils.d.ts +11 -1
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +45 -0
- package/dest/tests/factories.d.ts +3 -1
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +8 -0
- package/dest/tests/mocks.d.ts +2 -2
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +5 -5
- package/dest/tx/profiling.d.ts +4 -4
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +3 -3
- package/dest/tx/public_simulation_output.d.ts +4 -2
- package/dest/tx/public_simulation_output.d.ts.map +1 -1
- package/dest/tx/public_simulation_output.js +7 -3
- package/dest/tx/tx_receipt.d.ts +16 -2
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +11 -3
- package/package.json +9 -9
- package/src/abi/decoder.ts +1 -4
- package/src/abi/encoder.ts +8 -5
- package/src/avm/revert_code.ts +15 -0
- package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
- package/src/config/sequencer-config.ts +20 -2
- package/src/contract/contract_class.ts +3 -3
- package/src/interfaces/configs.ts +4 -0
- package/src/interfaces/validator.ts +2 -1
- package/src/logs/debug_log_store.ts +54 -0
- package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
- package/src/logs/index.ts +2 -1
- package/src/logs/pre_tag.ts +5 -5
- package/src/logs/siloed_tag.ts +8 -2
- package/src/logs/tag.ts +1 -1
- package/src/p2p/attestation_utils.ts +56 -0
- package/src/tests/factories.ts +9 -0
- package/src/tests/mocks.ts +7 -3
- package/src/tx/profiling.ts +5 -5
- package/src/tx/public_simulation_output.ts +4 -0
- package/src/tx/tx_receipt.ts +10 -0
- package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
- package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
package/dest/tests/mocks.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MAX_ENQUEUED_CALLS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
3
|
import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
@@ -103,10 +103,10 @@ export const mockTxForRollup = (seed = 1, opts = {})=>mockTx(seed, {
|
|
|
103
103
|
/** Mock a processed tx for testing purposes. */ export async function mockProcessedTx({ seed = 1, anchorBlockHeader, db, chainId = Fr.ZERO, version = Fr.ZERO, gasSettings = GasSettings.default({
|
|
104
104
|
maxFeesPerGas: new GasFees(10, 10)
|
|
105
105
|
}), vkTreeRoot = Fr.ZERO, protocolContracts = makeProtocolContracts(seed + 0x100), globalVariables = GlobalVariables.empty(), newL1ToL2Snapshot = AppendOnlyTreeSnapshot.empty(), feePayer, feePaymentPublicDataWrite, // The default gasUsed is the tx overhead.
|
|
106
|
-
gasUsed = Gas.from({
|
|
107
|
-
daGas:
|
|
108
|
-
l2Gas:
|
|
109
|
-
}),
|
|
106
|
+
privateOnly = false, gasUsed = Gas.from({
|
|
107
|
+
daGas: TX_DA_GAS_OVERHEAD,
|
|
108
|
+
l2Gas: privateOnly ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD
|
|
109
|
+
}), avmAccumulatedData, ...mockTxOpts } = {}) {
|
|
110
110
|
seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
|
|
111
111
|
anchorBlockHeader ??= db?.getInitialHeader() ?? makeBlockHeader(seed);
|
|
112
112
|
feePayer ??= makeAztecAddress(seed + 0x100);
|
package/dest/tx/profiling.d.ts
CHANGED
|
@@ -472,12 +472,12 @@ export declare class TxProfileResult {
|
|
|
472
472
|
static get schema(): ZodFor<TxProfileResult>;
|
|
473
473
|
static random(): TxProfileResult;
|
|
474
474
|
}
|
|
475
|
-
export declare class
|
|
475
|
+
export declare class UtilityExecutionResult {
|
|
476
476
|
result: Fr[];
|
|
477
477
|
stats?: SimulationStats | undefined;
|
|
478
478
|
constructor(result: Fr[], stats?: SimulationStats | undefined);
|
|
479
|
-
static get schema(): ZodFor<
|
|
480
|
-
static random():
|
|
479
|
+
static get schema(): ZodFor<UtilityExecutionResult>;
|
|
480
|
+
static random(): UtilityExecutionResult;
|
|
481
481
|
}
|
|
482
482
|
export {};
|
|
483
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
483
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsaW5nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHJvZmlsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQXFCLE1BQU0sMkJBQTJCLENBQUM7QUFFM0UsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBOEIsTUFBTSwyQ0FBMkMsQ0FBQztBQUVsSCxNQUFNLE1BQU0sY0FBYyxHQUFHO0lBQzNCLDBFQUEwRTtJQUMxRSxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLDhFQUE4RTtJQUM5RSxpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsc0NBQXNDO0lBQ3RDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzdCLDBFQUEwRTtJQUMxRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0NBQzlCLENBQUM7QUFTRixNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLDRCQUE0QjtJQUM1QixTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsRUFBRTtRQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtLQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLHNEQUFzRDtJQUN0RCxVQUFVLEVBQUUsY0FBYyxDQUFDO0NBQzVCLENBQUM7QUFPRixLQUFLLGNBQWMsR0FBRztJQUNwQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiling.d.ts","sourceRoot":"","sources":["../../src/tx/profiling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,oBAAoB,EAA8B,MAAM,2CAA2C,CAAC;AAElH,MAAM,MAAM,cAAc,GAAG;IAC3B,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC;CAC9B,CAAC;AASF,MAAM,MAAM,SAAS,GAAG;IACtB,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,sDAAsD;IACtD,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAOF,KAAK,cAAc,GAAG;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC/C,CAAC;AAQF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGhC,CAAC;AAEH,qBAAa,eAAe;IAEjB,cAAc,EAAE,oBAAoB,EAAE;IACtC,KAAK,EAAE,YAAY;IAF5B,YACS,cAAc,EAAE,oBAAoB,EAAE,EACtC,KAAK,EAAE,YAAY,EACxB;IACJ,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAO3C;IAED,MAAM,CAAC,MAAM,IAAI,eAAe,CAsC/B;CACF;AAED,qBAAa,
|
|
1
|
+
{"version":3,"file":"profiling.d.ts","sourceRoot":"","sources":["../../src/tx/profiling.ts"],"names":[],"mappings":"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"}
|
package/dest/tx/profiling.js
CHANGED
|
@@ -111,7 +111,7 @@ export class TxProfileResult {
|
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
export class
|
|
114
|
+
export class UtilityExecutionResult {
|
|
115
115
|
result;
|
|
116
116
|
stats;
|
|
117
117
|
constructor(result, stats){
|
|
@@ -122,10 +122,10 @@ export class UtilitySimulationResult {
|
|
|
122
122
|
return z.object({
|
|
123
123
|
result: z.array(schemas.Fr),
|
|
124
124
|
stats: optional(SimulationStatsSchema)
|
|
125
|
-
}).transform(({ result, stats })=>new
|
|
125
|
+
}).transform(({ result, stats })=>new UtilityExecutionResult(result, stats));
|
|
126
126
|
}
|
|
127
127
|
static random() {
|
|
128
|
-
return new
|
|
128
|
+
return new UtilityExecutionResult([
|
|
129
129
|
Fr.random()
|
|
130
130
|
], {
|
|
131
131
|
nodeRPCCalls: {
|
|
@@ -2,6 +2,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
2
2
|
import { type ZodFor } from '@aztec/foundation/schemas';
|
|
3
3
|
import { SimulationError } from '../errors/simulation_error.js';
|
|
4
4
|
import type { GasUsed } from '../gas/gas_used.js';
|
|
5
|
+
import { DebugLog } from '../logs/debug_log.js';
|
|
5
6
|
import { TxEffect } from '../tx/tx_effect.js';
|
|
6
7
|
import { GlobalVariables } from './global_variables.js';
|
|
7
8
|
/** Return values of simulating a circuit. */
|
|
@@ -26,8 +27,9 @@ export declare class PublicSimulationOutput {
|
|
|
26
27
|
txEffect: TxEffect;
|
|
27
28
|
publicReturnValues: NestedProcessReturnValues[];
|
|
28
29
|
gasUsed: GasUsed;
|
|
29
|
-
|
|
30
|
+
debugLogs: DebugLog[];
|
|
31
|
+
constructor(revertReason: SimulationError | undefined, globalVariables: GlobalVariables, txEffect: TxEffect, publicReturnValues: NestedProcessReturnValues[], gasUsed: GasUsed, debugLogs?: DebugLog[]);
|
|
30
32
|
static get schema(): ZodFor<PublicSimulationOutput>;
|
|
31
33
|
static random(): Promise<PublicSimulationOutput>;
|
|
32
34
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3NpbXVsYXRpb25fb3V0cHV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHVibGljX3NpbXVsYXRpb25fb3V0cHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQVcsTUFBTSwyQkFBMkIsQ0FBQztBQUtqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsNkNBQTZDO0FBQzdDLE1BQU0sTUFBTSxtQkFBbUIsR0FBRyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFFbkQsc0RBQXNEO0FBQ3RELHFCQUFhLHlCQUF5QjtJQUNwQyxNQUFNLEVBQUUsbUJBQW1CLENBQUM7SUFDNUIsTUFBTSxFQUFFLHlCQUF5QixFQUFFLENBQUM7SUFFcEMsWUFBWSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEVBQUUseUJBQXlCLEVBQUUsRUFHNUU7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLHlCQUF5QixHQUFHLE9BQU8sQ0FPaEQ7SUFFRCxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQU9yRDtJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyx5QkFBeUIsQ0FLMUQ7SUFFRCxNQUFNLENBQUMsS0FBSyw4QkFFWDtJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFJLEdBQUcseUJBQXlCLENBS2xEO0NBQ0Y7QUFFRDs7R0FFRztBQUNILHFCQUFhLHNCQUFzQjtJQUV4QixZQUFZLEVBQUUsZUFBZSxHQUFHLFNBQVM7SUFDekMsZUFBZSxFQUFFLGVBQWU7SUFDaEMsUUFBUSxFQUFFLFFBQVE7SUFDbEIsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUU7SUFDL0MsT0FBTyxFQUFFLE9BQU87SUFDaEIsU0FBUyxFQUFFLFFBQVEsRUFBRTtJQU45QixZQUNTLFlBQVksRUFBRSxlQUFlLEdBQUcsU0FBUyxFQUN6QyxlQUFlLEVBQUUsZUFBZSxFQUNoQyxRQUFRLEVBQUUsUUFBUSxFQUNsQixrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxFQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUNoQixTQUFTLEdBQUUsUUFBUSxFQUFPLEVBQy9CO0lBRUosTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0EwQmxEO0lBRUQsT0FBYSxNQUFNLG9DQVFsQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_simulation_output.d.ts","sourceRoot":"","sources":["../../src/tx/public_simulation_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"public_simulation_output.d.ts","sourceRoot":"","sources":["../../src/tx/public_simulation_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC;AAEnD,sDAAsD;AACtD,qBAAa,yBAAyB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAEpC,YAAY,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,yBAAyB,EAAE,EAG5E;IAED,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAOhD;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAOrD;IAED,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,yBAAyB,CAK1D;IAED,MAAM,CAAC,KAAK,8BAEX;IAED,MAAM,CAAC,MAAM,CAAC,KAAK,SAAI,GAAG,yBAAyB,CAKlD;CACF;AAED;;GAEG;AACH,qBAAa,sBAAsB;IAExB,YAAY,EAAE,eAAe,GAAG,SAAS;IACzC,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,QAAQ;IAClB,kBAAkB,EAAE,yBAAyB,EAAE;IAC/C,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,QAAQ,EAAE;IAN9B,YACS,YAAY,EAAE,eAAe,GAAG,SAAS,EACzC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,QAAQ,EAAO,EAC/B;IAEJ,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,sBAAsB,CAAC,CA0BlD;IAED,OAAa,MAAM,oCAQlB;CACF"}
|
|
@@ -4,6 +4,7 @@ import times from 'lodash.times';
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { SimulationError } from '../errors/simulation_error.js';
|
|
6
6
|
import { Gas } from '../gas/gas.js';
|
|
7
|
+
import { DebugLog } from '../logs/debug_log.js';
|
|
7
8
|
import { NullishToUndefined } from '../schemas/schemas.js';
|
|
8
9
|
import { TxEffect } from '../tx/tx_effect.js';
|
|
9
10
|
import { GlobalVariables } from './global_variables.js';
|
|
@@ -43,12 +44,14 @@ import { GlobalVariables } from './global_variables.js';
|
|
|
43
44
|
txEffect;
|
|
44
45
|
publicReturnValues;
|
|
45
46
|
gasUsed;
|
|
46
|
-
|
|
47
|
+
debugLogs;
|
|
48
|
+
constructor(revertReason, globalVariables, txEffect, publicReturnValues, gasUsed, debugLogs = []){
|
|
47
49
|
this.revertReason = revertReason;
|
|
48
50
|
this.globalVariables = globalVariables;
|
|
49
51
|
this.txEffect = txEffect;
|
|
50
52
|
this.publicReturnValues = publicReturnValues;
|
|
51
53
|
this.gasUsed = gasUsed;
|
|
54
|
+
this.debugLogs = debugLogs;
|
|
52
55
|
}
|
|
53
56
|
static get schema() {
|
|
54
57
|
return z.object({
|
|
@@ -61,8 +64,9 @@ import { GlobalVariables } from './global_variables.js';
|
|
|
61
64
|
teardownGas: Gas.schema,
|
|
62
65
|
publicGas: Gas.schema,
|
|
63
66
|
billedGas: Gas.schema
|
|
64
|
-
})
|
|
65
|
-
|
|
67
|
+
}),
|
|
68
|
+
debugLogs: z.array(DebugLog.schema).default([])
|
|
69
|
+
}).transform((fields)=>new PublicSimulationOutput(fields.revertReason, fields.globalVariables, fields.txEffect, fields.publicReturnValues, fields.gasUsed, fields.debugLogs));
|
|
66
70
|
}
|
|
67
71
|
static async random() {
|
|
68
72
|
return new PublicSimulationOutput(await SimulationError.random(), GlobalVariables.empty(), TxEffect.empty(), times(2, NestedProcessReturnValues.random), {
|
package/dest/tx/tx_receipt.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { RevertCode } from '../avm/revert_code.js';
|
|
3
3
|
import { BlockHash } from '../block/block_hash.js';
|
|
4
|
+
import { DebugLog } from '../logs/debug_log.js';
|
|
4
5
|
import { type ZodFor } from '../schemas/schemas.js';
|
|
5
6
|
import { TxHash } from './tx_hash.js';
|
|
6
7
|
/** Block inclusion/finalization status. */
|
|
@@ -42,6 +43,12 @@ export declare class TxReceipt {
|
|
|
42
43
|
blockHash?: BlockHash | undefined;
|
|
43
44
|
/** The block number in which the transaction was included. */
|
|
44
45
|
blockNumber?: BlockNumber | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Debug logs collected during public function execution. Served only when the node is in test mode and placed on
|
|
48
|
+
* the receipt only because it's a convenient place for it (the logs are printed out by the wallet when a mined
|
|
49
|
+
* tx receipt is obtained).
|
|
50
|
+
*/
|
|
51
|
+
debugLogs?: DebugLog[] | undefined;
|
|
45
52
|
constructor(
|
|
46
53
|
/** A unique identifier for a transaction. */
|
|
47
54
|
txHash: TxHash,
|
|
@@ -56,7 +63,13 @@ export declare class TxReceipt {
|
|
|
56
63
|
/** The hash of the block containing the transaction. */
|
|
57
64
|
blockHash?: BlockHash | undefined,
|
|
58
65
|
/** The block number in which the transaction was included. */
|
|
59
|
-
blockNumber?: BlockNumber | undefined
|
|
66
|
+
blockNumber?: BlockNumber | undefined,
|
|
67
|
+
/**
|
|
68
|
+
* Debug logs collected during public function execution. Served only when the node is in test mode and placed on
|
|
69
|
+
* the receipt only because it's a convenient place for it (the logs are printed out by the wallet when a mined
|
|
70
|
+
* tx receipt is obtained).
|
|
71
|
+
*/
|
|
72
|
+
debugLogs?: DebugLog[] | undefined);
|
|
60
73
|
/** Returns true if the transaction was executed successfully. */
|
|
61
74
|
hasExecutionSucceeded(): boolean;
|
|
62
75
|
/** Returns true if the transaction execution reverted. */
|
|
@@ -77,7 +90,8 @@ export declare class TxReceipt {
|
|
|
77
90
|
transactionFee?: bigint;
|
|
78
91
|
blockHash?: BlockHash;
|
|
79
92
|
blockNumber?: BlockNumber;
|
|
93
|
+
debugLogs?: DebugLog[];
|
|
80
94
|
}): TxReceipt;
|
|
81
95
|
static executionResultFromRevertCode(revertCode: RevertCode): TxExecutionResult;
|
|
82
96
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcmVjZWlwdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4L3R4X3JlY2VpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUlqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRDLDJDQUEyQztBQUMzQyxvQkFBWSxRQUFRO0lBQ2xCLE9BQU8sWUFBWTtJQUNuQixPQUFPLFlBQVk7SUFDbkIsUUFBUSxhQUFhO0lBQ3JCLFlBQVksaUJBQWlCO0lBQzdCLE1BQU0sV0FBVztJQUNqQixTQUFTLGNBQWM7Q0FDeEI7QUFFRCxpREFBaUQ7QUFDakQsZUFBTyxNQUFNLGdCQUFnQixFQUFFLFFBQVEsRUFPdEMsQ0FBQztBQUVGLHlEQUF5RDtBQUN6RCxvQkFBWSxpQkFBaUI7SUFDM0IsT0FBTyxZQUFZO0lBQ25CLGtCQUFrQix1QkFBdUI7SUFDekMsaUJBQWlCLHNCQUFzQjtJQUN2QyxhQUFhLGtCQUFrQjtDQUNoQztBQUVEOzs7OztHQUtHO0FBQ0gscUJBQWEsU0FBUztJQUVsQiw2Q0FBNkM7SUFDdEMsTUFBTSxFQUFFLE1BQU07SUFDckIsbURBQW1EO0lBQzVDLE1BQU0sRUFBRSxRQUFRO0lBQ3ZCLCtFQUErRTtJQUN4RSxlQUFlLEVBQUUsaUJBQWlCLEdBQUcsU0FBUztJQUNyRCxnREFBZ0Q7SUFDekMsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTO0lBQ2hDLG9EQUFvRDtJQUM3QyxjQUFjLENBQUM7SUFDdEIsd0RBQXdEO0lBQ2pELFNBQVMsQ0FBQztJQUNqQiw4REFBOEQ7SUFDdkQsV0FBVyxDQUFDO0lBQ25COzs7O09BSUc7SUFDSSxTQUFTLENBQUM7SUFwQm5CO0lBQ0UsNkNBQTZDO0lBQ3RDLE1BQU0sRUFBRSxNQUFNO0lBQ3JCLG1EQUFtRDtJQUM1QyxNQUFNLEVBQUUsUUFBUTtJQUN2QiwrRUFBK0U7SUFDeEUsZUFBZSxFQUFFLGlCQUFpQixHQUFHLFNBQVM7SUFDckQsZ0RBQWdEO0lBQ3pDLEtBQUssRUFBRSxNQUFNLEdBQUcsU0FBUztJQUNoQyxvREFBb0Q7SUFDN0MsY0FBYyxDQUFDLG9CQUFRO0lBQzlCLHdEQUF3RDtJQUNqRCxTQUFTLENBQUMsdUJBQVc7SUFDNUIsOERBQThEO0lBQ3ZELFdBQVcsQ0FBQyx5QkFBYTtJQUNoQzs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLHdCQUFZLEVBQzNCO0lBRUosaUVBQWlFO0lBQ2pFLHFCQUFxQixJQUFJLE9BQU8sQ0FFL0I7SUFFRCwwREFBMEQ7SUFDMUQsb0JBQW9CLElBQUksT0FBTyxDQUU5QjtJQUVELG1IQUFtSDtJQUNuSCxPQUFPLElBQUksT0FBTyxDQU9qQjtJQUVELGtEQUFrRDtJQUNsRCxTQUFTLElBQUksT0FBTyxDQUVuQjtJQUVELG1EQUFtRDtJQUNuRCxTQUFTLElBQUksT0FBTyxDQUVuQjtJQUVELE1BQU0sQ0FBQyxLQUFLLGNBRVg7SUFFRCxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FhckM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLEVBQUUsTUFBTSxDQUFDO1FBQ2YsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUNqQixlQUFlLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztRQUNwQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDZixjQUFjLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDeEIsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDO1FBQ3RCLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQztRQUMxQixTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUN4QixhQVdBO0lBRUQsT0FBYyw2QkFBNkIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLGlCQUFpQixDQVlyRjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_receipt.d.ts","sourceRoot":"","sources":["../../src/tx/tx_receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,iCAAiC,CAAC;AAIjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,2CAA2C;AAC3C,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAOtC,CAAC;AAEF,yDAAyD;AACzD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;CAChC;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IAElB,6CAA6C;IACtC,MAAM,EAAE,MAAM;IACrB,mDAAmD;IAC5C,MAAM,EAAE,QAAQ;IACvB,+EAA+E;IACxE,eAAe,EAAE,iBAAiB,GAAG,SAAS;IACrD,gDAAgD;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS;IAChC,oDAAoD;IAC7C,cAAc,CAAC;IACtB,wDAAwD;IACjD,SAAS,CAAC;IACjB,8DAA8D;IACvD,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tx_receipt.d.ts","sourceRoot":"","sources":["../../src/tx/tx_receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,iCAAiC,CAAC;AAIjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,2CAA2C;AAC3C,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAOtC,CAAC;AAEF,yDAAyD;AACzD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;CAChC;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IAElB,6CAA6C;IACtC,MAAM,EAAE,MAAM;IACrB,mDAAmD;IAC5C,MAAM,EAAE,QAAQ;IACvB,+EAA+E;IACxE,eAAe,EAAE,iBAAiB,GAAG,SAAS;IACrD,gDAAgD;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS;IAChC,oDAAoD;IAC7C,cAAc,CAAC;IACtB,wDAAwD;IACjD,SAAS,CAAC;IACjB,8DAA8D;IACvD,WAAW,CAAC;IACnB;;;;OAIG;IACI,SAAS,CAAC;IApBnB;IACE,6CAA6C;IACtC,MAAM,EAAE,MAAM;IACrB,mDAAmD;IAC5C,MAAM,EAAE,QAAQ;IACvB,+EAA+E;IACxE,eAAe,EAAE,iBAAiB,GAAG,SAAS;IACrD,gDAAgD;IACzC,KAAK,EAAE,MAAM,GAAG,SAAS;IAChC,oDAAoD;IAC7C,cAAc,CAAC,oBAAQ;IAC9B,wDAAwD;IACjD,SAAS,CAAC,uBAAW;IAC5B,8DAA8D;IACvD,WAAW,CAAC,yBAAa;IAChC;;;;OAIG;IACI,SAAS,CAAC,wBAAY,EAC3B;IAEJ,iEAAiE;IACjE,qBAAqB,IAAI,OAAO,CAE/B;IAED,0DAA0D;IAC1D,oBAAoB,IAAI,OAAO,CAE9B;IAED,mHAAmH;IACnH,OAAO,IAAI,OAAO,CAOjB;IAED,kDAAkD;IAClD,SAAS,IAAI,OAAO,CAEnB;IAED,mDAAmD;IACnD,SAAS,IAAI,OAAO,CAEnB;IAED,MAAM,CAAC,KAAK,cAEX;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAarC;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,QAAQ,CAAC;QACjB,eAAe,CAAC,EAAE,iBAAiB,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACxB,aAWA;IAED,OAAc,6BAA6B,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAYrF;CACF"}
|
package/dest/tx/tx_receipt.js
CHANGED
|
@@ -2,6 +2,7 @@ import { BlockNumberSchema } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { RevertCode } from '../avm/revert_code.js';
|
|
4
4
|
import { BlockHash } from '../block/block_hash.js';
|
|
5
|
+
import { DebugLog } from '../logs/debug_log.js';
|
|
5
6
|
import { schemas } from '../schemas/schemas.js';
|
|
6
7
|
import { TxHash } from './tx_hash.js';
|
|
7
8
|
/** Block inclusion/finalization status. */ export var TxStatus = /*#__PURE__*/ function(TxStatus) {
|
|
@@ -41,7 +42,12 @@ import { TxHash } from './tx_hash.js';
|
|
|
41
42
|
transactionFee;
|
|
42
43
|
blockHash;
|
|
43
44
|
blockNumber;
|
|
44
|
-
|
|
45
|
+
debugLogs;
|
|
46
|
+
constructor(/** A unique identifier for a transaction. */ txHash, /** The transaction's block finalization status. */ status, /** The execution result of the transaction, only set when tx is in a block. */ executionResult, /** Description of transaction error, if any. */ error, /** The transaction fee paid for the transaction. */ transactionFee, /** The hash of the block containing the transaction. */ blockHash, /** The block number in which the transaction was included. */ blockNumber, /**
|
|
47
|
+
* Debug logs collected during public function execution. Served only when the node is in test mode and placed on
|
|
48
|
+
* the receipt only because it's a convenient place for it (the logs are printed out by the wallet when a mined
|
|
49
|
+
* tx receipt is obtained).
|
|
50
|
+
*/ debugLogs){
|
|
45
51
|
this.txHash = txHash;
|
|
46
52
|
this.status = status;
|
|
47
53
|
this.executionResult = executionResult;
|
|
@@ -49,6 +55,7 @@ import { TxHash } from './tx_hash.js';
|
|
|
49
55
|
this.transactionFee = transactionFee;
|
|
50
56
|
this.blockHash = blockHash;
|
|
51
57
|
this.blockNumber = blockNumber;
|
|
58
|
+
this.debugLogs = debugLogs;
|
|
52
59
|
}
|
|
53
60
|
/** Returns true if the transaction was executed successfully. */ hasExecutionSucceeded() {
|
|
54
61
|
return this.executionResult === "success";
|
|
@@ -76,11 +83,12 @@ import { TxHash } from './tx_hash.js';
|
|
|
76
83
|
error: z.string().optional(),
|
|
77
84
|
blockHash: BlockHash.schema.optional(),
|
|
78
85
|
blockNumber: BlockNumberSchema.optional(),
|
|
79
|
-
transactionFee: schemas.BigInt.optional()
|
|
86
|
+
transactionFee: schemas.BigInt.optional(),
|
|
87
|
+
debugLogs: z.array(DebugLog.schema).optional()
|
|
80
88
|
}).transform((fields)=>TxReceipt.from(fields));
|
|
81
89
|
}
|
|
82
90
|
static from(fields) {
|
|
83
|
-
return new TxReceipt(fields.txHash, fields.status, fields.executionResult, fields.error, fields.transactionFee, fields.blockHash, fields.blockNumber);
|
|
91
|
+
return new TxReceipt(fields.txHash, fields.status, fields.executionResult, fields.error, fields.transactionFee, fields.blockHash, fields.blockNumber, fields.debugLogs);
|
|
84
92
|
}
|
|
85
93
|
static executionResultFromRevertCode(revertCode) {
|
|
86
94
|
if (revertCode.equals(RevertCode.OK)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "4.0.0-rc.
|
|
3
|
+
"version": "4.0.0-rc.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -90,14 +90,14 @@
|
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
92
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
93
|
-
"@aztec/bb.js": "4.0.0-rc.
|
|
94
|
-
"@aztec/blob-lib": "4.0.0-rc.
|
|
95
|
-
"@aztec/constants": "4.0.0-rc.
|
|
96
|
-
"@aztec/ethereum": "4.0.0-rc.
|
|
97
|
-
"@aztec/foundation": "4.0.0-rc.
|
|
98
|
-
"@aztec/l1-artifacts": "4.0.0-rc.
|
|
99
|
-
"@aztec/noir-noirc_abi": "4.0.0-rc.
|
|
100
|
-
"@aztec/validator-ha-signer": "4.0.0-rc.
|
|
93
|
+
"@aztec/bb.js": "4.0.0-rc.10",
|
|
94
|
+
"@aztec/blob-lib": "4.0.0-rc.10",
|
|
95
|
+
"@aztec/constants": "4.0.0-rc.10",
|
|
96
|
+
"@aztec/ethereum": "4.0.0-rc.10",
|
|
97
|
+
"@aztec/foundation": "4.0.0-rc.10",
|
|
98
|
+
"@aztec/l1-artifacts": "4.0.0-rc.10",
|
|
99
|
+
"@aztec/noir-noirc_abi": "4.0.0-rc.10",
|
|
100
|
+
"@aztec/validator-ha-signer": "4.0.0-rc.10",
|
|
101
101
|
"@google-cloud/storage": "^7.15.0",
|
|
102
102
|
"axios": "^1.12.0",
|
|
103
103
|
"json-stringify-deterministic": "1.0.12",
|
package/src/abi/decoder.ts
CHANGED
|
@@ -135,10 +135,7 @@ export class FunctionSignatureDecoder {
|
|
|
135
135
|
case 'field':
|
|
136
136
|
return 'Field';
|
|
137
137
|
case 'integer':
|
|
138
|
-
|
|
139
|
-
throw new Error('Unsupported type: signed integer');
|
|
140
|
-
}
|
|
141
|
-
return `u${param.width}`;
|
|
138
|
+
return param.sign === 'signed' ? `i${param.width}` : `u${param.width}`;
|
|
142
139
|
case 'boolean':
|
|
143
140
|
return 'bool';
|
|
144
141
|
case 'array':
|
package/src/abi/encoder.ts
CHANGED
|
@@ -123,14 +123,17 @@ class ArgumentEncoder {
|
|
|
123
123
|
}
|
|
124
124
|
break;
|
|
125
125
|
}
|
|
126
|
-
case 'integer':
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
case 'integer': {
|
|
127
|
+
const value = BigInt(arg);
|
|
128
|
+
if (abiType.sign === 'signed' && value < 0n) {
|
|
129
|
+
// Convert negative values to two's complement representation
|
|
130
|
+
const twosComplement = value + (1n << BigInt(abiType.width));
|
|
131
|
+
this.flattened.push(new Fr(twosComplement));
|
|
130
132
|
} else {
|
|
131
|
-
this.flattened.push(new Fr(
|
|
133
|
+
this.flattened.push(new Fr(value));
|
|
132
134
|
}
|
|
133
135
|
break;
|
|
136
|
+
}
|
|
134
137
|
default:
|
|
135
138
|
throw new Error(`Unsupported type: ${abiType.kind}`);
|
|
136
139
|
}
|
package/src/avm/revert_code.ts
CHANGED
|
@@ -5,10 +5,25 @@ import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
|
|
|
5
5
|
import { inspect } from 'util';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Tracks which revertible phases of a transaction's public execution reverted.
|
|
10
|
+
*
|
|
11
|
+
* A transaction executes in three sequential phases:
|
|
12
|
+
* 1. SETUP – non-revertible; if this fails the entire transaction is rejected.
|
|
13
|
+
* 2. APP_LOGIC – revertible; its state changes are rolled back on failure.
|
|
14
|
+
* 3. TEARDOWN – revertible; always runs (even after app-logic revert) so the fee-payment contract can clean up.
|
|
15
|
+
*
|
|
16
|
+
* Only APP_LOGIC and TEARDOWN can produce a revert code. SETUP failures throw instead and discard the transaction
|
|
17
|
+
* entirely.
|
|
18
|
+
*/
|
|
8
19
|
export enum RevertCodeEnum {
|
|
20
|
+
/** All phases completed successfully; no state was rolled back. */
|
|
9
21
|
OK = 0,
|
|
22
|
+
/** APP_LOGIC reverted; its state changes were discarded. If present, TEARDOWN still ran and succeeded. */
|
|
10
23
|
APP_LOGIC_REVERTED = 1,
|
|
24
|
+
/** TEARDOWN reverted; its state changes were discarded. APP_LOGIC succeeded. */
|
|
11
25
|
TEARDOWN_REVERTED = 2,
|
|
26
|
+
/** Both APP_LOGIC and TEARDOWN reverted; only SETUP effects are kept. */
|
|
12
27
|
BOTH_REVERTED = 3,
|
|
13
28
|
}
|
|
14
29
|
|
|
@@ -109,6 +109,27 @@ export class L2BlockStream {
|
|
|
109
109
|
|
|
110
110
|
let nextBlockNumber = latestBlockNumber + 1;
|
|
111
111
|
let nextCheckpointToEmit = CheckpointNumber(localTips.checkpointed.checkpoint.number + 1);
|
|
112
|
+
|
|
113
|
+
// When startingBlock is set, also skip ahead for checkpoints.
|
|
114
|
+
if (
|
|
115
|
+
this.opts.startingBlock !== undefined &&
|
|
116
|
+
this.opts.startingBlock >= 1 &&
|
|
117
|
+
nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number
|
|
118
|
+
) {
|
|
119
|
+
const startingBlockCheckpoints = await this.l2BlockSource.getCheckpointedBlocks(
|
|
120
|
+
BlockNumber(this.opts.startingBlock),
|
|
121
|
+
1,
|
|
122
|
+
);
|
|
123
|
+
if (startingBlockCheckpoints.length > 0) {
|
|
124
|
+
nextCheckpointToEmit = CheckpointNumber(
|
|
125
|
+
Math.max(nextCheckpointToEmit, startingBlockCheckpoints[0].checkpointNumber),
|
|
126
|
+
);
|
|
127
|
+
} else {
|
|
128
|
+
// startingBlock is past all checkpointed blocks; skip Loop 1 entirely.
|
|
129
|
+
nextCheckpointToEmit = CheckpointNumber(sourceTips.checkpointed.checkpoint.number + 1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
112
133
|
if (this.opts.skipFinalized) {
|
|
113
134
|
// When skipping finalized blocks we need to provide reliable reorg detection while fetching as few blocks as
|
|
114
135
|
// possible. Finalized blocks cannot be reorged by definition, so we can skip most of them. We do need the very
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ConfigMappingsType, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
|
|
3
3
|
import type { SequencerConfig } from '../interfaces/configs.js';
|
|
4
4
|
|
|
5
|
+
/** Default maximum number of transactions per block. */
|
|
6
|
+
export const DEFAULT_MAX_TXS_PER_BLOCK = 32;
|
|
7
|
+
|
|
5
8
|
/**
|
|
6
9
|
* Partial sequencer config mappings for fields that need to be shared across packages.
|
|
7
10
|
* The full sequencer config mappings remain in sequencer-client, but shared fields
|
|
8
11
|
* (like blockDurationMs needed by both p2p and sequencer-client) are defined here
|
|
9
12
|
* to avoid duplication.
|
|
10
13
|
*/
|
|
11
|
-
export const sharedSequencerConfigMappings: ConfigMappingsType<
|
|
14
|
+
export const sharedSequencerConfigMappings: ConfigMappingsType<
|
|
15
|
+
Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock'>
|
|
16
|
+
> = {
|
|
12
17
|
blockDurationMs: {
|
|
13
18
|
env: 'SEQ_BLOCK_DURATION_MS',
|
|
14
19
|
description:
|
|
@@ -16,4 +21,17 @@ export const sharedSequencerConfigMappings: ConfigMappingsType<Pick<SequencerCon
|
|
|
16
21
|
'If undefined (default), builds a single block per slot using the full slot duration.',
|
|
17
22
|
parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
|
|
18
23
|
},
|
|
24
|
+
expectedBlockProposalsPerSlot: {
|
|
25
|
+
env: 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT',
|
|
26
|
+
description:
|
|
27
|
+
'Expected number of block proposals per slot for P2P peer scoring. ' +
|
|
28
|
+
'0 (default) disables block proposal scoring. Set to a positive value to enable.',
|
|
29
|
+
parseEnv: (val: string) => (val ? parseInt(val, 10) : 0),
|
|
30
|
+
defaultValue: 0,
|
|
31
|
+
},
|
|
32
|
+
maxTxsPerBlock: {
|
|
33
|
+
env: 'SEQ_MAX_TX_PER_BLOCK',
|
|
34
|
+
description: 'The maximum number of txs to include in a block.',
|
|
35
|
+
...numberConfigHelper(DEFAULT_MAX_TXS_PER_BLOCK),
|
|
36
|
+
},
|
|
19
37
|
};
|
|
@@ -8,7 +8,7 @@ import { type ContractClassIdPreimage, computeContractClassIdWithPreimage } from
|
|
|
8
8
|
import type { ContractClass, ContractClassWithId } from './interfaces/index.js';
|
|
9
9
|
|
|
10
10
|
/** Contract artifact including its artifact hash */
|
|
11
|
-
type ContractArtifactWithHash = ContractArtifact & { artifactHash: Fr };
|
|
11
|
+
export type ContractArtifactWithHash = ContractArtifact & { artifactHash: Fr };
|
|
12
12
|
|
|
13
13
|
const cmpFunctionArtifacts = <T extends { selector: FunctionSelector }>(a: T, b: T) =>
|
|
14
14
|
a.selector.toField().cmp(b.selector.toField());
|
|
@@ -35,8 +35,8 @@ export async function getContractClassFromArtifact(
|
|
|
35
35
|
|
|
36
36
|
privateArtifactFunctions.sort(cmpFunctionArtifacts);
|
|
37
37
|
|
|
38
|
-
const contractClass
|
|
39
|
-
version: 1,
|
|
38
|
+
const contractClass = {
|
|
39
|
+
version: 1 as const,
|
|
40
40
|
artifactHash,
|
|
41
41
|
packedBytecode,
|
|
42
42
|
privateFunctions: privateArtifactFunctions,
|
|
@@ -65,6 +65,8 @@ export interface SequencerConfig {
|
|
|
65
65
|
shuffleAttestationOrdering?: boolean;
|
|
66
66
|
/** Duration per block in milliseconds when building multiple blocks per slot (default: undefined = single block per slot) */
|
|
67
67
|
blockDurationMs?: number;
|
|
68
|
+
/** Expected number of block proposals per slot for P2P peer scoring. 0 disables scoring, undefined falls back to blocksPerSlot - 1. */
|
|
69
|
+
expectedBlockProposalsPerSlot?: number;
|
|
68
70
|
/** Have sequencer build and publish an empty checkpoint if there are no txs */
|
|
69
71
|
buildCheckpointIfEmpty?: boolean;
|
|
70
72
|
/** Skip pushing proposed blocks to archiver (default: false) */
|
|
@@ -105,6 +107,7 @@ export const SequencerConfigSchema = zodFor<SequencerConfig>()(
|
|
|
105
107
|
fishermanMode: z.boolean().optional(),
|
|
106
108
|
shuffleAttestationOrdering: z.boolean().optional(),
|
|
107
109
|
blockDurationMs: z.number().positive().optional(),
|
|
110
|
+
expectedBlockProposalsPerSlot: z.number().nonnegative().optional(),
|
|
108
111
|
buildCheckpointIfEmpty: z.boolean().optional(),
|
|
109
112
|
skipPushProposedBlocksToArchiver: z.boolean().optional(),
|
|
110
113
|
minBlocksForCheckpoint: z.number().positive().optional(),
|
|
@@ -115,6 +118,7 @@ export const SequencerConfigSchema = zodFor<SequencerConfig>()(
|
|
|
115
118
|
type SequencerConfigOptionalKeys =
|
|
116
119
|
| 'governanceProposerPayload'
|
|
117
120
|
| 'blockDurationMs'
|
|
121
|
+
| 'expectedBlockProposalsPerSlot'
|
|
118
122
|
| 'coinbase'
|
|
119
123
|
| 'feeRecipient'
|
|
120
124
|
| 'acvmWorkingDirectory'
|
|
@@ -62,7 +62,7 @@ export type ValidatorClientConfig = ValidatorHASignerConfig & {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
export type ValidatorClientFullConfig = ValidatorClientConfig &
|
|
65
|
-
Pick<SequencerConfig, 'txPublicSetupAllowList' | 'broadcastInvalidBlockProposal'> &
|
|
65
|
+
Pick<SequencerConfig, 'txPublicSetupAllowList' | 'broadcastInvalidBlockProposal' | 'maxTxsPerBlock'> &
|
|
66
66
|
Pick<
|
|
67
67
|
SlasherConfig,
|
|
68
68
|
'slashBroadcastedInvalidBlockPenalty' | 'slashDuplicateProposalPenalty' | 'slashDuplicateAttestationPenalty'
|
|
@@ -93,6 +93,7 @@ export const ValidatorClientFullConfigSchema = zodFor<Omit<ValidatorClientFullCo
|
|
|
93
93
|
ValidatorClientConfigSchema.extend({
|
|
94
94
|
txPublicSetupAllowList: z.array(AllowedElementSchema).optional(),
|
|
95
95
|
broadcastInvalidBlockProposal: z.boolean().optional(),
|
|
96
|
+
maxTxsPerBlock: z.number().optional(),
|
|
96
97
|
slashBroadcastedInvalidBlockPenalty: schemas.BigInt,
|
|
97
98
|
slashDuplicateProposalPenalty: schemas.BigInt,
|
|
98
99
|
slashDuplicateAttestationPenalty: schemas.BigInt,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { TxReceipt } from '../tx/tx_receipt.js';
|
|
2
|
+
import type { DebugLog } from './debug_log.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Store for debug logs emitted by public functions during transaction execution.
|
|
6
|
+
*
|
|
7
|
+
* Uses the Null Object pattern: production code uses NullDebugLogStore (no-op), while test mode uses
|
|
8
|
+
* InMemoryDebugLogStore (stores and serves logs).
|
|
9
|
+
*/
|
|
10
|
+
export interface DebugLogStore {
|
|
11
|
+
/** Store debug logs for a processed transaction. */
|
|
12
|
+
storeLogs(txHash: string, logs: DebugLog[]): void;
|
|
13
|
+
/** Decorate a TxReceipt with any stored debug logs for the given tx. */
|
|
14
|
+
decorateReceiptWithLogs(txHash: string, receipt: TxReceipt): void;
|
|
15
|
+
/** Whether debug log collection is enabled. */
|
|
16
|
+
readonly isEnabled: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** No-op implementation for production mode. */
|
|
20
|
+
export class NullDebugLogStore implements DebugLogStore {
|
|
21
|
+
storeLogs(_txHash: string, _logs: DebugLog[]): void {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
decorateReceiptWithLogs(_txHash: string, _receipt: TxReceipt): void {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
get isEnabled(): boolean {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** In-memory implementation for test mode that stores and serves debug logs. */
|
|
33
|
+
export class InMemoryDebugLogStore implements DebugLogStore {
|
|
34
|
+
private map = new Map<string, DebugLog[]>();
|
|
35
|
+
|
|
36
|
+
storeLogs(txHash: string, logs: DebugLog[]): void {
|
|
37
|
+
if (logs.length > 0) {
|
|
38
|
+
this.map.set(txHash, logs);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
decorateReceiptWithLogs(txHash: string, receipt: TxReceipt): void {
|
|
43
|
+
if (receipt.isMined()) {
|
|
44
|
+
const debugLogs = this.map.get(txHash);
|
|
45
|
+
if (debugLogs) {
|
|
46
|
+
receipt.debugLogs = debugLogs;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get isEnabled(): boolean {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
}
|