@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
package/dest/publisher/config.js
CHANGED
|
@@ -1,56 +1,41 @@
|
|
|
1
1
|
import { blobSinkConfigMapping } from '@aztec/blob-sink/client';
|
|
2
|
-
import { NULL_KEY, l1TxUtilsConfigMappings } from '@aztec/ethereum';
|
|
3
|
-
import { getConfigFromMappings
|
|
2
|
+
import { NULL_KEY, l1ReaderConfigMappings, l1TxUtilsConfigMappings } from '@aztec/ethereum';
|
|
3
|
+
import { getConfigFromMappings } from '@aztec/foundation/config';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
export const getTxSenderConfigMappings = (scope)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
defaultValue: NULL_KEY,
|
|
27
|
-
},
|
|
28
|
-
requiredConfirmations: {
|
|
29
|
-
env: `${scope}_REQUIRED_CONFIRMATIONS`,
|
|
30
|
-
parseEnv: (val) => +val,
|
|
31
|
-
defaultValue: 1,
|
|
32
|
-
description: 'The number of confirmations required.',
|
|
33
|
-
},
|
|
34
|
-
viemPollingIntervalMS: {
|
|
35
|
-
env: `${scope}_VIEM_POLLING_INTERVAL_MS`,
|
|
36
|
-
description: 'The polling interval viem uses in ms',
|
|
37
|
-
...numberConfigHelper(1000),
|
|
38
|
-
},
|
|
39
|
-
});
|
|
5
|
+
export const getTxSenderConfigMappings = (scope)=>({
|
|
6
|
+
...l1ReaderConfigMappings,
|
|
7
|
+
customForwarderContractAddress: {
|
|
8
|
+
env: `CUSTOM_FORWARDER_CONTRACT_ADDRESS`,
|
|
9
|
+
parseEnv: (val)=>EthAddress.fromString(val),
|
|
10
|
+
description: 'The address of the custom forwarder contract.',
|
|
11
|
+
defaultValue: EthAddress.ZERO
|
|
12
|
+
},
|
|
13
|
+
publisherPrivateKey: {
|
|
14
|
+
env: `${scope}_PUBLISHER_PRIVATE_KEY`,
|
|
15
|
+
description: 'The private key to be used by the publisher.',
|
|
16
|
+
parseEnv: (val)=>val ? `0x${val.replace('0x', '')}` : NULL_KEY,
|
|
17
|
+
defaultValue: NULL_KEY
|
|
18
|
+
},
|
|
19
|
+
requiredConfirmations: {
|
|
20
|
+
env: `${scope}_REQUIRED_CONFIRMATIONS`,
|
|
21
|
+
parseEnv: (val)=>+val,
|
|
22
|
+
defaultValue: 1,
|
|
23
|
+
description: 'The number of confirmations required.'
|
|
24
|
+
}
|
|
25
|
+
});
|
|
40
26
|
export function getTxSenderConfigFromEnv(scope) {
|
|
41
27
|
return getConfigFromMappings(getTxSenderConfigMappings(scope));
|
|
42
28
|
}
|
|
43
|
-
export const getPublisherConfigMappings = scope
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
});
|
|
29
|
+
export const getPublisherConfigMappings = (scope)=>({
|
|
30
|
+
l1PublishRetryIntervalMS: {
|
|
31
|
+
env: `${scope}_PUBLISH_RETRY_INTERVAL_MS`,
|
|
32
|
+
parseEnv: (val)=>+val,
|
|
33
|
+
defaultValue: 1000,
|
|
34
|
+
description: 'The interval to wait between publish retries.'
|
|
35
|
+
},
|
|
36
|
+
...l1TxUtilsConfigMappings,
|
|
37
|
+
...blobSinkConfigMapping
|
|
38
|
+
});
|
|
53
39
|
export function getPublisherConfigFromEnv(scope) {
|
|
54
40
|
return getConfigFromMappings(getPublisherConfigMappings(scope));
|
|
55
41
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBNkMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0csT0FBTyxFQUEyQixxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQWlDM0QsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBRXlCLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRixRQUFRLEVBQUU7UUFDUixHQUFHLEVBQUUsZUFBZTtRQUNwQixXQUFXLEVBQUUsbUNBQW1DO0tBQ2pEO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsR0FBRyxFQUFFLGFBQWE7UUFDbEIsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDL0IsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLG9DQUFvQztLQUNsRDtJQUNELDhCQUE4QixFQUFFO1FBQzlCLEdBQUcsRUFBRSxtQ0FBbUM7UUFDeEMsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNyRCxXQUFXLEVBQUUsK0NBQStDO1FBQzVELFlBQVksRUFBRSxVQUFVLENBQUMsSUFBSTtLQUM5QjtJQUNELG1CQUFtQixFQUFFO1FBQ25CLEdBQUcsRUFBRSxHQUFHLEtBQUssd0JBQXdCO1FBQ3JDLFdBQVcsRUFBRSw4Q0FBOEM7UUFDM0QsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDMUUsWUFBWSxFQUFFLFFBQVE7S0FDdkI7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsR0FBRyxLQUFLLHlCQUF5QjtRQUN0QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRztRQUMvQixZQUFZLEVBQUUsQ0FBQztRQUNmLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQ7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsR0FBRyxLQUFLLDJCQUEyQjtRQUN4QyxXQUFXLEVBQUUsc0NBQXNDO1FBQ25ELEdBQUcsa0JBQWtCLENBQUMsSUFBSyxDQUFDO0tBQzdCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQXVCO0lBQzlELE9BQU8scUJBQXFCLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBRXNCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRSx3QkFBd0IsRUFBRTtRQUN4QixHQUFHLEVBQUUsR0FBRyxLQUFLLDRCQUE0QjtRQUN6QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRztRQUMvQixZQUFZLEVBQUUsSUFBSTtRQUNsQixXQUFXLEVBQUUsK0NBQStDO0tBQzdEO0lBQ0QsR0FBRyx1QkFBdUI7SUFDMUIsR0FBRyxxQkFBcUI7Q0FDekIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQXVCO0lBQy9ELE9BQU8scUJBQXFCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIn0=
|
package/dest/publisher/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
export { SequencerPublisher } from './sequencer-publisher.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { L1PublishBlockStats } from '@aztec/
|
|
1
|
+
import type { L1PublishBlockStats } from '@aztec/stdlib/stats';
|
|
2
2
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
3
|
export type L1TxType = 'process';
|
|
4
4
|
export declare class SequencerPublisherMetrics {
|
|
5
|
+
private logger;
|
|
5
6
|
private gasPrice;
|
|
6
7
|
private txCount;
|
|
7
8
|
private txDuration;
|
|
@@ -14,9 +15,11 @@ export declare class SequencerPublisherMetrics {
|
|
|
14
15
|
private readonly blobInclusionBlocksHistogram;
|
|
15
16
|
private readonly blobTxSuccessCounter;
|
|
16
17
|
private readonly blobTxFailureCounter;
|
|
17
|
-
|
|
18
|
+
private senderBalance;
|
|
19
|
+
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/aztec.js").Logger);
|
|
18
20
|
recordFailedTx(txType: L1TxType): void;
|
|
19
21
|
recordProcessBlockTx(durationMs: number, stats: L1PublishBlockStats): void;
|
|
22
|
+
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
20
23
|
private recordTx;
|
|
21
24
|
}
|
|
22
25
|
//# sourceMappingURL=sequencer-publisher-metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AAEjC,qBAAa,yBAAyB;IAqBlC,OAAO,CAAC,MAAM;IApBhB,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAErD,OAAO,CAAC,aAAa,CAAQ;gBAG3B,MAAM,EAAE,eAAe,EACvB,IAAI,SAAuB,EACnB,MAAM,mCAA8C;IA6E9D,cAAc,CAAC,MAAM,EAAE,QAAQ;IAW/B,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAcnE,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAOtD,OAAO,CAAC,QAAQ;CA6BjB"}
|
|
@@ -1,67 +1,88 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js';
|
|
2
|
+
import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
2
3
|
import { formatEther } from 'viem/utils';
|
|
3
4
|
export class SequencerPublisherMetrics {
|
|
4
|
-
|
|
5
|
+
logger;
|
|
6
|
+
gasPrice;
|
|
7
|
+
txCount;
|
|
8
|
+
txDuration;
|
|
9
|
+
txGas;
|
|
10
|
+
txCalldataSize;
|
|
11
|
+
txCalldataGas;
|
|
12
|
+
txBlobDataGasUsed;
|
|
13
|
+
txBlobDataGasCost;
|
|
14
|
+
blobCountHistogram;
|
|
15
|
+
blobInclusionBlocksHistogram;
|
|
16
|
+
blobTxSuccessCounter;
|
|
17
|
+
blobTxFailureCounter;
|
|
18
|
+
senderBalance;
|
|
19
|
+
constructor(client, name = 'SequencerPublisher', logger = createLogger('sequencer:publisher:metrics')){
|
|
20
|
+
this.logger = logger;
|
|
5
21
|
const meter = client.getMeter(name);
|
|
6
22
|
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE, {
|
|
7
23
|
description: 'The gas price used for transactions',
|
|
8
24
|
unit: 'gwei',
|
|
9
|
-
valueType: ValueType.DOUBLE
|
|
25
|
+
valueType: ValueType.DOUBLE
|
|
10
26
|
});
|
|
11
27
|
this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT, {
|
|
12
|
-
description: 'The number of transactions processed'
|
|
28
|
+
description: 'The number of transactions processed'
|
|
13
29
|
});
|
|
14
30
|
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION, {
|
|
15
31
|
description: 'The duration of transaction processing',
|
|
16
32
|
unit: 'ms',
|
|
17
|
-
valueType: ValueType.INT
|
|
33
|
+
valueType: ValueType.INT
|
|
18
34
|
});
|
|
19
35
|
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS, {
|
|
20
36
|
description: 'The gas consumed by transactions',
|
|
21
37
|
unit: 'gas',
|
|
22
|
-
valueType: ValueType.INT
|
|
38
|
+
valueType: ValueType.INT
|
|
23
39
|
});
|
|
24
40
|
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE, {
|
|
25
41
|
description: 'The size of the calldata in transactions',
|
|
26
42
|
unit: 'By',
|
|
27
|
-
valueType: ValueType.INT
|
|
43
|
+
valueType: ValueType.INT
|
|
28
44
|
});
|
|
29
45
|
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
|
|
30
46
|
description: 'The gas consumed by the calldata in transactions',
|
|
31
47
|
unit: 'gas',
|
|
32
|
-
valueType: ValueType.INT
|
|
48
|
+
valueType: ValueType.INT
|
|
33
49
|
});
|
|
34
50
|
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
|
|
35
51
|
description: 'The amount of blob gas used in transactions',
|
|
36
52
|
unit: 'gas',
|
|
37
|
-
valueType: ValueType.INT
|
|
53
|
+
valueType: ValueType.INT
|
|
38
54
|
});
|
|
39
55
|
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
|
|
40
56
|
description: 'The gas cost of blobs in transactions',
|
|
41
57
|
unit: 'gwei',
|
|
42
|
-
valueType: ValueType.INT
|
|
58
|
+
valueType: ValueType.INT
|
|
43
59
|
});
|
|
44
60
|
this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT, {
|
|
45
61
|
description: 'Number of blobs in L1 transactions',
|
|
46
62
|
unit: 'blobs',
|
|
47
|
-
valueType: ValueType.INT
|
|
63
|
+
valueType: ValueType.INT
|
|
48
64
|
});
|
|
49
65
|
this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS, {
|
|
50
66
|
description: 'Number of L1 blocks between blob tx submission and inclusion',
|
|
51
67
|
unit: 'blocks',
|
|
52
|
-
valueType: ValueType.INT
|
|
68
|
+
valueType: ValueType.INT
|
|
53
69
|
});
|
|
54
70
|
this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS, {
|
|
55
|
-
description: 'Number of successful L1 transactions with blobs'
|
|
71
|
+
description: 'Number of successful L1 transactions with blobs'
|
|
56
72
|
});
|
|
57
73
|
this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE, {
|
|
58
|
-
description: 'Number of failed L1 transactions with blobs'
|
|
74
|
+
description: 'Number of failed L1 transactions with blobs'
|
|
75
|
+
});
|
|
76
|
+
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE, {
|
|
77
|
+
unit: 'eth',
|
|
78
|
+
description: 'The balance of the sender address',
|
|
79
|
+
valueType: ValueType.DOUBLE
|
|
59
80
|
});
|
|
60
81
|
}
|
|
61
82
|
recordFailedTx(txType) {
|
|
62
83
|
this.txCount.add(1, {
|
|
63
84
|
[Attributes.L1_TX_TYPE]: txType,
|
|
64
|
-
[Attributes.OK]: false
|
|
85
|
+
[Attributes.OK]: false
|
|
65
86
|
});
|
|
66
87
|
if (txType === 'process') {
|
|
67
88
|
this.blobTxFailureCounter.add(1);
|
|
@@ -77,18 +98,23 @@ export class SequencerPublisherMetrics {
|
|
|
77
98
|
this.blobTxSuccessCounter.add(1);
|
|
78
99
|
}
|
|
79
100
|
}
|
|
101
|
+
recordSenderBalance(wei, senderAddress) {
|
|
102
|
+
const eth = parseFloat(formatEther(wei, 'wei'));
|
|
103
|
+
this.senderBalance.record(eth, {
|
|
104
|
+
[Attributes.SENDER_ADDRESS]: senderAddress
|
|
105
|
+
});
|
|
106
|
+
}
|
|
80
107
|
recordTx(txType, durationMs, stats) {
|
|
81
108
|
const attributes = {
|
|
82
109
|
[Attributes.L1_TX_TYPE]: txType,
|
|
83
|
-
[Attributes.L1_SENDER]: stats.sender
|
|
110
|
+
[Attributes.L1_SENDER]: stats.sender
|
|
84
111
|
};
|
|
85
112
|
this.txCount.add(1, {
|
|
86
113
|
...attributes,
|
|
87
|
-
[Attributes.OK]: true
|
|
114
|
+
[Attributes.OK]: true
|
|
88
115
|
});
|
|
89
116
|
this.txDuration.record(Math.ceil(durationMs), attributes);
|
|
90
|
-
this.txGas.record(
|
|
91
|
-
// safe to downcast - total block limit is 30M gas which fits in a JS number
|
|
117
|
+
this.txGas.record(// safe to downcast - total block limit is 30M gas which fits in a JS number
|
|
92
118
|
Number(stats.gasUsed), attributes);
|
|
93
119
|
this.txCalldataGas.record(stats.calldataGas, attributes);
|
|
94
120
|
this.txCalldataSize.record(stats.calldataSize, attributes);
|
|
@@ -96,10 +122,8 @@ export class SequencerPublisherMetrics {
|
|
|
96
122
|
this.txBlobDataGasUsed.record(Number(stats.blobGasUsed), attributes);
|
|
97
123
|
try {
|
|
98
124
|
this.gasPrice.record(parseInt(formatEther(stats.gasPrice, 'gwei'), 10));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// ignore
|
|
125
|
+
} catch (e) {
|
|
126
|
+
// ignore
|
|
102
127
|
}
|
|
103
128
|
}
|
|
104
129
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1tZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLW1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFVBQVUsRUFFVixPQUFPLEVBR1AsU0FBUyxHQUNWLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUl6QyxNQUFNLE9BQU8seUJBQXlCO0lBZ0JwQyxZQUFZLE1BQXVCLEVBQUUsSUFBSSxHQUFHLG9CQUFvQjtRQUM5RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7WUFDcEUsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDdEUsV0FBVyxFQUFFLHNDQUFzQztTQUNwRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFO1lBQ3hFLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUM5RCxXQUFXLEVBQUUsa0NBQWtDO1lBQy9DLElB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
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import type { L2Block } from '@aztec/aztec.js';
|
|
3
4
|
import { Blob } from '@aztec/blob-lib';
|
|
4
5
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
5
|
-
import
|
|
6
|
-
import { type BlockHeader, EthAddress } from '@aztec/circuits.js';
|
|
7
|
-
import { type EpochCache } from '@aztec/epoch-cache';
|
|
6
|
+
import type { EpochCache } from '@aztec/epoch-cache';
|
|
8
7
|
import { type ForwarderContract, type GasPrice, type GovernanceProposerContract, type L1BlobInputs, type L1ContractsConfig, type L1GasConfig, type L1TxRequest, RollupContract, type SlashingProposerContract, type TransactionStats } from '@aztec/ethereum';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
9
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
10
|
+
import type { Signature } from '@aztec/foundation/eth-signature';
|
|
11
|
+
import { type BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
11
12
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
13
|
import { type TransactionReceipt } from 'viem';
|
|
13
|
-
import {
|
|
14
|
+
import type { PublisherConfig, TxSenderConfig } from './config.js';
|
|
14
15
|
export declare enum VoteType {
|
|
15
16
|
GOVERNANCE = 0,
|
|
16
17
|
SLASHING = 1
|
|
@@ -35,14 +36,14 @@ export declare class SequencerPublisher {
|
|
|
35
36
|
private metrics;
|
|
36
37
|
private epochCache;
|
|
37
38
|
private forwarderContract;
|
|
38
|
-
protected governanceLog: import("@aztec/
|
|
39
|
+
protected governanceLog: import("@aztec/aztec.js").Logger;
|
|
39
40
|
protected governanceProposerAddress?: EthAddress;
|
|
40
41
|
private governancePayload;
|
|
41
|
-
protected slashingLog: import("@aztec/
|
|
42
|
+
protected slashingLog: import("@aztec/aztec.js").Logger;
|
|
42
43
|
protected slashingProposerAddress?: EthAddress;
|
|
43
44
|
private getSlashPayload?;
|
|
44
45
|
private myLastVotes;
|
|
45
|
-
protected log: import("@aztec/
|
|
46
|
+
protected log: import("@aztec/aztec.js").Logger;
|
|
46
47
|
protected ethereumSlotDuration: bigint;
|
|
47
48
|
private blobSinkClient;
|
|
48
49
|
static PROPOSE_GAS_GUESS: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,0BAA0B,EAE/B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAMjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,MAAM,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmBnE,oBAAY,QAAQ;IAClB,UAAU,IAAA;IACV,QAAQ,IAAA;CACT;AAED,KAAK,uBAAuB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAEvF,KAAK,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAC9D,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KACtG,IAAI,CAAC;CACX;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,SAAS,CAAC,aAAa,mCAAkD;IACzE,SAAS,CAAC,yBAAyB,CAAC,EAAE,UAAU,CAAC;IACjD,OAAO,CAAC,iBAAiB,CAA+B;IAExD,SAAS,CAAC,WAAW,mCAAgD;IACrE,SAAS,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAsC;IAE9D,OAAO,CAAC,WAAW,CAGjB;IAEF,SAAS,CAAC,GAAG,mCAAuC;IACpD,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEvC,OAAO,CAAC,cAAc,CAA0B;IAIhD,OAAc,iBAAiB,EAAE,MAAM,CAAe;IAE/C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,0BAA0B,CAAC;IAChD,wBAAwB,EAAE,wBAAwB,CAAC;IAE1D,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAM;gBAG3C,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAC1F,IAAI,EAAE;QACJ,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,SAAS,EAAE,kBAAkB,CAAC;QAC9B,cAAc,EAAE,cAAc,CAAC;QAC/B,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,0BAA0B,EAAE,0BAA0B,CAAC;QACvD,UAAU,EAAE,UAAU,CAAC;KACxB;IAkBI,0BAA0B,CAAC,QAAQ,EAAE,uBAAuB;IAI5D,mBAAmB;IAInB,gBAAgB;IAIhB,oBAAoB;IAIpB,oBAAoB,CAAC,OAAO,EAAE,UAAU;IAIxC,UAAU,CAAC,OAAO,EAAE,iBAAiB;IAIrC,gBAAgB,IAAI,MAAM;IAIjC;;;;;;OAMG;IACU,YAAY;;;;;;;;;;;IAmEzB,OAAO,CAAC,2BAA2B;IAYnC;;;;OAIG;IACI,wBAAwB,CAAC,UAAU,EAAE,MAAM;IAclD;;;;;;;;OAQG;IACU,0BAA0B,CACrC,MAAM,EAAE,WAAW,EACnB,eAAe,GAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAGzD,GACA,OAAO,CAAC,MAAM,CAAC;IAmBL,wBAAwB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAKhD,qBAAqB;YA4CrB,aAAa;IAmB3B;;;;;;OAMG;IACU,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IASzG;;;;;OAKG;IACU,qBAAqB,CAChC,KAAK,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,SAAS,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,IAAI,CAAA;KAAO,GAChC,OAAO,CAAC,OAAO,CAAC;IA8BnB;;;;;OAKG;IACI,SAAS;IAKhB,wDAAwD;IACjD,OAAO;YAKA,gBAAgB;YAiGhB,YAAY;IAsE1B;;;;;;;OAOG;IACH,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAGlF"}
|