@aztec/stdlib 0.0.1-commit.d431d1c → 0.0.1-commit.e3c1de76
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/block/block_hash.d.ts +16 -18
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +21 -31
- package/dest/block/block_parameter.d.ts +4 -4
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -2
- package/dest/block/checkpointed_l2_block.d.ts +6 -6
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
- package/dest/block/checkpointed_l2_block.js +3 -3
- package/dest/block/in_block.d.ts +11 -11
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/in_block.js +4 -4
- package/dest/block/index.d.ts +2 -2
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -1
- package/dest/block/{l2_block_new.d.ts → l2_block.d.ts} +8 -7
- package/dest/block/l2_block.d.ts.map +1 -0
- package/dest/block/{l2_block_new.js → l2_block.js} +5 -9
- package/dest/block/l2_block_source.d.ts +39 -30
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_stream/interfaces.d.ts +3 -3
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +2 -3
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +4 -4
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +3 -3
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +2 -2
- package/dest/checkpoint/checkpoint.d.ts +8 -8
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +4 -4
- package/dest/checkpoint/published_checkpoint.d.ts +2 -2
- package/dest/config/node-rpc-config.js +1 -1
- package/dest/contract/contract_address.js +1 -1
- package/dest/contract/contract_class_id.d.ts +1 -1
- package/dest/contract/contract_class_id.js +1 -1
- package/dest/contract/private_function.d.ts +1 -1
- package/dest/contract/private_function.d.ts.map +1 -1
- package/dest/contract/private_function.js +2 -3
- package/dest/contract/private_function_membership_proof.d.ts +1 -1
- package/dest/contract/private_function_membership_proof.js +1 -1
- package/dest/database-version/database_version.d.ts +58 -0
- package/dest/database-version/database_version.d.ts.map +1 -0
- package/dest/database-version/database_version.js +69 -0
- package/dest/database-version/version_manager.d.ts +2 -50
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +1 -66
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
- package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
- package/dest/epoch-helpers/index.d.ts +3 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +5 -1
- package/dest/hash/hash.js +2 -2
- package/dest/hash/map_slot.d.ts +1 -1
- package/dest/hash/map_slot.d.ts.map +1 -1
- package/dest/hash/map_slot.js +4 -3
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +17 -16
- package/dest/interfaces/aztec-node-admin.d.ts +4 -1
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.d.ts +24 -38
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +12 -16
- package/dest/interfaces/block-builder.d.ts +13 -7
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +7 -0
- package/dest/interfaces/configs.d.ts +2 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/get_logs_response.d.ts +7 -7
- package/dest/interfaces/prover-client.d.ts +10 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +7 -1
- package/dest/interfaces/tx_provider.d.ts +3 -3
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +3 -3
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +4 -6
- package/dest/l1-contracts/slash_factory.d.ts +1 -1
- package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
- package/dest/l1-contracts/slash_factory.js +1 -0
- package/dest/logs/extended_public_log.d.ts +6 -6
- package/dest/logs/log_id.d.ts +8 -8
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +6 -5
- package/dest/logs/siloed_tag.d.ts +1 -1
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +4 -3
- package/dest/p2p/block_proposal.d.ts +13 -6
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +10 -3
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/message_validator.d.ts +18 -3
- package/dest/p2p/message_validator.d.ts.map +1 -1
- package/dest/p2p/message_validator.js +2 -1
- package/dest/stats/stats.d.ts +1 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.js +1 -1
- package/dest/tests/jest.d.ts +4 -4
- package/dest/tests/jest.js +9 -9
- package/dest/tests/mocks.d.ts +15 -10
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +19 -13
- package/dest/tx/block_header.d.ts +3 -2
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +3 -2
- package/dest/tx/in_tx.d.ts +3 -3
- package/dest/tx/indexed_tx_effect.d.ts +5 -5
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +3 -2
- package/dest/tx/tx_receipt.d.ts +42 -14
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +46 -15
- package/package.json +11 -10
- package/src/block/block_hash.ts +26 -47
- package/src/block/block_parameter.ts +3 -3
- package/src/block/checkpointed_l2_block.ts +4 -4
- package/src/block/in_block.ts +7 -7
- package/src/block/index.ts +1 -1
- package/src/block/{l2_block_new.ts → l2_block.ts} +8 -12
- package/src/block/l2_block_source.ts +40 -31
- package/src/block/l2_block_stream/interfaces.ts +2 -2
- package/src/block/l2_block_stream/l2_block_stream.ts +5 -6
- package/src/block/l2_block_stream/l2_tips_store_base.ts +2 -2
- package/src/block/test/l2_tips_store_test_suite.ts +4 -4
- package/src/checkpoint/checkpoint.ts +7 -7
- package/src/config/node-rpc-config.ts +1 -1
- package/src/contract/contract_address.ts +1 -1
- package/src/contract/contract_class_id.ts +1 -1
- package/src/contract/private_function.ts +2 -3
- package/src/contract/private_function_membership_proof.ts +1 -1
- package/src/database-version/database_version.ts +87 -0
- package/src/database-version/version_manager.ts +1 -77
- package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
- package/src/epoch-helpers/index.ts +10 -1
- package/src/hash/hash.ts +2 -2
- package/src/hash/map_slot.ts +3 -2
- package/src/interfaces/archiver.ts +17 -25
- package/src/interfaces/aztec-node.ts +39 -93
- package/src/interfaces/block-builder.ts +15 -5
- package/src/interfaces/configs.ts +1 -3
- package/src/interfaces/prover-client.ts +15 -0
- package/src/interfaces/tx_provider.ts +2 -2
- package/src/interfaces/validator.ts +2 -4
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +1 -10
- package/src/l1-contracts/slash_factory.ts +1 -0
- package/src/logs/log_id.ts +7 -6
- package/src/logs/siloed_tag.ts +3 -2
- package/src/p2p/block_proposal.ts +12 -5
- package/src/p2p/checkpoint_proposal.ts +9 -2
- package/src/p2p/message_validator.ts +14 -2
- package/src/stats/stats.ts +0 -2
- package/src/tests/factories.ts +1 -1
- package/src/tests/jest.ts +9 -9
- package/src/tests/mocks.ts +26 -17
- package/src/tx/block_header.ts +7 -4
- package/src/tx/indexed_tx_effect.ts +3 -2
- package/src/tx/tx_receipt.ts +75 -18
- package/dest/block/l2_block_new.d.ts.map +0 -1
- package/dest/database-version/index.d.ts +0 -2
- package/dest/database-version/index.d.ts.map +0 -1
- package/dest/database-version/index.js +0 -1
- package/src/database-version/index.ts +0 -1
package/src/tests/mocks.ts
CHANGED
|
@@ -22,7 +22,7 @@ import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
|
|
|
22
22
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
23
23
|
import { RevertCode } from '../avm/revert_code.js';
|
|
24
24
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
25
|
-
import { CheckpointedL2Block, CommitteeAttestation,
|
|
25
|
+
import { CheckpointedL2Block, CommitteeAttestation, L2Block } from '../block/index.js';
|
|
26
26
|
import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
|
|
27
27
|
import { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
28
28
|
import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
|
|
@@ -97,12 +97,14 @@ export const mockTx = async (
|
|
|
97
97
|
publicCalldataSize = 2,
|
|
98
98
|
feePayer,
|
|
99
99
|
chonkProof = ChonkProof.random(),
|
|
100
|
+
maxFeesPerGas = new GasFees(10, 10),
|
|
100
101
|
maxPriorityFeesPerGas,
|
|
101
102
|
gasUsed = Gas.empty(),
|
|
102
103
|
chainId = Fr.ZERO,
|
|
103
104
|
version = Fr.ZERO,
|
|
104
105
|
vkTreeRoot = Fr.ZERO,
|
|
105
106
|
protocolContractsHash = Fr.ZERO,
|
|
107
|
+
anchorBlockHeader = BlockHeader.empty(),
|
|
106
108
|
}: {
|
|
107
109
|
numberOfNonRevertiblePublicCallRequests?: number;
|
|
108
110
|
numberOfRevertiblePublicCallRequests?: number;
|
|
@@ -111,12 +113,14 @@ export const mockTx = async (
|
|
|
111
113
|
publicCalldataSize?: number;
|
|
112
114
|
feePayer?: AztecAddress;
|
|
113
115
|
chonkProof?: ChonkProof;
|
|
116
|
+
maxFeesPerGas?: GasFees;
|
|
114
117
|
maxPriorityFeesPerGas?: GasFees;
|
|
115
118
|
gasUsed?: Gas;
|
|
116
119
|
chainId?: Fr;
|
|
117
120
|
version?: Fr;
|
|
118
121
|
vkTreeRoot?: Fr;
|
|
119
122
|
protocolContractsHash?: Fr;
|
|
123
|
+
anchorBlockHeader?: BlockHeader;
|
|
120
124
|
} = {},
|
|
121
125
|
) => {
|
|
122
126
|
const totalPublicCallRequests =
|
|
@@ -126,10 +130,8 @@ export const mockTx = async (
|
|
|
126
130
|
const isForPublic = totalPublicCallRequests > 0;
|
|
127
131
|
const data = PrivateKernelTailCircuitPublicInputs.empty();
|
|
128
132
|
const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
|
|
129
|
-
data.constants.
|
|
130
|
-
|
|
131
|
-
maxPriorityFeesPerGas,
|
|
132
|
-
});
|
|
133
|
+
data.constants.anchorBlockHeader = anchorBlockHeader;
|
|
134
|
+
data.constants.txContext.gasSettings = GasSettings.default({ maxFeesPerGas, maxPriorityFeesPerGas });
|
|
133
135
|
data.feePayer = feePayer ?? (await AztecAddress.random());
|
|
134
136
|
data.gasUsed = gasUsed;
|
|
135
137
|
data.constants.txContext.chainId = chainId;
|
|
@@ -404,32 +406,37 @@ export async function mockCheckpointAndMessages(
|
|
|
404
406
|
numL1ToL2Messages = 1,
|
|
405
407
|
makeBlockOptions = () => ({}),
|
|
406
408
|
previousArchive,
|
|
409
|
+
maxEffects,
|
|
407
410
|
...options
|
|
408
411
|
}: {
|
|
409
412
|
startBlockNumber?: BlockNumber;
|
|
410
413
|
numBlocks?: number;
|
|
411
414
|
numTxsPerBlock?: number;
|
|
412
415
|
numL1ToL2Messages?: number;
|
|
413
|
-
makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof
|
|
416
|
+
makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2Block.random>[1]>;
|
|
414
417
|
previousArchive?: AppendOnlyTreeSnapshot;
|
|
415
|
-
blocks?:
|
|
418
|
+
blocks?: L2Block[];
|
|
419
|
+
maxEffects?: number;
|
|
416
420
|
} & Partial<Parameters<typeof Checkpoint.random>[1]> &
|
|
417
|
-
Partial<Parameters<typeof
|
|
421
|
+
Partial<Parameters<typeof L2Block.random>[1]> = {},
|
|
418
422
|
) {
|
|
419
|
-
const slotNumber = options.slotNumber ?? SlotNumber(checkpointNumber * 10);
|
|
423
|
+
const slotNumber = options.slotNumber ?? SlotNumber(Number(checkpointNumber) * 10);
|
|
420
424
|
const blocksAndMessages = [];
|
|
421
425
|
// Track the previous block's archive to ensure consecutive blocks have consistent archive roots.
|
|
422
426
|
// The current block's header.lastArchive must equal the previous block's archive.
|
|
423
427
|
let lastArchive: AppendOnlyTreeSnapshot | undefined = previousArchive;
|
|
428
|
+
// Pass maxEffects via txOptions so it reaches TxEffect.random
|
|
429
|
+
const txOptions = maxEffects !== undefined ? { maxEffects } : {};
|
|
424
430
|
for (let i = 0; i < (blocks?.length ?? numBlocks); i++) {
|
|
425
431
|
const blockNumber = BlockNumber(startBlockNumber + i);
|
|
426
432
|
const { block, messages } = {
|
|
427
433
|
block:
|
|
428
434
|
blocks?.[i] ??
|
|
429
|
-
(await
|
|
435
|
+
(await L2Block.random(blockNumber, {
|
|
430
436
|
checkpointNumber,
|
|
431
437
|
indexWithinCheckpoint: IndexWithinCheckpoint(i),
|
|
432
438
|
txsPerBlock: numTxsPerBlock,
|
|
439
|
+
txOptions,
|
|
433
440
|
slotNumber,
|
|
434
441
|
...options,
|
|
435
442
|
...makeBlockOptions(blockNumber),
|
|
@@ -670,15 +677,15 @@ export const makeCheckpointAttestationFromCheckpoint = (
|
|
|
670
677
|
};
|
|
671
678
|
|
|
672
679
|
/**
|
|
673
|
-
* Create a checkpoint attestation from an
|
|
674
|
-
* Note: This is a compatibility function for tests.
|
|
680
|
+
* Create a checkpoint attestation from an L2Block
|
|
681
|
+
* Note: This is a compatibility function for tests. L2Block doesn't have a checkpoint header directly.
|
|
675
682
|
*/
|
|
676
683
|
export const makeCheckpointAttestationFromBlock = (
|
|
677
|
-
block:
|
|
684
|
+
block: L2Block,
|
|
678
685
|
attesterSigner?: Secp256k1Signer,
|
|
679
686
|
proposerSigner?: Secp256k1Signer,
|
|
680
687
|
): CheckpointAttestation => {
|
|
681
|
-
// For
|
|
688
|
+
// For L2Block, we create a minimal checkpoint header for testing purposes
|
|
682
689
|
const header = CheckpointHeader.empty({
|
|
683
690
|
lastArchiveRoot: block.header.lastArchive.root,
|
|
684
691
|
slotNumber: block.slot,
|
|
@@ -694,7 +701,7 @@ export async function randomPublishedL2Block(
|
|
|
694
701
|
l2BlockNumber: number,
|
|
695
702
|
opts: { signers?: Secp256k1Signer[] } = {},
|
|
696
703
|
): Promise<CheckpointedL2Block> {
|
|
697
|
-
const block = await
|
|
704
|
+
const block = await L2Block.random(BlockNumber(l2BlockNumber));
|
|
698
705
|
const l1 = L1PublishedData.fromFields({
|
|
699
706
|
blockNumber: BigInt(block.number),
|
|
700
707
|
timestamp: block.header.globalVariables.timestamp,
|
|
@@ -702,7 +709,9 @@ export async function randomPublishedL2Block(
|
|
|
702
709
|
});
|
|
703
710
|
|
|
704
711
|
const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
|
|
705
|
-
const checkpoint = await Checkpoint.random(CheckpointNumber(l2BlockNumber), {
|
|
712
|
+
const checkpoint = await Checkpoint.random(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), {
|
|
713
|
+
numBlocks: 0,
|
|
714
|
+
});
|
|
706
715
|
checkpoint.blocks = [block];
|
|
707
716
|
const atts = signers.map(signer =>
|
|
708
717
|
makeCheckpointAttestation({
|
|
@@ -714,5 +723,5 @@ export async function randomPublishedL2Block(
|
|
|
714
723
|
const attestations = atts.map(
|
|
715
724
|
(attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
|
|
716
725
|
);
|
|
717
|
-
return new CheckpointedL2Block(CheckpointNumber(l2BlockNumber), block, l1, attestations);
|
|
726
|
+
return new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), block, l1, attestations);
|
|
718
727
|
}
|
package/src/tx/block_header.ts
CHANGED
|
@@ -11,13 +11,14 @@ import type { FieldsOf } from '@aztec/foundation/types';
|
|
|
11
11
|
import { inspect } from 'util';
|
|
12
12
|
import { z } from 'zod';
|
|
13
13
|
|
|
14
|
+
import { BlockHash } from '../block/block_hash.js';
|
|
14
15
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
15
16
|
import { GlobalVariables } from './global_variables.js';
|
|
16
17
|
import { StateReference } from './state_reference.js';
|
|
17
18
|
|
|
18
19
|
/** A header of an L2 block. */
|
|
19
20
|
export class BlockHeader {
|
|
20
|
-
private _cachedHash?: Promise<
|
|
21
|
+
private _cachedHash?: Promise<BlockHash>;
|
|
21
22
|
|
|
22
23
|
constructor(
|
|
23
24
|
/** Snapshot of archive before the block is applied. */
|
|
@@ -161,16 +162,18 @@ export class BlockHeader {
|
|
|
161
162
|
return BlockHeader.fromBuffer(hexToBuffer(str));
|
|
162
163
|
}
|
|
163
164
|
|
|
164
|
-
hash(): Promise<
|
|
165
|
+
hash(): Promise<BlockHash> {
|
|
165
166
|
if (!this._cachedHash) {
|
|
166
|
-
this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.
|
|
167
|
+
this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then(
|
|
168
|
+
fr => new BlockHash(fr),
|
|
169
|
+
);
|
|
167
170
|
}
|
|
168
171
|
return this._cachedHash;
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
/** Manually set the hash for this block header if already computed */
|
|
172
175
|
setHash(hashed: Fr) {
|
|
173
|
-
this._cachedHash = Promise.resolve(hashed);
|
|
176
|
+
this._cachedHash = Promise.resolve(new BlockHash(hashed));
|
|
174
177
|
}
|
|
175
178
|
|
|
176
179
|
static random(overrides: Partial<FieldsOf<BlockHeader>> & Partial<FieldsOf<GlobalVariables>> = {}): BlockHeader {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
|
|
5
|
-
import {
|
|
6
|
+
import { BlockHash } from '../block/block_hash.js';
|
|
6
7
|
import { type DataInBlock, dataInBlockSchemaFor, randomDataInBlock } from '../block/in_block.js';
|
|
7
8
|
import { TxEffect } from './tx_effect.js';
|
|
8
9
|
|
|
@@ -26,7 +27,7 @@ export function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer {
|
|
|
26
27
|
export function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect {
|
|
27
28
|
const reader = BufferReader.asReader(buffer);
|
|
28
29
|
|
|
29
|
-
const l2BlockHash = reader.readObject(
|
|
30
|
+
const l2BlockHash = new BlockHash(reader.readObject(Fr));
|
|
30
31
|
const l2BlockNumber = BlockNumber(reader.readNumber());
|
|
31
32
|
const txIndexInBlock = reader.readNumber();
|
|
32
33
|
const data = reader.readObject(TxEffect);
|
package/src/tx/tx_receipt.ts
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { BlockNumber, BlockNumberSchema } from '@aztec/foundation/branded-types';
|
|
2
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
3
2
|
|
|
4
3
|
import { z } from 'zod';
|
|
5
4
|
|
|
6
5
|
import { RevertCode } from '../avm/revert_code.js';
|
|
7
|
-
import {
|
|
6
|
+
import { BlockHash } from '../block/block_hash.js';
|
|
8
7
|
import { type ZodFor, schemas } from '../schemas/schemas.js';
|
|
9
8
|
import { TxHash } from './tx_hash.js';
|
|
10
9
|
|
|
11
|
-
/**
|
|
12
|
-
* Possible status of a transaction.
|
|
13
|
-
*/
|
|
10
|
+
/** Block inclusion/finalization status. */
|
|
14
11
|
export enum TxStatus {
|
|
15
12
|
DROPPED = 'dropped',
|
|
16
13
|
PENDING = 'pending',
|
|
14
|
+
PROPOSED = 'proposed',
|
|
15
|
+
CHECKPOINTED = 'checkpointed',
|
|
16
|
+
PROVEN = 'proven',
|
|
17
|
+
FINALIZED = 'finalized', // TODO(#13569): Implement finalized status properly
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Tx status sorted by finalization progress. */
|
|
21
|
+
export const SortedTxStatuses: TxStatus[] = [
|
|
22
|
+
TxStatus.DROPPED,
|
|
23
|
+
TxStatus.PENDING,
|
|
24
|
+
TxStatus.PROPOSED,
|
|
25
|
+
TxStatus.CHECKPOINTED,
|
|
26
|
+
TxStatus.PROVEN,
|
|
27
|
+
TxStatus.FINALIZED,
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
/** Execution result - only set when tx is in a block. */
|
|
31
|
+
export enum TxExecutionResult {
|
|
17
32
|
SUCCESS = 'success',
|
|
18
33
|
APP_LOGIC_REVERTED = 'app_logic_reverted',
|
|
19
34
|
TEARDOWN_REVERTED = 'teardown_reverted',
|
|
@@ -30,20 +45,52 @@ export class TxReceipt {
|
|
|
30
45
|
constructor(
|
|
31
46
|
/** A unique identifier for a transaction. */
|
|
32
47
|
public txHash: TxHash,
|
|
33
|
-
/** The transaction's status. */
|
|
48
|
+
/** The transaction's block finalization status. */
|
|
34
49
|
public status: TxStatus,
|
|
50
|
+
/** The execution result of the transaction, only set when tx is in a block. */
|
|
51
|
+
public executionResult: TxExecutionResult | undefined,
|
|
35
52
|
/** Description of transaction error, if any. */
|
|
36
|
-
public error: string,
|
|
53
|
+
public error: string | undefined,
|
|
37
54
|
/** The transaction fee paid for the transaction. */
|
|
38
55
|
public transactionFee?: bigint,
|
|
39
56
|
/** The hash of the block containing the transaction. */
|
|
40
|
-
public blockHash?:
|
|
57
|
+
public blockHash?: BlockHash,
|
|
41
58
|
/** The block number in which the transaction was included. */
|
|
42
59
|
public blockNumber?: BlockNumber,
|
|
43
60
|
) {}
|
|
44
61
|
|
|
62
|
+
/** Returns true if the transaction was executed successfully. */
|
|
63
|
+
hasExecutionSucceeded(): boolean {
|
|
64
|
+
return this.executionResult === TxExecutionResult.SUCCESS;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** Returns true if the transaction execution reverted. */
|
|
68
|
+
hasExecutionReverted(): boolean {
|
|
69
|
+
return this.executionResult !== undefined && this.executionResult !== TxExecutionResult.SUCCESS;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Returns true if the transaction has been included in a block (proposed, checkpointed, proven, or finalized). */
|
|
73
|
+
isMined(): boolean {
|
|
74
|
+
return (
|
|
75
|
+
this.status === TxStatus.PROPOSED ||
|
|
76
|
+
this.status === TxStatus.CHECKPOINTED ||
|
|
77
|
+
this.status === TxStatus.PROVEN ||
|
|
78
|
+
this.status === TxStatus.FINALIZED
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Returns true if the transaction is pending. */
|
|
83
|
+
isPending(): boolean {
|
|
84
|
+
return this.status === TxStatus.PENDING;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Returns true if the transaction was dropped. */
|
|
88
|
+
isDropped(): boolean {
|
|
89
|
+
return this.status === TxStatus.DROPPED;
|
|
90
|
+
}
|
|
91
|
+
|
|
45
92
|
static empty() {
|
|
46
|
-
return new TxReceipt(TxHash.zero(), TxStatus.DROPPED,
|
|
93
|
+
return new TxReceipt(TxHash.zero(), TxStatus.DROPPED, undefined, undefined);
|
|
47
94
|
}
|
|
48
95
|
|
|
49
96
|
static get schema(): ZodFor<TxReceipt> {
|
|
@@ -51,18 +98,28 @@ export class TxReceipt {
|
|
|
51
98
|
.object({
|
|
52
99
|
txHash: TxHash.schema,
|
|
53
100
|
status: z.nativeEnum(TxStatus),
|
|
54
|
-
|
|
55
|
-
|
|
101
|
+
executionResult: z.nativeEnum(TxExecutionResult).optional(),
|
|
102
|
+
error: z.string().optional(),
|
|
103
|
+
blockHash: BlockHash.schema.optional(),
|
|
56
104
|
blockNumber: BlockNumberSchema.optional(),
|
|
57
105
|
transactionFee: schemas.BigInt.optional(),
|
|
58
106
|
})
|
|
59
|
-
.transform(TxReceipt.from);
|
|
107
|
+
.transform(fields => TxReceipt.from(fields));
|
|
60
108
|
}
|
|
61
109
|
|
|
62
|
-
static from(fields:
|
|
110
|
+
static from(fields: {
|
|
111
|
+
txHash: TxHash;
|
|
112
|
+
status: TxStatus;
|
|
113
|
+
executionResult?: TxExecutionResult;
|
|
114
|
+
error?: string;
|
|
115
|
+
transactionFee?: bigint;
|
|
116
|
+
blockHash?: BlockHash;
|
|
117
|
+
blockNumber?: BlockNumber;
|
|
118
|
+
}) {
|
|
63
119
|
return new TxReceipt(
|
|
64
120
|
fields.txHash,
|
|
65
121
|
fields.status,
|
|
122
|
+
fields.executionResult,
|
|
66
123
|
fields.error,
|
|
67
124
|
fields.transactionFee,
|
|
68
125
|
fields.blockHash,
|
|
@@ -70,15 +127,15 @@ export class TxReceipt {
|
|
|
70
127
|
);
|
|
71
128
|
}
|
|
72
129
|
|
|
73
|
-
public static
|
|
130
|
+
public static executionResultFromRevertCode(revertCode: RevertCode): TxExecutionResult {
|
|
74
131
|
if (revertCode.equals(RevertCode.OK)) {
|
|
75
|
-
return
|
|
132
|
+
return TxExecutionResult.SUCCESS;
|
|
76
133
|
} else if (revertCode.equals(RevertCode.APP_LOGIC_REVERTED)) {
|
|
77
|
-
return
|
|
134
|
+
return TxExecutionResult.APP_LOGIC_REVERTED;
|
|
78
135
|
} else if (revertCode.equals(RevertCode.TEARDOWN_REVERTED)) {
|
|
79
|
-
return
|
|
136
|
+
return TxExecutionResult.TEARDOWN_REVERTED;
|
|
80
137
|
} else if (revertCode.equals(RevertCode.BOTH_REVERTED)) {
|
|
81
|
-
return
|
|
138
|
+
return TxExecutionResult.BOTH_REVERTED;
|
|
82
139
|
} else {
|
|
83
140
|
throw new Error(`Unknown revert code: ${revertCode.getCode()}`);
|
|
84
141
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"l2_block_new.d.ts","sourceRoot":"","sources":["../../src/block/l2_block_new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './version_manager.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS12ZXJzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database-version/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './version_manager.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './version_manager.js';
|