@aztec/ethereum 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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.js +17 -18
- package/dest/client.js +5 -9
- package/dest/config.js +13 -14
- package/dest/constants.js +0 -1
- package/dest/contracts/empire_base.js +3 -2
- package/dest/contracts/forwarder.js +46 -26
- package/dest/contracts/governance.js +11 -6
- package/dest/contracts/governance_proposer.js +78 -67
- package/dest/contracts/index.js +0 -1
- package/dest/contracts/rollup.js +270 -243
- package/dest/contracts/slashing_proposer.js +18 -8
- package/dest/deploy_l1_contracts.js +201 -126
- package/dest/eth_cheat_codes.js +144 -127
- package/dest/index.js +0 -1
- package/dest/l1_contract_addresses.js +17 -19
- package/dest/l1_reader.js +6 -7
- package/dest/l1_tx_utils.js +227 -186
- package/dest/l1_tx_utils_with_blobs.js +25 -22
- package/dest/queries.js +6 -9
- package/dest/test/delayed_tx_utils.js +3 -3
- package/dest/test/eth_cheat_codes_with_state.js +10 -12
- package/dest/test/index.js +0 -1
- package/dest/test/start_anvil.js +17 -9
- package/dest/test/tx_delayer.js +77 -74
- package/dest/types.js +1 -2
- package/dest/utils.js +35 -36
- package/package.json +5 -4
- package/src/contracts/rollup.ts +1 -1
- package/src/l1_tx_utils_with_blobs.ts +1 -1
- package/dest/chain.d.ts +0 -25
- package/dest/chain.d.ts.map +0 -1
- package/dest/client.d.ts +0 -16
- package/dest/client.d.ts.map +0 -1
- package/dest/config.d.ts +0 -38
- package/dest/config.d.ts.map +0 -1
- package/dest/constants.d.ts +0 -4
- package/dest/constants.d.ts.map +0 -1
- package/dest/contracts/empire_base.d.ts +0 -13
- package/dest/contracts/empire_base.d.ts.map +0 -1
- package/dest/contracts/forwarder.d.ts +0 -24
- package/dest/contracts/forwarder.d.ts.map +0 -1
- package/dest/contracts/governance.d.ts +0 -14
- package/dest/contracts/governance.d.ts.map +0 -1
- package/dest/contracts/governance_proposer.d.ts +0 -28
- package/dest/contracts/governance_proposer.d.ts.map +0 -1
- package/dest/contracts/index.d.ts +0 -7
- package/dest/contracts/index.d.ts.map +0 -1
- package/dest/contracts/rollup.d.ts +0 -115
- package/dest/contracts/rollup.d.ts.map +0 -1
- package/dest/contracts/slashing_proposer.d.ts +0 -21
- package/dest/contracts/slashing_proposer.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.d.ts +0 -21118
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/eth_cheat_codes.d.ts +0 -146
- package/dest/eth_cheat_codes.d.ts.map +0 -1
- package/dest/index.d.ts +0 -15
- package/dest/index.d.ts.map +0 -1
- package/dest/l1_contract_addresses.d.ts +0 -55
- package/dest/l1_contract_addresses.d.ts.map +0 -1
- package/dest/l1_reader.d.ts +0 -16
- package/dest/l1_reader.d.ts.map +0 -1
- package/dest/l1_tx_utils.d.ts +0 -194
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/queries.d.ts +0 -15
- package/dest/queries.d.ts.map +0 -1
- package/dest/test/delayed_tx_utils.d.ts +0 -8
- package/dest/test/delayed_tx_utils.d.ts.map +0 -1
- package/dest/test/eth_cheat_codes_with_state.d.ts +0 -18
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +0 -1
- package/dest/test/index.d.ts +0 -5
- package/dest/test/index.d.ts.map +0 -1
- package/dest/test/start_anvil.d.ts +0 -9
- package/dest/test/start_anvil.d.ts.map +0 -1
- package/dest/test/tx_delayer.d.ts +0 -24
- package/dest/test/tx_delayer.d.ts.map +0 -1
- package/dest/types.d.ts +0 -12
- package/dest/types.d.ts.map +0 -1
- package/dest/utils.d.ts +0 -24
- package/dest/utils.d.ts.map +0 -1
package/dest/chain.js
CHANGED
|
@@ -4,13 +4,11 @@ import { AZTEC_TEST_CHAIN_ID } from './constants.js';
|
|
|
4
4
|
* Helper function to create an instance of Aztec Chain from an rpc url and api key.
|
|
5
5
|
* @param rpcUrl - The rpc url of the chain or a chain identifier (e.g. 'testnet')
|
|
6
6
|
* @param apiKey - An optional API key for the chain client.
|
|
7
|
-
*/
|
|
8
|
-
export function createEthereumChain(rpcUrl, _chainId) {
|
|
7
|
+
*/ export function createEthereumChain(rpcUrl, _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,38 @@ export function createEthereumChain(rpcUrl, _chainId) {
|
|
|
20
18
|
name: 'Ethereum',
|
|
21
19
|
rpcUrls: {
|
|
22
20
|
default: {
|
|
23
|
-
http: [
|
|
24
|
-
|
|
21
|
+
http: [
|
|
22
|
+
rpcUrl
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
25
|
},
|
|
26
26
|
nativeCurrency: {
|
|
27
27
|
decimals: 18,
|
|
28
28
|
name: 'Ether',
|
|
29
|
-
symbol: 'ETH'
|
|
30
|
-
}
|
|
29
|
+
symbol: 'ETH'
|
|
30
|
+
}
|
|
31
31
|
},
|
|
32
|
-
rpcUrl
|
|
32
|
+
rpcUrl
|
|
33
33
|
};
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
34
|
+
} else {
|
|
36
35
|
return {
|
|
37
36
|
chainInfo: foundry,
|
|
38
|
-
rpcUrl
|
|
37
|
+
rpcUrl
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
43
42
|
* Helper function to determine if a chain id is an instance of Anvil
|
|
44
|
-
*/
|
|
45
|
-
export function isAnvilTestChain(_chainId) {
|
|
43
|
+
*/ export function isAnvilTestChain(_chainId) {
|
|
46
44
|
let chainId;
|
|
47
45
|
if (typeof _chainId === 'string') {
|
|
48
46
|
chainId = +_chainId;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
47
|
+
} else {
|
|
51
48
|
chainId = _chainId;
|
|
52
49
|
}
|
|
53
|
-
const testChains = [
|
|
50
|
+
const testChains = [
|
|
51
|
+
foundry.id,
|
|
52
|
+
AZTEC_TEST_CHAIN_ID
|
|
53
|
+
];
|
|
54
54
|
return testChains.includes(chainId);
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
|
package/dest/client.js
CHANGED
|
@@ -2,28 +2,25 @@ import { retryUntil } from '@aztec/foundation/retry';
|
|
|
2
2
|
import { createPublicClient, 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
|
-
export function getPublicClient(config) {
|
|
5
|
+
/** Returns a viem public client given the L1 config. */ export function getPublicClient(config) {
|
|
7
6
|
const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
|
|
8
7
|
return createPublicClient({
|
|
9
8
|
chain: chain.chainInfo,
|
|
10
9
|
transport: http(chain.rpcUrl),
|
|
11
|
-
pollingInterval: config.viemPollingIntervalMS
|
|
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
|
-
catch (err) {
|
|
23
|
+
} catch (err) {
|
|
27
24
|
logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrl}. Retrying...`);
|
|
28
25
|
}
|
|
29
26
|
return chainId;
|
|
@@ -32,4 +29,3 @@ async function waitForRpc(client, config, logger) {
|
|
|
32
29
|
throw new Error(`Ethereum node at ${config.l1RpcUrl} 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,4 +1,4 @@
|
|
|
1
|
-
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper
|
|
1
|
+
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
export const DefaultL1ContractsConfig = {
|
|
3
3
|
ethereumSlotDuration: 12,
|
|
4
4
|
aztecSlotDuration: 24,
|
|
@@ -9,61 +9,60 @@ export const DefaultL1ContractsConfig = {
|
|
|
9
9
|
slashingQuorum: 6,
|
|
10
10
|
slashingRoundSize: 10,
|
|
11
11
|
governanceProposerQuorum: 6,
|
|
12
|
-
governanceProposerRoundSize: 10
|
|
12
|
+
governanceProposerRoundSize: 10
|
|
13
13
|
};
|
|
14
14
|
export const l1ContractsConfigMappings = {
|
|
15
15
|
ethereumSlotDuration: {
|
|
16
16
|
env: 'ETHEREUM_SLOT_DURATION',
|
|
17
17
|
description: 'How many seconds an L1 slot lasts.',
|
|
18
|
-
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration)
|
|
18
|
+
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration)
|
|
19
19
|
},
|
|
20
20
|
aztecSlotDuration: {
|
|
21
21
|
env: 'AZTEC_SLOT_DURATION',
|
|
22
22
|
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
23
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration)
|
|
23
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration)
|
|
24
24
|
},
|
|
25
25
|
aztecEpochDuration: {
|
|
26
26
|
env: 'AZTEC_EPOCH_DURATION',
|
|
27
27
|
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
28
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration)
|
|
28
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration)
|
|
29
29
|
},
|
|
30
30
|
aztecTargetCommitteeSize: {
|
|
31
31
|
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
32
32
|
description: 'The target validator committee size.',
|
|
33
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize)
|
|
33
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize)
|
|
34
34
|
},
|
|
35
35
|
aztecEpochProofClaimWindowInL2Slots: {
|
|
36
36
|
env: 'AZTEC_EPOCH_PROOF_CLAIM_WINDOW_IN_L2_SLOTS',
|
|
37
37
|
description: 'The number of L2 slots that we can wait for a proof of an epoch to be produced.',
|
|
38
|
-
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochProofClaimWindowInL2Slots)
|
|
38
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochProofClaimWindowInL2Slots)
|
|
39
39
|
},
|
|
40
40
|
minimumStake: {
|
|
41
41
|
env: 'AZTEC_MINIMUM_STAKE',
|
|
42
42
|
description: 'The minimum stake for a validator.',
|
|
43
|
-
...bigintConfigHelper(DefaultL1ContractsConfig.minimumStake)
|
|
43
|
+
...bigintConfigHelper(DefaultL1ContractsConfig.minimumStake)
|
|
44
44
|
},
|
|
45
45
|
slashingQuorum: {
|
|
46
46
|
env: 'AZTEC_SLASHING_QUORUM',
|
|
47
47
|
description: 'The slashing quorum',
|
|
48
|
-
...numberConfigHelper(DefaultL1ContractsConfig.slashingQuorum)
|
|
48
|
+
...numberConfigHelper(DefaultL1ContractsConfig.slashingQuorum)
|
|
49
49
|
},
|
|
50
50
|
slashingRoundSize: {
|
|
51
51
|
env: 'AZTEC_SLASHING_ROUND_SIZE',
|
|
52
52
|
description: 'The slashing round size',
|
|
53
|
-
...numberConfigHelper(DefaultL1ContractsConfig.slashingRoundSize)
|
|
53
|
+
...numberConfigHelper(DefaultL1ContractsConfig.slashingRoundSize)
|
|
54
54
|
},
|
|
55
55
|
governanceProposerQuorum: {
|
|
56
56
|
env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
|
|
57
57
|
description: 'The governance proposing quorum',
|
|
58
|
-
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerQuorum)
|
|
58
|
+
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerQuorum)
|
|
59
59
|
},
|
|
60
60
|
governanceProposerRoundSize: {
|
|
61
61
|
env: 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE',
|
|
62
62
|
description: 'The governance proposing round size',
|
|
63
|
-
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerRoundSize)
|
|
64
|
-
}
|
|
63
|
+
...numberConfigHelper(DefaultL1ContractsConfig.governanceProposerRoundSize)
|
|
64
|
+
}
|
|
65
65
|
};
|
|
66
66
|
export function getL1ContractsConfigEnvVars() {
|
|
67
67
|
return getConfigFromMappings(l1ContractsConfigMappings);
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSwwQkFBMEIsQ0FBQztBQXlCbEMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsb0JBQW9CLEVBQUUsRUFBRTtJQUN4QixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsd0JBQXdCLEVBQUUsRUFBRTtJQUM1QixtQ0FBbUMsRUFBRSxFQUFFO0lBQ3ZDLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVCLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGlCQUFpQixFQUFFLEVBQUU7SUFDckIsd0JBQXdCLEVBQUUsQ0FBQztJQUMzQiwyQkFBMkIsRUFBRSxFQUFFO0NBQ0osQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBMEM7SUFDOUUsb0JBQW9CLEVBQUU7UUFDcEIsR0FBRyxFQUFFLHdCQUF3QjtRQUM3QixXQUFXLEVBQUUsb0NBQW9DO1FBQ2pELEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsb0JBQW9CLENBQUM7S0FDckU7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixHQUFHLEVBQUUscUJBQXFCO1FBQzFCLFdBQVcsRUFBRSxrRkFBa0Y7UUFDL0YsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQztLQUNsRTtJQUNELGtCQUFrQixFQUFFO1FBQ2xCLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsV0FBVyxFQUFFLHNFQUFzRTtRQUNuRixHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDO0tBQ25FO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLDZCQUE2QjtRQUNsQyxXQUFXLEVBQUUsc0NBQXNDO1FBQ25ELEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQUM7S0FDekU7SUFDRCxtQ0FBbUMsRUFBRTtRQUNuQyxHQUFHLEVBQUUsNENBQTRDO1FBQ2pELFdBQVcsRUFBRSxpRkFBaUY7UUFDOUYsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxtQ0FBbUMsQ0FBQztLQUNwRjtJQUNELFlBQVksRUFBRTtRQUNaLEdBQUcsRUFBRSxxQkFBcUI7UUFDMUIsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQztLQUM3RDtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSx1QkFBdUI7UUFDNUIsV0FBVyxFQUFFLHFCQUFxQjtRQUNsQyxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQztLQUMvRDtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDO0tBQ2xFO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLGtDQUFrQztRQUN2QyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQUM7S0FDekU7SUFDRCwyQkFBMkIsRUFBRTtRQUMzQixHQUFHLEVBQUUsc0NBQXNDO1FBQzNDLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQywyQkFBMkIsQ0FBQztLQUM1RTtDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsMkJBQTJCO0lBQ3pDLE9BQU8scUJBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUMxRCxDQUFDIn0=
|
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
|
|
@@ -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==
|
|
@@ -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,11 +1,17 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
2
|
import { GovernanceAbi } from '@aztec/l1-artifacts';
|
|
3
|
-
import { getContract
|
|
3
|
+
import { getContract } from 'viem';
|
|
4
4
|
import { GovernanceProposerContract } from './governance_proposer.js';
|
|
5
5
|
export class GovernanceContract {
|
|
6
|
-
|
|
6
|
+
client;
|
|
7
|
+
governance;
|
|
8
|
+
constructor(client, address){
|
|
7
9
|
this.client = client;
|
|
8
|
-
this.governance = getContract({
|
|
10
|
+
this.governance = getContract({
|
|
11
|
+
address,
|
|
12
|
+
abi: GovernanceAbi,
|
|
13
|
+
client
|
|
14
|
+
});
|
|
9
15
|
}
|
|
10
16
|
get address() {
|
|
11
17
|
return EthAddress.fromString(this.governance.address);
|
|
@@ -18,14 +24,13 @@ export class GovernanceContract {
|
|
|
18
24
|
const governanceProposer = await this.getProposer();
|
|
19
25
|
const [rollupAddress, registryAddress] = await Promise.all([
|
|
20
26
|
governanceProposer.getRollupAddress(),
|
|
21
|
-
governanceProposer.getRegistryAddress()
|
|
27
|
+
governanceProposer.getRegistryAddress()
|
|
22
28
|
]);
|
|
23
29
|
return {
|
|
24
30
|
governanceAddress: this.address,
|
|
25
31
|
rollupAddress,
|
|
26
32
|
registryAddress,
|
|
27
|
-
governanceProposerAddress: governanceProposer.address
|
|
33
|
+
governanceProposerAddress: governanceProposer.address
|
|
28
34
|
};
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU90RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQTRCLE1BQTBDLEVBQUUsT0FBWTtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN6RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtTQUN4QyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDL0IsYUFBYTtZQUNiLGVBQWU7WUFDZix5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1NBQ3RELENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,71 +1,82 @@
|
|
|
1
|
-
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
2
7
|
import { memoize } from '@aztec/foundation/decorators';
|
|
3
8
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
9
|
import { GovernanceProposerAbi } from '@aztec/l1-artifacts';
|
|
5
|
-
import { encodeFunctionData, getContract
|
|
10
|
+
import { encodeFunctionData, getContract } from 'viem';
|
|
6
11
|
import { encodeVote } from './empire_base.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
12
|
+
export class GovernanceProposerContract {
|
|
13
|
+
client;
|
|
14
|
+
proposer;
|
|
15
|
+
constructor(client, address){
|
|
16
|
+
this.client = client;
|
|
17
|
+
this.proposer = getContract({
|
|
18
|
+
address,
|
|
19
|
+
abi: GovernanceProposerAbi,
|
|
20
|
+
client
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get address() {
|
|
24
|
+
return EthAddress.fromString(this.proposer.address);
|
|
25
|
+
}
|
|
26
|
+
async getRollupAddress() {
|
|
27
|
+
return EthAddress.fromString(await this.proposer.read.getInstance());
|
|
28
|
+
}
|
|
29
|
+
async getRegistryAddress() {
|
|
30
|
+
return EthAddress.fromString(await this.proposer.read.REGISTRY());
|
|
31
|
+
}
|
|
32
|
+
getQuorumSize() {
|
|
33
|
+
return this.proposer.read.N();
|
|
34
|
+
}
|
|
35
|
+
getRoundSize() {
|
|
36
|
+
return this.proposer.read.M();
|
|
37
|
+
}
|
|
38
|
+
computeRound(slot) {
|
|
39
|
+
return this.proposer.read.computeRound([
|
|
40
|
+
slot
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
async getRoundInfo(rollupAddress, round) {
|
|
44
|
+
const roundInfo = await this.proposer.read.rounds([
|
|
45
|
+
rollupAddress,
|
|
46
|
+
round
|
|
47
|
+
]);
|
|
48
|
+
return {
|
|
49
|
+
lastVote: roundInfo[0],
|
|
50
|
+
leader: roundInfo[1],
|
|
51
|
+
executed: roundInfo[2]
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
getProposalVotes(rollupAddress, round, proposal) {
|
|
55
|
+
return this.proposer.read.yeaCount([
|
|
56
|
+
rollupAddress,
|
|
57
|
+
round,
|
|
58
|
+
proposal
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
createVoteRequest(payload) {
|
|
62
|
+
return {
|
|
63
|
+
to: this.address.toString(),
|
|
64
|
+
data: encodeVote(payload)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
executeProposal(round, l1TxUtils) {
|
|
68
|
+
return l1TxUtils.sendAndMonitorTransaction({
|
|
69
|
+
to: this.address.toString(),
|
|
70
|
+
data: encodeFunctionData({
|
|
71
|
+
abi: this.proposer.abi,
|
|
72
|
+
functionName: 'executeProposal',
|
|
73
|
+
args: [
|
|
74
|
+
round
|
|
75
|
+
]
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
_ts_decorate([
|
|
81
|
+
memoize
|
|
82
|
+
], GovernanceProposerContract.prototype, "getRegistryAddress", null);
|
package/dest/contracts/index.js
CHANGED
|
@@ -4,4 +4,3 @@ export * from './governance.js';
|
|
|
4
4
|
export * from './governance_proposer.js';
|
|
5
5
|
export * from './rollup.js';
|
|
6
6
|
export * from './slashing_proposer.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQyJ9
|