@aztec/ethereum 0.72.1 → 0.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/{ethereum_chain.d.ts → chain.d.ts} +1 -1
- package/dest/chain.d.ts.map +1 -0
- package/dest/{ethereum_chain.js → chain.js} +1 -1
- package/dest/client.d.ts +16 -0
- package/dest/client.d.ts.map +1 -0
- package/dest/client.js +35 -0
- package/dest/contracts/forwarder.d.ts +23 -0
- package/dest/contracts/forwarder.d.ts.map +1 -0
- package/dest/contracts/forwarder.js +66 -0
- package/dest/contracts/governance.d.ts +14 -0
- package/dest/contracts/governance.d.ts.map +1 -0
- package/dest/contracts/governance.js +31 -0
- package/dest/contracts/governance_proposer.d.ts +13 -0
- package/dest/contracts/governance_proposer.d.ts.map +1 -0
- package/dest/contracts/governance_proposer.js +40 -0
- package/dest/contracts/index.d.ts +4 -0
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +5 -1
- package/dest/contracts/rollup.d.ts +94 -5
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +177 -16
- package/dest/contracts/slashing_proposer.d.ts +11 -0
- package/dest/contracts/slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/slashing_proposer.js +19 -0
- package/dest/deploy_l1_contracts.d.ts +985 -974
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +44 -22
- package/dest/index.d.ts +4 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +5 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +2 -3
- package/dest/l1_tx_utils.d.ts +78 -17
- package/dest/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils.js +182 -20
- package/dest/l1_tx_utils_with_blobs.d.ts +12 -0
- package/dest/l1_tx_utils_with_blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils_with_blobs.js +61 -0
- package/dest/queries.d.ts +15 -0
- package/dest/queries.d.ts.map +1 -0
- package/dest/queries.js +48 -0
- package/dest/test/delayed_tx_utils.d.ts +8 -0
- package/dest/test/delayed_tx_utils.d.ts.map +1 -0
- package/dest/test/delayed_tx_utils.js +21 -0
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +3 -2
- package/dest/types.d.ts +3 -1
- package/dest/types.d.ts.map +1 -1
- package/dest/utils.d.ts +1 -0
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +16 -1
- package/package.json +7 -4
- package/src/client.ts +56 -0
- package/src/contracts/forwarder.ts +113 -0
- package/src/contracts/governance.ts +50 -0
- package/src/contracts/governance_proposer.ts +41 -0
- package/src/contracts/index.ts +4 -0
- package/src/contracts/rollup.ts +264 -16
- package/src/contracts/slashing_proposer.ts +31 -0
- package/src/deploy_l1_contracts.ts +68 -26
- package/src/index.ts +4 -1
- package/src/l1_reader.ts +1 -2
- package/src/l1_tx_utils.ts +254 -34
- package/src/l1_tx_utils_with_blobs.ts +86 -0
- package/src/queries.ts +77 -0
- package/src/test/delayed_tx_utils.ts +24 -0
- package/src/test/index.ts +2 -1
- package/src/types.ts +4 -0
- package/src/utils.ts +15 -0
- package/dest/ethereum_chain.d.ts.map +0 -1
- /package/src/{ethereum_chain.ts → chain.ts} +0 -0
|
@@ -22,4 +22,4 @@ export declare function createEthereumChain(rpcUrl: string, _chainId: number | s
|
|
|
22
22
|
* Helper function to determine if a chain id is an instance of Anvil
|
|
23
23
|
*/
|
|
24
24
|
export declare function isAnvilTestChain(_chainId: number | string): boolean;
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CA+B5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CASnE"}
|
|
@@ -53,4 +53,4 @@ export function isAnvilTestChain(_chainId) {
|
|
|
53
53
|
const testChains = [foundry.id, AZTEC_TEST_CHAIN_ID];
|
|
54
54
|
return testChains.includes(chainId);
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
|
package/dest/client.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type ViemPublicClient } from './types.js';
|
|
3
|
+
type Config = {
|
|
4
|
+
/** The RPC Url of the ethereum host. */
|
|
5
|
+
l1RpcUrl: string;
|
|
6
|
+
/** The chain ID of the ethereum host. */
|
|
7
|
+
l1ChainId: number;
|
|
8
|
+
/** The polling interval viem uses in ms */
|
|
9
|
+
viemPollingIntervalMS?: number;
|
|
10
|
+
};
|
|
11
|
+
/** Returns a viem public client given the L1 config. */
|
|
12
|
+
export declare function getPublicClient(config: Config): ViemPublicClient;
|
|
13
|
+
/** Returns a viem public client after waiting for the L1 RPC node to become available. */
|
|
14
|
+
export declare function waitForPublicClient(config: Config, logger?: Logger): Promise<ViemPublicClient>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,MAAM,GAAG;IACZ,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAIF,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAOhE;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIpG"}
|
package/dest/client.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
2
|
+
import { createPublicClient, http } from 'viem';
|
|
3
|
+
import { createEthereumChain } from './chain.js';
|
|
4
|
+
// TODO: Use these methods to abstract the creation of viem clients.
|
|
5
|
+
/** Returns a viem public client given the L1 config. */
|
|
6
|
+
export function getPublicClient(config) {
|
|
7
|
+
const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
|
|
8
|
+
return createPublicClient({
|
|
9
|
+
chain: chain.chainInfo,
|
|
10
|
+
transport: http(chain.rpcUrl),
|
|
11
|
+
pollingInterval: config.viemPollingIntervalMS,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** Returns a viem public client after waiting for the L1 RPC node to become available. */
|
|
15
|
+
export async function waitForPublicClient(config, logger) {
|
|
16
|
+
const client = getPublicClient(config);
|
|
17
|
+
await waitForRpc(client, config, logger);
|
|
18
|
+
return client;
|
|
19
|
+
}
|
|
20
|
+
async function waitForRpc(client, config, logger) {
|
|
21
|
+
const l1ChainId = await retryUntil(async () => {
|
|
22
|
+
let chainId = 0;
|
|
23
|
+
try {
|
|
24
|
+
chainId = await client.getChainId();
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrl}. Retrying...`);
|
|
28
|
+
}
|
|
29
|
+
return chainId;
|
|
30
|
+
}, `L1 RPC url at ${config.l1RpcUrl}`, 600, 1);
|
|
31
|
+
if (l1ChainId !== config.l1ChainId) {
|
|
32
|
+
throw new Error(`Ethereum node at ${config.l1RpcUrl} has chain ID ${l1ChainId} but expected ${config.l1ChainId}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZakQsb0VBQW9FO0FBRXBFLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLGVBQWUsRUFBRSxNQUFNLENBQUMscUJBQXFCO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsTUFBZTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxNQUF3QixFQUFFLE1BQWMsRUFBRSxNQUFlO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxLQUFLLElBQUksRUFBRTtRQUNULElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLHlDQUF5QyxNQUFNLENBQUMsUUFBUSxlQUFlLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxFQUNELGlCQUFpQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQ2xDLEdBQUcsRUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixNQUFNLENBQUMsUUFBUSxpQkFBaUIsU0FBUyxpQkFBaUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient, type WalletClient } from 'viem';
|
|
3
|
+
import { type L1Clients } from '../deploy_l1_contracts.js';
|
|
4
|
+
import { type L1BlobInputs, type L1GasConfig, type L1TxRequest, type L1TxUtils } from '../l1_tx_utils.js';
|
|
5
|
+
export declare class ForwarderContract {
|
|
6
|
+
readonly client: L1Clients['publicClient'];
|
|
7
|
+
private readonly forwarder;
|
|
8
|
+
constructor(client: L1Clients['publicClient'], address: Hex);
|
|
9
|
+
static create(owner: Hex, walletClient: WalletClient<HttpTransport, Chain, Account>, publicClient: PublicClient<HttpTransport, Chain>, logger: Logger): Promise<ForwarderContract>;
|
|
10
|
+
getAddress(): `0x${string}`;
|
|
11
|
+
forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined): Promise<{
|
|
12
|
+
receipt: import("viem").TransactionReceipt;
|
|
13
|
+
gasPrice: import("../l1_tx_utils.js").GasPrice;
|
|
14
|
+
stats: import("../l1_tx_utils.js").TransactionStats | undefined;
|
|
15
|
+
errorMsg?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
receipt: import("viem").TransactionReceipt;
|
|
18
|
+
gasPrice: import("../l1_tx_utils.js").GasPrice;
|
|
19
|
+
errorMsg: string | undefined;
|
|
20
|
+
stats?: undefined;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=forwarder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/contracts/forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAGlB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1G,qBAAa,iBAAiB;aAGA,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IAF7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;gBAE/E,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG;WAI9D,MAAM,CACjB,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,EACzD,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAChD,MAAM,EAAE,MAAM;IAwBT,UAAU;IAIJ,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS;;;;;;;;;;;CAmDvC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ForwarderAbi, ForwarderBytecode } from '@aztec/l1-artifacts';
|
|
2
|
+
import { encodeFunctionData, getContract, } from 'viem';
|
|
3
|
+
import { deployL1Contract } from '../deploy_l1_contracts.js';
|
|
4
|
+
export class ForwarderContract {
|
|
5
|
+
constructor(client, address) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
this.forwarder = getContract({ address, abi: ForwarderAbi, client });
|
|
8
|
+
}
|
|
9
|
+
static async create(owner, walletClient, publicClient, logger) {
|
|
10
|
+
logger.info('Deploying forwarder contract');
|
|
11
|
+
const { address, txHash } = await deployL1Contract(walletClient, publicClient, ForwarderAbi, ForwarderBytecode, [owner], owner, undefined, logger);
|
|
12
|
+
if (txHash) {
|
|
13
|
+
await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
14
|
+
}
|
|
15
|
+
logger.info(`Forwarder contract deployed at ${address} with owner ${owner}`);
|
|
16
|
+
return new ForwarderContract(publicClient, address.toString());
|
|
17
|
+
}
|
|
18
|
+
getAddress() {
|
|
19
|
+
return this.forwarder.address;
|
|
20
|
+
}
|
|
21
|
+
async forward(requests, l1TxUtils, gasConfig, blobConfig) {
|
|
22
|
+
requests = requests.filter(request => request.to !== null);
|
|
23
|
+
const toArgs = requests.map(request => request.to);
|
|
24
|
+
const dataArgs = requests.map(request => request.data);
|
|
25
|
+
const data = encodeFunctionData({
|
|
26
|
+
abi: ForwarderAbi,
|
|
27
|
+
functionName: 'forward',
|
|
28
|
+
args: [toArgs, dataArgs],
|
|
29
|
+
});
|
|
30
|
+
const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
|
|
31
|
+
to: this.forwarder.address,
|
|
32
|
+
data,
|
|
33
|
+
}, gasConfig, blobConfig);
|
|
34
|
+
if (receipt.status === 'success') {
|
|
35
|
+
const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
|
|
36
|
+
return { receipt, gasPrice, stats };
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const args = {
|
|
40
|
+
args: [toArgs, dataArgs],
|
|
41
|
+
functionName: 'forward',
|
|
42
|
+
abi: ForwarderAbi,
|
|
43
|
+
address: this.forwarder.address,
|
|
44
|
+
};
|
|
45
|
+
let errorMsg;
|
|
46
|
+
if (blobConfig) {
|
|
47
|
+
const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
|
|
48
|
+
if (maxFeePerBlobGas === undefined) {
|
|
49
|
+
errorMsg = 'maxFeePerBlobGas is required to get the error message';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(data, args, {
|
|
53
|
+
blobs: blobConfig.blobs,
|
|
54
|
+
kzg: blobConfig.kzg,
|
|
55
|
+
maxFeePerBlobGas,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(data, args);
|
|
61
|
+
}
|
|
62
|
+
return { receipt, gasPrice, errorMsg };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9mb3J3YXJkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFRTCxrQkFBa0IsRUFDbEIsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdFLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBNEIsTUFBaUMsRUFBRSxPQUFZO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEtBQVUsRUFDVixZQUF5RCxFQUN6RCxZQUFnRCxFQUNoRCxNQUFjO1FBRWQsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FDaEQsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLENBQUMsS0FBSyxDQUFDLEVBQ1AsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLENBQ1AsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxPQUFPLGVBQWUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU3RSxP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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
|
|
3
|
+
import { type L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
4
|
+
import { GovernanceProposerContract } from './governance_proposer.js';
|
|
5
|
+
export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
|
|
6
|
+
export declare class GovernanceContract {
|
|
7
|
+
readonly client: PublicClient<HttpTransport, Chain>;
|
|
8
|
+
private readonly governance;
|
|
9
|
+
constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
|
|
10
|
+
get address(): EthAddress;
|
|
11
|
+
getProposer(): Promise<GovernanceProposerContract>;
|
|
12
|
+
getGovernanceAddresses(): Promise<L1GovernanceContractAddresses>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=governance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CACxF,CAAC;AAEF,qBAAa,kBAAkB;aAGD,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkF;gBAEjF,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,eAEjB;IAEY,WAAW;IAKX,sBAAsB,IAAI,OAAO,CAAC,6BAA6B,CAAC;CAa9E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { GovernanceAbi } from '@aztec/l1-artifacts';
|
|
3
|
+
import { getContract, } from 'viem';
|
|
4
|
+
import { GovernanceProposerContract } from './governance_proposer.js';
|
|
5
|
+
export class GovernanceContract {
|
|
6
|
+
constructor(client, address) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
this.governance = getContract({ address, abi: GovernanceAbi, client });
|
|
9
|
+
}
|
|
10
|
+
get address() {
|
|
11
|
+
return EthAddress.fromString(this.governance.address);
|
|
12
|
+
}
|
|
13
|
+
async getProposer() {
|
|
14
|
+
const governanceProposerAddress = EthAddress.fromString(await this.governance.read.governanceProposer());
|
|
15
|
+
return new GovernanceProposerContract(this.client, governanceProposerAddress.toString());
|
|
16
|
+
}
|
|
17
|
+
async getGovernanceAddresses() {
|
|
18
|
+
const governanceProposer = await this.getProposer();
|
|
19
|
+
const [rollupAddress, registryAddress] = await Promise.all([
|
|
20
|
+
governanceProposer.getRollupAddress(),
|
|
21
|
+
governanceProposer.getRegistryAddress(),
|
|
22
|
+
]);
|
|
23
|
+
return {
|
|
24
|
+
governanceAddress: this.address,
|
|
25
|
+
rollupAddress,
|
|
26
|
+
registryAddress,
|
|
27
|
+
governanceProposerAddress: governanceProposer.address,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU90RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQTRCLE1BQTBDLEVBQUUsT0FBWTtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN6RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtTQUN4QyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDL0IsYUFBYTtZQUNiLGVBQWU7WUFDZix5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1NBQ3RELENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
|
|
3
|
+
export declare class GovernanceProposerContract {
|
|
4
|
+
readonly client: PublicClient<HttpTransport, Chain>;
|
|
5
|
+
private readonly proposer;
|
|
6
|
+
constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
|
|
7
|
+
get address(): EthAddress;
|
|
8
|
+
getRollupAddress(): Promise<EthAddress>;
|
|
9
|
+
getRegistryAddress(): Promise<EthAddress>;
|
|
10
|
+
getQuorumSize(): Promise<bigint>;
|
|
11
|
+
getRoundSize(): Promise<bigint>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=governance_proposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,qBAAa,0BAA0B;aAGT,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0F;gBAEvF,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa;IAIb,YAAY;CAGpB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { memoize } from '@aztec/foundation/decorators';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import { GovernanceProposerAbi } from '@aztec/l1-artifacts';
|
|
5
|
+
import { getContract, } from 'viem';
|
|
6
|
+
let GovernanceProposerContract = (() => {
|
|
7
|
+
var _a;
|
|
8
|
+
let _instanceExtraInitializers = [];
|
|
9
|
+
let _getRegistryAddress_decorators;
|
|
10
|
+
return _a = class GovernanceProposerContract {
|
|
11
|
+
constructor(client, address) {
|
|
12
|
+
this.client = (__runInitializers(this, _instanceExtraInitializers), client);
|
|
13
|
+
this.proposer = getContract({ address, abi: GovernanceProposerAbi, client });
|
|
14
|
+
}
|
|
15
|
+
get address() {
|
|
16
|
+
return EthAddress.fromString(this.proposer.address);
|
|
17
|
+
}
|
|
18
|
+
async getRollupAddress() {
|
|
19
|
+
return EthAddress.fromString(await this.proposer.read.getInstance());
|
|
20
|
+
}
|
|
21
|
+
async getRegistryAddress() {
|
|
22
|
+
return EthAddress.fromString(await this.proposer.read.REGISTRY());
|
|
23
|
+
}
|
|
24
|
+
getQuorumSize() {
|
|
25
|
+
return this.proposer.read.N();
|
|
26
|
+
}
|
|
27
|
+
getRoundSize() {
|
|
28
|
+
return this.proposer.read.M();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
(() => {
|
|
32
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
33
|
+
_getRegistryAddress_decorators = [memoize];
|
|
34
|
+
__esDecorate(_a, null, _getRegistryAddress_decorators, { kind: "method", name: "getRegistryAddress", static: false, private: false, access: { has: obj => "getRegistryAddress" in obj, get: obj => obj.getRegistryAddress }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
35
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
36
|
+
})(),
|
|
37
|
+
_a;
|
|
38
|
+
})();
|
|
39
|
+
export { GovernanceProposerContract };
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZV9wcm9wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBTUwsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0lBRUQsMEJBQTBCOzs7O3NCQUExQiwwQkFBMEI7WUFHckMsWUFBNEIsTUFBMEMsRUFBRSxPQUFZO2dCQUF4RCxXQUFNLElBSHZCLG1EQUEwQixFQUdULE1BQU0sRUFBb0M7Z0JBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFFRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFTSxLQUFLLENBQUMsZ0JBQWdCO2dCQUMzQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFHTSxLQUFLLENBQUMsa0JBQWtCO2dCQUM3QixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFTSxhQUFhO2dCQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFTSxZQUFZO2dCQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7Ozs7OENBWEEsT0FBTztZQUNSLHVNQUFhLGtCQUFrQiw2REFFOUI7Ozs7O1NBbEJVLDBCQUEwQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
|
package/dest/contracts/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
export * from './forwarder.js';
|
|
1
2
|
export * from './rollup.js';
|
|
2
|
-
|
|
3
|
+
export * from './governance.js';
|
|
4
|
+
export * from './governance_proposer.js';
|
|
5
|
+
export * from './slashing_proposer.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUMifQ==
|
|
@@ -1,14 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import type { ViemSignature } from '@aztec/foundation/eth-signature';
|
|
5
|
+
import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
|
|
3
6
|
import { type DeployL1Contracts } from '../deploy_l1_contracts.js';
|
|
7
|
+
import { type L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
4
8
|
import { type L1ReaderConfig } from '../l1_reader.js';
|
|
9
|
+
import { SlashingProposerContract } from './slashing_proposer.js';
|
|
10
|
+
export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'outboxAddress' | 'feeJuicePortalAddress' | 'feeJuiceAddress' | 'stakingAssetAddress' | 'rewardDistributorAddress'>;
|
|
11
|
+
export type EpochProofQuoteViemArgs = {
|
|
12
|
+
epochToProve: bigint;
|
|
13
|
+
validUntilSlot: bigint;
|
|
14
|
+
bondAmount: bigint;
|
|
15
|
+
prover: `0x${string}`;
|
|
16
|
+
basisPointFee: number;
|
|
17
|
+
};
|
|
5
18
|
export declare class RollupContract {
|
|
6
19
|
readonly client: PublicClient<HttpTransport, Chain>;
|
|
7
20
|
private readonly rollup;
|
|
21
|
+
static getFromL1ContractsValues(deployL1ContractsValues: DeployL1Contracts): RollupContract;
|
|
22
|
+
static getFromConfig(config: L1ReaderConfig): RollupContract;
|
|
8
23
|
constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
|
|
9
|
-
get address():
|
|
24
|
+
get address(): `0x${string}`;
|
|
25
|
+
getSlashingProposer(): Promise<SlashingProposerContract>;
|
|
10
26
|
getL1StartBlock(): Promise<bigint>;
|
|
11
27
|
getL1GenesisTime(): Promise<bigint>;
|
|
28
|
+
getClaimDurationInL2Slots(): Promise<bigint>;
|
|
29
|
+
getEpochDuration(): Promise<bigint>;
|
|
30
|
+
getSlotDuration(): Promise<bigint>;
|
|
31
|
+
getTargetCommitteeSize(): Promise<bigint>;
|
|
32
|
+
getMinimumStake(): Promise<bigint>;
|
|
33
|
+
getSlashingProposerAddress(): Promise<EthAddress>;
|
|
12
34
|
getBlockNumber(): Promise<bigint>;
|
|
13
35
|
getProvenBlockNumber(): Promise<bigint>;
|
|
14
36
|
getSlotNumber(): Promise<bigint>;
|
|
@@ -17,8 +39,75 @@ export declare class RollupContract {
|
|
|
17
39
|
getCurrentSampleSeed(): Promise<bigint>;
|
|
18
40
|
getCurrentEpochCommittee(): Promise<readonly `0x${string}`[]>;
|
|
19
41
|
getCurrentProposer(): Promise<`0x${string}`>;
|
|
42
|
+
getProposerAt(timestamp: bigint): Promise<`0x${string}`>;
|
|
43
|
+
getBlock(blockNumber: bigint): Promise<{
|
|
44
|
+
feeHeader: {
|
|
45
|
+
excessMana: bigint;
|
|
46
|
+
feeAssetPriceNumerator: bigint;
|
|
47
|
+
manaUsed: bigint;
|
|
48
|
+
provingCostPerManaNumerator: bigint;
|
|
49
|
+
congestionCost: bigint;
|
|
50
|
+
};
|
|
51
|
+
archive: `0x${string}`;
|
|
52
|
+
blockHash: `0x${string}`;
|
|
53
|
+
slotNumber: bigint;
|
|
54
|
+
}>;
|
|
55
|
+
getProofCommitmentEscrow(): Promise<`0x${string}`>;
|
|
56
|
+
getTips(): Promise<{
|
|
57
|
+
pendingBlockNumber: bigint;
|
|
58
|
+
provenBlockNumber: bigint;
|
|
59
|
+
}>;
|
|
20
60
|
getEpochNumber(blockNumber?: bigint): Promise<bigint>;
|
|
21
|
-
|
|
22
|
-
|
|
61
|
+
getRollupAddresses(): Promise<L1RollupContractAddresses>;
|
|
62
|
+
getEpochNumberForSlotNumber(slotNumber: bigint): Promise<bigint>;
|
|
63
|
+
getEpochProofPublicInputs(args: readonly [
|
|
64
|
+
bigint,
|
|
65
|
+
readonly [
|
|
66
|
+
`0x${string}`,
|
|
67
|
+
`0x${string}`,
|
|
68
|
+
`0x${string}`,
|
|
69
|
+
`0x${string}`,
|
|
70
|
+
`0x${string}`,
|
|
71
|
+
`0x${string}`,
|
|
72
|
+
`0x${string}`
|
|
73
|
+
],
|
|
74
|
+
readonly `0x${string}`[],
|
|
75
|
+
`0x${string}`,
|
|
76
|
+
`0x${string}`
|
|
77
|
+
]): Promise<readonly `0x${string}`[]>;
|
|
78
|
+
getProofClaim(): Promise<{
|
|
79
|
+
epochToProve: bigint;
|
|
80
|
+
basisPointFee: bigint;
|
|
81
|
+
bondAmount: bigint;
|
|
82
|
+
bondProvider: EthAddress;
|
|
83
|
+
proposerClaimant: EthAddress;
|
|
84
|
+
} | undefined>;
|
|
85
|
+
getClaimableEpoch(): Promise<bigint | undefined>;
|
|
86
|
+
getEpochToProve(): Promise<bigint | undefined>;
|
|
87
|
+
validateProofQuote(quote: {
|
|
88
|
+
quote: EpochProofQuoteViemArgs;
|
|
89
|
+
signature: ViemSignature;
|
|
90
|
+
}, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<void>;
|
|
91
|
+
validateHeader(args: readonly [
|
|
92
|
+
`0x${string}`,
|
|
93
|
+
ViemSignature[],
|
|
94
|
+
`0x${string}`,
|
|
95
|
+
bigint,
|
|
96
|
+
`0x${string}`,
|
|
97
|
+
{
|
|
98
|
+
ignoreDA: boolean;
|
|
99
|
+
ignoreSignatures: boolean;
|
|
100
|
+
}
|
|
101
|
+
], account: `0x${string}` | Account): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
|
|
104
|
+
*
|
|
105
|
+
* @dev Throws if unable to propose
|
|
106
|
+
*
|
|
107
|
+
* @param archive - The archive that we expect to be current state
|
|
108
|
+
* @return [slot, blockNumber] - If you can propose, the L2 slot number and L2 block number of the next Ethereum block,
|
|
109
|
+
* @throws otherwise
|
|
110
|
+
*/
|
|
111
|
+
canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<[bigint, bigint]>;
|
|
23
112
|
}
|
|
24
113
|
//# sourceMappingURL=rollup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}
|