@aztec/ethereum 0.0.1-commit.b655e406 → 0.0.1-commit.d1f2d6c
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/account.d.ts +1 -1
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +1 -1
- package/dest/client.js +6 -2
- package/dest/config.d.ts +22 -68
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +57 -378
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +7 -5
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +1 -1
- package/dest/contracts/empire_slashing_proposer.d.ts +6 -4
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.js +17 -2
- package/dest/contracts/errors.d.ts +1 -1
- package/dest/contracts/errors.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.d.ts +6 -5
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.js +9 -9
- package/dest/contracts/fee_juice.d.ts +1 -1
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/governance.d.ts +18 -16
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +9 -1
- package/dest/contracts/governance_proposer.d.ts +6 -4
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +399 -10
- package/dest/contracts/gse.d.ts +1 -1
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/inbox.d.ts +24 -3
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/inbox.js +36 -1
- package/dest/contracts/index.d.ts +3 -1
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +2 -0
- package/dest/contracts/log.d.ts +13 -0
- package/dest/contracts/log.d.ts.map +1 -0
- package/dest/contracts/log.js +1 -0
- package/dest/contracts/multicall.d.ts +2 -2
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/outbox.d.ts +41 -0
- package/dest/contracts/outbox.d.ts.map +1 -0
- package/dest/contracts/outbox.js +86 -0
- package/dest/contracts/registry.d.ts +1 -1
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/rollup.d.ts +194 -123
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +746 -184
- package/dest/contracts/slasher_contract.d.ts +1 -1
- package/dest/contracts/slasher_contract.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.d.ts +9 -7
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +4 -4
- package/dest/contracts/utils.d.ts +1 -1
- package/dest/deploy_aztec_l1_contracts.d.ts +260 -0
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
- package/dest/deploy_aztec_l1_contracts.js +398 -0
- package/dest/deploy_l1_contract.d.ts +68 -0
- package/dest/deploy_l1_contract.d.ts.map +1 -0
- package/dest/deploy_l1_contract.js +312 -0
- package/dest/eth-signer/eth-signer.d.ts +1 -1
- package/dest/eth-signer/index.d.ts +1 -1
- package/dest/forwarder_proxy.d.ts +32 -0
- package/dest/forwarder_proxy.d.ts.map +1 -0
- package/dest/forwarder_proxy.js +93 -0
- package/dest/generated/l1-contracts-defaults.d.ts +30 -0
- package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
- package/dest/generated/l1-contracts-defaults.js +30 -0
- package/dest/l1_artifacts.d.ts +6597 -2046
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_contract_addresses.d.ts +3 -3
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +3 -3
- package/dest/l1_reader.d.ts +3 -1
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +6 -0
- package/dest/l1_tx_utils/config.d.ts +5 -5
- package/dest/l1_tx_utils/config.d.ts.map +1 -1
- package/dest/l1_tx_utils/config.js +30 -7
- package/dest/l1_tx_utils/constants.d.ts +7 -1
- package/dest/l1_tx_utils/constants.d.ts.map +1 -1
- package/dest/l1_tx_utils/constants.js +25 -0
- package/dest/l1_tx_utils/factory.d.ts +1 -1
- package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/index-blobs.js +2 -0
- package/dest/l1_tx_utils/index.d.ts +3 -1
- package/dest/l1_tx_utils/index.d.ts.map +1 -1
- package/dest/l1_tx_utils/index.js +2 -0
- package/dest/l1_tx_utils/interfaces.d.ts +2 -2
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +1 -2
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +17 -4
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +1 -1
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -1
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +19 -30
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +54 -162
- package/dest/l1_tx_utils/signer.d.ts +1 -1
- package/dest/l1_tx_utils/types.d.ts +1 -1
- package/dest/l1_tx_utils/types.d.ts.map +1 -1
- package/dest/l1_tx_utils/utils.d.ts +1 -1
- package/dest/l1_types.d.ts +1 -1
- package/dest/publisher_manager.d.ts +1 -1
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/queries.d.ts +2 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +16 -6
- package/dest/test/chain_monitor.d.ts +27 -24
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +33 -36
- package/dest/test/delayed_tx_utils.d.ts +1 -1
- package/dest/test/delayed_tx_utils.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.d.ts +11 -3
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +11 -3
- package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/index.d.ts +1 -1
- package/dest/test/rollup_cheat_codes.d.ts +15 -13
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +54 -39
- package/dest/test/start_anvil.d.ts +4 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +2 -1
- package/dest/test/tx_delayer.d.ts +1 -1
- package/dest/test/tx_delayer.d.ts.map +1 -1
- package/dest/test/tx_delayer.js +4 -3
- package/dest/test/upgrade_utils.d.ts +1 -1
- package/dest/types.d.ts +57 -2
- package/dest/types.d.ts.map +1 -1
- package/dest/utils.d.ts +15 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +18 -0
- package/dest/zkPassportVerifierAddress.d.ts +1 -1
- package/package.json +34 -14
- package/src/client.ts +2 -2
- package/src/config.ts +71 -458
- package/src/contracts/README.md +157 -0
- package/src/contracts/empire_base.ts +6 -5
- package/src/contracts/empire_slashing_proposer.ts +16 -5
- package/src/contracts/fee_asset_handler.ts +8 -7
- package/src/contracts/governance.ts +8 -1
- package/src/contracts/governance_proposer.ts +16 -5
- package/src/contracts/inbox.ts +55 -3
- package/src/contracts/index.ts +2 -0
- package/src/contracts/log.ts +13 -0
- package/src/contracts/outbox.ts +98 -0
- package/src/contracts/rollup.ts +417 -160
- package/src/contracts/tally_slashing_proposer.ts +11 -8
- package/src/deploy_aztec_l1_contracts.ts +619 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/forwarder_proxy.ts +108 -0
- package/src/generated/l1-contracts-defaults.ts +32 -0
- package/src/l1_contract_addresses.ts +22 -20
- package/src/l1_reader.ts +8 -0
- package/src/l1_tx_utils/config.ts +32 -11
- package/src/l1_tx_utils/constants.ts +11 -0
- package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
- package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
- package/src/l1_tx_utils/index-blobs.ts +2 -0
- package/src/l1_tx_utils/index.ts +2 -0
- package/src/l1_tx_utils/interfaces.ts +1 -1
- package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +24 -4
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +67 -207
- package/src/queries.ts +17 -6
- package/src/test/chain_monitor.ts +51 -49
- package/src/test/eth_cheat_codes.ts +9 -3
- package/src/test/rollup_cheat_codes.ts +54 -43
- package/src/test/start_anvil.ts +4 -0
- package/src/test/tx_delayer.ts +5 -3
- package/src/types.ts +62 -0
- package/src/utils.ts +30 -1
- package/dest/deploy_l1_contracts.d.ts +0 -226
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -1473
- package/dest/index.d.ts +0 -18
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -17
- package/src/deploy_l1_contracts.ts +0 -1849
- package/src/index.ts +0 -17
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
|
|
4
|
+
import { type GetContractReturnType, type Hex } from 'viem';
|
|
5
|
+
import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
|
|
6
|
+
import type { L1ReaderConfig } from '../l1_reader.js';
|
|
7
|
+
import { type ViemClient } from '../types.js';
|
|
8
|
+
export type ViemL1Actor = {
|
|
9
|
+
actor: Hex;
|
|
10
|
+
chainId: bigint;
|
|
11
|
+
};
|
|
12
|
+
export type ViemL2Actor = {
|
|
13
|
+
actor: Hex;
|
|
14
|
+
version: bigint;
|
|
15
|
+
};
|
|
16
|
+
export type ViemL2ToL1Msg = {
|
|
17
|
+
sender: ViemL2Actor;
|
|
18
|
+
recipient: ViemL1Actor;
|
|
19
|
+
content: Hex;
|
|
20
|
+
};
|
|
21
|
+
export declare class OutboxContract {
|
|
22
|
+
readonly client: ViemClient;
|
|
23
|
+
private readonly outbox;
|
|
24
|
+
static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType): OutboxContract;
|
|
25
|
+
static getFromConfig(config: L1ReaderConfig): OutboxContract;
|
|
26
|
+
static getEpochRootStorageSlot(epoch: EpochNumber): bigint;
|
|
27
|
+
constructor(client: ViemClient, address: Hex | EthAddress);
|
|
28
|
+
get address(): `0x${string}`;
|
|
29
|
+
getContract(): GetContractReturnType<typeof OutboxAbi, ViemClient>;
|
|
30
|
+
hasMessageBeenConsumedAtEpoch(epoch: EpochNumber, leafId: bigint): Promise<boolean>;
|
|
31
|
+
getRootData(epoch: EpochNumber): Promise<`0x${string}`>;
|
|
32
|
+
consume(message: ViemL2ToL1Msg, epoch: EpochNumber, leafIndex: bigint, path: Hex[]): Promise<`0x${string}`>;
|
|
33
|
+
getMessageConsumedEvents(l1BlockHash: Hex): Promise<{
|
|
34
|
+
epoch: bigint;
|
|
35
|
+
root: Hex;
|
|
36
|
+
messageHash: Hex;
|
|
37
|
+
leafId: bigint;
|
|
38
|
+
}[]>;
|
|
39
|
+
private assertWallet;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym94LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL291dGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFLEtBQUssR0FBRyxFQUE0RCxNQUFNLE1BQU0sQ0FBQztBQUd0SCxPQUFPLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBaUMsS0FBSyxVQUFVLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBRS9GLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNwQixTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3ZCLE9BQU8sRUFBRSxHQUFHLENBQUM7Q0FDZCxDQUFDO0FBRUYscUJBQWEsY0FBYzthQXNCUCxNQUFNLEVBQUUsVUFBVTtJQXJCcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQXNEO0lBRTdFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsRUFBRSxnQ0FBZ0Msa0JBTXhGO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxrQkFJMUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFdBQVcsVUFFaEQ7SUFFRCxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFNMUI7SUFFRCxJQUFXLE9BQU8sa0JBRWpCO0lBRU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUV4RTtJQUVNLDZCQUE2QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBRXRFO0lBRU0sV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLDBCQUVwQztJQUVNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLDBCQUd4RjtJQUVZLHdCQUF3QixDQUNuQyxXQUFXLEVBQUUsR0FBRyxHQUNmLE9BQU8sQ0FBQztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUFFLENBQUMsQ0FRM0U7SUFFRCxPQUFPLENBQUMsWUFBWTtDQU1yQiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/contracts/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAA4D,MAAM,MAAM,CAAC;AAGtH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAiC,KAAK,UAAU,EAAoB,MAAM,aAAa,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,qBAAa,cAAc;aAsBP,MAAM,EAAE,UAAU;IArBpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAE7E,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,gCAAgC,kBAMxF;IAED,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,kBAI1C;IAED,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,UAEhD;IAED,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,kBAEjB;IAEM,WAAW,IAAI,qBAAqB,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,CAExE;IAEM,6BAA6B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oBAEtE;IAEM,WAAW,CAAC,KAAK,EAAE,WAAW,0BAEpC;IAEM,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,0BAGxF;IAEY,wBAAwB,CACnC,WAAW,EAAE,GAAG,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAQ3E;IAED,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
|
|
3
|
+
import { encodeAbiParameters, getContract, hexToBigInt, keccak256 } from 'viem';
|
|
4
|
+
import { getPublicClient } from '../client.js';
|
|
5
|
+
import { isExtendedClient } from '../types.js';
|
|
6
|
+
export class OutboxContract {
|
|
7
|
+
client;
|
|
8
|
+
outbox;
|
|
9
|
+
static getFromL1ContractsValues(deployL1ContractsValues) {
|
|
10
|
+
const { l1Client, l1ContractAddresses: { outboxAddress } } = deployL1ContractsValues;
|
|
11
|
+
return new OutboxContract(l1Client, outboxAddress.toString());
|
|
12
|
+
}
|
|
13
|
+
static getFromConfig(config) {
|
|
14
|
+
const client = getPublicClient(config);
|
|
15
|
+
const address = config.l1Contracts.outboxAddress.toString();
|
|
16
|
+
return new OutboxContract(client, address);
|
|
17
|
+
}
|
|
18
|
+
static getEpochRootStorageSlot(epoch) {
|
|
19
|
+
return hexToBigInt(keccak256(encodeAbiParameters([
|
|
20
|
+
{
|
|
21
|
+
type: 'uint256'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: 'uint256'
|
|
25
|
+
}
|
|
26
|
+
], [
|
|
27
|
+
BigInt(epoch),
|
|
28
|
+
0n
|
|
29
|
+
])));
|
|
30
|
+
}
|
|
31
|
+
constructor(client, address){
|
|
32
|
+
this.client = client;
|
|
33
|
+
if (address instanceof EthAddress) {
|
|
34
|
+
address = address.toString();
|
|
35
|
+
}
|
|
36
|
+
this.outbox = getContract({
|
|
37
|
+
address,
|
|
38
|
+
abi: OutboxAbi,
|
|
39
|
+
client
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
get address() {
|
|
43
|
+
return this.outbox.address;
|
|
44
|
+
}
|
|
45
|
+
getContract() {
|
|
46
|
+
return this.outbox;
|
|
47
|
+
}
|
|
48
|
+
hasMessageBeenConsumedAtEpoch(epoch, leafId) {
|
|
49
|
+
return this.outbox.read.hasMessageBeenConsumedAtEpoch([
|
|
50
|
+
BigInt(epoch),
|
|
51
|
+
leafId
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
getRootData(epoch) {
|
|
55
|
+
return this.outbox.read.getRootData([
|
|
56
|
+
BigInt(epoch)
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
consume(message, epoch, leafIndex, path) {
|
|
60
|
+
const wallet = this.assertWallet();
|
|
61
|
+
return wallet.write.consume([
|
|
62
|
+
message,
|
|
63
|
+
BigInt(epoch),
|
|
64
|
+
leafIndex,
|
|
65
|
+
path
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
async getMessageConsumedEvents(l1BlockHash) {
|
|
69
|
+
const events = await this.outbox.getEvents.MessageConsumed({}, {
|
|
70
|
+
blockHash: l1BlockHash,
|
|
71
|
+
strict: true
|
|
72
|
+
});
|
|
73
|
+
return events.map((event)=>({
|
|
74
|
+
epoch: event.args.epoch,
|
|
75
|
+
root: event.args.root,
|
|
76
|
+
messageHash: event.args.messageHash,
|
|
77
|
+
leafId: event.args.leafId
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
assertWallet() {
|
|
81
|
+
if (!isExtendedClient(this.client)) {
|
|
82
|
+
throw new Error('Wallet client is required for this operation');
|
|
83
|
+
}
|
|
84
|
+
return this.outbox;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -26,4 +26,4 @@ export declare class RegistryContract {
|
|
|
26
26
|
getRollupVersions(): Promise<bigint[]>;
|
|
27
27
|
getRewardDistributor(): Promise<EthAddress>;
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sRUFBOEIsS0FBSyxHQUFHLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMscUJBQWEsZ0JBQWdCO2FBT1QsTUFBTSxFQUFFLFVBQVU7SUFON0IsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUUzQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBK0M7SUFDbkUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQXdEO0lBRWpGLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU8xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTNDO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBc0J6RjtJQUVEOzs7T0FHRztJQUNVLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEQ7SUFFWSxzQkFBc0IsSUFBSSxPQUFPLENBQzVDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQyxDQUM3RSxDQVFBO0lBRUQsT0FBb0IsZ0JBQWdCLENBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGVBQWUsRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUNqQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQzNDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQXVCOUI7SUFFWSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR2xEO0lBRVksaUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBU2xEO0lBRVksb0JBQW9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUV2RDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAO1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAE3C;IAED;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBzF;IAED;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;IAEY,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E,CAQA;IAED,OAAoB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;IAEY,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;IAEY,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CASlD;IAEY,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEvD;CACF"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
1
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
5
|
import type { ViemSignature } from '@aztec/foundation/eth-signature';
|
|
3
6
|
import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
|
|
4
7
|
import { type Account, type GetContractReturnType, type Hex, type StateOverride, type WatchContractEventReturnType } from 'viem';
|
|
5
|
-
import type {
|
|
8
|
+
import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
|
|
6
9
|
import type { L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
7
10
|
import type { L1ReaderConfig } from '../l1_reader.js';
|
|
8
11
|
import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
|
|
9
12
|
import type { ViemClient } from '../types.js';
|
|
10
13
|
import { EmpireSlashingProposerContract } from './empire_slashing_proposer.js';
|
|
14
|
+
import type { L1EventLog } from './log.js';
|
|
11
15
|
import { SlasherContract } from './slasher_contract.js';
|
|
12
16
|
import { TallySlashingProposerContract } from './tally_slashing_proposer.js';
|
|
13
17
|
export type ViemCommitteeAttestation = {
|
|
@@ -22,11 +26,15 @@ export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress
|
|
|
22
26
|
export type EpochProofPublicInputArgs = {
|
|
23
27
|
previousArchive: `0x${string}`;
|
|
24
28
|
endArchive: `0x${string}`;
|
|
29
|
+
outHash: `0x${string}`;
|
|
25
30
|
proverId: `0x${string}`;
|
|
26
31
|
};
|
|
27
32
|
export type ViemHeader = {
|
|
28
33
|
lastArchiveRoot: `0x${string}`;
|
|
29
|
-
|
|
34
|
+
blockHeadersHash: `0x${string}`;
|
|
35
|
+
blobsHash: `0x${string}`;
|
|
36
|
+
inHash: `0x${string}`;
|
|
37
|
+
outHash: `0x${string}`;
|
|
30
38
|
slotNumber: bigint;
|
|
31
39
|
timestamp: bigint;
|
|
32
40
|
coinbase: `0x${string}`;
|
|
@@ -34,63 +42,147 @@ export type ViemHeader = {
|
|
|
34
42
|
gasFees: ViemGasFees;
|
|
35
43
|
totalManaUsed: bigint;
|
|
36
44
|
};
|
|
37
|
-
export type ViemContentCommitment = {
|
|
38
|
-
blobsHash: `0x${string}`;
|
|
39
|
-
inHash: `0x${string}`;
|
|
40
|
-
outHash: `0x${string}`;
|
|
41
|
-
};
|
|
42
45
|
export type ViemGasFees = {
|
|
43
46
|
feePerDaGas: bigint;
|
|
44
47
|
feePerL2Gas: bigint;
|
|
45
48
|
};
|
|
46
|
-
export type ViemStateReference = {
|
|
47
|
-
l1ToL2MessageTree: ViemAppendOnlyTreeSnapshot;
|
|
48
|
-
partialStateReference: ViemPartialStateReference;
|
|
49
|
-
};
|
|
50
|
-
export type ViemPartialStateReference = {
|
|
51
|
-
noteHashTree: ViemAppendOnlyTreeSnapshot;
|
|
52
|
-
nullifierTree: ViemAppendOnlyTreeSnapshot;
|
|
53
|
-
publicDataTree: ViemAppendOnlyTreeSnapshot;
|
|
54
|
-
};
|
|
55
|
-
export type ViemAppendOnlyTreeSnapshot = {
|
|
56
|
-
root: `0x${string}`;
|
|
57
|
-
nextAvailableLeafIndex: number;
|
|
58
|
-
};
|
|
59
49
|
export declare enum SlashingProposerType {
|
|
60
50
|
None = 0,
|
|
61
51
|
Tally = 1,
|
|
62
52
|
Empire = 2
|
|
63
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Status of a validator/attester in the staking system.
|
|
56
|
+
* Matches the Status enum in StakingLib.sol
|
|
57
|
+
*/
|
|
58
|
+
export declare enum AttesterStatus {
|
|
59
|
+
NONE = 0,
|
|
60
|
+
VALIDATING = 1,
|
|
61
|
+
ZOMBIE = 2,
|
|
62
|
+
EXITING = 3
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Fee header data for a checkpoint
|
|
66
|
+
*/
|
|
67
|
+
export type FeeHeader = {
|
|
68
|
+
excessMana: bigint;
|
|
69
|
+
manaUsed: bigint;
|
|
70
|
+
ethPerFeeAsset: bigint;
|
|
71
|
+
congestionCost: bigint;
|
|
72
|
+
proverCost: bigint;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Checkpoint log data returned from the rollup contract
|
|
76
|
+
*/
|
|
77
|
+
export type CheckpointLog = {
|
|
78
|
+
archive: Fr;
|
|
79
|
+
headerHash: Buffer32;
|
|
80
|
+
blobCommitmentsHash: Buffer32;
|
|
81
|
+
attestationsHash: Buffer32;
|
|
82
|
+
payloadDigest: Buffer32;
|
|
83
|
+
slotNumber: SlotNumber;
|
|
84
|
+
feeHeader: FeeHeader;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* L1 fee data (base fee and blob fee)
|
|
88
|
+
*/
|
|
89
|
+
export type L1FeeData = {
|
|
90
|
+
baseFee: bigint;
|
|
91
|
+
blobFee: bigint;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Reward configuration for the rollup
|
|
95
|
+
*/
|
|
96
|
+
export type RewardConfig = {
|
|
97
|
+
rewardDistributor: EthAddress;
|
|
98
|
+
sequencerBps: bigint;
|
|
99
|
+
booster: EthAddress;
|
|
100
|
+
checkpointReward: bigint;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Exit information for a validator
|
|
104
|
+
*/
|
|
105
|
+
export type Exit = {
|
|
106
|
+
withdrawalId: bigint;
|
|
107
|
+
amount: bigint;
|
|
108
|
+
exitableAt: bigint;
|
|
109
|
+
recipientOrWithdrawer: EthAddress;
|
|
110
|
+
isRecipient: boolean;
|
|
111
|
+
exists: boolean;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Attester configuration including public key and withdrawer
|
|
115
|
+
*/
|
|
116
|
+
export type AttesterConfig = {
|
|
117
|
+
publicKey: {
|
|
118
|
+
x: bigint;
|
|
119
|
+
y: bigint;
|
|
120
|
+
};
|
|
121
|
+
withdrawer: EthAddress;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Complete view of an attester's state
|
|
125
|
+
*/
|
|
126
|
+
export type AttesterView = {
|
|
127
|
+
status: AttesterStatus;
|
|
128
|
+
effectiveBalance: bigint;
|
|
129
|
+
exit: Exit;
|
|
130
|
+
config: AttesterConfig;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Return for a status call
|
|
134
|
+
*/
|
|
135
|
+
export type RollupStatusResponse = {
|
|
136
|
+
provenCheckpointNumber: CheckpointNumber;
|
|
137
|
+
provenArchive: Fr;
|
|
138
|
+
pendingCheckpointNumber: CheckpointNumber;
|
|
139
|
+
pendingArchive: Fr;
|
|
140
|
+
archiveOfMyCheckpoint: Fr;
|
|
141
|
+
};
|
|
142
|
+
/** Arguments for the CheckpointProposed event. */
|
|
143
|
+
export type CheckpointProposedArgs = {
|
|
144
|
+
checkpointNumber: CheckpointNumber;
|
|
145
|
+
archive: Fr;
|
|
146
|
+
versionedBlobHashes: Buffer[];
|
|
147
|
+
/** Hash of attestations. Undefined for older events (backwards compatibility). */
|
|
148
|
+
attestationsHash?: Buffer32;
|
|
149
|
+
/** Digest of the payload. Undefined for older events (backwards compatibility). */
|
|
150
|
+
payloadDigest?: Buffer32;
|
|
151
|
+
};
|
|
152
|
+
/** Log type for CheckpointProposed events. */
|
|
153
|
+
export type CheckpointProposedLog = L1EventLog<CheckpointProposedArgs>;
|
|
64
154
|
export declare class RollupContract {
|
|
65
155
|
readonly client: ViemClient;
|
|
66
156
|
private readonly rollup;
|
|
67
157
|
private static cachedStfStorageSlot;
|
|
158
|
+
private cachedEscapeHatch?;
|
|
68
159
|
static get checkBlobStorageSlot(): bigint;
|
|
69
160
|
static get stfStorageSlot(): Hex;
|
|
70
|
-
static getFromL1ContractsValues(deployL1ContractsValues:
|
|
161
|
+
static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType): RollupContract;
|
|
71
162
|
static getFromConfig(config: L1ReaderConfig): RollupContract;
|
|
72
163
|
constructor(client: ViemClient, address: Hex | EthAddress);
|
|
73
|
-
getGSE(): Promise
|
|
164
|
+
getGSE(): Promise<EthAddress>;
|
|
74
165
|
get address(): `0x${string}`;
|
|
75
166
|
getContract(): GetContractReturnType<typeof RollupAbi, ViemClient>;
|
|
76
167
|
getSlashingProposer(): Promise<EmpireSlashingProposerContract | TallySlashingProposerContract | undefined>;
|
|
77
168
|
getL1StartBlock(): Promise<bigint>;
|
|
78
169
|
getL1GenesisTime(): Promise<bigint>;
|
|
79
|
-
getProofSubmissionEpochs(): Promise<
|
|
80
|
-
getEpochDuration(): Promise<
|
|
81
|
-
getSlotDuration(): Promise<
|
|
82
|
-
getTargetCommitteeSize(): Promise<
|
|
170
|
+
getProofSubmissionEpochs(): Promise<number>;
|
|
171
|
+
getEpochDuration(): Promise<number>;
|
|
172
|
+
getSlotDuration(): Promise<number>;
|
|
173
|
+
getTargetCommitteeSize(): Promise<number>;
|
|
83
174
|
getEjectionThreshold(): Promise<bigint>;
|
|
84
175
|
getLocalEjectionThreshold(): Promise<bigint>;
|
|
85
|
-
|
|
176
|
+
getLagInEpochsForValidatorSet(): Promise<number>;
|
|
177
|
+
getLagInEpochsForRandao(): Promise<number>;
|
|
86
178
|
getActivationThreshold(): Promise<bigint>;
|
|
87
|
-
getExitDelay(): Promise<
|
|
179
|
+
getExitDelay(): Promise<number>;
|
|
88
180
|
getManaTarget(): Promise<bigint>;
|
|
89
181
|
getProvingCostPerMana(): Promise<bigint>;
|
|
90
182
|
getProvingCostPerManaInFeeAsset(): Promise<bigint>;
|
|
91
183
|
getManaLimit(): Promise<bigint>;
|
|
92
184
|
getVersion(): Promise<bigint>;
|
|
93
|
-
getGenesisArchiveTreeRoot(): Promise
|
|
185
|
+
getGenesisArchiveTreeRoot(): Promise<Fr>;
|
|
94
186
|
/**
|
|
95
187
|
* Returns rollup constants used for epoch queries.
|
|
96
188
|
* Return type is `L1RollupConstants` which is defined in stdlib,
|
|
@@ -103,59 +195,58 @@ export declare class RollupContract {
|
|
|
103
195
|
epochDuration: number;
|
|
104
196
|
proofSubmissionEpochs: number;
|
|
105
197
|
}>;
|
|
106
|
-
getSlasherAddress(): Promise
|
|
198
|
+
getSlasherAddress(): Promise<EthAddress>;
|
|
199
|
+
/**
|
|
200
|
+
* Returns the configured escape hatch contract address, or zero if disabled.
|
|
201
|
+
*/
|
|
202
|
+
getEscapeHatchAddress(): Promise<EthAddress>;
|
|
203
|
+
private getEscapeHatchContract;
|
|
204
|
+
/**
|
|
205
|
+
* Returns whether the escape hatch is open for the given epoch.
|
|
206
|
+
* If escape hatch is not configured, returns false.
|
|
207
|
+
*
|
|
208
|
+
* This function is intentionally defensive: any failure to query the escape hatch
|
|
209
|
+
* (RPC issues, transient errors, etc.) is treated as "closed" to avoid callers
|
|
210
|
+
* needing to sprinkle try/catch everywhere.
|
|
211
|
+
*/
|
|
212
|
+
isEscapeHatchOpen(epoch: EpochNumber): Promise<boolean>;
|
|
107
213
|
/**
|
|
108
214
|
* Returns a SlasherContract instance for interacting with the slasher contract.
|
|
109
215
|
*/
|
|
110
216
|
getSlasherContract(): Promise<SlasherContract | undefined>;
|
|
111
|
-
getOwner(): Promise
|
|
112
|
-
getActiveAttesterCount(): Promise<
|
|
217
|
+
getOwner(): Promise<EthAddress>;
|
|
218
|
+
getActiveAttesterCount(): Promise<number>;
|
|
113
219
|
getSlashingProposerAddress(): Promise<EthAddress>;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
getSlotNumber(): Promise<
|
|
118
|
-
getL1FeesAt(timestamp: bigint): Promise<
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
getBlock(blockNumber: bigint | number): Promise<{
|
|
131
|
-
archive: `0x${string}`;
|
|
132
|
-
headerHash: `0x${string}`;
|
|
133
|
-
blobCommitmentsHash: `0x${string}`;
|
|
134
|
-
attestationsHash: `0x${string}`;
|
|
135
|
-
payloadDigest: `0x${string}`;
|
|
136
|
-
slotNumber: bigint;
|
|
137
|
-
feeHeader: {
|
|
138
|
-
excessMana: bigint;
|
|
139
|
-
manaUsed: bigint;
|
|
140
|
-
feeAssetPriceNumerator: bigint;
|
|
141
|
-
congestionCost: bigint;
|
|
142
|
-
proverCost: bigint;
|
|
143
|
-
};
|
|
144
|
-
}>;
|
|
220
|
+
getCheckpointReward(): Promise<bigint>;
|
|
221
|
+
getCheckpointNumber(): Promise<CheckpointNumber>;
|
|
222
|
+
getProvenCheckpointNumber(): Promise<CheckpointNumber>;
|
|
223
|
+
getSlotNumber(): Promise<SlotNumber>;
|
|
224
|
+
getL1FeesAt(timestamp: bigint): Promise<L1FeeData>;
|
|
225
|
+
getEthPerFeeAsset(): Promise<bigint>;
|
|
226
|
+
getCommitteeAt(timestamp: bigint): Promise<EthAddress[] | undefined>;
|
|
227
|
+
getSampleSeedAt(timestamp: bigint): Promise<Buffer32>;
|
|
228
|
+
getCurrentSampleSeed(): Promise<Buffer32>;
|
|
229
|
+
getCurrentEpoch(): Promise<EpochNumber>;
|
|
230
|
+
getCurrentEpochCommittee(): Promise<EthAddress[] | undefined>;
|
|
231
|
+
getCurrentProposer(): Promise<EthAddress>;
|
|
232
|
+
getProposerAt(timestamp: bigint): Promise<EthAddress>;
|
|
233
|
+
getCheckpoint(checkpointNumber: CheckpointNumber): Promise<CheckpointLog>;
|
|
234
|
+
/** Returns the pending checkpoint from the rollup contract */
|
|
235
|
+
getPendingCheckpoint(): Promise<CheckpointLog>;
|
|
145
236
|
getTips(): Promise<{
|
|
146
|
-
|
|
147
|
-
|
|
237
|
+
pending: CheckpointNumber;
|
|
238
|
+
proven: CheckpointNumber;
|
|
148
239
|
}>;
|
|
149
|
-
getTimestampForSlot(slot:
|
|
150
|
-
getEntryQueueLength(): Promise<
|
|
151
|
-
getAvailableValidatorFlushes(): Promise<
|
|
152
|
-
getNextFlushableEpoch(): Promise<
|
|
153
|
-
getCurrentEpochNumber(): Promise<
|
|
154
|
-
|
|
240
|
+
getTimestampForSlot(slot: SlotNumber): Promise<bigint>;
|
|
241
|
+
getEntryQueueLength(): Promise<number>;
|
|
242
|
+
getAvailableValidatorFlushes(): Promise<number>;
|
|
243
|
+
getNextFlushableEpoch(): Promise<EpochNumber>;
|
|
244
|
+
getCurrentEpochNumber(): Promise<EpochNumber>;
|
|
245
|
+
getEpochNumberForCheckpoint(checkpointNumber: CheckpointNumber): Promise<EpochNumber>;
|
|
155
246
|
getRollupAddresses(): Promise<L1RollupContractAddresses>;
|
|
156
247
|
getFeeJuicePortal(): Promise<EthAddress>;
|
|
157
|
-
getEpochNumberForSlotNumber(slotNumber:
|
|
158
|
-
getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<
|
|
248
|
+
getEpochNumberForSlotNumber(slotNumber: SlotNumber): Promise<EpochNumber>;
|
|
249
|
+
getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<Fr[]>;
|
|
159
250
|
validateHeader(args: readonly [
|
|
160
251
|
ViemHeader,
|
|
161
252
|
ViemCommitteeAttestations,
|
|
@@ -174,70 +265,48 @@ export declare class RollupContract {
|
|
|
174
265
|
* @dev Throws if unable to propose
|
|
175
266
|
*
|
|
176
267
|
* @param archive - The archive that we expect to be current state
|
|
177
|
-
* @return [slot,
|
|
268
|
+
* @return [slot, checkpointNumber, timeOfNextL1Slot] - If you can propose, the L2 slot number, checkpoint number and
|
|
269
|
+
* timestamp of the next L1 block
|
|
178
270
|
* @throws otherwise
|
|
179
271
|
*/
|
|
180
|
-
canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration:
|
|
181
|
-
|
|
272
|
+
canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: number, opts?: {
|
|
273
|
+
forcePendingCheckpointNumber?: CheckpointNumber;
|
|
182
274
|
}): Promise<{
|
|
183
|
-
slot:
|
|
184
|
-
|
|
275
|
+
slot: SlotNumber;
|
|
276
|
+
checkpointNumber: CheckpointNumber;
|
|
185
277
|
timeOfNextL1Slot: bigint;
|
|
186
278
|
}>;
|
|
187
279
|
/**
|
|
188
|
-
* Returns a state override that sets the pending
|
|
189
|
-
* Requires querying the current state of the contract to get the current proven
|
|
280
|
+
* Returns a state override that sets the pending checkpoint number to the specified value. Useful for simulations.
|
|
281
|
+
* Requires querying the current state of the contract to get the current proven checkpoint number, as they are both
|
|
190
282
|
* stored in the same slot. If the argument is undefined, it returns an empty override.
|
|
191
283
|
*/
|
|
192
|
-
|
|
284
|
+
makePendingCheckpointNumberOverride(forcePendingCheckpointNumber: CheckpointNumber | undefined): Promise<StateOverride>;
|
|
193
285
|
/** Creates a request to Rollup#invalidateBadAttestation to be simulated or sent */
|
|
194
|
-
buildInvalidateBadAttestationRequest(
|
|
286
|
+
buildInvalidateBadAttestationRequest(checkpointNumber: CheckpointNumber, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[], invalidIndex: number): L1TxRequest;
|
|
195
287
|
/** Creates a request to Rollup#invalidateInsufficientAttestations to be simulated or sent */
|
|
196
|
-
buildInvalidateInsufficientAttestationsRequest(
|
|
288
|
+
buildInvalidateInsufficientAttestationsRequest(checkpointNumber: CheckpointNumber, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[]): L1TxRequest;
|
|
197
289
|
/** Calls getHasSubmitted directly. Returns whether the given prover has submitted a proof with the given length for the given epoch. */
|
|
198
|
-
getHasSubmittedProof(epochNumber:
|
|
199
|
-
|
|
200
|
-
getSlotAt(timestamp: bigint): Promise<
|
|
201
|
-
status(
|
|
290
|
+
getHasSubmittedProof(epochNumber: EpochNumber, numberOfCheckpointsInEpoch: number, prover: Hex | EthAddress): Promise<boolean>;
|
|
291
|
+
getManaMinFeeAt(timestamp: bigint, inFeeAsset: boolean): Promise<bigint>;
|
|
292
|
+
getSlotAt(timestamp: bigint): Promise<SlotNumber>;
|
|
293
|
+
status(checkpointNumber: CheckpointNumber, options?: {
|
|
202
294
|
blockNumber?: bigint;
|
|
203
|
-
}): Promise<
|
|
295
|
+
}): Promise<RollupStatusResponse>;
|
|
204
296
|
canPruneAtTime(timestamp: bigint, options?: {
|
|
205
297
|
blockNumber?: bigint;
|
|
206
298
|
}): Promise<boolean>;
|
|
207
|
-
archive(): Promise
|
|
208
|
-
archiveAt(
|
|
299
|
+
archive(): Promise<Fr>;
|
|
300
|
+
archiveAt(checkpointNumber: CheckpointNumber): Promise<Fr>;
|
|
209
301
|
getSequencerRewards(address: Hex | EthAddress): Promise<bigint>;
|
|
210
302
|
getSpecificProverRewardsForEpoch(epoch: bigint, prover: Hex | EthAddress): Promise<bigint>;
|
|
211
|
-
getAttesters(): Promise
|
|
212
|
-
getAttesterView(address: Hex | EthAddress): Promise<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
exitableAt: bigint;
|
|
219
|
-
recipientOrWithdrawer: `0x${string}`;
|
|
220
|
-
isRecipient: boolean;
|
|
221
|
-
exists: boolean;
|
|
222
|
-
};
|
|
223
|
-
config: {
|
|
224
|
-
publicKey: {
|
|
225
|
-
x: bigint;
|
|
226
|
-
y: bigint;
|
|
227
|
-
};
|
|
228
|
-
withdrawer: `0x${string}`;
|
|
229
|
-
};
|
|
230
|
-
}>;
|
|
231
|
-
getStatus(address: Hex | EthAddress): Promise<number>;
|
|
232
|
-
getBlobCommitmentsHash(blockNumber: bigint): Promise<`0x${string}`>;
|
|
233
|
-
getCurrentBlobCommitmentsHash(): Promise<`0x${string}`>;
|
|
234
|
-
getStakingAsset(): Promise<`0x${string}`>;
|
|
235
|
-
getRewardConfig(): Promise<{
|
|
236
|
-
rewardDistributor: `0x${string}`;
|
|
237
|
-
sequencerBps: number;
|
|
238
|
-
booster: `0x${string}`;
|
|
239
|
-
blockReward: bigint;
|
|
240
|
-
}>;
|
|
303
|
+
getAttesters(): Promise<EthAddress[]>;
|
|
304
|
+
getAttesterView(address: Hex | EthAddress): Promise<AttesterView>;
|
|
305
|
+
getStatus(address: Hex | EthAddress): Promise<AttesterStatus>;
|
|
306
|
+
getBlobCommitmentsHash(checkpointNumber: CheckpointNumber): Promise<Buffer32>;
|
|
307
|
+
getCurrentBlobCommitmentsHash(): Promise<Buffer32>;
|
|
308
|
+
getStakingAsset(): Promise<EthAddress>;
|
|
309
|
+
getRewardConfig(): Promise<RewardConfig>;
|
|
241
310
|
setupEpoch(l1TxUtils: L1TxUtils): Promise<{
|
|
242
311
|
receipt: import("viem").TransactionReceipt;
|
|
243
312
|
state: import("../l1_tx_utils/types.js").L1TxState;
|
|
@@ -250,8 +319,8 @@ export declare class RollupContract {
|
|
|
250
319
|
oldSlasher: `0x${string}`;
|
|
251
320
|
newSlasher: `0x${string}`;
|
|
252
321
|
}) => unknown): WatchContractEventReturnType;
|
|
253
|
-
|
|
254
|
-
|
|
322
|
+
listenToCheckpointInvalidated(callback: (args: {
|
|
323
|
+
checkpointNumber: CheckpointNumber;
|
|
255
324
|
}) => unknown): WatchContractEventReturnType;
|
|
256
325
|
getSlashEvents(l1BlockHash: Hex): Promise<{
|
|
257
326
|
amount: bigint;
|
|
@@ -261,5 +330,7 @@ export declare class RollupContract {
|
|
|
261
330
|
amount: bigint;
|
|
262
331
|
attester: EthAddress;
|
|
263
332
|
}) => unknown): WatchContractEventReturnType;
|
|
333
|
+
/** Fetches CheckpointProposed events within the given block range. */
|
|
334
|
+
getCheckpointProposedEvents(fromBlock: bigint, toBlock: bigint): Promise<CheckpointProposedLog[]>;
|
|
264
335
|
}
|
|
265
|
-
//# sourceMappingURL=rollup.d.ts.map
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3JvbGx1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkxRCxPQUFPLEVBQ0wsS0FBSyxPQUFPLEVBQ1osS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBQ2xCLEtBQUssNEJBQTRCLEVBS2xDLE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztB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
|