@aztec/ethereum 0.76.4 → 0.77.0-testnet-ignition.17
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/chain.d.ts +7 -7
- package/dest/chain.d.ts.map +1 -1
- package/dest/chain.js +18 -21
- package/dest/client.d.ts +3 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +11 -15
- package/dest/config.js +14 -15
- package/dest/constants.d.ts +1 -1
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +0 -1
- package/dest/contracts/empire_base.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +3 -2
- package/dest/contracts/fee_juice.d.ts +15 -0
- package/dest/contracts/fee_juice.d.ts.map +1 -0
- package/dest/contracts/fee_juice.js +52 -0
- package/dest/contracts/forwarder.d.ts +5 -5
- package/dest/contracts/forwarder.d.ts.map +1 -1
- package/dest/contracts/forwarder.js +46 -26
- package/dest/contracts/governance.d.ts +70 -5
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +226 -10
- package/dest/contracts/governance_proposer.d.ts +3 -3
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +78 -67
- package/dest/contracts/index.d.ts +2 -0
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +2 -1
- package/dest/contracts/registry.d.ts +24 -0
- package/dest/contracts/registry.d.ts.map +1 -0
- package/dest/contracts/registry.js +85 -0
- package/dest/contracts/rollup.d.ts +23 -26
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +229 -205
- package/dest/contracts/slashing_proposer.d.ts +3 -3
- package/dest/contracts/slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/slashing_proposer.js +18 -8
- package/dest/deploy_l1_contracts.d.ts +4137 -3597
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +343 -233
- package/dest/eth_cheat_codes.d.ts +4 -3
- package/dest/eth_cheat_codes.d.ts.map +1 -1
- package/dest/eth_cheat_codes.js +202 -169
- package/dest/index.js +0 -1
- package/dest/l1_contract_addresses.d.ts +7 -5
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +17 -20
- package/dest/l1_reader.d.ts +1 -1
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +8 -8
- package/dest/l1_tx_utils.d.ts +7 -6
- package/dest/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils.js +235 -187
- package/dest/l1_tx_utils_with_blobs.js +24 -21
- package/dest/queries.d.ts +4 -7
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +5 -18
- package/dest/test/delayed_tx_utils.js +3 -3
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes_with_state.js +19 -19
- package/dest/test/index.d.ts +1 -0
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -1
- 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 +19 -10
- package/dest/test/tx_delayer.d.ts +3 -2
- package/dest/test/tx_delayer.d.ts.map +1 -1
- package/dest/test/tx_delayer.js +77 -74
- package/dest/test/upgrade_utils.d.ts +11 -0
- package/dest/test/upgrade_utils.d.ts.map +1 -0
- package/dest/test/upgrade_utils.js +104 -0
- package/dest/types.d.ts +11 -9
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +1 -2
- package/dest/utils.d.ts +2 -2
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +35 -36
- package/package.json +7 -6
- package/src/chain.ts +10 -10
- package/src/client.ts +11 -9
- package/src/config.ts +1 -1
- package/src/constants.ts +1 -1
- package/src/contracts/empire_base.ts +1 -1
- package/src/contracts/fee_juice.ts +43 -0
- package/src/contracts/forwarder.ts +7 -11
- package/src/contracts/governance.ts +245 -10
- package/src/contracts/governance_proposer.ts +4 -13
- package/src/contracts/index.ts +2 -0
- package/src/contracts/registry.ts +106 -0
- package/src/contracts/rollup.ts +36 -53
- package/src/contracts/slashing_proposer.ts +5 -12
- package/src/deploy_l1_contracts.ts +264 -217
- package/src/eth_cheat_codes.ts +79 -59
- package/src/l1_contract_addresses.ts +3 -4
- package/src/l1_reader.ts +4 -3
- package/src/l1_tx_utils.ts +11 -8
- package/src/queries.ts +5 -24
- package/src/test/eth_cheat_codes_with_state.ts +10 -8
- package/src/test/index.ts +1 -0
- package/src/test/start_anvil.ts +7 -3
- package/src/test/tx_delayer.ts +3 -2
- package/src/test/upgrade_utils.ts +100 -0
- package/src/types.ts +27 -20
- package/src/utils.ts +2 -2
package/dest/chain.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Chain } from 'viem';
|
|
2
2
|
/**
|
|
3
3
|
* Interface containing the connection and chain properties to interact with a blockchain.
|
|
4
4
|
*/
|
|
@@ -8,16 +8,16 @@ export interface EthereumChain {
|
|
|
8
8
|
*/
|
|
9
9
|
chainInfo: Chain;
|
|
10
10
|
/**
|
|
11
|
-
* The actual
|
|
11
|
+
* The list of actual urls to be used.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
rpcUrls: string[];
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Helper function to create an instance of Aztec Chain from an rpc url and
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
16
|
+
* Helper function to create an instance of Aztec Chain from an rpc url and chain id.
|
|
17
|
+
* @param rpcUrls - The rpc url of the chain or a chain identifier (e.g. 'http://localhost:8545')
|
|
18
|
+
* @param chainId - The chain id of the chain or a chain identifier (e.g. 1337)
|
|
19
19
|
*/
|
|
20
|
-
export declare function createEthereumChain(
|
|
20
|
+
export declare function createEthereumChain(rpcUrls: string[], _chainId: number | string): EthereumChain;
|
|
21
21
|
/**
|
|
22
22
|
* Helper function to determine if a chain id is an instance of Anvil
|
|
23
23
|
*/
|
package/dest/chain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CA+B/F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CASnE"}
|
package/dest/chain.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { foundry } from 'viem/chains';
|
|
2
2
|
import { AZTEC_TEST_CHAIN_ID } from './constants.js';
|
|
3
3
|
/**
|
|
4
|
-
* Helper function to create an instance of Aztec Chain from an rpc url and
|
|
5
|
-
* @param
|
|
6
|
-
* @param
|
|
7
|
-
*/
|
|
8
|
-
export function createEthereumChain(rpcUrl, _chainId) {
|
|
4
|
+
* Helper function to create an instance of Aztec Chain from an rpc url and chain id.
|
|
5
|
+
* @param rpcUrls - The rpc url of the chain or a chain identifier (e.g. 'http://localhost:8545')
|
|
6
|
+
* @param chainId - The chain id of the chain or a chain identifier (e.g. 1337)
|
|
7
|
+
*/ export function createEthereumChain(rpcUrls, _chainId) {
|
|
9
8
|
let chainId;
|
|
10
9
|
if (typeof _chainId === 'string') {
|
|
11
10
|
chainId = +_chainId;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
11
|
+
} else {
|
|
14
12
|
chainId = _chainId;
|
|
15
13
|
}
|
|
16
14
|
if (chainId) {
|
|
@@ -20,37 +18,36 @@ export function createEthereumChain(rpcUrl, _chainId) {
|
|
|
20
18
|
name: 'Ethereum',
|
|
21
19
|
rpcUrls: {
|
|
22
20
|
default: {
|
|
23
|
-
http:
|
|
24
|
-
}
|
|
21
|
+
http: rpcUrls
|
|
22
|
+
}
|
|
25
23
|
},
|
|
26
24
|
nativeCurrency: {
|
|
27
25
|
decimals: 18,
|
|
28
26
|
name: 'Ether',
|
|
29
|
-
symbol: 'ETH'
|
|
30
|
-
}
|
|
27
|
+
symbol: 'ETH'
|
|
28
|
+
}
|
|
31
29
|
},
|
|
32
|
-
|
|
30
|
+
rpcUrls
|
|
33
31
|
};
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
32
|
+
} else {
|
|
36
33
|
return {
|
|
37
34
|
chainInfo: foundry,
|
|
38
|
-
|
|
35
|
+
rpcUrls
|
|
39
36
|
};
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
/**
|
|
43
40
|
* Helper function to determine if a chain id is an instance of Anvil
|
|
44
|
-
*/
|
|
45
|
-
export function isAnvilTestChain(_chainId) {
|
|
41
|
+
*/ export function isAnvilTestChain(_chainId) {
|
|
46
42
|
let chainId;
|
|
47
43
|
if (typeof _chainId === 'string') {
|
|
48
44
|
chainId = +_chainId;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
45
|
+
} else {
|
|
51
46
|
chainId = _chainId;
|
|
52
47
|
}
|
|
53
|
-
const testChains = [
|
|
48
|
+
const testChains = [
|
|
49
|
+
foundry.id,
|
|
50
|
+
AZTEC_TEST_CHAIN_ID
|
|
51
|
+
];
|
|
54
52
|
return testChains.includes(chainId);
|
|
55
53
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
|
package/dest/client.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
import type { ViemPublicClient } from './types.js';
|
|
3
3
|
type Config = {
|
|
4
4
|
/** The RPC Url of the ethereum host. */
|
|
5
|
-
|
|
5
|
+
l1RpcUrls: string[];
|
|
6
6
|
/** The chain ID of the ethereum host. */
|
|
7
7
|
l1ChainId: number;
|
|
8
8
|
/** The polling interval viem uses in ms */
|
package/dest/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,MAAM,GAAG;IACZ,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,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
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
2
|
-
import { createPublicClient, http } from 'viem';
|
|
2
|
+
import { createPublicClient, fallback, http } from 'viem';
|
|
3
3
|
import { createEthereumChain } from './chain.js';
|
|
4
4
|
// TODO: Use these methods to abstract the creation of viem clients.
|
|
5
|
-
/** Returns a viem public client given the L1 config. */
|
|
6
|
-
|
|
7
|
-
const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
|
|
5
|
+
/** Returns a viem public client given the L1 config. */ export function getPublicClient(config) {
|
|
6
|
+
const chain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
|
|
8
7
|
return createPublicClient({
|
|
9
8
|
chain: chain.chainInfo,
|
|
10
|
-
transport:
|
|
11
|
-
pollingInterval: config.viemPollingIntervalMS
|
|
9
|
+
transport: fallback(config.l1RpcUrls.map((url)=>http(url))),
|
|
10
|
+
pollingInterval: config.viemPollingIntervalMS
|
|
12
11
|
});
|
|
13
12
|
}
|
|
14
|
-
/** Returns a viem public client after waiting for the L1 RPC node to become available. */
|
|
15
|
-
export async function waitForPublicClient(config, logger) {
|
|
13
|
+
/** Returns a viem public client after waiting for the L1 RPC node to become available. */ export async function waitForPublicClient(config, logger) {
|
|
16
14
|
const client = getPublicClient(config);
|
|
17
15
|
await waitForRpc(client, config, logger);
|
|
18
16
|
return client;
|
|
19
17
|
}
|
|
20
18
|
async function waitForRpc(client, config, logger) {
|
|
21
|
-
const l1ChainId = await retryUntil(async ()
|
|
19
|
+
const l1ChainId = await retryUntil(async ()=>{
|
|
22
20
|
let chainId = 0;
|
|
23
21
|
try {
|
|
24
22
|
chainId = await client.getChainId();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrl}. Retrying...`);
|
|
23
|
+
} catch (err) {
|
|
24
|
+
logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrls.join(', ')}. Retrying...`);
|
|
28
25
|
}
|
|
29
26
|
return chainId;
|
|
30
|
-
}, `L1 RPC url at ${config.
|
|
27
|
+
}, `L1 RPC url at ${config.l1RpcUrls.join(', ')}`, 600, 1);
|
|
31
28
|
if (l1ChainId !== config.l1ChainId) {
|
|
32
|
-
throw new Error(`Ethereum node at ${config.
|
|
29
|
+
throw new Error(`Ethereum node at ${config.l1RpcUrls.join(', ')} has chain ID ${l1ChainId} but expected ${config.l1ChainId}`);
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZakQsb0VBQW9FO0FBRXBFLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLGVBQWUsRUFBRSxNQUFNLENBQUMscUJBQXFCO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsTUFBZTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxNQUF3QixFQUFFLE1BQWMsRUFBRSxNQUFlO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxLQUFLLElBQUksRUFBRTtRQUNULElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLHlDQUF5QyxNQUFNLENBQUMsUUFBUSxlQUFlLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxFQUNELGlCQUFpQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQ2xDLEdBQUcsRUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixNQUFNLENBQUMsUUFBUSxpQkFBaUIsU0FBUyxpQkFBaUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztBQUNILENBQUMifQ==
|
package/dest/config.js
CHANGED
|
@@ -1,71 +1,70 @@
|
|
|
1
|
-
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper
|
|
1
|
+
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { l1TxUtilsConfigMappings } from './l1_tx_utils.js';
|
|
3
3
|
export const DefaultL1ContractsConfig = {
|
|
4
4
|
ethereumSlotDuration: 12,
|
|
5
5
|
aztecSlotDuration: 24,
|
|
6
6
|
aztecEpochDuration: 16,
|
|
7
7
|
aztecTargetCommitteeSize: 48,
|
|
8
|
-
aztecProofSubmissionWindow:
|
|
8
|
+
aztecProofSubmissionWindow: 31,
|
|
9
9
|
minimumStake: BigInt(100e18),
|
|
10
10
|
slashingQuorum: 6,
|
|
11
11
|
slashingRoundSize: 10,
|
|
12
12
|
governanceProposerQuorum: 6,
|
|
13
|
-
governanceProposerRoundSize: 10
|
|
13
|
+
governanceProposerRoundSize: 10
|
|
14
14
|
};
|
|
15
15
|
export const l1ContractsConfigMappings = {
|
|
16
16
|
ethereumSlotDuration: {
|
|
17
17
|
env: 'ETHEREUM_SLOT_DURATION',
|
|
18
18
|
description: 'How many seconds an L1 slot lasts.',
|
|
19
|
-
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration)
|
|
19
|
+
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration)
|
|
20
20
|
},
|
|
21
21
|
aztecSlotDuration: {
|
|
22
22
|
env: 'AZTEC_SLOT_DURATION',
|
|
23
23
|
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
24
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration)
|
|
24
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration)
|
|
25
25
|
},
|
|
26
26
|
aztecEpochDuration: {
|
|
27
27
|
env: 'AZTEC_EPOCH_DURATION',
|
|
28
28
|
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
29
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration)
|
|
29
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration)
|
|
30
30
|
},
|
|
31
31
|
aztecTargetCommitteeSize: {
|
|
32
32
|
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
33
33
|
description: 'The target validator committee size.',
|
|
34
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize)
|
|
34
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize)
|
|
35
35
|
},
|
|
36
36
|
aztecProofSubmissionWindow: {
|
|
37
37
|
env: 'AZTEC_PROOF_SUBMISSION_WINDOW',
|
|
38
38
|
description: 'The number of L2 slots that a proof for an epoch can be submitted in, starting from the beginning of the epoch.',
|
|
39
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecProofSubmissionWindow)
|
|
39
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecProofSubmissionWindow)
|
|
40
40
|
},
|
|
41
41
|
minimumStake: {
|
|
42
42
|
env: 'AZTEC_MINIMUM_STAKE',
|
|
43
43
|
description: 'The minimum stake for a validator.',
|
|
44
|
-
...bigintConfigHelper(DefaultL1ContractsConfig.minimumStake)
|
|
44
|
+
...bigintConfigHelper(DefaultL1ContractsConfig.minimumStake)
|
|
45
45
|
},
|
|
46
46
|
slashingQuorum: {
|
|
47
47
|
env: 'AZTEC_SLASHING_QUORUM',
|
|
48
48
|
description: 'The slashing quorum',
|
|
49
|
-
...numberConfigHelper(DefaultL1ContractsConfig.slashingQuorum)
|
|
49
|
+
...numberConfigHelper(DefaultL1ContractsConfig.slashingQuorum)
|
|
50
50
|
},
|
|
51
51
|
slashingRoundSize: {
|
|
52
52
|
env: 'AZTEC_SLASHING_ROUND_SIZE',
|
|
53
53
|
description: 'The slashing round size',
|
|
54
|
-
...numberConfigHelper(DefaultL1ContractsConfig.slashingRoundSize)
|
|
54
|
+
...numberConfigHelper(DefaultL1ContractsConfig.slashingRoundSize)
|
|
55
55
|
},
|
|
56
56
|
governanceProposerQuorum: {
|
|
57
57
|
env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
|
|
58
58
|
description: 'The governance proposing quorum',
|
|
59
|
-
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerQuorum)
|
|
59
|
+
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerQuorum)
|
|
60
60
|
},
|
|
61
61
|
governanceProposerRoundSize: {
|
|
62
62
|
env: 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE',
|
|
63
63
|
description: 'The governance proposing round size',
|
|
64
|
-
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerRoundSize)
|
|
64
|
+
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerRoundSize)
|
|
65
65
|
},
|
|
66
|
-
...l1TxUtilsConfigMappings
|
|
66
|
+
...l1TxUtilsConfigMappings
|
|
67
67
|
};
|
|
68
68
|
export function getL1ContractsConfigEnvVars() {
|
|
69
69
|
return getConfigFromMappings(l1ContractsConfigMappings);
|
|
70
70
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQXdCLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF5QmpGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsMEJBQTBCLEVBQUUsRUFBRSxFQUFFLHdFQUF3RTtJQUN4RyxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1QixjQUFjLEVBQUUsQ0FBQztJQUNqQixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHdCQUF3QixFQUFFLENBQUM7SUFDM0IsMkJBQTJCLEVBQUUsRUFBRTtDQUNKLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQTBDO0lBQzlFLG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSx3QkFBd0I7UUFDN0IsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDO0tBQ3JFO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsR0FBRyxFQUFFLHFCQUFxQjtRQUMxQixXQUFXLEVBQUUsa0ZBQWtGO1FBQy9GLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUM7S0FDbEU7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxzRUFBc0U7UUFDbkYsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQztLQUNuRTtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSw2QkFBNkI7UUFDbEMsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUFDO0tBQ3pFO0lBQ0QsMEJBQTBCLEVBQUU7UUFDMUIsR0FBRyxFQUFFLCtCQUErQjtRQUNwQyxXQUFXLEVBQ1QsaUhBQWlIO1FBQ25ILEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsMEJBQTBCLENBQUM7S0FDM0U7SUFDRCxZQUFZLEVBQUU7UUFDWixHQUFHLEVBQUUscUJBQXFCO1FBQzFCLFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUM7S0FDN0Q7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsdUJBQXVCO1FBQzVCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUM7S0FDL0Q7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixHQUFHLEVBQUUsMkJBQTJCO1FBQ2hDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQztLQUNsRTtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSxrQ0FBa0M7UUFDdkMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUFDO0tBQ3pFO0lBQ0QsMkJBQTJCLEVBQUU7UUFDM0IsR0FBRyxFQUFFLHNDQUFzQztRQUMzQyxXQUFXLEVBQUUscUNBQXFDO1FBQ2xELEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsMkJBQTJCLENBQUM7S0FDNUU7SUFDRCxHQUFHLHVCQUF1QjtDQUMzQixDQUFDO0FBRUYsTUFBTSxVQUFVLDJCQUEyQjtJQUN6QyxPQUFPLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDMUQsQ0FBQyJ9
|
package/dest/constants.d.ts
CHANGED
package/dest/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,eAAO,MAAM,QAAQ,EAAE,GAA+E,CAAC;AACvG,eAAO,MAAM,mBAAmB,SAAS,CAAC"}
|
package/dest/constants.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export const NULL_KEY = `0x${'0000000000000000000000000000000000000000000000000000000000000000'}`;
|
|
2
2
|
export const AZTEC_TEST_CHAIN_ID = 677692;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQVEsS0FBSyxrRUFBa0UsRUFBRSxDQUFDO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,GAAG,EAAsB,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,GAAG,EAAsB,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/G,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;CAC9C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAM5C"}
|
|
@@ -4,7 +4,8 @@ export function encodeVote(payload) {
|
|
|
4
4
|
return encodeFunctionData({
|
|
5
5
|
abi: EmpireBaseAbi,
|
|
6
6
|
functionName: 'vote',
|
|
7
|
-
args: [
|
|
7
|
+
args: [
|
|
8
|
+
payload
|
|
9
|
+
]
|
|
8
10
|
});
|
|
9
11
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX2Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2VtcGlyZV9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFVcEQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFZO0lBQ3JDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLGFBQWE7UUFDbEIsWUFBWSxFQUFFLE1BQU07UUFDcEIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type Hex } from 'viem';
|
|
3
|
+
import type { L1Clients } from '../types.js';
|
|
4
|
+
export declare class FeeJuiceContract {
|
|
5
|
+
readonly publicClient: L1Clients['publicClient'];
|
|
6
|
+
readonly walletClient: L1Clients['walletClient'] | undefined;
|
|
7
|
+
private readonly publicFeeJuice;
|
|
8
|
+
private readonly walletFeeJuice;
|
|
9
|
+
constructor(address: Hex, publicClient: L1Clients['publicClient'], walletClient: L1Clients['walletClient'] | undefined);
|
|
10
|
+
get address(): EthAddress;
|
|
11
|
+
private assertWalletFeeJuice;
|
|
12
|
+
mint(to: Hex, amount: bigint): Promise<void>;
|
|
13
|
+
approve(spender: Hex, amount: bigint): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=fee_juice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee_juice.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_juice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,gBAAgB;aAMT,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC;aACvC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS;IANrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuE;IACtG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmF;gBAGhH,OAAO,EAAE,GAAG,EACI,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,EACvC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS;IAMrE,IAAW,OAAO,eAEjB;IAED,OAAO,CAAC,oBAAoB;IAOf,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;IAM5B,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;CAKlD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { TestERC20Abi as FeeJuiceAbi } from '@aztec/l1-artifacts';
|
|
3
|
+
import { getContract } from 'viem';
|
|
4
|
+
export class FeeJuiceContract {
|
|
5
|
+
publicClient;
|
|
6
|
+
walletClient;
|
|
7
|
+
publicFeeJuice;
|
|
8
|
+
walletFeeJuice;
|
|
9
|
+
constructor(address, publicClient, walletClient){
|
|
10
|
+
this.publicClient = publicClient;
|
|
11
|
+
this.walletClient = walletClient;
|
|
12
|
+
this.publicFeeJuice = getContract({
|
|
13
|
+
address,
|
|
14
|
+
abi: FeeJuiceAbi,
|
|
15
|
+
client: publicClient
|
|
16
|
+
});
|
|
17
|
+
this.walletFeeJuice = walletClient ? getContract({
|
|
18
|
+
address,
|
|
19
|
+
abi: FeeJuiceAbi,
|
|
20
|
+
client: walletClient
|
|
21
|
+
}) : undefined;
|
|
22
|
+
}
|
|
23
|
+
get address() {
|
|
24
|
+
return EthAddress.fromString(this.publicFeeJuice.address);
|
|
25
|
+
}
|
|
26
|
+
assertWalletFeeJuice() {
|
|
27
|
+
if (!this.walletFeeJuice) {
|
|
28
|
+
throw new Error('Wallet client is required for this operation');
|
|
29
|
+
}
|
|
30
|
+
return this.walletFeeJuice;
|
|
31
|
+
}
|
|
32
|
+
async mint(to, amount) {
|
|
33
|
+
const walletFeeJuice = this.assertWalletFeeJuice();
|
|
34
|
+
const tx = await walletFeeJuice.write.mint([
|
|
35
|
+
to,
|
|
36
|
+
amount
|
|
37
|
+
]);
|
|
38
|
+
await this.publicClient.waitForTransactionReceipt({
|
|
39
|
+
hash: tx
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async approve(spender, amount) {
|
|
43
|
+
const walletFeeJuice = this.assertWalletFeeJuice();
|
|
44
|
+
const tx = await walletFeeJuice.write.approve([
|
|
45
|
+
spender,
|
|
46
|
+
amount
|
|
47
|
+
]);
|
|
48
|
+
await this.publicClient.waitForTransactionReceipt({
|
|
49
|
+
hash: tx
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type Hex } from 'viem';
|
|
3
|
+
import type { L1BlobInputs, L1GasConfig, L1TxRequest, L1TxUtils } from '../l1_tx_utils.js';
|
|
4
|
+
import type { L1Clients, ViemPublicClient, ViemWalletClient } from '../types.js';
|
|
5
5
|
export declare class ForwarderContract {
|
|
6
6
|
readonly client: L1Clients['publicClient'];
|
|
7
7
|
readonly rollupAddress: Hex;
|
|
8
8
|
private readonly forwarder;
|
|
9
9
|
constructor(client: L1Clients['publicClient'], address: Hex, rollupAddress: Hex);
|
|
10
|
-
static create(owner: Hex, walletClient:
|
|
10
|
+
static create(owner: Hex, walletClient: ViemWalletClient, publicClient: ViemPublicClient, logger: Logger, rollupAddress: Hex): Promise<ForwarderContract>;
|
|
11
11
|
getAddress(): `0x${string}`;
|
|
12
12
|
forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, logger: Logger): Promise<{
|
|
13
13
|
receipt: import("viem").TransactionReceipt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/contracts/forwarder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/contracts/forwarder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjF,qBAAa,iBAAiB;aAGA,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;aAAgC,aAAa,EAAE,GAAG;IAF/G,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+D;gBAE7D,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAkB,aAAa,EAAE,GAAG;WAIlG,MAAM,CACjB,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG;IAwBb,UAAU;IAIJ,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM;;;;;;;;;;;CAqEjB"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import { toHex } from '@aztec/foundation/bigint-buffer';
|
|
2
2
|
import { ForwarderAbi, ForwarderBytecode } from '@aztec/l1-artifacts';
|
|
3
|
-
import { encodeFunctionData, getContract
|
|
3
|
+
import { encodeFunctionData, getContract } from 'viem';
|
|
4
4
|
import { deployL1Contract } from '../deploy_l1_contracts.js';
|
|
5
5
|
import { RollupContract } from './rollup.js';
|
|
6
6
|
export class ForwarderContract {
|
|
7
|
-
|
|
7
|
+
client;
|
|
8
|
+
rollupAddress;
|
|
9
|
+
forwarder;
|
|
10
|
+
constructor(client, address, rollupAddress){
|
|
8
11
|
this.client = client;
|
|
9
12
|
this.rollupAddress = rollupAddress;
|
|
10
|
-
this.forwarder = getContract({
|
|
13
|
+
this.forwarder = getContract({
|
|
14
|
+
address,
|
|
15
|
+
abi: ForwarderAbi,
|
|
16
|
+
client
|
|
17
|
+
});
|
|
11
18
|
}
|
|
12
19
|
static async create(owner, walletClient, publicClient, logger, rollupAddress) {
|
|
13
20
|
logger.info('Deploying forwarder contract');
|
|
14
|
-
const { address, txHash } = await deployL1Contract(walletClient, publicClient, ForwarderAbi, ForwarderBytecode, [
|
|
21
|
+
const { address, txHash } = await deployL1Contract(walletClient, publicClient, ForwarderAbi, ForwarderBytecode, [
|
|
22
|
+
owner
|
|
23
|
+
], owner, undefined, logger);
|
|
15
24
|
if (txHash) {
|
|
16
|
-
await publicClient.waitForTransactionReceipt({
|
|
25
|
+
await publicClient.waitForTransactionReceipt({
|
|
26
|
+
hash: txHash
|
|
27
|
+
});
|
|
17
28
|
}
|
|
18
29
|
logger.info(`Forwarder contract deployed at ${address} with owner ${owner}`);
|
|
19
30
|
return new ForwarderContract(publicClient, address.toString(), rollupAddress);
|
|
@@ -22,60 +33,69 @@ export class ForwarderContract {
|
|
|
22
33
|
return this.forwarder.address;
|
|
23
34
|
}
|
|
24
35
|
async forward(requests, l1TxUtils, gasConfig, blobConfig, logger) {
|
|
25
|
-
requests = requests.filter(request
|
|
26
|
-
const toArgs = requests.map(request
|
|
27
|
-
const dataArgs = requests.map(request
|
|
36
|
+
requests = requests.filter((request)=>request.to !== null);
|
|
37
|
+
const toArgs = requests.map((request)=>request.to);
|
|
38
|
+
const dataArgs = requests.map((request)=>request.data);
|
|
28
39
|
const forwarderFunctionData = {
|
|
29
40
|
abi: ForwarderAbi,
|
|
30
41
|
functionName: 'forward',
|
|
31
|
-
args: [
|
|
42
|
+
args: [
|
|
43
|
+
toArgs,
|
|
44
|
+
dataArgs
|
|
45
|
+
]
|
|
32
46
|
};
|
|
33
47
|
const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
|
|
34
48
|
const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
|
|
35
49
|
to: this.forwarder.address,
|
|
36
|
-
data: encodedForwarderData
|
|
50
|
+
data: encodedForwarderData
|
|
37
51
|
}, gasConfig, blobConfig);
|
|
38
52
|
if (receipt.status === 'success') {
|
|
39
53
|
const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
|
|
40
|
-
return {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
return {
|
|
55
|
+
receipt,
|
|
56
|
+
gasPrice,
|
|
57
|
+
stats
|
|
58
|
+
};
|
|
59
|
+
} else {
|
|
60
|
+
logger.error('Forwarder transaction failed', undefined, {
|
|
61
|
+
receipt
|
|
62
|
+
});
|
|
44
63
|
const args = {
|
|
45
64
|
...forwarderFunctionData,
|
|
46
|
-
address: this.forwarder.address
|
|
65
|
+
address: this.forwarder.address
|
|
47
66
|
};
|
|
48
67
|
let errorMsg;
|
|
49
68
|
if (blobConfig) {
|
|
50
69
|
const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
|
|
51
70
|
if (maxFeePerBlobGas === undefined) {
|
|
52
71
|
errorMsg = 'maxFeePerBlobGas is required to get the error message';
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
72
|
+
} else {
|
|
55
73
|
logger.debug('Trying to get error from reverted tx with blob config');
|
|
56
74
|
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
|
|
57
75
|
blobs: blobConfig.blobs,
|
|
58
76
|
kzg: blobConfig.kzg,
|
|
59
|
-
maxFeePerBlobGas
|
|
77
|
+
maxFeePerBlobGas
|
|
60
78
|
}, [
|
|
61
79
|
{
|
|
62
80
|
address: this.rollupAddress,
|
|
63
81
|
stateDiff: [
|
|
64
82
|
{
|
|
65
83
|
slot: toHex(RollupContract.checkBlobStorageSlot, true),
|
|
66
|
-
value: toHex(0n, true)
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
}
|
|
84
|
+
value: toHex(0n, true)
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
70
88
|
]);
|
|
71
89
|
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
90
|
+
} else {
|
|
74
91
|
logger.debug('Trying to get error from reverted tx without blob config');
|
|
75
92
|
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
|
|
76
93
|
}
|
|
77
|
-
return {
|
|
94
|
+
return {
|
|
95
|
+
receipt,
|
|
96
|
+
gasPrice,
|
|
97
|
+
errorMsg
|
|
98
|
+
};
|
|
78
99
|
}
|
|
79
100
|
}
|
|
80
101
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9mb3J3YXJkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBU0wsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBNEIsTUFBaUMsRUFBRSxPQUFZLEVBQWtCLGFBQWtCO1FBQW5GLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQWdDLGtCQUFhLEdBQWIsYUFBYSxDQUFLO1FBQzdHLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEtBQVUsRUFDVixZQUF5RCxFQUN6RCxZQUFnRCxFQUNoRCxNQUFjLEVBQ2QsYUFBa0I7UUFFbEIsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FDaEQsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLENBQUMsS0FBSyxDQUFDLEVBQ1AsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLENBQ1AsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFlB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
|
|
@@ -1,14 +1,79 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import
|
|
3
|
-
import { type
|
|
2
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
3
|
+
import { type Hex } from 'viem';
|
|
4
|
+
import type { L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
5
|
+
import type { ViemPublicClient, ViemWalletClient } from '../types.js';
|
|
4
6
|
import { GovernanceProposerContract } from './governance_proposer.js';
|
|
5
7
|
export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
|
|
8
|
+
export declare enum ProposalState {
|
|
9
|
+
Pending = 0,
|
|
10
|
+
Active = 1,
|
|
11
|
+
Queued = 2,
|
|
12
|
+
Executable = 3,
|
|
13
|
+
Rejected = 4,
|
|
14
|
+
Executed = 5,
|
|
15
|
+
Dropped = 6,
|
|
16
|
+
Expired = 7
|
|
17
|
+
}
|
|
6
18
|
export declare class GovernanceContract {
|
|
7
|
-
readonly
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
readonly publicClient: ViemPublicClient;
|
|
20
|
+
readonly walletClient: ViemWalletClient | undefined;
|
|
21
|
+
private readonly publicGovernance;
|
|
22
|
+
private readonly walletGovernance;
|
|
23
|
+
constructor(address: Hex, publicClient: ViemPublicClient, walletClient: ViemWalletClient | undefined);
|
|
10
24
|
get address(): EthAddress;
|
|
11
25
|
getProposer(): Promise<GovernanceProposerContract>;
|
|
12
26
|
getGovernanceAddresses(): Promise<L1GovernanceContractAddresses>;
|
|
27
|
+
getProposal(proposalId: bigint): Promise<{
|
|
28
|
+
config: {
|
|
29
|
+
proposeConfig: {
|
|
30
|
+
lockDelay: bigint;
|
|
31
|
+
lockAmount: bigint;
|
|
32
|
+
};
|
|
33
|
+
votingDelay: bigint;
|
|
34
|
+
votingDuration: bigint;
|
|
35
|
+
executionDelay: bigint;
|
|
36
|
+
gracePeriod: bigint;
|
|
37
|
+
quorum: bigint;
|
|
38
|
+
voteDifferential: bigint;
|
|
39
|
+
minimumVotes: bigint;
|
|
40
|
+
};
|
|
41
|
+
state: number;
|
|
42
|
+
payload: `0x${string}`;
|
|
43
|
+
governanceProposer: `0x${string}`;
|
|
44
|
+
creation: bigint;
|
|
45
|
+
summedBallot: {
|
|
46
|
+
yea: bigint;
|
|
47
|
+
nea: bigint;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
getProposalState(proposalId: bigint): Promise<ProposalState>;
|
|
51
|
+
private assertWalletGovernance;
|
|
52
|
+
deposit(onBehalfOf: Hex, amount: bigint): Promise<void>;
|
|
53
|
+
proposeWithLock({ payloadAddress, withdrawAddress, }: {
|
|
54
|
+
payloadAddress: Hex;
|
|
55
|
+
withdrawAddress: Hex;
|
|
56
|
+
}): Promise<number>;
|
|
57
|
+
awaitProposalActive({ proposalId, logger }: {
|
|
58
|
+
proposalId: bigint;
|
|
59
|
+
logger: Logger;
|
|
60
|
+
}): Promise<void>;
|
|
61
|
+
awaitProposalExecutable({ proposalId, logger }: {
|
|
62
|
+
proposalId: bigint;
|
|
63
|
+
logger: Logger;
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
getPower(): Promise<bigint>;
|
|
66
|
+
vote({ proposalId, voteAmount, inFavor, retries, logger, }: {
|
|
67
|
+
proposalId: bigint;
|
|
68
|
+
voteAmount: bigint | undefined;
|
|
69
|
+
inFavor: boolean;
|
|
70
|
+
retries: number;
|
|
71
|
+
logger: Logger;
|
|
72
|
+
}): Promise<void>;
|
|
73
|
+
executeProposal({ proposalId, retries, logger, }: {
|
|
74
|
+
proposalId: bigint;
|
|
75
|
+
retries: number;
|
|
76
|
+
logger: Logger;
|
|
77
|
+
}): Promise<void>;
|
|
13
78
|
}
|
|
14
79
|
//# sourceMappingURL=governance.d.ts.map
|