@aztec/sequencer-client 0.41.0 → 0.43.0
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/client/sequencer-client.js +2 -2
- package/dest/config.d.ts +13 -0
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +53 -45
- package/dest/publisher/l1-publisher.d.ts +7 -1
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +11 -3
- package/dest/publisher/viem-tx-sender.d.ts +3 -0
- package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
- package/dest/publisher/viem-tx-sender.js +16 -1
- package/dest/receiver.d.ts +4 -1
- package/dest/receiver.d.ts.map +1 -1
- package/dest/sequencer/sequencer.d.ts +7 -4
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +57 -20
- package/dest/tx_validator/gas_validator.d.ts +2 -1
- package/dest/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/tx_validator/gas_validator.js +36 -8
- package/dest/tx_validator/phases_validator.d.ts +4 -4
- package/dest/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/tx_validator/phases_validator.js +34 -22
- package/dest/tx_validator/test_utils.d.ts +21 -0
- package/dest/tx_validator/test_utils.d.ts.map +1 -0
- package/dest/tx_validator/test_utils.js +19 -0
- package/dest/tx_validator/tx_validator_factory.d.ts +5 -5
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +5 -5
- package/package.json +14 -14
- package/src/client/sequencer-client.ts +1 -1
- package/src/config.ts +56 -51
- package/src/publisher/l1-publisher.ts +18 -2
- package/src/publisher/viem-tx-sender.ts +16 -0
- package/src/receiver.ts +4 -1
- package/src/sequencer/sequencer.ts +73 -24
- package/src/tx_validator/gas_validator.ts +41 -7
- package/src/tx_validator/phases_validator.ts +41 -24
- package/src/tx_validator/test_utils.ts +37 -0
- package/src/tx_validator/tx_validator_factory.ts +6 -6
|
@@ -27,7 +27,7 @@ export class SequencerClient {
|
|
|
27
27
|
const globalsBuilder = getGlobalVariableBuilder(config);
|
|
28
28
|
const merkleTreeDb = worldStateSynchronizer.getLatest();
|
|
29
29
|
const publicProcessorFactory = new PublicProcessorFactory(merkleTreeDb, contractDataSource, simulationProvider);
|
|
30
|
-
const sequencer = new Sequencer(publisher, globalsBuilder, p2pClient, worldStateSynchronizer, prover, l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, new TxValidatorFactory(merkleTreeDb, contractDataSource, config.
|
|
30
|
+
const sequencer = new Sequencer(publisher, globalsBuilder, p2pClient, worldStateSynchronizer, prover, l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, new TxValidatorFactory(merkleTreeDb, contractDataSource, !!config.enforceFees), config);
|
|
31
31
|
await sequencer.start();
|
|
32
32
|
return new SequencerClient(sequencer);
|
|
33
33
|
}
|
|
@@ -57,4 +57,4 @@ export class SequencerClient {
|
|
|
57
57
|
return this.sequencer.feeRecipient;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFLbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFN0U7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU1Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUE2QixFQUM3QixTQUFjLEVBQ2Qsc0JBQThDLEVBQzlDLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsTUFBbUIsRUFDbkIsa0JBQXNDO1FBRXRDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV4RCxNQUFNLHNCQUFzQixHQUFHLElBQUksc0JBQXNCLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFaEgsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQzdCLFNBQVMsRUFDVCxjQUFjLEVBQ2QsU0FBUyxFQUNULHNCQUFzQixFQUN0QixNQUFNLEVBQ04sYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDOUUsTUFBTSxDQUNQLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxxQkFBcUIsQ0FBQyxNQUF1QjtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNyQyxDQUFDO0NBQ0YifQ==
|
package/dest/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type AllowedElement } from '@aztec/circuit-types';
|
|
1
2
|
import { type GlobalReaderConfig } from './global_variable_builder/index.js';
|
|
2
3
|
import { type PublisherConfig, type TxSenderConfig } from './publisher/config.js';
|
|
3
4
|
import { type SequencerConfig } from './sequencer/config.js';
|
|
@@ -16,5 +17,17 @@ export type SequencerClientConfig = PublisherConfig & TxSenderConfig & Sequencer
|
|
|
16
17
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
17
18
|
*/
|
|
18
19
|
export declare function getConfigEnvVars(): SequencerClientConfig;
|
|
20
|
+
/**
|
|
21
|
+
* Parses a string to a list of allowed elements.
|
|
22
|
+
* Each encoded is expected to be of one of the following formats
|
|
23
|
+
* `I:${address}`
|
|
24
|
+
* `I:${address}:${selector}`
|
|
25
|
+
* `C:${classId}`
|
|
26
|
+
* `C:${classId}:${selector}`
|
|
27
|
+
*
|
|
28
|
+
* @param value The string to parse
|
|
29
|
+
* @returns A list of allowed elements
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseSequencerAllowList(value: string): AllowedElement[];
|
|
19
32
|
export {};
|
|
20
33
|
//# sourceMappingURL=config.d.ts.map
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAW3D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEd;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAyExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
|
package/dest/config.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { AztecAddress, Fr, FunctionSelector, getContractClassFromArtifact } from '@aztec/circuits.js';
|
|
2
2
|
import { NULL_KEY } from '@aztec/ethereum';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
-
import { EcdsaAccountContractArtifact } from '@aztec/noir-contracts.js/EcdsaAccount';
|
|
5
4
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
6
|
-
import { GasTokenContract } from '@aztec/noir-contracts.js/GasToken';
|
|
7
|
-
import { SchnorrAccountContractArtifact } from '@aztec/noir-contracts.js/SchnorrAccount';
|
|
8
|
-
import { SchnorrHardcodedAccountContractArtifact } from '@aztec/noir-contracts.js/SchnorrHardcodedAccount';
|
|
9
|
-
import { SchnorrSingleKeyAccountContractArtifact } from '@aztec/noir-contracts.js/SchnorrSingleKeyAccount';
|
|
10
5
|
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
6
|
+
import { AuthRegistryAddress } from '@aztec/protocol-contracts/auth-registry';
|
|
7
|
+
import { GasTokenAddress } from '@aztec/protocol-contracts/gas-token';
|
|
11
8
|
/**
|
|
12
9
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
13
10
|
*/
|
|
14
11
|
export function getConfigEnvVars() {
|
|
15
|
-
const { SEQ_PUBLISHER_PRIVATE_KEY, ETHEREUM_HOST, CHAIN_ID, VERSION, API_KEY, SEQ_REQUIRED_CONFIRMATIONS, SEQ_PUBLISH_RETRY_INTERVAL_MS, SEQ_TX_POLLING_INTERVAL_MS, SEQ_MAX_TX_PER_BLOCK, SEQ_MIN_TX_PER_BLOCK, SEQ_ALLOWED_SETUP_FN, SEQ_ALLOWED_TEARDOWN_FN, AVAILABILITY_ORACLE_CONTRACT_ADDRESS, ROLLUP_CONTRACT_ADDRESS, REGISTRY_CONTRACT_ADDRESS, INBOX_CONTRACT_ADDRESS, OUTBOX_CONTRACT_ADDRESS, GAS_TOKEN_CONTRACT_ADDRESS, GAS_PORTAL_CONTRACT_ADDRESS, COINBASE, FEE_RECIPIENT, ACVM_WORKING_DIRECTORY, ACVM_BINARY_PATH, } = process.env;
|
|
12
|
+
const { SEQ_PUBLISHER_PRIVATE_KEY, ETHEREUM_HOST, CHAIN_ID, VERSION, API_KEY, SEQ_REQUIRED_CONFIRMATIONS, SEQ_PUBLISH_RETRY_INTERVAL_MS, SEQ_TX_POLLING_INTERVAL_MS, SEQ_MAX_TX_PER_BLOCK, SEQ_MIN_TX_PER_BLOCK, SEQ_ALLOWED_SETUP_FN, SEQ_ALLOWED_TEARDOWN_FN, SEQ_MAX_BLOCK_SIZE_IN_BYTES, AVAILABILITY_ORACLE_CONTRACT_ADDRESS, ROLLUP_CONTRACT_ADDRESS, REGISTRY_CONTRACT_ADDRESS, INBOX_CONTRACT_ADDRESS, OUTBOX_CONTRACT_ADDRESS, GAS_TOKEN_CONTRACT_ADDRESS, GAS_PORTAL_CONTRACT_ADDRESS, COINBASE, FEE_RECIPIENT, ACVM_WORKING_DIRECTORY, ACVM_BINARY_PATH, ENFORCE_FEES = '', } = process.env;
|
|
16
13
|
const publisherPrivateKey = SEQ_PUBLISHER_PRIVATE_KEY
|
|
17
14
|
? `0x${SEQ_PUBLISHER_PRIVATE_KEY.replace('0x', '')}`
|
|
18
15
|
: NULL_KEY;
|
|
@@ -31,6 +28,7 @@ export function getConfigEnvVars() {
|
|
|
31
28
|
: EthAddress.ZERO,
|
|
32
29
|
};
|
|
33
30
|
return {
|
|
31
|
+
enforceFees: ['1', 'true'].includes(ENFORCE_FEES),
|
|
34
32
|
rpcUrl: ETHEREUM_HOST ? ETHEREUM_HOST : '',
|
|
35
33
|
chainId: CHAIN_ID ? +CHAIN_ID : 31337, // 31337 is the default chain id for anvil
|
|
36
34
|
version: VERSION ? +VERSION : 1, // 1 is our default version
|
|
@@ -38,6 +36,7 @@ export function getConfigEnvVars() {
|
|
|
38
36
|
requiredConfirmations: SEQ_REQUIRED_CONFIRMATIONS ? +SEQ_REQUIRED_CONFIRMATIONS : 1,
|
|
39
37
|
l1BlockPublishRetryIntervalMS: SEQ_PUBLISH_RETRY_INTERVAL_MS ? +SEQ_PUBLISH_RETRY_INTERVAL_MS : 1000,
|
|
40
38
|
transactionPollingIntervalMS: SEQ_TX_POLLING_INTERVAL_MS ? +SEQ_TX_POLLING_INTERVAL_MS : 1000,
|
|
39
|
+
maxBlockSizeInBytes: SEQ_MAX_BLOCK_SIZE_IN_BYTES ? +SEQ_MAX_BLOCK_SIZE_IN_BYTES : undefined,
|
|
41
40
|
l1Contracts: addresses,
|
|
42
41
|
publisherPrivateKey,
|
|
43
42
|
maxTxsPerBlock: SEQ_MAX_TX_PER_BLOCK ? +SEQ_MAX_TX_PER_BLOCK : 32,
|
|
@@ -47,59 +46,72 @@ export function getConfigEnvVars() {
|
|
|
47
46
|
feeRecipient: FEE_RECIPIENT ? AztecAddress.fromString(FEE_RECIPIENT) : undefined,
|
|
48
47
|
acvmWorkingDirectory: ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : undefined,
|
|
49
48
|
acvmBinaryPath: ACVM_BINARY_PATH ? ACVM_BINARY_PATH : undefined,
|
|
50
|
-
|
|
49
|
+
allowedInSetup: SEQ_ALLOWED_SETUP_FN
|
|
51
50
|
? parseSequencerAllowList(SEQ_ALLOWED_SETUP_FN)
|
|
52
51
|
: getDefaultAllowedSetupFunctions(),
|
|
53
|
-
|
|
52
|
+
allowedInTeardown: SEQ_ALLOWED_TEARDOWN_FN
|
|
54
53
|
? parseSequencerAllowList(SEQ_ALLOWED_TEARDOWN_FN)
|
|
55
54
|
: getDefaultAllowedTeardownFunctions(),
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Parses a string to a list of allowed elements.
|
|
59
|
+
* Each encoded is expected to be of one of the following formats
|
|
60
|
+
* `I:${address}`
|
|
61
|
+
* `I:${address}:${selector}`
|
|
62
|
+
* `C:${classId}`
|
|
63
|
+
* `C:${classId}:${selector}`
|
|
64
|
+
*
|
|
65
|
+
* @param value The string to parse
|
|
66
|
+
* @returns A list of allowed elements
|
|
67
|
+
*/
|
|
68
|
+
export function parseSequencerAllowList(value) {
|
|
59
69
|
const entries = [];
|
|
60
70
|
if (!value) {
|
|
61
71
|
return entries;
|
|
62
72
|
}
|
|
63
73
|
for (const val of value.split(',')) {
|
|
64
|
-
const [identifierString, selectorString] = val.split(':');
|
|
65
|
-
const selector = FunctionSelector.fromString(selectorString);
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
const [typeString, identifierString, selectorString] = val.split(':');
|
|
75
|
+
const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
|
|
76
|
+
if (typeString === 'I') {
|
|
77
|
+
if (selector) {
|
|
78
|
+
entries.push({
|
|
79
|
+
address: AztecAddress.fromString(identifierString),
|
|
80
|
+
selector,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
entries.push({
|
|
85
|
+
address: AztecAddress.fromString(identifierString),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
71
88
|
}
|
|
72
|
-
else {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
else if (typeString === 'C') {
|
|
90
|
+
if (selector) {
|
|
91
|
+
entries.push({
|
|
92
|
+
classId: Fr.fromString(identifierString),
|
|
93
|
+
selector,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
entries.push({
|
|
98
|
+
classId: Fr.fromString(identifierString),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
77
101
|
}
|
|
78
102
|
}
|
|
79
103
|
return entries;
|
|
80
104
|
}
|
|
81
105
|
function getDefaultAllowedSetupFunctions() {
|
|
82
106
|
return [
|
|
107
|
+
// needed for authwit support
|
|
83
108
|
{
|
|
84
|
-
|
|
85
|
-
selector: FunctionSelector.fromSignature('approve_public_authwit(Field)'),
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
classId: getContractClassFromArtifact(SchnorrHardcodedAccountContractArtifact).id,
|
|
89
|
-
selector: FunctionSelector.fromSignature('approve_public_authwit(Field)'),
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
classId: getContractClassFromArtifact(SchnorrSingleKeyAccountContractArtifact).id,
|
|
93
|
-
selector: FunctionSelector.fromSignature('approve_public_authwit(Field)'),
|
|
109
|
+
address: AuthRegistryAddress,
|
|
94
110
|
},
|
|
111
|
+
// needed for claiming on the same tx as a spend
|
|
95
112
|
{
|
|
96
|
-
|
|
97
|
-
selector: FunctionSelector.fromSignature('
|
|
98
|
-
},
|
|
99
|
-
// needed for native payments while they are not yet enshrined
|
|
100
|
-
{
|
|
101
|
-
classId: getContractClassFromArtifact(GasTokenContract.artifact).id,
|
|
102
|
-
selector: FunctionSelector.fromSignature('pay_fee(Field)'),
|
|
113
|
+
address: GasTokenAddress,
|
|
114
|
+
selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
|
|
103
115
|
},
|
|
104
116
|
// needed for private transfers via FPC
|
|
105
117
|
{
|
|
@@ -114,18 +126,14 @@ function getDefaultAllowedSetupFunctions() {
|
|
|
114
126
|
}
|
|
115
127
|
function getDefaultAllowedTeardownFunctions() {
|
|
116
128
|
return [
|
|
117
|
-
{
|
|
118
|
-
classId: getContractClassFromArtifact(GasTokenContract.artifact).id,
|
|
119
|
-
selector: FunctionSelector.fromSignature('pay_fee(Field)'),
|
|
120
|
-
},
|
|
121
129
|
{
|
|
122
130
|
classId: getContractClassFromArtifact(FPCContract.artifact).id,
|
|
123
|
-
selector: FunctionSelector.fromSignature('
|
|
131
|
+
selector: FunctionSelector.fromSignature('pay_refund((Field),Field,(Field))'),
|
|
124
132
|
},
|
|
125
133
|
{
|
|
126
134
|
classId: getContractClassFromArtifact(FPCContract.artifact).id,
|
|
127
|
-
selector: FunctionSelector.fromSignature('
|
|
135
|
+
selector: FunctionSelector.fromSignature('pay_refund_with_shielded_rebate(Field,(Field),Field)'),
|
|
128
136
|
},
|
|
129
137
|
];
|
|
130
138
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBNEIsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUF5QnRFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixNQUFNLEVBQ0oseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCwwQkFBMEIsRUFDMUIsNkJBQTZCLEVBQzdCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixRQUFRLEVBQ1IsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsWUFBWSxHQUFHLEVBQUUsR0FDbEIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRWhCLE1BQU0sbUJBQW1CLEdBQVEseUJBQXlCO1FBQ3hELENBQUMsQ0FBQyxLQUFLLHlCQUF5QixDQUFDLE9BQU8s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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { type L2Block } from '@aztec/circuit-types';
|
|
3
|
+
import { type EthAddress, type Fr, type Proof } from '@aztec/circuits.js';
|
|
3
4
|
import { type L2BlockReceiver } from '../receiver.js';
|
|
4
5
|
import { type PublisherConfig } from './config.js';
|
|
5
6
|
/**
|
|
@@ -32,6 +33,8 @@ export type MinimalTransactionReceipt = {
|
|
|
32
33
|
* Pushes txs to the L1 chain and waits for their completion.
|
|
33
34
|
*/
|
|
34
35
|
export interface L1PublisherTxSender {
|
|
36
|
+
getSenderAddress(): Promise<EthAddress>;
|
|
37
|
+
getSubmitterAddressForBlock(blockNumber: number): Promise<EthAddress>;
|
|
35
38
|
/**
|
|
36
39
|
* Publishes tx effects to Availability Oracle.
|
|
37
40
|
* @param encodedBody - Encoded block body.
|
|
@@ -77,6 +80,8 @@ export type L1ProcessArgs = {
|
|
|
77
80
|
archive: Buffer;
|
|
78
81
|
/** L2 block body. */
|
|
79
82
|
body: Buffer;
|
|
83
|
+
/** Aggregation object needed to verify the proof */
|
|
84
|
+
aggregationObject: Buffer;
|
|
80
85
|
/** Root rollup proof of the L2 block. */
|
|
81
86
|
proof: Buffer;
|
|
82
87
|
};
|
|
@@ -95,12 +100,13 @@ export declare class L1Publisher implements L2BlockReceiver {
|
|
|
95
100
|
private interrupted;
|
|
96
101
|
private log;
|
|
97
102
|
constructor(txSender: L1PublisherTxSender, config?: PublisherConfig);
|
|
103
|
+
isItMyTurnToSubmit(blockNumber: number): Promise<boolean>;
|
|
98
104
|
/**
|
|
99
105
|
* Publishes L2 block on L1.
|
|
100
106
|
* @param block - L2 block to publish.
|
|
101
107
|
* @returns True once the tx has been confirmed and is successful, false on revert or interrupt, blocks otherwise.
|
|
102
108
|
*/
|
|
103
|
-
processL2Block(block: L2Block): Promise<boolean>;
|
|
109
|
+
processL2Block(block: L2Block, aggregationObject: Fr[], proof: Proof): Promise<boolean>;
|
|
104
110
|
/**
|
|
105
111
|
* Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
|
|
106
112
|
* Be warned, the call may return false even if the tx subsequently gets successfully mined.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { InterruptibleSleep } from '@aztec/foundation/sleep';
|
|
3
4
|
import pick from 'lodash.pick';
|
|
4
5
|
/**
|
|
@@ -17,12 +18,17 @@ export class L1Publisher {
|
|
|
17
18
|
this.log = createDebugLogger('aztec:sequencer:publisher');
|
|
18
19
|
this.sleepTimeMs = config?.l1BlockPublishRetryIntervalMS ?? 60000;
|
|
19
20
|
}
|
|
21
|
+
async isItMyTurnToSubmit(blockNumber) {
|
|
22
|
+
const submitter = await this.txSender.getSubmitterAddressForBlock(blockNumber);
|
|
23
|
+
const sender = await this.txSender.getSenderAddress();
|
|
24
|
+
return submitter.isZero() || submitter.equals(sender);
|
|
25
|
+
}
|
|
20
26
|
/**
|
|
21
27
|
* Publishes L2 block on L1.
|
|
22
28
|
* @param block - L2 block to publish.
|
|
23
29
|
* @returns True once the tx has been confirmed and is successful, false on revert or interrupt, blocks otherwise.
|
|
24
30
|
*/
|
|
25
|
-
async processL2Block(block) {
|
|
31
|
+
async processL2Block(block, aggregationObject, proof) {
|
|
26
32
|
// TODO(#4148) Remove this block number check, it's here because we don't currently have proper genesis state on the contract
|
|
27
33
|
const lastArchive = block.header.lastArchive.root.toBuffer();
|
|
28
34
|
if (block.number != 1 && !(await this.checkLastArchiveHash(lastArchive))) {
|
|
@@ -63,7 +69,8 @@ export class L1Publisher {
|
|
|
63
69
|
header: block.header.toBuffer(),
|
|
64
70
|
archive: block.archive.root.toBuffer(),
|
|
65
71
|
body: encodedBody,
|
|
66
|
-
|
|
72
|
+
aggregationObject: serializeToBuffer(aggregationObject),
|
|
73
|
+
proof: proof.withoutPublicInputs(),
|
|
67
74
|
};
|
|
68
75
|
// Process block
|
|
69
76
|
while (!this.interrupted) {
|
|
@@ -129,6 +136,7 @@ export class L1Publisher {
|
|
|
129
136
|
async sendPublishTx(encodedBody) {
|
|
130
137
|
while (!this.interrupted) {
|
|
131
138
|
try {
|
|
139
|
+
this.log.info(`TxEffects size=${encodedBody.length} bytes`);
|
|
132
140
|
return await this.txSender.sendPublishTx(encodedBody);
|
|
133
141
|
}
|
|
134
142
|
catch (err) {
|
|
@@ -163,4 +171,4 @@ export class L1Publisher {
|
|
|
163
171
|
await this.interruptibleSleep.sleep(this.sleepTimeMs);
|
|
164
172
|
}
|
|
165
173
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDEtcHVibGlzaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9sMS1wdWJsaXNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBa0cvQjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFNdEIsWUFBb0IsUUFBNkIsRUFBRSxNQUF3QjtRQUF2RCxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUx6Qyx1QkFBa0IsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsUUFBRyxHQUFHLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFHM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsNkJBQTZCLElBQUksS0FBTSxDQUFDO0lBQ3JFLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsV0FBbUI7UUFDakQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RELE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQWMsRUFBRSxpQkFBdUIsRUFBRSxLQUFZO1FBQy9FLDZIQUE2SDtRQUM3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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { type L2Block } from '@aztec/circuit-types';
|
|
3
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
3
4
|
import { type TxSenderConfig } from './config.js';
|
|
4
5
|
import { type L1PublisherTxSender, type MinimalTransactionReceipt, type L1ProcessArgs as ProcessTxArgs, type TransactionStats } from './l1-publisher.js';
|
|
5
6
|
/**
|
|
@@ -12,6 +13,8 @@ export declare class ViemTxSender implements L1PublisherTxSender {
|
|
|
12
13
|
private publicClient;
|
|
13
14
|
private account;
|
|
14
15
|
constructor(config: TxSenderConfig);
|
|
16
|
+
getSenderAddress(): Promise<EthAddress>;
|
|
17
|
+
getSubmitterAddressForBlock(blockNumber: number): Promise<EthAddress>;
|
|
15
18
|
getCurrentArchive(): Promise<Buffer>;
|
|
16
19
|
checkIfTxsAreAvailable(block: L2Block): Promise<boolean>;
|
|
17
20
|
getTransactionStats(txHash: string): Promise<TransactionStats | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem-tx-sender.d.ts","sourceRoot":"","sources":["../../src/publisher/viem-tx-sender.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"viem-tx-sender.d.ts","sourceRoot":"","sources":["../../src/publisher/viem-tx-sender.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAqBhD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,IAAI,aAAa,EACnC,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,YAAa,YAAW,mBAAmB;IACtD,OAAO,CAAC,0BAA0B,CAGhC;IACF,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,GAAG,CAAuD;IAClE,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,OAAO,CAAoB;gBAEvB,MAAM,EAAE,cAAc;IA2BlC,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIjC,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUrE,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK1C,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAahF;;;;OAIG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAmB3F;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAarE;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAkB5E;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CASjB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
1
2
|
import { createEthereumChain } from '@aztec/ethereum';
|
|
2
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { AvailabilityOracleAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
@@ -33,6 +34,19 @@ export class ViemTxSender {
|
|
|
33
34
|
client: walletClient,
|
|
34
35
|
});
|
|
35
36
|
}
|
|
37
|
+
getSenderAddress() {
|
|
38
|
+
return Promise.resolve(EthAddress.fromString(this.account.address));
|
|
39
|
+
}
|
|
40
|
+
async getSubmitterAddressForBlock(blockNumber) {
|
|
41
|
+
try {
|
|
42
|
+
const submitter = await this.rollupContract.read.whoseTurnIsIt([BigInt(blockNumber)]);
|
|
43
|
+
return EthAddress.fromString(submitter);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
this.log.warn(`Failed to get submitter for block ${blockNumber}: ${err}`);
|
|
47
|
+
return EthAddress.ZERO;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
36
50
|
async getCurrentArchive() {
|
|
37
51
|
const archive = await this.rollupContract.read.archive();
|
|
38
52
|
return Buffer.from(archive.replace('0x', ''), 'hex');
|
|
@@ -99,6 +113,7 @@ export class ViemTxSender {
|
|
|
99
113
|
const args = [
|
|
100
114
|
`0x${encodedData.header.toString('hex')}`,
|
|
101
115
|
`0x${encodedData.archive.toString('hex')}`,
|
|
116
|
+
`0x${encodedData.aggregationObject.toString('hex')}`,
|
|
102
117
|
`0x${encodedData.proof.toString('hex')}`,
|
|
103
118
|
];
|
|
104
119
|
const gas = await this.rollupContract.estimateGas.process(args, {
|
|
@@ -132,4 +147,4 @@ export class ViemTxSender {
|
|
|
132
147
|
function getCalldataGasUsage(data) {
|
|
133
148
|
return data.filter(byte => byte === 0).length * 4 + data.filter(byte => byte !== 0).length * 16;
|
|
134
149
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS10eC1zZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL3ZpZW0tdHgtc2VuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkUsT0FBTyxFQU1MLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQVV0Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBY3ZCLFlBQVksTUFBc0I7UUFKMUIsUUFBRyxHQUFHLGlCQUFpQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFLaEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7WUFDdEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUztZQUN0QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUss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
|
package/dest/receiver.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type L2Block } from '@aztec/circuit-types';
|
|
2
|
+
import type { Fr, Proof } from '@aztec/circuits.js';
|
|
2
3
|
/**
|
|
3
4
|
* Given the necessary rollup data, verifies it, and updates the underlying state accordingly to advance the state of the system.
|
|
4
5
|
* See https://hackmd.io/ouVCnacHQRq2o1oRc5ksNA#RollupReceiver.
|
|
@@ -7,7 +8,9 @@ export interface L2BlockReceiver {
|
|
|
7
8
|
/**
|
|
8
9
|
* Receive and L2 block and process it, returns true if successful.
|
|
9
10
|
* @param l2BlockData - L2 block to process.
|
|
11
|
+
* @param aggregationObject - The aggregation object for the block's proof.
|
|
12
|
+
* @param proof - The proof for the block.
|
|
10
13
|
*/
|
|
11
|
-
processL2Block(l2BlockData: L2Block): Promise<boolean>;
|
|
14
|
+
processL2Block(l2BlockData: L2Block, aggregationObject: Fr[], proof: Proof): Promise<boolean>;
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=receiver.d.ts.map
|
package/dest/receiver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../src/receiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B
|
|
1
|
+
{"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../src/receiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type L1ToL2MessageSource, type L2Block, type L2BlockSource, type ProcessedTx, Tx, type TxValidator } from '@aztec/circuit-types';
|
|
2
2
|
import { type BlockProver } from '@aztec/circuit-types/interfaces';
|
|
3
|
-
import { AztecAddress, EthAddress } from '@aztec/circuits.js';
|
|
3
|
+
import { AztecAddress, EthAddress, type Proof } from '@aztec/circuits.js';
|
|
4
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
5
|
import { type P2P } from '@aztec/p2p';
|
|
5
6
|
import { type PublicProcessorFactory } from '@aztec/simulator';
|
|
6
7
|
import { type WorldStateSynchronizer } from '@aztec/world-state';
|
|
@@ -36,8 +37,9 @@ export declare class Sequencer {
|
|
|
36
37
|
private _feeRecipient;
|
|
37
38
|
private lastPublishedBlock;
|
|
38
39
|
private state;
|
|
39
|
-
private
|
|
40
|
-
private
|
|
40
|
+
private allowedInSetup;
|
|
41
|
+
private allowedInTeardown;
|
|
42
|
+
private maxBlockSizeInBytes;
|
|
41
43
|
constructor(publisher: L1Publisher, globalsBuilder: GlobalVariableBuilder, p2pClient: P2P, worldState: WorldStateSynchronizer, prover: BlockProver, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource, publicProcessorFactory: PublicProcessorFactory, txValidatorFactory: TxValidatorFactory, config?: SequencerConfig, log?: import("@aztec/foundation/log").Logger);
|
|
42
44
|
/**
|
|
43
45
|
* Updates sequencer config.
|
|
@@ -72,8 +74,9 @@ export declare class Sequencer {
|
|
|
72
74
|
* Publishes the L2Block to the rollup contract.
|
|
73
75
|
* @param block - The L2Block to be published.
|
|
74
76
|
*/
|
|
75
|
-
protected publishL2Block(block: L2Block): Promise<void>;
|
|
77
|
+
protected publishL2Block(block: L2Block, aggregationObject: Fr[], proof: Proof): Promise<void>;
|
|
76
78
|
protected takeValidTxs<T extends Tx | ProcessedTx>(txs: T[], validator: TxValidator<T>): Promise<T[]>;
|
|
79
|
+
protected takeTxsWithinMaxSize(txs: Tx[]): Tx[];
|
|
77
80
|
/**
|
|
78
81
|
* Returns whether the previous block sent has been mined, and all dependencies have caught up with it.
|
|
79
82
|
* @returns Boolean indicating if our dependencies are synced to the latest block.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,EAAE,EACF,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|