@aztec/sequencer-client 0.65.1 → 0.65.2
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/global_variable_builder/global_builder.d.ts +4 -0
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +15 -3
- package/dest/tx_validator/gas_validator.d.ts.map +1 -1
- package/dest/tx_validator/gas_validator.js +6 -2
- package/package.json +19 -19
- package/src/global_variable_builder/global_builder.ts +16 -2
- package/src/tx_validator/gas_validator.ts +5 -1
|
@@ -11,6 +11,10 @@ export declare class GlobalVariableBuilder implements GlobalVariableBuilderInter
|
|
|
11
11
|
private publicClient;
|
|
12
12
|
private ethereumSlotDuration;
|
|
13
13
|
constructor(config: L1ReaderConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>);
|
|
14
|
+
/**
|
|
15
|
+
* Computes the "current" base fees, e.g., the price that you currently should pay to get include in the next block
|
|
16
|
+
* @returns Base fees for the expected next block
|
|
17
|
+
*/
|
|
14
18
|
getCurrentBaseFees(): Promise<GasFees>;
|
|
15
19
|
/**
|
|
16
20
|
* Simple builder of global variables that use the minimum time possible.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAe9C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAgE;IAE3E,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAe9C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAgE;IAE3E,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IAoBpF;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAanD;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,EAAE,EACf,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;CA8B5B"}
|
|
@@ -24,8 +24,19 @@ export class GlobalVariableBuilder {
|
|
|
24
24
|
client: this.publicClient,
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Computes the "current" base fees, e.g., the price that you currently should pay to get include in the next block
|
|
29
|
+
* @returns Base fees for the expected next block
|
|
30
|
+
*/
|
|
27
31
|
async getCurrentBaseFees() {
|
|
28
|
-
|
|
32
|
+
// Since this might be called in the middle of a slot where a block might have been published,
|
|
33
|
+
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
34
|
+
// The timestamp of that last block will act as a lower bound for the next block.
|
|
35
|
+
const lastBlock = await this.rollupContract.read.getBlock([await this.rollupContract.read.getPendingBlockNumber()]);
|
|
36
|
+
const earliestTimestamp = await this.rollupContract.read.getTimestampForSlot([lastBlock.slotNumber + 1n]);
|
|
37
|
+
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
38
|
+
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
39
|
+
return new GasFees(Fr.ZERO, new Fr(await this.rollupContract.read.getManaBaseFeeAt([timestamp, true])));
|
|
29
40
|
}
|
|
30
41
|
/**
|
|
31
42
|
* Simple builder of global variables that use the minimum time possible.
|
|
@@ -45,10 +56,11 @@ export class GlobalVariableBuilder {
|
|
|
45
56
|
const timestamp = await this.rollupContract.read.getTimestampForSlot([slotNumber]);
|
|
46
57
|
const slotFr = new Fr(slotNumber);
|
|
47
58
|
const timestampFr = new Fr(timestamp);
|
|
48
|
-
|
|
59
|
+
// We can skip much of the logic in getCurrentBaseFees since it we already check that we are not within a slot elsewhere.
|
|
60
|
+
const gasFees = new GasFees(Fr.ZERO, new Fr(await this.rollupContract.read.getManaBaseFeeAt([timestamp, true])));
|
|
49
61
|
const globalVariables = new GlobalVariables(chainId, version, blockNumber, slotFr, timestampFr, coinbase, feeRecipient, gasFees);
|
|
50
62
|
this.log.debug(`Built global variables for block ${blockNumber}`, globalVariables.toFriendlyJSON());
|
|
51
63
|
return globalVariables;
|
|
52
64
|
}
|
|
53
65
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvZ2xvYmFsX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEcsT0FBTyxFQUErQyxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUlMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsV0FBVyxFQUNYLElBQUksR0FDTCxNQUFNLE1BQU0sQ0FBQztBQUdkOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQU9oQyxZQUFZLE1BQXdFO1FBTjVFLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBT3pFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0QsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFFeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztZQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzdCLGVBQWUsRUFBRSxNQUFNLENBQUMscUJBQXFCO1NBQzlDLENBQUMsQ0FBQztRQUVILElBQUksQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAoB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,EAAoB,MAAM,oBAAoB,CAAC;AAIlF,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;CACvE;AAED,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAKmC,WAAW,EAAE,OAAO;gBAA/F,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAS,WAAW,EAAE,OAAO;IAKrG,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAezE,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../src/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAoB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,EAAoB,MAAM,oBAAoB,CAAC;AAIlF,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;CACvE;AAED,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAKmC,WAAW,EAAE,OAAO;gBAA/F,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAS,WAAW,EAAE,OAAO;IAKrG,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAezE,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAgDrC"}
|
|
@@ -57,9 +57,13 @@ _GasTxValidator_log = new WeakMap(), _GasTxValidator_publicDataSource = new Weak
|
|
|
57
57
|
!fn.callContext.isStaticCall);
|
|
58
58
|
const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[2]) : initialBalance;
|
|
59
59
|
if (balance.lt(feeLimit)) {
|
|
60
|
-
__classPrivateFieldGet(this, _GasTxValidator_log, "f").info(`Rejecting transaction due to not enough fee payer balance`, {
|
|
60
|
+
__classPrivateFieldGet(this, _GasTxValidator_log, "f").info(`Rejecting transaction due to not enough fee payer balance`, {
|
|
61
|
+
feePayer,
|
|
62
|
+
balance: balance.toBigInt(),
|
|
63
|
+
feeLimit: feeLimit.toBigInt(),
|
|
64
|
+
});
|
|
61
65
|
return false;
|
|
62
66
|
}
|
|
63
67
|
return true;
|
|
64
68
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF92YWxpZGF0b3IvZ2FzX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxnQkFBZ0IsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQThCLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPbEcsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxnQkFBbUMsRUFBRSxlQUE2QixFQUFTLFdBQW9COztRQUFwQixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUozRyw4QkFBTyxpQkFBaUIsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFDO1FBQ2hFLG1EQUFxQztRQUNyQyxrREFBK0I7UUFHN0IsdUJBQUEsSUFBSSxvQ0FBcUIsZ0JBQWdCLE1BQUEsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLG1DQUFvQixlQUFlLE1BQUEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFTO1FBQ3pCLE1BQU0sUUFBUSxHQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBUyxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sdUJBQUEsSUFBSSxnRUFBZSxNQUFuQixJQUFJLEVBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQztRQUNILENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.65.
|
|
3
|
+
"version": "0.65.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -24,24 +24,24 @@
|
|
|
24
24
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aztec/aztec.js": "0.65.
|
|
28
|
-
"@aztec/bb-prover": "0.65.
|
|
29
|
-
"@aztec/circuit-types": "0.65.
|
|
30
|
-
"@aztec/circuits.js": "0.65.
|
|
31
|
-
"@aztec/ethereum": "0.65.
|
|
32
|
-
"@aztec/foundation": "0.65.
|
|
33
|
-
"@aztec/l1-artifacts": "0.65.
|
|
34
|
-
"@aztec/merkle-tree": "0.65.
|
|
35
|
-
"@aztec/noir-contracts.js": "0.65.
|
|
36
|
-
"@aztec/noir-protocol-circuits-types": "0.65.
|
|
37
|
-
"@aztec/p2p": "0.65.
|
|
38
|
-
"@aztec/protocol-contracts": "0.65.
|
|
39
|
-
"@aztec/prover-client": "0.65.
|
|
40
|
-
"@aztec/simulator": "0.65.
|
|
41
|
-
"@aztec/telemetry-client": "0.65.
|
|
42
|
-
"@aztec/types": "0.65.
|
|
43
|
-
"@aztec/validator-client": "0.65.
|
|
44
|
-
"@aztec/world-state": "0.65.
|
|
27
|
+
"@aztec/aztec.js": "0.65.2",
|
|
28
|
+
"@aztec/bb-prover": "0.65.2",
|
|
29
|
+
"@aztec/circuit-types": "0.65.2",
|
|
30
|
+
"@aztec/circuits.js": "0.65.2",
|
|
31
|
+
"@aztec/ethereum": "0.65.2",
|
|
32
|
+
"@aztec/foundation": "0.65.2",
|
|
33
|
+
"@aztec/l1-artifacts": "0.65.2",
|
|
34
|
+
"@aztec/merkle-tree": "0.65.2",
|
|
35
|
+
"@aztec/noir-contracts.js": "0.65.2",
|
|
36
|
+
"@aztec/noir-protocol-circuits-types": "0.65.2",
|
|
37
|
+
"@aztec/p2p": "0.65.2",
|
|
38
|
+
"@aztec/protocol-contracts": "0.65.2",
|
|
39
|
+
"@aztec/prover-client": "0.65.2",
|
|
40
|
+
"@aztec/simulator": "0.65.2",
|
|
41
|
+
"@aztec/telemetry-client": "0.65.2",
|
|
42
|
+
"@aztec/types": "0.65.2",
|
|
43
|
+
"@aztec/validator-client": "0.65.2",
|
|
44
|
+
"@aztec/world-state": "0.65.2",
|
|
45
45
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
46
46
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
47
47
|
"lodash.chunk": "^4.2.0",
|
|
@@ -46,8 +46,21 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Computes the "current" base fees, e.g., the price that you currently should pay to get include in the next block
|
|
51
|
+
* @returns Base fees for the expected next block
|
|
52
|
+
*/
|
|
49
53
|
public async getCurrentBaseFees(): Promise<GasFees> {
|
|
50
|
-
|
|
54
|
+
// Since this might be called in the middle of a slot where a block might have been published,
|
|
55
|
+
// we need to fetch the last block written, and estimate the earliest timestamp for the next block.
|
|
56
|
+
// The timestamp of that last block will act as a lower bound for the next block.
|
|
57
|
+
|
|
58
|
+
const lastBlock = await this.rollupContract.read.getBlock([await this.rollupContract.read.getPendingBlockNumber()]);
|
|
59
|
+
const earliestTimestamp = await this.rollupContract.read.getTimestampForSlot([lastBlock.slotNumber + 1n]);
|
|
60
|
+
const nextEthTimestamp = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration));
|
|
61
|
+
const timestamp = earliestTimestamp > nextEthTimestamp ? earliestTimestamp : nextEthTimestamp;
|
|
62
|
+
|
|
63
|
+
return new GasFees(Fr.ZERO, new Fr(await this.rollupContract.read.getManaBaseFeeAt([timestamp, true])));
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
/**
|
|
@@ -77,7 +90,8 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
|
|
|
77
90
|
const slotFr = new Fr(slotNumber);
|
|
78
91
|
const timestampFr = new Fr(timestamp);
|
|
79
92
|
|
|
80
|
-
|
|
93
|
+
// We can skip much of the logic in getCurrentBaseFees since it we already check that we are not within a slot elsewhere.
|
|
94
|
+
const gasFees = new GasFees(Fr.ZERO, new Fr(await this.rollupContract.read.getManaBaseFeeAt([timestamp, true])));
|
|
81
95
|
|
|
82
96
|
const globalVariables = new GlobalVariables(
|
|
83
97
|
chainId,
|
|
@@ -72,7 +72,11 @@ export class GasTxValidator implements TxValidator<Tx> {
|
|
|
72
72
|
|
|
73
73
|
const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[2]) : initialBalance;
|
|
74
74
|
if (balance.lt(feeLimit)) {
|
|
75
|
-
this.#log.info(`Rejecting transaction due to not enough fee payer balance`, {
|
|
75
|
+
this.#log.info(`Rejecting transaction due to not enough fee payer balance`, {
|
|
76
|
+
feePayer,
|
|
77
|
+
balance: balance.toBigInt(),
|
|
78
|
+
feeLimit: feeLimit.toBigInt(),
|
|
79
|
+
});
|
|
76
80
|
return false;
|
|
77
81
|
}
|
|
78
82
|
return true;
|