@aztec/stdlib 0.0.1-commit.2d9cb6034 → 0.0.1-commit.2e20a94
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/authorization_selector.d.ts +3 -6
- package/dest/abi/authorization_selector.d.ts.map +1 -1
- package/dest/abi/event_selector.d.ts +3 -6
- package/dest/abi/event_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.d.ts +3 -6
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +1 -3
- package/dest/abi/note_selector.d.ts +3 -6
- package/dest/abi/note_selector.d.ts.map +1 -1
- package/dest/abi/note_selector.js +1 -3
- package/dest/abi/selector.d.ts +2 -2
- package/dest/abi/selector.d.ts.map +1 -1
- package/dest/abi/selector.js +1 -1
- package/dest/avm/avm.d.ts +300 -300
- package/dest/avm/revert_code.d.ts +8 -18
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +15 -30
- package/dest/aztec-address/index.d.ts +3 -6
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +2 -4
- package/dest/block/block_data.d.ts +8 -8
- package/dest/block/block_data.d.ts.map +1 -1
- package/dest/block/block_data.js +2 -2
- package/dest/block/block_hash.d.ts +11 -10
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +10 -9
- package/dest/block/l2_block_info.d.ts +6 -5
- package/dest/block/l2_block_info.d.ts.map +1 -1
- package/dest/block/l2_block_info.js +6 -5
- package/dest/block/l2_block_stream/interfaces.d.ts +6 -3
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.js +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +1 -1
- package/dest/config/chain-config.d.ts +1 -1
- package/dest/config/chain-config.d.ts.map +1 -1
- package/dest/config/chain-config.js +7 -1
- package/dest/config/sequencer-config.d.ts +2 -2
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +10 -3
- package/dest/gas/fee_math.d.ts +49 -0
- package/dest/gas/fee_math.d.ts.map +1 -0
- package/dest/gas/fee_math.js +80 -0
- package/dest/gas/gas_fees.d.ts +1 -1
- package/dest/gas/gas_fees.d.ts.map +1 -1
- package/dest/gas/gas_fees.js +10 -1
- package/dest/gas/gas_settings.d.ts +40 -3
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +50 -6
- package/dest/gas/index.d.ts +2 -1
- package/dest/gas/index.d.ts.map +1 -1
- package/dest/gas/index.js +1 -0
- package/dest/ha-signing/index.d.ts +2 -2
- package/dest/ha-signing/index.d.ts.map +1 -1
- package/dest/ha-signing/index.js +1 -1
- package/dest/ha-signing/local_config.js +1 -1
- package/dest/ha-signing/types.d.ts +37 -32
- package/dest/ha-signing/types.d.ts.map +1 -1
- package/dest/ha-signing/types.js +13 -6
- package/dest/interfaces/aztec-node-admin.d.ts +4 -11
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +3 -3
- package/dest/interfaces/aztec-node-debug.d.ts +21 -0
- package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
- package/dest/interfaces/aztec-node-debug.js +18 -0
- package/dest/interfaces/aztec-node.d.ts +10 -1
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +2 -0
- package/dest/interfaces/client.d.ts +2 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +1 -0
- package/dest/interfaces/merkle_tree_operations.d.ts +4 -3
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/prover-client.d.ts +1 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +0 -3
- package/dest/interfaces/slasher.d.ts +1 -10
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +0 -2
- package/dest/interfaces/validator.d.ts +8 -11
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/l1-contracts/index.d.ts +2 -2
- package/dest/l1-contracts/index.d.ts.map +1 -1
- package/dest/l1-contracts/index.js +1 -1
- package/dest/logs/log_id.d.ts +1 -1
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +1 -2
- package/dest/logs/siloed_tag.d.ts +5 -7
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +4 -0
- package/dest/logs/tag.d.ts +5 -6
- package/dest/logs/tag.d.ts.map +1 -1
- package/dest/logs/tag.js +4 -0
- package/dest/p2p/block_proposal.d.ts +6 -8
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +4 -9
- package/dest/p2p/checkpoint_attestation.d.ts +4 -6
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +2 -7
- package/dest/p2p/checkpoint_proposal.d.ts +8 -10
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +5 -24
- package/dest/p2p/gossipable.d.ts +4 -4
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/slashing/index.d.ts +2 -3
- package/dest/slashing/index.d.ts.map +1 -1
- package/dest/slashing/index.js +1 -2
- package/dest/slashing/serialization.d.ts +2 -6
- package/dest/slashing/serialization.d.ts.map +1 -1
- package/dest/slashing/serialization.js +0 -60
- package/dest/slashing/types.d.ts +4 -90
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +0 -14
- package/dest/slashing/{tally.d.ts → votes.d.ts} +1 -1
- package/dest/slashing/{tally.d.ts.map → votes.d.ts.map} +1 -1
- package/dest/slashing/{tally.js → votes.js} +1 -1
- package/dest/tests/factories.js +1 -1
- package/dest/tests/mocks.d.ts +1 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +14 -19
- package/dest/timetable/index.d.ts +51 -1
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +204 -14
- package/dest/tx/block_header.d.ts +2 -2
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +1 -1
- package/dest/tx/fee_provider.d.ts +10 -0
- package/dest/tx/fee_provider.d.ts.map +1 -0
- package/dest/tx/fee_provider.js +1 -0
- package/dest/tx/global_variable_builder.d.ts +3 -16
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- 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 +1 -1
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +1 -2
- package/dest/tx/simulated_tx.d.ts +4 -4
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/simulated_tx.js +3 -3
- package/dest/tx/tx.d.ts +3 -3
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx_receipt.d.ts +8 -4
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +8 -15
- package/dest/world-state/genesis_data.d.ts +11 -0
- package/dest/world-state/genesis_data.d.ts.map +1 -0
- package/dest/world-state/genesis_data.js +4 -0
- package/dest/world-state/index.d.ts +2 -1
- package/dest/world-state/index.d.ts.map +1 -1
- package/dest/world-state/index.js +1 -0
- package/package.json +8 -8
- package/src/abi/authorization_selector.ts +2 -8
- package/src/abi/event_selector.ts +2 -8
- package/src/abi/function_selector.ts +3 -12
- package/src/abi/note_selector.ts +3 -12
- package/src/abi/selector.ts +1 -1
- package/src/avm/revert_code.ts +25 -39
- package/src/aztec-address/index.ts +4 -10
- package/src/block/block_data.ts +3 -4
- package/src/block/block_hash.ts +21 -14
- package/src/block/l2_block_info.ts +8 -6
- package/src/block/l2_block_stream/interfaces.ts +6 -2
- package/src/block/l2_block_stream/l2_tips_store_base.ts +1 -1
- package/src/block/test/l2_tips_store_test_suite.ts +1 -1
- package/src/config/chain-config.ts +7 -1
- package/src/config/sequencer-config.ts +14 -4
- package/src/gas/README.md +31 -0
- package/src/gas/fee_math.ts +120 -0
- package/src/gas/gas_fees.ts +12 -4
- package/src/gas/gas_settings.ts +65 -12
- package/src/gas/index.ts +1 -0
- package/src/ha-signing/index.ts +3 -1
- package/src/ha-signing/local_config.ts +1 -1
- package/src/ha-signing/types.ts +48 -34
- package/src/interfaces/aztec-node-admin.ts +5 -7
- package/src/interfaces/aztec-node-debug.ts +40 -0
- package/src/interfaces/aztec-node.ts +15 -0
- package/src/interfaces/client.ts +1 -0
- package/src/interfaces/merkle_tree_operations.ts +3 -2
- package/src/interfaces/prover-client.ts +2 -5
- package/src/interfaces/slasher.ts +0 -6
- package/src/interfaces/validator.ts +15 -8
- package/src/l1-contracts/index.ts +1 -1
- package/src/logs/log_id.ts +1 -2
- package/src/logs/siloed_tag.ts +8 -9
- package/src/logs/tag.ts +8 -8
- package/src/p2p/block_proposal.ts +13 -9
- package/src/p2p/checkpoint_attestation.ts +5 -9
- package/src/p2p/checkpoint_proposal.ts +21 -36
- package/src/p2p/gossipable.ts +4 -4
- package/src/slashing/index.ts +1 -2
- package/src/slashing/serialization.ts +1 -81
- package/src/slashing/types.ts +3 -35
- package/src/slashing/{tally.ts → votes.ts} +1 -1
- package/src/tests/factories.ts +1 -1
- package/src/tests/mocks.ts +16 -12
- package/src/timetable/index.ts +293 -13
- package/src/tx/block_header.ts +2 -2
- package/src/tx/fee_provider.ts +10 -0
- package/src/tx/global_variable_builder.ts +2 -18
- package/src/tx/index.ts +1 -0
- package/src/tx/indexed_tx_effect.ts +1 -2
- package/src/tx/simulated_tx.ts +6 -2
- package/src/tx/tx.ts +2 -2
- package/src/tx/tx_receipt.ts +11 -14
- package/src/world-state/genesis_data.ts +15 -0
- package/src/world-state/index.ts +1 -0
- package/dest/l1-contracts/slash_factory.d.ts +0 -45
- package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
- package/dest/l1-contracts/slash_factory.js +0 -158
- package/dest/slashing/empire.d.ts +0 -31
- package/dest/slashing/empire.d.ts.map +0 -1
- package/dest/slashing/empire.js +0 -87
- package/src/l1-contracts/slash_factory.ts +0 -180
- package/src/slashing/empire.ts +0 -104
package/dest/tx/tx_receipt.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BlockNumberSchema, EpochNumberSchema } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { RevertCode } from '../avm/revert_code.js';
|
|
4
3
|
import { BlockHash } from '../block/block_hash.js';
|
|
5
4
|
import { DebugLog } from '../logs/debug_log.js';
|
|
6
5
|
import { schemas } from '../schemas/schemas.js';
|
|
@@ -24,9 +23,13 @@ import { TxHash } from './tx_hash.js';
|
|
|
24
23
|
];
|
|
25
24
|
/** Execution result - only set when tx is in a block. */ export var TxExecutionResult = /*#__PURE__*/ function(TxExecutionResult) {
|
|
26
25
|
TxExecutionResult["SUCCESS"] = "success";
|
|
27
|
-
TxExecutionResult["
|
|
28
|
-
|
|
29
|
-
TxExecutionResult["
|
|
26
|
+
TxExecutionResult["REVERTED"] = "reverted";
|
|
27
|
+
/** @deprecated Use REVERTED instead. */ // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
|
|
28
|
+
TxExecutionResult["APP_LOGIC_REVERTED"] = "reverted";
|
|
29
|
+
/** @deprecated Use REVERTED instead. */ // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
|
|
30
|
+
TxExecutionResult["TEARDOWN_REVERTED"] = "reverted";
|
|
31
|
+
/** @deprecated Use REVERTED instead. */ // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
|
|
32
|
+
TxExecutionResult["BOTH_REVERTED"] = "reverted";
|
|
30
33
|
return TxExecutionResult;
|
|
31
34
|
}({});
|
|
32
35
|
/**
|
|
@@ -94,16 +97,6 @@ import { TxHash } from './tx_hash.js';
|
|
|
94
97
|
return new TxReceipt(fields.txHash, fields.status, fields.executionResult, fields.error, fields.transactionFee, fields.blockHash, fields.blockNumber, fields.epochNumber, fields.debugLogs);
|
|
95
98
|
}
|
|
96
99
|
static executionResultFromRevertCode(revertCode) {
|
|
97
|
-
|
|
98
|
-
return "success";
|
|
99
|
-
} else if (revertCode.equals(RevertCode.APP_LOGIC_REVERTED)) {
|
|
100
|
-
return "app_logic_reverted";
|
|
101
|
-
} else if (revertCode.equals(RevertCode.TEARDOWN_REVERTED)) {
|
|
102
|
-
return "teardown_reverted";
|
|
103
|
-
} else if (revertCode.equals(RevertCode.BOTH_REVERTED)) {
|
|
104
|
-
return "both_reverted";
|
|
105
|
-
} else {
|
|
106
|
-
throw new Error(`Unknown revert code: ${revertCode.getCode()}`);
|
|
107
|
-
}
|
|
100
|
+
return revertCode.isOK() ? "success" : "reverted";
|
|
108
101
|
}
|
|
109
102
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PublicDataTreeLeaf } from '../trees/index.js';
|
|
2
|
+
/** Data used to initialize the genesis block, including prefilled public state and an optional timestamp. */
|
|
3
|
+
export type GenesisData = {
|
|
4
|
+
/** Public data tree leaves to pre-populate in the genesis state (e.g. fee juice balances). */
|
|
5
|
+
prefilledPublicData: PublicDataTreeLeaf[];
|
|
6
|
+
/** Timestamp for the genesis block header. Defaults to 0 (canonical empty genesis) in production. */
|
|
7
|
+
genesisTimestamp: bigint;
|
|
8
|
+
};
|
|
9
|
+
/** An empty genesis data with no prefilled state and a zero timestamp. */
|
|
10
|
+
export declare const EMPTY_GENESIS_DATA: GenesisData;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXNpc19kYXRhLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUvZ2VuZXNpc19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsNkdBQTZHO0FBQzdHLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsOEZBQThGO0lBQzlGLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDMUMscUdBQXFHO0lBQ3JHLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUMxQixDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLGVBQU8sTUFBTSxrQkFBa0IsRUFBRSxXQUdoQyxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis_data.d.ts","sourceRoot":"","sources":["../../src/world-state/genesis_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,6GAA6G;AAC7G,MAAM,MAAM,WAAW,GAAG;IACxB,8FAA8F;IAC9F,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,qGAAqG;IACrG,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,EAAE,WAGhC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
export * from './genesis_data.js';
|
|
1
2
|
export * from './world_state_revision.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JsZC1zdGF0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world-state/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world-state/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.2e20a94",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -92,13 +92,13 @@
|
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
94
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
95
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
96
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
97
|
-
"@aztec/constants": "0.0.1-commit.
|
|
98
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
99
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
100
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
101
|
-
"@aztec/noir-noirc_abi": "0.0.1-commit.
|
|
95
|
+
"@aztec/bb.js": "0.0.1-commit.2e20a94",
|
|
96
|
+
"@aztec/blob-lib": "0.0.1-commit.2e20a94",
|
|
97
|
+
"@aztec/constants": "0.0.1-commit.2e20a94",
|
|
98
|
+
"@aztec/ethereum": "0.0.1-commit.2e20a94",
|
|
99
|
+
"@aztec/foundation": "0.0.1-commit.2e20a94",
|
|
100
|
+
"@aztec/l1-artifacts": "0.0.1-commit.2e20a94",
|
|
101
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.2e20a94",
|
|
102
102
|
"@google-cloud/storage": "^7.15.0",
|
|
103
103
|
"axios": "^1.13.5",
|
|
104
104
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -7,18 +7,12 @@ import { BufferReader } from '@aztec/foundation/serialize';
|
|
|
7
7
|
|
|
8
8
|
import { Selector } from './selector.js';
|
|
9
9
|
|
|
10
|
-
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
11
|
-
|
|
12
|
-
/** Authorization selector branding */
|
|
13
|
-
export interface AuthorizationSelector {
|
|
14
|
-
/** Brand. */
|
|
15
|
-
_branding: 'AuthorizationSelector';
|
|
16
|
-
}
|
|
17
|
-
|
|
18
10
|
/**
|
|
19
11
|
* An authorization selector is the first 4 bytes of the hash of an authorization struct signature.
|
|
20
12
|
*/
|
|
21
13
|
export class AuthorizationSelector extends Selector {
|
|
14
|
+
/** Branding for nominal typing. */
|
|
15
|
+
declare private readonly _branding: 'AuthorizationSelector';
|
|
22
16
|
/**
|
|
23
17
|
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
24
18
|
* @param buffer - Buffer or BufferReader to read from.
|
|
@@ -7,16 +7,10 @@ import { BufferReader } from '@aztec/foundation/serialize';
|
|
|
7
7
|
|
|
8
8
|
import { Selector } from './selector.js';
|
|
9
9
|
|
|
10
|
-
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
11
|
-
|
|
12
|
-
/** Event selector branding */
|
|
13
|
-
export interface EventSelector {
|
|
14
|
-
/** Brand. */
|
|
15
|
-
_branding: 'EventSelector';
|
|
16
|
-
}
|
|
17
|
-
|
|
18
10
|
/** An event selector is the first 4 bytes of the hash of an event signature. */
|
|
19
11
|
export class EventSelector extends Selector {
|
|
12
|
+
/** Branding for nominal typing. */
|
|
13
|
+
declare private readonly _branding: 'EventSelector';
|
|
20
14
|
/**
|
|
21
15
|
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
22
16
|
* @param buffer - Buffer or BufferReader to read from.
|
|
@@ -3,22 +3,16 @@ import { poseidon2HashBytes } from '@aztec/foundation/crypto/poseidon';
|
|
|
3
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
4
4
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { type ZodFor, hexSchemaFor } from '@aztec/foundation/schemas';
|
|
6
|
-
import { BufferReader, FieldReader
|
|
6
|
+
import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
|
|
7
7
|
|
|
8
8
|
import type { ABIParameter } from './abi.js';
|
|
9
9
|
import { decodeFunctionSignature } from './function_signature_decoder.js';
|
|
10
10
|
import { Selector } from './selector.js';
|
|
11
11
|
|
|
12
|
-
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
13
|
-
|
|
14
|
-
/** Function selector branding */
|
|
15
|
-
export interface FunctionSelector {
|
|
16
|
-
/** Brand. */
|
|
17
|
-
_branding: 'FunctionSelector';
|
|
18
|
-
}
|
|
19
|
-
|
|
20
12
|
/** A function selector is the first 4 bytes of the hash of a function signature. */
|
|
21
13
|
export class FunctionSelector extends Selector {
|
|
14
|
+
/** Branding for nominal typing. */
|
|
15
|
+
declare private readonly _branding: 'FunctionSelector';
|
|
22
16
|
/**
|
|
23
17
|
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
24
18
|
* @param buffer - Buffer or BufferReader to read from.
|
|
@@ -127,6 +121,3 @@ export class FunctionSelector extends Selector {
|
|
|
127
121
|
return hexSchemaFor(FunctionSelector);
|
|
128
122
|
}
|
|
129
123
|
}
|
|
130
|
-
|
|
131
|
-
// For deserializing JSON.
|
|
132
|
-
TypeRegistry.register('FunctionSelector', FunctionSelector);
|
package/src/abi/note_selector.ts
CHANGED
|
@@ -2,23 +2,17 @@ import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
|
2
2
|
import { randomInt } from '@aztec/foundation/crypto/random';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { hexSchemaFor } from '@aztec/foundation/schemas';
|
|
5
|
-
import { BufferReader
|
|
5
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
6
6
|
|
|
7
7
|
import { Selector } from './selector.js';
|
|
8
8
|
|
|
9
|
-
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
10
|
-
|
|
11
|
-
/** Note selector branding */
|
|
12
|
-
export interface NoteSelector {
|
|
13
|
-
/** Brand. */
|
|
14
|
-
_branding: 'NoteSelector';
|
|
15
|
-
}
|
|
16
|
-
|
|
17
9
|
/**
|
|
18
10
|
* A note selector is a 7 bit long value that identifies a note type within a contract.
|
|
19
11
|
* TODO(#10952): Encoding of note type id can be reduced to 7 bits.
|
|
20
12
|
*/
|
|
21
13
|
export class NoteSelector extends Selector {
|
|
14
|
+
/** Branding for nominal typing. */
|
|
15
|
+
declare private readonly _branding: 'NoteSelector';
|
|
22
16
|
/**
|
|
23
17
|
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
24
18
|
* @param buffer - Buffer or BufferReader to read from.
|
|
@@ -73,6 +67,3 @@ export class NoteSelector extends Selector {
|
|
|
73
67
|
return hexSchemaFor(NoteSelector);
|
|
74
68
|
}
|
|
75
69
|
}
|
|
76
|
-
|
|
77
|
-
// For deserializing JSON.
|
|
78
|
-
TypeRegistry.register('NoteSelector', NoteSelector);
|
package/src/abi/selector.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { bufferToHex } from '@aztec/foundation/string';
|
|
|
4
4
|
|
|
5
5
|
import { inspect } from 'util';
|
|
6
6
|
|
|
7
|
-
/** A selector is the
|
|
7
|
+
/** A selector is the low 4 bytes of the poseidon2 hash of a signature. */
|
|
8
8
|
export abstract class Selector {
|
|
9
9
|
/** The size of the selector in bytes. */
|
|
10
10
|
public static SIZE = 4;
|
package/src/avm/revert_code.ts
CHANGED
|
@@ -5,35 +5,17 @@ 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
|
+
/** Whether a transaction's public execution reverted. */
|
|
19
9
|
export enum RevertCodeEnum {
|
|
20
10
|
/** All phases completed successfully; no state was rolled back. */
|
|
21
11
|
OK = 0,
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
/** TEARDOWN reverted; its state changes were discarded. APP_LOGIC succeeded. */
|
|
25
|
-
TEARDOWN_REVERTED = 2,
|
|
26
|
-
/** Both APP_LOGIC and TEARDOWN reverted; only SETUP effects are kept. */
|
|
27
|
-
BOTH_REVERTED = 3,
|
|
12
|
+
/** One or more revertible phases reverted; their state changes were discarded. */
|
|
13
|
+
REVERTED = 1,
|
|
28
14
|
}
|
|
29
15
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
(value as RevertCodeEnum) === RevertCodeEnum.APP_LOGIC_REVERTED ||
|
|
34
|
-
(value as RevertCodeEnum) === RevertCodeEnum.TEARDOWN_REVERTED ||
|
|
35
|
-
(value as RevertCodeEnum) === RevertCodeEnum.BOTH_REVERTED
|
|
36
|
-
);
|
|
16
|
+
/** Returns a valid RevertCodeEnum, coercing any value >= 1 to REVERTED. */
|
|
17
|
+
function toRevertCodeEnum(value: number): RevertCodeEnum {
|
|
18
|
+
return value >= 1 ? RevertCodeEnum.REVERTED : RevertCodeEnum.OK;
|
|
37
19
|
}
|
|
38
20
|
|
|
39
21
|
/**
|
|
@@ -45,9 +27,13 @@ export class RevertCode {
|
|
|
45
27
|
this.code = e.valueOf();
|
|
46
28
|
}
|
|
47
29
|
static readonly OK: RevertCode = new RevertCode(RevertCodeEnum.OK);
|
|
48
|
-
static readonly
|
|
49
|
-
|
|
50
|
-
static readonly
|
|
30
|
+
static readonly REVERTED: RevertCode = new RevertCode(RevertCodeEnum.REVERTED);
|
|
31
|
+
/** @deprecated Use REVERTED instead. */
|
|
32
|
+
static readonly APP_LOGIC_REVERTED: RevertCode = RevertCode.REVERTED;
|
|
33
|
+
/** @deprecated Use REVERTED instead. */
|
|
34
|
+
static readonly TEARDOWN_REVERTED: RevertCode = RevertCode.REVERTED;
|
|
35
|
+
/** @deprecated Use REVERTED instead. */
|
|
36
|
+
static readonly BOTH_REVERTED: RevertCode = RevertCode.REVERTED;
|
|
51
37
|
|
|
52
38
|
public getCode(): RevertCodeEnum {
|
|
53
39
|
return this.code;
|
|
@@ -65,12 +51,8 @@ export class RevertCode {
|
|
|
65
51
|
switch (this.code as RevertCodeEnum) {
|
|
66
52
|
case RevertCodeEnum.OK:
|
|
67
53
|
return 'OK';
|
|
68
|
-
case RevertCodeEnum.
|
|
69
|
-
return '
|
|
70
|
-
case RevertCodeEnum.TEARDOWN_REVERTED:
|
|
71
|
-
return 'Teardown reverted';
|
|
72
|
-
case RevertCodeEnum.BOTH_REVERTED:
|
|
73
|
-
return 'Both reverted';
|
|
54
|
+
case RevertCodeEnum.REVERTED:
|
|
55
|
+
return 'Reverted';
|
|
74
56
|
default:
|
|
75
57
|
return `Unknown RevertCode: ${this.code}`;
|
|
76
58
|
}
|
|
@@ -81,7 +63,11 @@ export class RevertCode {
|
|
|
81
63
|
}
|
|
82
64
|
|
|
83
65
|
static get schema(): ZodFor<RevertCode> {
|
|
84
|
-
return z
|
|
66
|
+
return z
|
|
67
|
+
.number()
|
|
68
|
+
.int()
|
|
69
|
+
.min(0)
|
|
70
|
+
.transform(value => new RevertCode(toRevertCodeEnum(value)));
|
|
85
71
|
}
|
|
86
72
|
|
|
87
73
|
/**
|
|
@@ -96,10 +82,10 @@ export class RevertCode {
|
|
|
96
82
|
return obj;
|
|
97
83
|
}
|
|
98
84
|
const code = typeof obj === 'number' ? obj : (obj.code ?? obj);
|
|
99
|
-
if (
|
|
85
|
+
if (typeof code !== 'number' || code < 0) {
|
|
100
86
|
throw new Error(`Invalid RevertCode: ${code}`);
|
|
101
87
|
}
|
|
102
|
-
return new RevertCode(code);
|
|
88
|
+
return new RevertCode(toRevertCodeEnum(code));
|
|
103
89
|
}
|
|
104
90
|
|
|
105
91
|
/**
|
|
@@ -131,10 +117,10 @@ export class RevertCode {
|
|
|
131
117
|
}
|
|
132
118
|
|
|
133
119
|
public static fromNumber(code: number): RevertCode {
|
|
134
|
-
if (
|
|
120
|
+
if (code < 0) {
|
|
135
121
|
throw new Error(`Invalid RevertCode: ${code}`);
|
|
136
122
|
}
|
|
137
|
-
return new RevertCode(code);
|
|
123
|
+
return new RevertCode(toRevertCodeEnum(code));
|
|
138
124
|
}
|
|
139
125
|
|
|
140
126
|
public static fromField(field: Fr): RevertCode {
|
|
@@ -152,7 +138,7 @@ export class RevertCode {
|
|
|
152
138
|
return RevertCode.fromNumber(code);
|
|
153
139
|
}
|
|
154
140
|
|
|
155
|
-
private static readonly NUM_OPTIONS =
|
|
141
|
+
private static readonly NUM_OPTIONS = 2;
|
|
156
142
|
static random(): RevertCode {
|
|
157
143
|
return new RevertCode(Math.floor(Math.random() * RevertCode.NUM_OPTIONS));
|
|
158
144
|
}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
2
1
|
import { Fr, fromBuffer } from '@aztec/foundation/curves/bn254';
|
|
3
2
|
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
4
3
|
import { type ZodFor, bufferSchemaFor, hexSchemaFor } from '@aztec/foundation/schemas';
|
|
5
|
-
import { type BufferReader, FieldReader
|
|
4
|
+
import { type BufferReader, FieldReader } from '@aztec/foundation/serialize';
|
|
6
5
|
import { hexToBuffer } from '@aztec/foundation/string';
|
|
7
6
|
|
|
8
7
|
import { inspect } from 'util';
|
|
9
8
|
import { z } from 'zod';
|
|
10
9
|
|
|
11
|
-
/** Branding to ensure fields are not interchangeable types. */
|
|
12
|
-
export interface AztecAddress {
|
|
13
|
-
/** Brand. */
|
|
14
|
-
_branding: 'AztecAddress';
|
|
15
|
-
}
|
|
16
10
|
/**
|
|
17
11
|
* AztecAddress represents a 32-byte address in the Aztec Protocol. It provides methods to create, manipulate, and
|
|
18
12
|
* compare addresses, as well as conversion to and from strings, buffers, and other formats.
|
|
@@ -23,6 +17,9 @@ export interface AztecAddress {
|
|
|
23
17
|
* wild.
|
|
24
18
|
*/
|
|
25
19
|
export class AztecAddress {
|
|
20
|
+
/** Branding for nominal typing. */
|
|
21
|
+
declare private readonly _branding: 'AztecAddress';
|
|
22
|
+
|
|
26
23
|
private xCoord: Fr;
|
|
27
24
|
|
|
28
25
|
constructor(buffer: Buffer | Fr) {
|
|
@@ -165,6 +162,3 @@ export class AztecAddress {
|
|
|
165
162
|
]);
|
|
166
163
|
}
|
|
167
164
|
}
|
|
168
|
-
|
|
169
|
-
// For deserializing JSON.
|
|
170
|
-
TypeRegistry.register('AztecAddress', AztecAddress);
|
package/src/block/block_data.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { CheckpointNumberSchema, IndexWithinCheckpointSchema } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
3
|
-
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
-
import { schemas } from '@aztec/foundation/schemas';
|
|
5
3
|
|
|
6
4
|
import { z } from 'zod';
|
|
7
5
|
|
|
8
6
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
9
7
|
import { BlockHeader } from '../tx/block_header.js';
|
|
8
|
+
import { BlockHash } from './block_hash.js';
|
|
10
9
|
|
|
11
10
|
/** L2Block metadata. Equivalent to L2Block but without block body containing tx data. */
|
|
12
11
|
export type BlockData = {
|
|
13
12
|
header: BlockHeader;
|
|
14
13
|
archive: AppendOnlyTreeSnapshot;
|
|
15
|
-
blockHash:
|
|
14
|
+
blockHash: BlockHash;
|
|
16
15
|
checkpointNumber: CheckpointNumber;
|
|
17
16
|
indexWithinCheckpoint: IndexWithinCheckpoint;
|
|
18
17
|
};
|
|
@@ -20,7 +19,7 @@ export type BlockData = {
|
|
|
20
19
|
export const BlockDataSchema = z.object({
|
|
21
20
|
header: BlockHeader.schema,
|
|
22
21
|
archive: AppendOnlyTreeSnapshot.schema,
|
|
23
|
-
blockHash:
|
|
22
|
+
blockHash: BlockHash.schema,
|
|
24
23
|
checkpointNumber: CheckpointNumberSchema,
|
|
25
24
|
indexWithinCheckpoint: IndexWithinCheckpointSchema,
|
|
26
25
|
});
|
package/src/block/block_hash.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GENESIS_BLOCK_HEADER_HASH as GENESIS_BLOCK_HEADER_HASH_FR } from '@aztec/constants';
|
|
2
|
+
import { BaseFr, Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import type { ZodFor } from '@aztec/foundation/schemas';
|
|
4
|
+
import type { BufferReader } from '@aztec/foundation/serialize';
|
|
3
5
|
|
|
4
6
|
import { inspect } from 'util';
|
|
5
7
|
|
|
6
8
|
import { hexSchemaFor } from '../schemas/schemas.js';
|
|
7
9
|
|
|
8
|
-
const BLOCK_HASH_BRAND = Symbol.for('aztec.BlockHash');
|
|
9
|
-
|
|
10
10
|
/** Hash of an L2 block. */
|
|
11
|
-
export class BlockHash extends
|
|
12
|
-
|
|
11
|
+
export class BlockHash extends BaseFr {
|
|
12
|
+
/** Branding for nominal typing. */
|
|
13
|
+
declare private readonly _branding: 'BlockHash';
|
|
14
|
+
|
|
15
|
+
static ZERO = new BlockHash(Fr.ZERO);
|
|
13
16
|
|
|
14
17
|
constructor(hash: Fr) {
|
|
15
18
|
super(hash);
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
[inspect.custom]() {
|
|
19
22
|
return `BlockHash<${this.toString()}>`;
|
|
20
23
|
}
|
|
21
24
|
|
|
@@ -23,23 +26,27 @@ export class BlockHash extends Fr {
|
|
|
23
26
|
return new Fr(this.toBigInt());
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
/**
|
|
27
|
-
* Type guard that checks if a value is a BlockHash instance.
|
|
28
|
-
* Uses Symbol.for to ensure cross-module compatibility.
|
|
29
|
-
*/
|
|
29
|
+
/** Type guard that checks if a value is a BlockHash instance. */
|
|
30
30
|
static isBlockHash(value: unknown): value is BlockHash {
|
|
31
|
-
return
|
|
31
|
+
return value instanceof BlockHash;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
static
|
|
34
|
+
static random() {
|
|
35
35
|
return new BlockHash(Fr.random());
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
static
|
|
38
|
+
static fromBuffer(buffer: Buffer | BufferReader): BlockHash {
|
|
39
|
+
return new BlockHash(Fr.fromBuffer(buffer));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static fromString(str: string): BlockHash {
|
|
39
43
|
return new BlockHash(Fr.fromString(str));
|
|
40
44
|
}
|
|
41
45
|
|
|
42
|
-
static
|
|
46
|
+
static get schema() {
|
|
43
47
|
return hexSchemaFor(BlockHash) as ZodFor<BlockHash>;
|
|
44
48
|
}
|
|
45
49
|
}
|
|
50
|
+
|
|
51
|
+
/** The block header hash for the genesis block (block 0). */
|
|
52
|
+
export const GENESIS_BLOCK_HEADER_HASH: BlockHash = new BlockHash(GENESIS_BLOCK_HEADER_HASH_FR);
|
|
@@ -5,8 +5,10 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
|
5
5
|
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
|
|
8
|
+
import { BlockHash } from './block_hash.js';
|
|
9
|
+
|
|
8
10
|
export type L2BlockInfo = {
|
|
9
|
-
blockHash?:
|
|
11
|
+
blockHash?: BlockHash;
|
|
10
12
|
archive: Fr;
|
|
11
13
|
lastArchive: Fr;
|
|
12
14
|
blockNumber: BlockNumber;
|
|
@@ -17,7 +19,7 @@ export type L2BlockInfo = {
|
|
|
17
19
|
|
|
18
20
|
export function randomBlockInfo(blockNumber?: BlockNumber | number): L2BlockInfo {
|
|
19
21
|
return {
|
|
20
|
-
blockHash:
|
|
22
|
+
blockHash: BlockHash.random(),
|
|
21
23
|
archive: Fr.random(),
|
|
22
24
|
lastArchive: Fr.random(),
|
|
23
25
|
blockNumber: BlockNumber(blockNumber ?? Math.floor(Math.random() * 100000) + 1),
|
|
@@ -28,7 +30,7 @@ export function randomBlockInfo(blockNumber?: BlockNumber | number): L2BlockInfo
|
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export const BlockInfoSchema = z.object({
|
|
31
|
-
blockHash:
|
|
33
|
+
blockHash: BlockHash.schema.optional(),
|
|
32
34
|
archive: schemas.Fr,
|
|
33
35
|
lastArchive: schemas.Fr,
|
|
34
36
|
blockNumber: BlockNumberSchema,
|
|
@@ -39,7 +41,7 @@ export const BlockInfoSchema = z.object({
|
|
|
39
41
|
|
|
40
42
|
export function serializeBlockInfo(blockInfo: L2BlockInfo): Buffer {
|
|
41
43
|
return serializeToBuffer(
|
|
42
|
-
blockInfo.blockHash ??
|
|
44
|
+
blockInfo.blockHash ?? BlockHash.ZERO,
|
|
43
45
|
blockInfo.archive,
|
|
44
46
|
blockInfo.lastArchive,
|
|
45
47
|
blockInfo.blockNumber,
|
|
@@ -51,9 +53,9 @@ export function serializeBlockInfo(blockInfo: L2BlockInfo): Buffer {
|
|
|
51
53
|
|
|
52
54
|
export function deserializeBlockInfo(buffer: Buffer | BufferReader): L2BlockInfo {
|
|
53
55
|
const reader = BufferReader.asReader(buffer);
|
|
54
|
-
const blockHash =
|
|
56
|
+
const blockHash = BlockHash.fromBuffer(reader);
|
|
55
57
|
return {
|
|
56
|
-
blockHash: blockHash.equals(
|
|
58
|
+
blockHash: blockHash.equals(BlockHash.ZERO) ? undefined : blockHash,
|
|
57
59
|
archive: reader.readObject(Fr),
|
|
58
60
|
lastArchive: reader.readObject(Fr),
|
|
59
61
|
blockNumber: BlockNumber(reader.readNumber()),
|
|
@@ -2,10 +2,14 @@ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.
|
|
|
2
2
|
import type { L2Block } from '../l2_block.js';
|
|
3
3
|
import type { CheckpointId, L2BlockId, L2Tips } from '../l2_block_source.js';
|
|
4
4
|
|
|
5
|
+
/** Provides the current chain tips. Implemented by world-state, l2-tips-store, and AztecNode. */
|
|
6
|
+
export interface L2TipsProvider {
|
|
7
|
+
getL2Tips(): Promise<L2Tips>;
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
/** Interface to the local view of the chain. Implemented by world-state and l2-tips-store. */
|
|
6
|
-
export interface L2BlockStreamLocalDataProvider {
|
|
11
|
+
export interface L2BlockStreamLocalDataProvider extends L2TipsProvider {
|
|
7
12
|
getL2BlockHash(number: number): Promise<string | undefined>;
|
|
8
|
-
getL2Tips(): Promise<L2Tips>;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
/** Interface to a handler of events emitted. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
2
1
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
2
|
|
|
4
3
|
import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
|
|
4
|
+
import { GENESIS_BLOCK_HEADER_HASH } from '../block_hash.js';
|
|
5
5
|
import type { L2Block } from '../l2_block.js';
|
|
6
6
|
import {
|
|
7
7
|
type CheckpointId,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
2
1
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
2
|
import { times } from '@aztec/foundation/collection';
|
|
4
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
@@ -13,6 +12,7 @@ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/
|
|
|
13
12
|
|
|
14
13
|
import { jestExpect as expect } from '@jest/expect';
|
|
15
14
|
|
|
15
|
+
import { GENESIS_BLOCK_HEADER_HASH } from '../block_hash.js';
|
|
16
16
|
import type { L2TipsStore } from '../l2_block_stream/index.js';
|
|
17
17
|
|
|
18
18
|
export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
|
|
@@ -21,7 +21,13 @@ export const chainConfigMappings: ConfigMappingsType<ChainConfig> = {
|
|
|
21
21
|
rollupVersion: {
|
|
22
22
|
env: 'ROLLUP_VERSION',
|
|
23
23
|
description: 'The version of the rollup.',
|
|
24
|
-
parseEnv: (val: string) =>
|
|
24
|
+
parseEnv: (val: string) => {
|
|
25
|
+
const parsed = parseInt(val, 10);
|
|
26
|
+
if (!Number.isSafeInteger(parsed)) {
|
|
27
|
+
throw new Error(`Invalid rollup version: ${val}`);
|
|
28
|
+
}
|
|
29
|
+
return parsed;
|
|
30
|
+
},
|
|
25
31
|
},
|
|
26
32
|
l1Contracts: {
|
|
27
33
|
description: 'The deployed L1 contract addresses',
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
|
|
3
3
|
import type { SequencerConfig } from '../interfaces/configs.js';
|
|
4
|
+
import { DEFAULT_P2P_PROPAGATION_TIME } from '../timetable/index.js';
|
|
4
5
|
|
|
5
6
|
/** Default maximum number of transactions per block. */
|
|
6
7
|
export const DEFAULT_MAX_TXS_PER_BLOCK = 32;
|
|
@@ -12,26 +13,35 @@ export const DEFAULT_MAX_TXS_PER_BLOCK = 32;
|
|
|
12
13
|
* to avoid duplication.
|
|
13
14
|
*/
|
|
14
15
|
export const sharedSequencerConfigMappings: ConfigMappingsType<
|
|
15
|
-
Pick<
|
|
16
|
+
Pick<
|
|
17
|
+
SequencerConfig,
|
|
18
|
+
'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock' | 'attestationPropagationTime'
|
|
19
|
+
>
|
|
16
20
|
> = {
|
|
17
21
|
blockDurationMs: {
|
|
18
22
|
env: 'SEQ_BLOCK_DURATION_MS',
|
|
19
23
|
description:
|
|
20
24
|
'Duration per block in milliseconds when building multiple blocks per slot. ' +
|
|
21
25
|
'If undefined (default), builds a single block per slot using the full slot duration.',
|
|
22
|
-
parseEnv: (val: string) =>
|
|
26
|
+
parseEnv: (val: string) => parseInt(val, 10),
|
|
23
27
|
},
|
|
24
28
|
expectedBlockProposalsPerSlot: {
|
|
25
29
|
env: 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT',
|
|
26
30
|
description:
|
|
27
31
|
'Expected number of block proposals per slot for P2P peer scoring. ' +
|
|
28
32
|
'0 (default) disables block proposal scoring. Set to a positive value to enable.',
|
|
29
|
-
parseEnv: (val: string) =>
|
|
33
|
+
parseEnv: (val: string) => parseInt(val, 10),
|
|
30
34
|
defaultValue: 0,
|
|
31
35
|
},
|
|
32
36
|
maxTxsPerBlock: {
|
|
33
37
|
env: 'SEQ_MAX_TX_PER_BLOCK',
|
|
34
38
|
description: 'The maximum number of txs to include in a block.',
|
|
35
|
-
parseEnv: (val: string) =>
|
|
39
|
+
parseEnv: (val: string) => parseInt(val, 10),
|
|
40
|
+
},
|
|
41
|
+
attestationPropagationTime: {
|
|
42
|
+
env: 'SEQ_ATTESTATION_PROPAGATION_TIME',
|
|
43
|
+
description: 'How many seconds it takes for proposals and attestations to travel across the p2p layer (one-way).',
|
|
44
|
+
parseEnv: (val: string) => parseFloat(val),
|
|
45
|
+
defaultValue: DEFAULT_P2P_PROPAGATION_TIME,
|
|
36
46
|
},
|
|
37
47
|
};
|