@aztec/sequencer-client 0.76.4 → 0.77.0-testnet-ignition.21
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/index.js +0 -1
- package/dest/client/sequencer-client.d.ts +12 -9
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +55 -60
- package/dest/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +41 -46
- package/dest/global_variable_builder/global_builder.d.ts +5 -2
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +45 -31
- package/dest/global_variable_builder/index.js +0 -1
- package/dest/index.js +0 -1
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +33 -48
- package/dest/publisher/index.js +0 -1
- package/dest/publisher/sequencer-publisher-metrics.d.ts +5 -2
- package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher-metrics.js +47 -23
- package/dest/publisher/sequencer-publisher.d.ts +10 -9
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +191 -160
- package/dest/sequencer/allowed.d.ts +1 -1
- package/dest/sequencer/allowed.d.ts.map +1 -1
- package/dest/sequencer/allowed.js +6 -13
- package/dest/sequencer/config.d.ts +1 -1
- package/dest/sequencer/config.d.ts.map +1 -1
- package/dest/sequencer/config.js +1 -2
- package/dest/sequencer/index.js +0 -1
- package/dest/sequencer/metrics.js +26 -18
- package/dest/sequencer/sequencer.d.ts +18 -12
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +589 -560
- package/dest/sequencer/timetable.d.ts +1 -1
- package/dest/sequencer/timetable.d.ts.map +1 -1
- package/dest/sequencer/timetable.js +33 -19
- package/dest/sequencer/utils.d.ts +2 -2
- package/dest/sequencer/utils.d.ts.map +1 -1
- package/dest/sequencer/utils.js +22 -32
- package/dest/slasher/factory.d.ts +4 -8
- package/dest/slasher/factory.d.ts.map +1 -1
- package/dest/slasher/factory.js +5 -7
- package/dest/slasher/index.js +0 -1
- package/dest/slasher/slasher_client.d.ts +10 -62
- package/dest/slasher/slasher_client.d.ts.map +1 -1
- package/dest/slasher/slasher_client.js +47 -231
- package/dest/test/index.d.ts +3 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +4 -1
- package/dest/tx_validator/archive_cache.d.ts +3 -3
- package/dest/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/tx_validator/archive_cache.js +8 -8
- package/dest/tx_validator/gas_validator.d.ts +5 -3
- package/dest/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/tx_validator/gas_validator.js +70 -70
- package/dest/tx_validator/nullifier_cache.d.ts +2 -2
- package/dest/tx_validator/nullifier_cache.d.ts.map +1 -1
- package/dest/tx_validator/nullifier_cache.js +9 -9
- package/dest/tx_validator/phases_validator.d.ts +3 -2
- package/dest/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/tx_validator/phases_validator.js +29 -21
- package/dest/tx_validator/test_utils.d.ts +4 -2
- package/dest/tx_validator/test_utils.d.ts.map +1 -1
- package/dest/tx_validator/test_utils.js +2 -3
- package/dest/tx_validator/tx_validator_factory.d.ts +7 -5
- package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
- package/dest/tx_validator/tx_validator_factory.js +14 -13
- package/package.json +28 -29
- package/src/client/sequencer-client.ts +17 -14
- package/src/config.ts +6 -14
- package/src/global_variable_builder/global_builder.ts +18 -19
- package/src/publisher/config.ts +9 -17
- package/src/publisher/sequencer-publisher-metrics.ts +23 -2
- package/src/publisher/sequencer-publisher.ts +15 -17
- package/src/sequencer/allowed.ts +4 -4
- package/src/sequencer/config.ts +1 -1
- package/src/sequencer/sequencer.ts +40 -35
- package/src/sequencer/timetable.ts +1 -1
- package/src/sequencer/utils.ts +2 -2
- package/src/slasher/factory.ts +7 -13
- package/src/slasher/slasher_client.ts +30 -252
- package/src/test/index.ts +3 -3
- package/src/tx_validator/archive_cache.ts +4 -3
- package/src/tx_validator/gas_validator.ts +22 -31
- package/src/tx_validator/nullifier_cache.ts +3 -2
- package/src/tx_validator/phases_validator.ts +8 -8
- package/src/tx_validator/test_utils.ts +5 -3
- package/src/tx_validator/tx_validator_factory.ts +23 -17
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
var _GasTxValidator_instances, _GasTxValidator_log, _GasTxValidator_publicDataSource, _GasTxValidator_feeJuiceAddress, _GasTxValidator_enforceFees, _GasTxValidator_gasFees, _GasTxValidator_shouldSkip, _GasTxValidator_validateTxFee;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { TxExecutionPhase } from '@aztec/circuit-types';
|
|
4
|
-
import { Fr, FunctionSelector } from '@aztec/circuits.js';
|
|
5
|
-
import { U128 } from '@aztec/foundation/abi';
|
|
6
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import { computeFeePayerBalanceStorageSlot
|
|
2
|
+
import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
3
|
+
import { getExecutionRequestsByPhase } from '@aztec/simulator/server';
|
|
4
|
+
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
|
+
import { TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
8
6
|
export class GasTxValidator {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
__classPrivateFieldSet(this, _GasTxValidator_feeJuiceAddress, feeJuiceAddress, "f");
|
|
18
|
-
__classPrivateFieldSet(this, _GasTxValidator_enforceFees, enforceFees, "f");
|
|
19
|
-
__classPrivateFieldSet(this, _GasTxValidator_gasFees, gasFees, "f");
|
|
7
|
+
#log = createLogger('sequencer:tx_validator:tx_gas');
|
|
8
|
+
#publicDataSource;
|
|
9
|
+
#feeJuiceAddress;
|
|
10
|
+
#gasFees;
|
|
11
|
+
constructor(publicDataSource, feeJuiceAddress, gasFees){
|
|
12
|
+
this.#publicDataSource = publicDataSource;
|
|
13
|
+
this.#feeJuiceAddress = feeJuiceAddress;
|
|
14
|
+
this.#gasFees = gasFees;
|
|
20
15
|
}
|
|
21
|
-
validateTx(tx) {
|
|
22
|
-
if (
|
|
23
|
-
return Promise.resolve({
|
|
16
|
+
async validateTx(tx) {
|
|
17
|
+
if (await this.#shouldSkip(tx)) {
|
|
18
|
+
return Promise.resolve({
|
|
19
|
+
result: 'skipped',
|
|
20
|
+
reason: [
|
|
21
|
+
'Insufficient fee per gas'
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
24
|
}
|
|
25
|
-
return
|
|
25
|
+
return this.#validateTxFee(tx);
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (__classPrivateFieldGet(this, _GasTxValidator_enforceFees, "f")) {
|
|
43
|
-
__classPrivateFieldGet(this, _GasTxValidator_log, "f").warn(`Rejecting transaction ${tx.getTxHash()} due to missing fee payer`);
|
|
44
|
-
return { result: 'invalid', reason: ['Missing fee payer'] };
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return { result: 'valid' };
|
|
27
|
+
/**
|
|
28
|
+
* Check whether the tx's max fees are valid for the current block, and skip if not.
|
|
29
|
+
* We skip instead of invalidating since the tx may become eligible later.
|
|
30
|
+
* Note that circuits check max fees even if fee payer is unset, so we
|
|
31
|
+
* keep this validation even if the tx does not pay fees.
|
|
32
|
+
*/ async #shouldSkip(tx) {
|
|
33
|
+
const gasSettings = tx.data.constants.txContext.gasSettings;
|
|
34
|
+
// Skip the tx if its max fees are not enough for the current block's gas fees.
|
|
35
|
+
const maxFeesPerGas = gasSettings.maxFeesPerGas;
|
|
36
|
+
const notEnoughMaxFees = maxFeesPerGas.feePerDaGas.lt(this.#gasFees.feePerDaGas) || maxFeesPerGas.feePerL2Gas.lt(this.#gasFees.feePerL2Gas);
|
|
37
|
+
if (notEnoughMaxFees) {
|
|
38
|
+
this.#log.warn(`Skipping transaction ${await tx.getTxHash()} due to insufficient fee per gas`, {
|
|
39
|
+
txMaxFeesPerGas: maxFeesPerGas.toInspect(),
|
|
40
|
+
currentGasFees: this.#gasFees.toInspect()
|
|
41
|
+
});
|
|
48
42
|
}
|
|
43
|
+
return notEnoughMaxFees;
|
|
49
44
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
fn.args.length > 2 &&
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
45
|
+
async #validateTxFee(tx) {
|
|
46
|
+
const feePayer = tx.data.feePayer;
|
|
47
|
+
// Compute the maximum fee that this tx may pay, based on its gasLimits and maxFeePerGas
|
|
48
|
+
const feeLimit = tx.data.constants.txContext.gasSettings.getFeeLimit();
|
|
49
|
+
// Read current balance of the feePayer
|
|
50
|
+
const initialBalance = await this.#publicDataSource.storageRead(this.#feeJuiceAddress, await computeFeePayerBalanceStorageSlot(feePayer));
|
|
51
|
+
// If there is a claim in this tx that increases the fee payer balance in Fee Juice, add it to balance
|
|
52
|
+
const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
|
|
53
|
+
const increasePublicBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
|
|
54
|
+
const claimFunctionCall = setupFns.find((fn)=>fn.callContext.contractAddress.equals(this.#feeJuiceAddress) && fn.callContext.msgSender.equals(this.#feeJuiceAddress) && fn.args.length > 2 && // Public functions get routed through the dispatch function, whose first argument is the target function selector.
|
|
55
|
+
fn.args[0].equals(increasePublicBalanceSelector.toField()) && fn.args[1].equals(feePayer.toField()) && !fn.callContext.isStaticCall);
|
|
56
|
+
// The claim amount is at index 2 in the args array because:
|
|
57
|
+
// - Index 0: Target function selector (due to dispatch routing)
|
|
58
|
+
// - Index 1: Amount recipient
|
|
59
|
+
// - Index 2: Amount being claimed
|
|
60
|
+
const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[2]) : initialBalance;
|
|
61
|
+
if (balance.lt(feeLimit)) {
|
|
62
|
+
this.#log.warn(`Rejecting transaction due to not enough fee payer balance`, {
|
|
63
|
+
feePayer,
|
|
64
|
+
balance: balance.toBigInt(),
|
|
65
|
+
feeLimit: feeLimit.toBigInt()
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
result: 'invalid',
|
|
69
|
+
reason: [
|
|
70
|
+
'Insufficient fee payer balance'
|
|
71
|
+
]
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
result: 'valid'
|
|
76
|
+
};
|
|
75
77
|
}
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxnQkFBZ0IsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RyxPQUFPLEVBQXFCLEVBQUUsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3pHLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ0UsZ0JBQW1DLEVBQ25DLGVBQTZCLEVBQzdCLFdBQW9CLEVBQ3BCLE9BQWdCOztRQVZsQiw4QkFBTyxZQUFZLENBQUMsK0JBQStCLENBQUMsRUFBQztRQUNyRCxtREFBcUM7UUFDckMsa0RBQStCO1FBQy9CLDhDQUFzQjtRQUN0QiwwQ0FBa0I7UUFRaEIsdUJBQUEsSUFBSSxvQ0FBcUIsZ0JBQWdCLE1BQUEsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLG1DQUFvQixlQUFlLE1BQUEsQ0FBQztRQUN4Qyx1QkFBQSxJQUFJLCtCQUFnQixXQUFXLE1BQUEsQ0FBQztRQUNoQyx1QkFBQSxJQUFJLDJCQUFZLE9BQU8sTUFBQSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBTTtRQUNmLElBQUksdUJBQUEsSUFBSSw2REFBWSxNQUFoQixJQUFJLEVBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RG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
|
|
78
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type { NullifierSource } from '@aztec/p2p';
|
|
4
|
+
import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
/**
|
|
6
6
|
* Implements a nullifier source by checking a DB and an in-memory collection.
|
|
7
7
|
* Intended for validating transactions as they are added to a block.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../src/tx_validator/nullifier_cache.ts"],"names":[],"mappings":";;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../src/tx_validator/nullifier_cache.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,EAAE;IAFtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEJ,EAAE,EAAE,wBAAwB;IAInC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAS/D,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE;CAK1C"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { MerkleTreeId } from '@aztec/
|
|
1
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
2
2
|
/**
|
|
3
3
|
* Implements a nullifier source by checking a DB and an in-memory collection.
|
|
4
4
|
* Intended for validating transactions as they are added to a block.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
*/ export class NullifierCache {
|
|
6
|
+
db;
|
|
7
|
+
nullifiers;
|
|
8
|
+
constructor(db){
|
|
8
9
|
this.db = db;
|
|
9
10
|
this.nullifiers = new Set();
|
|
10
11
|
}
|
|
11
12
|
async nullifiersExist(nullifiers) {
|
|
12
|
-
const cacheResults = nullifiers.map(n
|
|
13
|
-
const toCheckDb = nullifiers.filter((_n, index)
|
|
13
|
+
const cacheResults = nullifiers.map((n)=>this.nullifiers.has(n.toString()));
|
|
14
|
+
const toCheckDb = nullifiers.filter((_n, index)=>!cacheResults[index]);
|
|
14
15
|
const dbHits = await this.db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, toCheckDb);
|
|
15
16
|
let dbIndex = 0;
|
|
16
|
-
return nullifiers.map((_n, index)
|
|
17
|
+
return nullifiers.map((_n, index)=>cacheResults[index] || dbHits[dbIndex++] !== undefined);
|
|
17
18
|
}
|
|
18
19
|
addNullifiers(nullifiers) {
|
|
19
|
-
for (const nullifier of nullifiers)
|
|
20
|
+
for (const nullifier of nullifiers){
|
|
20
21
|
this.nullifiers.add(nullifier.toString());
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVyX2NhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3ZhbGlkYXRvci9udWxsaWZpZXJfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUduRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixFQUE0QjtRQUE1QixPQUFFLEdBQUYsRUFBRSxDQUEwQjtRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBb0I7UUFDL0MsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFvQjtRQUN2QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
2
|
+
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { type PublicExecutionRequest, Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
|
|
3
4
|
export declare class PhasesTxValidator implements TxValidator<Tx> {
|
|
4
5
|
#private;
|
|
5
6
|
private setupAllowList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/phases_validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EACL,KAAK,sBAAsB,EAC3B,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIZ,OAAO,CAAC,cAAc;IAFjE,OAAO,CAAC,kBAAkB,CAA8B;gBAE5C,SAAS,EAAE,kBAAkB,EAAU,cAAc,EAAE,cAAc,EAAE;IAI7E,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgC/C,aAAa,CAAC,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6CvG"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
var _PhasesTxValidator_log;
|
|
2
|
-
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
-
import { Tx, TxExecutionPhase, } from '@aztec/circuit-types';
|
|
4
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
2
|
import { ContractsDataSourcePublicDB, getExecutionRequestsByPhase } from '@aztec/simulator/server';
|
|
3
|
+
import { Tx, TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
6
4
|
export class PhasesTxValidator {
|
|
7
|
-
|
|
5
|
+
setupAllowList;
|
|
6
|
+
#log;
|
|
7
|
+
contractDataSource;
|
|
8
|
+
constructor(contracts, setupAllowList){
|
|
8
9
|
this.setupAllowList = setupAllowList;
|
|
9
|
-
|
|
10
|
+
this.#log = createLogger('sequencer:tx_validator:tx_phases');
|
|
10
11
|
this.contractDataSource = new ContractsDataSourcePublicDB(contracts);
|
|
11
12
|
}
|
|
12
13
|
async validateTx(tx) {
|
|
@@ -16,20 +17,30 @@ export class PhasesTxValidator {
|
|
|
16
17
|
// which is what we're trying to do as part of the current txs.
|
|
17
18
|
await this.contractDataSource.addNewContracts(tx);
|
|
18
19
|
if (!tx.data.forPublic) {
|
|
19
|
-
|
|
20
|
-
return {
|
|
20
|
+
this.#log.debug(`Tx ${Tx.getHash(tx)} does not contain enqueued public functions. Skipping phases validation.`);
|
|
21
|
+
return {
|
|
22
|
+
result: 'valid'
|
|
23
|
+
};
|
|
21
24
|
}
|
|
22
25
|
const setupFns = getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP);
|
|
23
|
-
for (const setupFn of setupFns)
|
|
24
|
-
if (!
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
for (const setupFn of setupFns){
|
|
27
|
+
if (!await this.isOnAllowList(setupFn, this.setupAllowList)) {
|
|
28
|
+
this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} because it calls setup function not on allow list: ${setupFn.callContext.contractAddress}:${setupFn.callContext.functionSelector}`, {
|
|
29
|
+
allowList: this.setupAllowList
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
result: 'invalid',
|
|
33
|
+
reason: [
|
|
34
|
+
'Setup function not on allow list'
|
|
35
|
+
]
|
|
36
|
+
};
|
|
27
37
|
}
|
|
28
38
|
}
|
|
29
|
-
return {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
return {
|
|
40
|
+
result: 'valid'
|
|
41
|
+
};
|
|
42
|
+
} finally{
|
|
43
|
+
this.contractDataSource.clearContractsForTx();
|
|
33
44
|
}
|
|
34
45
|
}
|
|
35
46
|
async isOnAllowList(publicCall, allowList) {
|
|
@@ -38,7 +49,7 @@ export class PhasesTxValidator {
|
|
|
38
49
|
}
|
|
39
50
|
const { contractAddress, functionSelector } = publicCall.callContext;
|
|
40
51
|
// do these checks first since they don't require the contract class
|
|
41
|
-
for (const entry of allowList)
|
|
52
|
+
for (const entry of allowList){
|
|
42
53
|
if ('address' in entry && !('selector' in entry)) {
|
|
43
54
|
if (contractAddress.equals(entry.address)) {
|
|
44
55
|
return true;
|
|
@@ -54,13 +65,12 @@ export class PhasesTxValidator {
|
|
|
54
65
|
throw new Error(`Contract not found: ${contractAddress}`);
|
|
55
66
|
}
|
|
56
67
|
if ('classId' in entry && !('selector' in entry)) {
|
|
57
|
-
if (contractClass.
|
|
68
|
+
if (contractClass.currentContractClassId.equals(entry.classId)) {
|
|
58
69
|
return true;
|
|
59
70
|
}
|
|
60
71
|
}
|
|
61
72
|
if ('classId' in entry && 'selector' in entry) {
|
|
62
|
-
if (contractClass.
|
|
63
|
-
(entry.selector === undefined || entry.selector.equals(functionSelector))) {
|
|
73
|
+
if (contractClass.currentContractClassId.equals(entry.classId) && (entry.selector === undefined || entry.selector.equals(functionSelector))) {
|
|
64
74
|
return true;
|
|
65
75
|
}
|
|
66
76
|
}
|
|
@@ -68,5 +78,3 @@ export class PhasesTxValidator {
|
|
|
68
78
|
return false;
|
|
69
79
|
}
|
|
70
80
|
}
|
|
71
|
-
_PhasesTxValidator_log = new WeakMap();
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvcGhhc2VzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxFQUFFLEVBQ0YsZ0JBQWdCLEdBR2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5HLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxTQUE2QixFQUFVLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhuRixpQ0FBTyxZQUFZLENBQUMsa0NBQWtDLENBQUMsRUFBQztRQUl0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFNO1FBQ3JCLElBQUksQ0FBQztZQUNILHdGQUF3RjtZQUN4RixtR0FBbUc7WUFDbkcsK0RBQStEO1lBQy9ELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsdUJBQUEsSUFBSSw4QkFBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUM7Z0JBQ2hILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlELHVCQUFBLElBQUksOEJBQUssQ0FBQyxJQUFJLENBQ1osZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHVEQUM1QixPQUFPLENBQUMsV0FBVyxDQUFDLGVBQ3RCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUMxQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQ25DLENBQUM7b0JBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBRSxDQUFDO2dCQUM3RSxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQWtDLEVBQUUsU0FBMkI7UUFDakYsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUVyRSxvRUFBb0U7UUFDcEUsS0FBSyxNQUFNLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM5QixJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3JGLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFekYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFFRCxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN4RCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzlDLElBQ0UsYUFBYSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDbkQsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3pFLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
5
|
export declare function patchNonRevertibleFn(tx: Tx, index: number, overrides: {
|
|
4
6
|
address?: AztecAddress;
|
|
5
7
|
selector: FunctionSelector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/tx_validator/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/tx_validator/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,SAAS,EAAE;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,YAAY,CAAA;CAAE,GACvG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAEhE;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,SAAS,EAAE;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,YAAY,CAAA;CAAE,GACvG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAEhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computeVarArgsHash } from '@aztec/
|
|
1
|
+
import { computeVarArgsHash } from '@aztec/stdlib/hash';
|
|
2
2
|
export function patchNonRevertibleFn(tx, index, overrides) {
|
|
3
3
|
return patchFn('nonRevertibleAccumulatedData', tx, index, overrides);
|
|
4
4
|
}
|
|
@@ -21,7 +21,6 @@ async function patchFn(where, tx, index, overrides) {
|
|
|
21
21
|
tx.data.forPublic[where].publicCallRequests[index] = request;
|
|
22
22
|
return {
|
|
23
23
|
address: fn.callContext.contractAddress,
|
|
24
|
-
selector: fn.callContext.functionSelector
|
|
24
|
+
selector: fn.callContext.functionSelector
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEVBQU0sRUFDTixLQUFhLEVBQ2IsU0FBd0c7SUFFeEcsT0FBTyxPQUFPLENBQUMsOEJBQThCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixFQUFNLEVBQ04sS0FBYSxFQUNiLFNBQXdHO0lBRXhHLE9BQU8sT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELEtBQUssVUFBVSxPQUFPLENBQ3BCLEtBQW1FLEVBQ25FLEVBQU0sRUFDTixLQUFhLEVBQ2IsU0FBd0c7SUFFeEcsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFFLENBQUM7SUFDOUQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUNyRixFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDckQsRUFBRSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDcEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUMzRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDekQsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzRCxPQUFPLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQ25ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBRTlELE9BQU87UUFDTCxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlO1FBQ3ZDLFFBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQjtLQUMxQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
2
|
+
import type { GasFees } from '@aztec/stdlib/gas';
|
|
3
|
+
import type { AllowedElement, ClientProtocolCircuitVerifier, MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import { GlobalVariables, type ProcessedTx, type Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
3
5
|
import { NullifierCache } from './nullifier_cache.js';
|
|
4
|
-
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined,
|
|
6
|
+
export declare function createValidatorForAcceptingTxs(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { blockNumber, l1ChainId, setupAllowList, gasFees, skipFeeEnforcement, }: {
|
|
5
7
|
blockNumber: number;
|
|
6
8
|
l1ChainId: number;
|
|
7
|
-
enforceFees: boolean;
|
|
8
9
|
setupAllowList: AllowedElement[];
|
|
9
10
|
gasFees: GasFees;
|
|
11
|
+
skipFeeEnforcement?: boolean;
|
|
10
12
|
}): TxValidator<Tx>;
|
|
11
|
-
export declare function createValidatorsForBlockBuilding(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, globalVariables: GlobalVariables,
|
|
13
|
+
export declare function createValidatorsForBlockBuilding(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, globalVariables: GlobalVariables, setupAllowList: AllowedElement[]): {
|
|
12
14
|
preprocessValidator: TxValidator<Tx>;
|
|
13
15
|
postprocessValidator: TxValidator<ProcessedTx>;
|
|
14
16
|
nullifierCache: NullifierCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tx_validator_factory.d.ts","sourceRoot":"","sources":["../../src/tx_validator/tx_validator_factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIhG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,EACnD,EACE,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,EACP,kBAAkB,GACnB,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACA,WAAW,CAAC,EAAE,CAAC,CAkBjB;AAED,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,wBAAwB,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAAE,GAC/B;IACD,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAiBA"}
|
|
@@ -1,49 +1,50 @@
|
|
|
1
|
-
import { Fr } from '@aztec/
|
|
2
|
-
import { AggregateTxValidator, BlockHeaderTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { AggregateTxValidator, BlockHeaderTxValidator, DataTxValidator, DoubleSpendTxValidator, MetadataTxValidator, TxProofValidator } from '@aztec/p2p';
|
|
3
3
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
4
4
|
import { readPublicState } from '@aztec/simulator/server';
|
|
5
5
|
import { ArchiveCache } from './archive_cache.js';
|
|
6
6
|
import { GasTxValidator } from './gas_validator.js';
|
|
7
7
|
import { NullifierCache } from './nullifier_cache.js';
|
|
8
8
|
import { PhasesTxValidator } from './phases_validator.js';
|
|
9
|
-
export function createValidatorForAcceptingTxs(db, contractDataSource, verifier,
|
|
10
|
-
const { blockNumber, l1ChainId, enforceFees, setupAllowList, gasFees } = data;
|
|
9
|
+
export function createValidatorForAcceptingTxs(db, contractDataSource, verifier, { blockNumber, l1ChainId, setupAllowList, gasFees, skipFeeEnforcement }) {
|
|
11
10
|
const validators = [
|
|
12
11
|
new DataTxValidator(),
|
|
13
12
|
new MetadataTxValidator(new Fr(l1ChainId), new Fr(blockNumber)),
|
|
14
13
|
new DoubleSpendTxValidator(new NullifierCache(db)),
|
|
15
14
|
new PhasesTxValidator(contractDataSource, setupAllowList),
|
|
16
|
-
new
|
|
17
|
-
new BlockHeaderTxValidator(new ArchiveCache(db)),
|
|
15
|
+
new BlockHeaderTxValidator(new ArchiveCache(db))
|
|
18
16
|
];
|
|
17
|
+
if (!skipFeeEnforcement) {
|
|
18
|
+
validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees));
|
|
19
|
+
}
|
|
19
20
|
if (verifier) {
|
|
20
21
|
validators.push(new TxProofValidator(verifier));
|
|
21
22
|
}
|
|
22
23
|
return new AggregateTxValidator(...validators);
|
|
23
24
|
}
|
|
24
|
-
export function createValidatorsForBlockBuilding(db, contractDataSource, globalVariables,
|
|
25
|
+
export function createValidatorsForBlockBuilding(db, contractDataSource, globalVariables, setupAllowList) {
|
|
25
26
|
const nullifierCache = new NullifierCache(db);
|
|
26
27
|
const archiveCache = new ArchiveCache(db);
|
|
27
28
|
const publicStateSource = new DatabasePublicStateSource(db);
|
|
28
29
|
return {
|
|
29
|
-
preprocessValidator: preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource,
|
|
30
|
+
preprocessValidator: preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, globalVariables, setupAllowList),
|
|
30
31
|
postprocessValidator: postprocessValidator(nullifierCache),
|
|
31
|
-
nullifierCache
|
|
32
|
+
nullifierCache
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
class DatabasePublicStateSource {
|
|
35
|
-
|
|
36
|
+
db;
|
|
37
|
+
constructor(db){
|
|
36
38
|
this.db = db;
|
|
37
39
|
}
|
|
38
40
|
storageRead(contractAddress, slot) {
|
|
39
41
|
return readPublicState(this.db, contractAddress, slot);
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
|
-
function preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource,
|
|
44
|
+
function preprocessValidator(nullifierCache, archiveCache, publicStateSource, contractDataSource, globalVariables, setupAllowList) {
|
|
43
45
|
// We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
|
|
44
|
-
return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice,
|
|
46
|
+
return new AggregateTxValidator(new MetadataTxValidator(globalVariables.chainId, globalVariables.blockNumber), new DoubleSpendTxValidator(nullifierCache), new PhasesTxValidator(contractDataSource, setupAllowList), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees), new BlockHeaderTxValidator(archiveCache));
|
|
45
47
|
}
|
|
46
48
|
function postprocessValidator(nullifierCache) {
|
|
47
49
|
return new DoubleSpendTxValidator(nullifierCache);
|
|
48
50
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdG9yX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfdmFsaWRhdG9yL3R4X3ZhbGlkYXRvcl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBOEMsRUFBRSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsRUFBNEIsRUFDNUIsa0JBQXNDLEVBQ3RDLFFBQW1ELEVBQ25ELElBTUM7SUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUM5RSxNQUFNLFVBQVUsR0FBc0I7UUFDcEMsSUFBSSxlQUFlLEVBQUU7UUFDckIsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxJQUFJLHNCQUFzQixDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDO1FBQ3pELElBQUksY0FBYyxDQUFDLElBQUkseUJBQXlCLENBQUMsRUFBRSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDN0csSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNqRCxDQUFDO0lBRUYsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxFQUE0QixFQUM1QixrQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsV0FBb0IsRUFDcEIsY0FBZ0M7SUFNaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVELE9BQU87UUFDTCxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FDdEMsY0FBYyxFQUNkLFlBQVksRUFDWixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxlQUFlLEVBQ2YsY0FBYyxDQUNmO1FBQ0Qsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQzFELGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0seUJBQXlCO0lBQzdCLFlBQW9CLEVBQTRCO1FBQTVCLE9BQUUsR0FBRixFQUFFLENBQTBCO0lBQUcsQ0FBQztJQUVwRCxXQUFXLENBQUMsZUFBNkIsRUFBRSxJQUFRO1FBQ2pELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVELFNBQVMsbUJBQW1CLENBQzFCLGNBQThCLEVBQzlCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsV0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsY0FBZ0M7SUFFaEMsNElBQTRJO0lBQzVJLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFDN0UsSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFDMUMsSUFBSSxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLENBQUMsRUFDekQsSUFBSSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQzdHLElBQUksc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxjQUE4QjtJQUMxRCxPQUFPLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDcEQsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.77.0-testnet-ignition.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -23,42 +23,41 @@
|
|
|
23
23
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
24
24
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
25
25
|
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
26
|
-
"test": "
|
|
26
|
+
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
27
27
|
"test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
|
|
28
28
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/aztec.js": "0.
|
|
32
|
-
"@aztec/bb-prover": "0.
|
|
33
|
-
"@aztec/blob-lib": "0.
|
|
34
|
-
"@aztec/blob-sink": "0.
|
|
35
|
-
"@aztec/
|
|
36
|
-
"@aztec/
|
|
37
|
-
"@aztec/
|
|
38
|
-
"@aztec/
|
|
39
|
-
"@aztec/
|
|
40
|
-
"@aztec/
|
|
41
|
-
"@aztec/
|
|
42
|
-
"@aztec/noir-
|
|
43
|
-
"@aztec/
|
|
44
|
-
"@aztec/
|
|
45
|
-
"@aztec/
|
|
46
|
-
"@aztec/
|
|
47
|
-
"@aztec/
|
|
48
|
-
"@aztec/telemetry-client": "0.
|
|
49
|
-
"@aztec/
|
|
50
|
-
"@aztec/
|
|
51
|
-
"@aztec/world-state": "0.76.4",
|
|
52
|
-
"@noir-lang/acvm_js": "1.0.0-beta.1",
|
|
53
|
-
"@noir-lang/types": "1.0.0-beta.1",
|
|
31
|
+
"@aztec/aztec.js": "0.77.0-testnet-ignition.21",
|
|
32
|
+
"@aztec/bb-prover": "0.77.0-testnet-ignition.21",
|
|
33
|
+
"@aztec/blob-lib": "0.77.0-testnet-ignition.21",
|
|
34
|
+
"@aztec/blob-sink": "0.77.0-testnet-ignition.21",
|
|
35
|
+
"@aztec/constants": "0.77.0-testnet-ignition.21",
|
|
36
|
+
"@aztec/epoch-cache": "0.77.0-testnet-ignition.21",
|
|
37
|
+
"@aztec/ethereum": "0.77.0-testnet-ignition.21",
|
|
38
|
+
"@aztec/foundation": "0.77.0-testnet-ignition.21",
|
|
39
|
+
"@aztec/l1-artifacts": "0.77.0-testnet-ignition.21",
|
|
40
|
+
"@aztec/merkle-tree": "0.77.0-testnet-ignition.21",
|
|
41
|
+
"@aztec/noir-contracts.js": "0.77.0-testnet-ignition.21",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.21",
|
|
43
|
+
"@aztec/p2p": "0.77.0-testnet-ignition.21",
|
|
44
|
+
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.21",
|
|
45
|
+
"@aztec/prover-client": "0.77.0-testnet-ignition.21",
|
|
46
|
+
"@aztec/simulator": "0.77.0-testnet-ignition.21",
|
|
47
|
+
"@aztec/stdlib": "0.77.0-testnet-ignition.21",
|
|
48
|
+
"@aztec/telemetry-client": "0.77.0-testnet-ignition.21",
|
|
49
|
+
"@aztec/validator-client": "0.77.0-testnet-ignition.21",
|
|
50
|
+
"@aztec/world-state": "0.77.0-testnet-ignition.21",
|
|
54
51
|
"lodash.chunk": "^4.2.0",
|
|
55
52
|
"lodash.pick": "^4.4.0",
|
|
56
53
|
"tslib": "^2.4.0",
|
|
57
|
-
"viem": "2.22.8"
|
|
54
|
+
"viem": "2.22.8",
|
|
55
|
+
"@aztec/noir-acvm_js": "0.77.0-testnet-ignition.21",
|
|
56
|
+
"@aztec/noir-types": "0.77.0-testnet-ignition.21"
|
|
58
57
|
},
|
|
59
58
|
"devDependencies": {
|
|
60
|
-
"@aztec/archiver": "
|
|
61
|
-
"@aztec/kv-store": "
|
|
59
|
+
"@aztec/archiver": "0.77.0-testnet-ignition.21",
|
|
60
|
+
"@aztec/kv-store": "0.77.0-testnet-ignition.21",
|
|
62
61
|
"@jest/globals": "^29.5.0",
|
|
63
62
|
"@types/jest": "^29.5.0",
|
|
64
63
|
"@types/levelup": "^5.1.2",
|
|
@@ -114,7 +113,7 @@
|
|
|
114
113
|
"reporters": [
|
|
115
114
|
"default"
|
|
116
115
|
],
|
|
117
|
-
"testTimeout":
|
|
116
|
+
"testTimeout": 120000,
|
|
118
117
|
"setupFiles": [
|
|
119
118
|
"../../foundation/src/jest/setup.mjs"
|
|
120
119
|
]
|