@aztec/ethereum 0.62.0 → 0.63.1
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/config.d.ts +17 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/config.js +39 -0
- package/dest/deploy_l1_contracts.d.ts +16 -27
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +45 -39
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/l1_contract_addresses.d.ts +39 -5
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +32 -18
- package/dest/l1_reader.d.ts +5 -15
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +1 -1
- package/package.json +5 -4
- package/src/config.ts +54 -0
- package/src/deploy_l1_contracts.ts +67 -72
- package/src/index.ts +1 -0
- package/src/l1_contract_addresses.ts +35 -21
- package/src/l1_reader.ts +5 -16
package/dest/config.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
|
+
export type L1ContractsConfig = {
|
|
3
|
+
/** How many seconds an L1 slot lasts. */
|
|
4
|
+
ethereumSlotDuration: number;
|
|
5
|
+
/** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */
|
|
6
|
+
aztecSlotDuration: number;
|
|
7
|
+
/** How many L2 slots an epoch lasts. */
|
|
8
|
+
aztecEpochDuration: number;
|
|
9
|
+
/** The target validator committee size. */
|
|
10
|
+
aztecTargetCommitteeSize: number;
|
|
11
|
+
/** The number of L2 slots that we can wait for a proof of an epoch to be produced. */
|
|
12
|
+
aztecEpochProofClaimWindowInL2Slots: number;
|
|
13
|
+
};
|
|
14
|
+
export declare const DefaultL1ContractsConfig: L1ContractsConfig;
|
|
15
|
+
export declare const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig>;
|
|
16
|
+
export declare function getL1ContractsConfigEnvVars(): L1ContractsConfig;
|
|
17
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAE9G,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,sFAAsF;IACtF,mCAAmC,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAMtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CA0B3E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D"}
|
package/dest/config.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
+
export const DefaultL1ContractsConfig = {
|
|
3
|
+
ethereumSlotDuration: 12,
|
|
4
|
+
aztecSlotDuration: 24,
|
|
5
|
+
aztecEpochDuration: 16,
|
|
6
|
+
aztecTargetCommitteeSize: 48,
|
|
7
|
+
aztecEpochProofClaimWindowInL2Slots: 13,
|
|
8
|
+
};
|
|
9
|
+
export const l1ContractsConfigMappings = {
|
|
10
|
+
ethereumSlotDuration: {
|
|
11
|
+
env: 'ETHEREUM_SLOT_DURATION',
|
|
12
|
+
description: 'How many seconds an L1 slot lasts.',
|
|
13
|
+
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration),
|
|
14
|
+
},
|
|
15
|
+
aztecSlotDuration: {
|
|
16
|
+
env: 'AZTEC_SLOT_DURATION',
|
|
17
|
+
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
18
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration),
|
|
19
|
+
},
|
|
20
|
+
aztecEpochDuration: {
|
|
21
|
+
env: 'AZTEC_EPOCH_DURATION',
|
|
22
|
+
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
23
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration),
|
|
24
|
+
},
|
|
25
|
+
aztecTargetCommitteeSize: {
|
|
26
|
+
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
27
|
+
description: 'The target validator committee size.',
|
|
28
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize),
|
|
29
|
+
},
|
|
30
|
+
aztecEpochProofClaimWindowInL2Slots: {
|
|
31
|
+
env: 'AZTEC_EPOCH_PROOF_CLAIM_WINDOW_IN_L2_SLOTS',
|
|
32
|
+
description: 'The number of L2 slots that we can wait for a proof of an epoch to be produced.',
|
|
33
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochProofClaimWindowInL2Slots),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export function getL1ContractsConfigEnvVars() {
|
|
37
|
+
return getConfigFromMappings(l1ContractsConfigMappings);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFlOUcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXNCO0lBQ3pELG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsbUNBQW1DLEVBQUUsRUFBRTtDQUN4QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQTBDO0lBQzlFLG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSx3QkFBd0I7UUFDN0IsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDO0tBQ3JFO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsR0FBRyxFQUFFLHFCQUFxQjtRQUMxQixXQUFXLEVBQUUsa0ZBQWtGO1FBQy9GLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUM7S0FDbEU7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxzRUFBc0U7UUFDbkYsR0FBRyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQztLQUNuRTtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSw2QkFBNkI7UUFDbEMsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUFDO0tBQ3pFO0lBQ0QsbUNBQW1DLEVBQUU7UUFDbkMsR0FBRyxFQUFFLDRDQUE0QztRQUNqRCxXQUFXLEVBQUUsaUZBQWlGO1FBQzlGLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsbUNBQW1DLENBQUM7S0FDcEY7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLDJCQUEyQjtJQUN6QyxPQUFPLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDMUQsQ0FBQyJ9
|
|
@@ -5,6 +5,7 @@ import { type DebugLogger } from '@aztec/foundation/log';
|
|
|
5
5
|
import type { Abi, Narrow } from 'abitype';
|
|
6
6
|
import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient, type WalletClient } from 'viem';
|
|
7
7
|
import { type HDAccount, type PrivateKeyAccount } from 'viem/accounts';
|
|
8
|
+
import { type L1ContractsConfig } from './config.js';
|
|
8
9
|
import { type L1ContractAddresses } from './l1_contract_addresses.js';
|
|
9
10
|
/**
|
|
10
11
|
* Return type of the deployL1Contract function.
|
|
@@ -81,47 +82,35 @@ export interface L1ContractArtifactsForDeployment {
|
|
|
81
82
|
*/
|
|
82
83
|
feeJuicePortal: ContractArtifacts;
|
|
83
84
|
/**
|
|
84
|
-
*
|
|
85
|
+
* CoinIssuer contract artifacts.
|
|
85
86
|
*/
|
|
86
|
-
|
|
87
|
+
coinIssuer: ContractArtifacts;
|
|
87
88
|
/**
|
|
88
|
-
*
|
|
89
|
+
* RewardDistributor contract artifacts.
|
|
89
90
|
*/
|
|
90
|
-
|
|
91
|
+
rewardDistributor: ContractArtifacts;
|
|
91
92
|
/**
|
|
92
|
-
*
|
|
93
|
+
* GovernanceProposer contract artifacts.
|
|
93
94
|
*/
|
|
94
|
-
|
|
95
|
+
governanceProposer: ContractArtifacts;
|
|
95
96
|
/**
|
|
96
|
-
*
|
|
97
|
+
* Governance contract artifacts.
|
|
97
98
|
*/
|
|
98
|
-
|
|
99
|
+
governance: ContractArtifacts;
|
|
99
100
|
}
|
|
100
101
|
export declare const l1Artifacts: L1ContractArtifactsForDeployment;
|
|
101
|
-
export interface DeployL1ContractsArgs {
|
|
102
|
-
/**
|
|
103
|
-
* The address of the L2 Fee Juice contract.
|
|
104
|
-
*/
|
|
102
|
+
export interface DeployL1ContractsArgs extends L1ContractsConfig {
|
|
103
|
+
/** The address of the L2 Fee Juice contract. */
|
|
105
104
|
l2FeeJuiceAddress: AztecAddress;
|
|
106
|
-
/**
|
|
107
|
-
* The vk tree root.
|
|
108
|
-
*/
|
|
105
|
+
/** The vk tree root. */
|
|
109
106
|
vkTreeRoot: Fr;
|
|
110
|
-
/**
|
|
111
|
-
* The protocol contract tree root.
|
|
112
|
-
*/
|
|
107
|
+
/** The protocol contract tree root. */
|
|
113
108
|
protocolContractTreeRoot: Fr;
|
|
114
|
-
/**
|
|
115
|
-
* The block number to assume proven through.
|
|
116
|
-
*/
|
|
109
|
+
/** The block number to assume proven through. */
|
|
117
110
|
assumeProvenThrough?: number;
|
|
118
|
-
/**
|
|
119
|
-
* The salt for CREATE2 deployment.
|
|
120
|
-
*/
|
|
111
|
+
/** The salt for CREATE2 deployment. */
|
|
121
112
|
salt: number | undefined;
|
|
122
|
-
/**
|
|
123
|
-
* The initial validators for the rollup contract.
|
|
124
|
-
*/
|
|
113
|
+
/** The initial validators for the rollup contract. */
|
|
125
114
|
initialValidators?: EthAddress[];
|
|
126
115
|
}
|
|
127
116
|
export type L1Clients = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_l1_contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA2BzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAWlB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAA0C,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_l1_contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import {
|
|
2
|
+
import { CoinIssuerAbi, CoinIssuerBytecode, FeeJuicePortalAbi, FeeJuicePortalBytecode, GovernanceAbi, GovernanceBytecode, GovernanceProposerAbi, GovernanceProposerBytecode, InboxAbi, InboxBytecode, OutboxAbi, OutboxBytecode, RegistryAbi, RegistryBytecode, RewardDistributorAbi, RewardDistributorBytecode, RollupAbi, RollupBytecode, RollupLinkReferences, TestERC20Abi, TestERC20Bytecode, TxsDecoderAbi, TxsDecoderBytecode, } from '@aztec/l1-artifacts';
|
|
3
3
|
import { concatHex, createPublicClient, createWalletClient, encodeDeployData, getAddress, getContract, getContractAddress, http, numberToHex, padHex, } from 'viem';
|
|
4
4
|
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
5
5
|
import { foundry } from 'viem/chains';
|
|
@@ -38,21 +38,21 @@ export const l1Artifacts = {
|
|
|
38
38
|
contractAbi: FeeJuicePortalAbi,
|
|
39
39
|
contractBytecode: FeeJuicePortalBytecode,
|
|
40
40
|
},
|
|
41
|
-
|
|
42
|
-
contractAbi:
|
|
43
|
-
contractBytecode:
|
|
41
|
+
rewardDistributor: {
|
|
42
|
+
contractAbi: RewardDistributorAbi,
|
|
43
|
+
contractBytecode: RewardDistributorBytecode,
|
|
44
44
|
},
|
|
45
|
-
|
|
46
|
-
contractAbi:
|
|
47
|
-
contractBytecode:
|
|
45
|
+
coinIssuer: {
|
|
46
|
+
contractAbi: CoinIssuerAbi,
|
|
47
|
+
contractBytecode: CoinIssuerBytecode,
|
|
48
48
|
},
|
|
49
|
-
|
|
50
|
-
contractAbi:
|
|
51
|
-
contractBytecode:
|
|
49
|
+
governanceProposer: {
|
|
50
|
+
contractAbi: GovernanceProposerAbi,
|
|
51
|
+
contractBytecode: GovernanceProposerBytecode,
|
|
52
52
|
},
|
|
53
|
-
|
|
54
|
-
contractAbi:
|
|
55
|
-
contractBytecode:
|
|
53
|
+
governance: {
|
|
54
|
+
contractAbi: GovernanceAbi,
|
|
55
|
+
contractBytecode: GovernanceBytecode,
|
|
56
56
|
},
|
|
57
57
|
};
|
|
58
58
|
/**
|
|
@@ -102,12 +102,11 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
102
102
|
return await (await fetch(rpcUrl, content)).json();
|
|
103
103
|
};
|
|
104
104
|
if (isAnvilTestChain(chain.id)) {
|
|
105
|
-
const
|
|
106
|
-
const res = await rpcCall('anvil_setBlockTimestampInterval', [interval]);
|
|
105
|
+
const res = await rpcCall('anvil_setBlockTimestampInterval', [args.ethereumSlotDuration]);
|
|
107
106
|
if (res.error) {
|
|
108
107
|
throw new Error(`Error setting block interval: ${res.error.message}`);
|
|
109
108
|
}
|
|
110
|
-
logger.info(`Set block interval to ${
|
|
109
|
+
logger.info(`Set block interval to ${args.ethereumSlotDuration}`);
|
|
111
110
|
}
|
|
112
111
|
logger.info(`Deploying contracts from ${account.address.toString()}...`);
|
|
113
112
|
const walletClient = createWalletClient({ account, chain, transport: http(rpcUrl) });
|
|
@@ -122,29 +121,29 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
122
121
|
// @note These numbers are just chosen to make testing simple.
|
|
123
122
|
const quorumSize = 6n;
|
|
124
123
|
const roundSize = 10n;
|
|
125
|
-
const
|
|
124
|
+
const governanceProposerAddress = await govDeployer.deploy(l1Artifacts.governanceProposer, [
|
|
126
125
|
registryAddress.toString(),
|
|
127
126
|
quorumSize,
|
|
128
127
|
roundSize,
|
|
129
128
|
]);
|
|
130
|
-
logger.info(`Deployed
|
|
131
|
-
const
|
|
129
|
+
logger.info(`Deployed GovernanceProposer at ${governanceProposerAddress}`);
|
|
130
|
+
const governanceAddress = await govDeployer.deploy(l1Artifacts.governance, [
|
|
132
131
|
feeJuiceAddress.toString(),
|
|
133
|
-
|
|
132
|
+
governanceProposerAddress.toString(),
|
|
134
133
|
]);
|
|
135
|
-
logger.info(`Deployed
|
|
136
|
-
const
|
|
134
|
+
logger.info(`Deployed Governance at ${governanceAddress}`);
|
|
135
|
+
const coinIssuerAddress = await govDeployer.deploy(l1Artifacts.coinIssuer, [
|
|
137
136
|
feeJuiceAddress.toString(),
|
|
138
137
|
1n * 10n ** 18n, // @todo #8084
|
|
139
|
-
|
|
138
|
+
governanceAddress.toString(),
|
|
140
139
|
]);
|
|
141
|
-
logger.info(`Deployed
|
|
142
|
-
const
|
|
140
|
+
logger.info(`Deployed CoinIssuer at ${coinIssuerAddress}`);
|
|
141
|
+
const rewardDistributorAddress = await govDeployer.deploy(l1Artifacts.rewardDistributor, [
|
|
143
142
|
feeJuiceAddress.toString(),
|
|
144
143
|
registryAddress.toString(),
|
|
145
|
-
|
|
144
|
+
governanceAddress.toString(),
|
|
146
145
|
]);
|
|
147
|
-
logger.info(`Deployed
|
|
146
|
+
logger.info(`Deployed RewardDistributor at ${rewardDistributorAddress}`);
|
|
148
147
|
await govDeployer.waitForDeployments();
|
|
149
148
|
logger.info(`All governance contracts deployed`);
|
|
150
149
|
const deployer = new L1Deployer(walletClient, publicClient, args.salt, logger);
|
|
@@ -154,15 +153,22 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
154
153
|
args.l2FeeJuiceAddress.toString(),
|
|
155
154
|
]);
|
|
156
155
|
logger.info(`Deployed Fee Juice Portal at ${feeJuicePortalAddress}`);
|
|
156
|
+
const rollupArgs = {
|
|
157
|
+
aztecSlotDuration: args.aztecSlotDuration,
|
|
158
|
+
aztecEpochDuration: args.aztecEpochDuration,
|
|
159
|
+
targetCommitteeSize: args.aztecTargetCommitteeSize,
|
|
160
|
+
aztecEpochProofClaimWindowInL2Slots: args.aztecEpochProofClaimWindowInL2Slots,
|
|
161
|
+
};
|
|
157
162
|
const rollupAddress = await deployer.deploy(l1Artifacts.rollup, [
|
|
158
163
|
feeJuicePortalAddress.toString(),
|
|
159
|
-
|
|
164
|
+
rewardDistributorAddress.toString(),
|
|
160
165
|
args.vkTreeRoot.toString(),
|
|
161
166
|
args.protocolContractTreeRoot.toString(),
|
|
162
167
|
account.address.toString(),
|
|
163
168
|
args.initialValidators?.map(v => v.toString()) ?? [],
|
|
169
|
+
rollupArgs,
|
|
164
170
|
]);
|
|
165
|
-
logger.info(`Deployed Rollup at ${rollupAddress}
|
|
171
|
+
logger.info(`Deployed Rollup at ${rollupAddress}`, rollupArgs);
|
|
166
172
|
await deployer.waitForDeployments();
|
|
167
173
|
logger.info(`All core contracts deployed`);
|
|
168
174
|
const feeJuicePortal = getContract({
|
|
@@ -186,7 +192,7 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
186
192
|
// because there is circular dependency hell. This is a temporary solution. #3342
|
|
187
193
|
// @todo #8084
|
|
188
194
|
// fund the portal contract with Fee Juice
|
|
189
|
-
const FEE_JUICE_INITIAL_MINT =
|
|
195
|
+
const FEE_JUICE_INITIAL_MINT = 200000000000000;
|
|
190
196
|
const mintTxHash = await feeJuice.write.mint([feeJuicePortalAddress.toString(), FEE_JUICE_INITIAL_MINT], {});
|
|
191
197
|
// @note This is used to ensure we fully wait for the transaction when running against a real chain
|
|
192
198
|
// otherwise we execute subsequent transactions too soon
|
|
@@ -246,12 +252,12 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
246
252
|
else {
|
|
247
253
|
logger.verbose(`Registry ${registryAddress} has already registered rollup ${rollupAddress}`);
|
|
248
254
|
}
|
|
249
|
-
// If the owner is not the
|
|
250
|
-
if ((await registryContract.read.owner([])) !== getAddress(
|
|
251
|
-
const transferOwnershipTxHash = await registryContract.write.transferOwnership([getAddress(
|
|
255
|
+
// If the owner is not the Governance contract, transfer ownership to the Governance contract
|
|
256
|
+
if ((await registryContract.read.owner([])) !== getAddress(governanceAddress.toString())) {
|
|
257
|
+
const transferOwnershipTxHash = await registryContract.write.transferOwnership([getAddress(governanceAddress.toString())], {
|
|
252
258
|
account,
|
|
253
259
|
});
|
|
254
|
-
logger.verbose(`Transferring the ownership of the registry contract at ${registryAddress} to the
|
|
260
|
+
logger.verbose(`Transferring the ownership of the registry contract at ${registryAddress} to the Governance ${governanceAddress} in tx ${transferOwnershipTxHash}`);
|
|
255
261
|
txHashes.push(transferOwnershipTxHash);
|
|
256
262
|
}
|
|
257
263
|
// Wait for all actions to be mined
|
|
@@ -264,10 +270,10 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) =>
|
|
|
264
270
|
outboxAddress,
|
|
265
271
|
feeJuiceAddress,
|
|
266
272
|
feeJuicePortalAddress,
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
273
|
+
coinIssuerAddress,
|
|
274
|
+
rewardDistributorAddress,
|
|
275
|
+
governanceProposerAddress,
|
|
276
|
+
governanceAddress,
|
|
271
277
|
};
|
|
272
278
|
return {
|
|
273
279
|
walletClient,
|
|
@@ -392,4 +398,4 @@ export async function deployL1Contract(walletClient, publicClient, abi, bytecode
|
|
|
392
398
|
return { address: EthAddress.fromString(address), txHash };
|
|
393
399
|
}
|
|
394
400
|
// docs:end:deployL1Contract
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3lfbDFfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsZUFBZSxFQUNmLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFPTCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQTBDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFtR3ZELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBcUM7SUFDM0QsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUFFLFdBQVc7UUFDeEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0tBQ25DO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsV0FBVyxFQUFFLFFBQVE7UUFDckIsZ0JBQWdCLEVBQUUsYUFB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
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3lfbDFfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixRQUFRLEVBQ1IsYUFBYSxFQUNiLFNBQVMsRUFDVCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFPTCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQTBDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFtR3ZELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBcUM7SUFDM0QsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUFFLFdBQVc7UUFDeEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0tBQ25DO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsV0FBVyxFQUFFLFFBQVE7UUFDckIsZ0JBQWdC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
|
package/dest/index.d.ts
CHANGED
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
|
package/dest/index.js
CHANGED
|
@@ -4,4 +4,5 @@ export * from './l1_contract_addresses.js';
|
|
|
4
4
|
export * from './l1_reader.js';
|
|
5
5
|
export * from './ethereum_chain.js';
|
|
6
6
|
export * from './utils.js';
|
|
7
|
-
|
|
7
|
+
export * from './config.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDIn0=
|
|
@@ -1,16 +1,50 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { type ZodFor } from '@aztec/foundation/schemas';
|
|
4
|
+
import { z } from 'zod';
|
|
3
5
|
/**
|
|
4
6
|
* The names of the current L1 contract addresses.
|
|
5
7
|
* NOTE: When changing this list, make sure to update CLI & CI scripts accordingly.
|
|
6
8
|
* For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
|
|
7
9
|
*/
|
|
8
|
-
export declare const
|
|
9
|
-
/**
|
|
10
|
-
* Provides the directory of current L1 contract addresses
|
|
11
|
-
*/
|
|
10
|
+
export declare const L1ContractsNames: readonly ["rollupAddress", "registryAddress", "inboxAddress", "outboxAddress", "feeJuiceAddress", "feeJuicePortalAddress", "coinIssuerAddress", "rewardDistributorAddress", "governanceProposerAddress", "governanceAddress"];
|
|
11
|
+
/** Provides the directory of current L1 contract addresses */
|
|
12
12
|
export type L1ContractAddresses = {
|
|
13
|
-
[K in (typeof
|
|
13
|
+
[K in (typeof L1ContractsNames)[number]]: EthAddress;
|
|
14
14
|
};
|
|
15
|
+
export declare const L1ContractAddressesSchema: z.ZodObject<{
|
|
16
|
+
rollupAddress: ZodFor<EthAddress>;
|
|
17
|
+
registryAddress: ZodFor<EthAddress>;
|
|
18
|
+
inboxAddress: ZodFor<EthAddress>;
|
|
19
|
+
outboxAddress: ZodFor<EthAddress>;
|
|
20
|
+
feeJuiceAddress: ZodFor<EthAddress>;
|
|
21
|
+
feeJuicePortalAddress: ZodFor<EthAddress>;
|
|
22
|
+
coinIssuerAddress: ZodFor<EthAddress>;
|
|
23
|
+
rewardDistributorAddress: ZodFor<EthAddress>;
|
|
24
|
+
governanceProposerAddress: ZodFor<EthAddress>;
|
|
25
|
+
governanceAddress: ZodFor<EthAddress>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
rollupAddress: EthAddress;
|
|
28
|
+
registryAddress: EthAddress;
|
|
29
|
+
inboxAddress: EthAddress;
|
|
30
|
+
outboxAddress: EthAddress;
|
|
31
|
+
feeJuiceAddress: EthAddress;
|
|
32
|
+
feeJuicePortalAddress: EthAddress;
|
|
33
|
+
coinIssuerAddress: EthAddress;
|
|
34
|
+
rewardDistributorAddress: EthAddress;
|
|
35
|
+
governanceProposerAddress: EthAddress;
|
|
36
|
+
governanceAddress: EthAddress;
|
|
37
|
+
}, {
|
|
38
|
+
rollupAddress?: any;
|
|
39
|
+
registryAddress?: any;
|
|
40
|
+
inboxAddress?: any;
|
|
41
|
+
outboxAddress?: any;
|
|
42
|
+
feeJuiceAddress?: any;
|
|
43
|
+
feeJuicePortalAddress?: any;
|
|
44
|
+
coinIssuerAddress?: any;
|
|
45
|
+
rewardDistributorAddress?: any;
|
|
46
|
+
governanceProposerAddress?: any;
|
|
47
|
+
governanceAddress?: any;
|
|
48
|
+
}>;
|
|
15
49
|
export declare const l1ContractAddressesMapping: ConfigMappingsType<L1ContractAddresses>;
|
|
16
50
|
//# sourceMappingURL=l1_contract_addresses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1_contract_addresses.d.ts","sourceRoot":"","sources":["../src/l1_contract_addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"l1_contract_addresses.d.ts","sourceRoot":"","sources":["../src/l1_contract_addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+NAWnB,CAAC;AAEX,8DAA8D;AAC9D,MAAM,MAAM,mBAAmB,GAAG;KAC/B,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU;CACrD,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWE,CAAC;AAIzC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,mBAAmB,CAmD9E,CAAC"}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { schemas } from '@aztec/foundation/schemas';
|
|
3
|
+
import { z } from 'zod';
|
|
2
4
|
/**
|
|
3
5
|
* The names of the current L1 contract addresses.
|
|
4
6
|
* NOTE: When changing this list, make sure to update CLI & CI scripts accordingly.
|
|
5
7
|
* For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
|
|
6
8
|
*/
|
|
7
|
-
export const
|
|
9
|
+
export const L1ContractsNames = [
|
|
8
10
|
'rollupAddress',
|
|
9
11
|
'registryAddress',
|
|
10
12
|
'inboxAddress',
|
|
11
13
|
'outboxAddress',
|
|
12
14
|
'feeJuiceAddress',
|
|
13
15
|
'feeJuicePortalAddress',
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
16
|
+
'coinIssuerAddress',
|
|
17
|
+
'rewardDistributorAddress',
|
|
18
|
+
'governanceProposerAddress',
|
|
19
|
+
'governanceAddress',
|
|
18
20
|
];
|
|
21
|
+
export const L1ContractAddressesSchema = z.object({
|
|
22
|
+
rollupAddress: schemas.EthAddress,
|
|
23
|
+
registryAddress: schemas.EthAddress,
|
|
24
|
+
inboxAddress: schemas.EthAddress,
|
|
25
|
+
outboxAddress: schemas.EthAddress,
|
|
26
|
+
feeJuiceAddress: schemas.EthAddress,
|
|
27
|
+
feeJuicePortalAddress: schemas.EthAddress,
|
|
28
|
+
coinIssuerAddress: schemas.EthAddress,
|
|
29
|
+
rewardDistributorAddress: schemas.EthAddress,
|
|
30
|
+
governanceProposerAddress: schemas.EthAddress,
|
|
31
|
+
governanceAddress: schemas.EthAddress,
|
|
32
|
+
});
|
|
19
33
|
const parseEnv = (val) => EthAddress.fromString(val);
|
|
20
34
|
export const l1ContractAddressesMapping = {
|
|
21
35
|
rollupAddress: {
|
|
@@ -48,25 +62,25 @@ export const l1ContractAddressesMapping = {
|
|
|
48
62
|
description: 'The deployed L1 Fee Juice portal contract address.',
|
|
49
63
|
parseEnv,
|
|
50
64
|
},
|
|
51
|
-
|
|
52
|
-
env: '
|
|
53
|
-
description: 'The deployed L1
|
|
65
|
+
coinIssuerAddress: {
|
|
66
|
+
env: 'COIN_ISSUER_CONTRACT_ADDRESS',
|
|
67
|
+
description: 'The deployed L1 coinIssuer contract address',
|
|
54
68
|
parseEnv,
|
|
55
69
|
},
|
|
56
|
-
|
|
57
|
-
env: '
|
|
58
|
-
description: 'The deployed L1
|
|
70
|
+
rewardDistributorAddress: {
|
|
71
|
+
env: 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS',
|
|
72
|
+
description: 'The deployed L1 rewardDistributor contract address',
|
|
59
73
|
parseEnv,
|
|
60
74
|
},
|
|
61
|
-
|
|
62
|
-
env: '
|
|
63
|
-
description: 'The deployed L1
|
|
75
|
+
governanceProposerAddress: {
|
|
76
|
+
env: 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS',
|
|
77
|
+
description: 'The deployed L1 governanceProposer contract address',
|
|
64
78
|
parseEnv,
|
|
65
79
|
},
|
|
66
|
-
|
|
67
|
-
env: '
|
|
68
|
-
description: 'The deployed L1
|
|
80
|
+
governanceAddress: {
|
|
81
|
+
env: 'GOVERNANCE_CONTRACT_ADDRESS',
|
|
82
|
+
description: 'The deployed L1 governance contract address',
|
|
69
83
|
parseEnv,
|
|
70
84
|
},
|
|
71
85
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfY29udHJhY3RfYWRkcmVzc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2wxX2NvbnRyYWN0X2FkZHJlc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFlLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLG1CQUFtQjtDQUNYLENBQUM7QUFPWCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hELGFBQWEsRUFBRSxPQUFPLENBQUMsVUFBVTtJQUNqQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDbkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0lBQ2hDLGFBQWEsRUFBRSxPQUFPLENBQUMsVUFBVTtJQUNqQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDbkMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDekMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDckMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDNUMseUJBQXlCLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDN0MsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFVBQVU7Q0FDdEMsQ0FBdUMsQ0FBQztBQUV6QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBNEM7SUFDakYsYUFBYSxFQUFFO1FBQ2IsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixXQUFXLEVBQUUsMENBQTBDO1FBQ3ZELFFBQVE7S0FDVDtJQUNELGVBQWUsRUFBRTtRQUNmLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsV0FBVyxFQUFFLDRDQUE0QztRQUN6RCxRQUFRO0tBQ1Q7SUFDRCxZQUFZLEVBQUU7UUFDWixHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFdBQVcsRUFBRSx5Q0FBeUM7UUFDdEQsUUFBUTtLQUNUO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixXQUFXLEVBQUUsMENBQTBDO1FBQ3ZELFFBQVE7S0FDVDtJQUNELGVBQWUsRUFBRTtRQUNmLEdBQUcsRUFBRSw0QkFBNEI7UUFDakMsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxRQUFRO0tBQ1Q7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsbUNBQW1DO1FBQ3hDLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsUUFBUTtLQUNUO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsR0FBRyxFQUFFLDhCQUE4QjtRQUNuQyxXQUFXLEVBQUUsNkNBQTZDO1FBQzFELFFBQVE7S0FDVDtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSxxQ0FBcUM7UUFDMUMsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxRQUFRO0tBQ1Q7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixHQUFHLEVBQUUsc0NBQXNDO1FBQzNDLFdBQVcsRUFBRSxxREFBcUQ7UUFDbEUsUUFBUTtLQUNUO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsR0FBRyxFQUFFLDZCQUE2QjtRQUNsQyxXQUFXLEVBQUUsNkNBQTZDO1FBQzFELFFBQVE7S0FDVDtDQUNGLENBQUMifQ==
|
package/dest/l1_reader.d.ts
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
import { type L1ContractAddresses } from './l1_contract_addresses.js';
|
|
3
|
-
/**
|
|
4
|
-
* Configuration of the L1GlobalReader.
|
|
5
|
-
*/
|
|
3
|
+
/** Configuration of the L1GlobalReader. */
|
|
6
4
|
export interface L1ReaderConfig {
|
|
7
|
-
/**
|
|
8
|
-
* The RPC Url of the ethereum host.
|
|
9
|
-
*/
|
|
5
|
+
/** The RPC Url of the ethereum host. */
|
|
10
6
|
l1RpcUrl: string;
|
|
11
|
-
/**
|
|
12
|
-
* The chain ID of the ethereum host.
|
|
13
|
-
*/
|
|
7
|
+
/** The chain ID of the ethereum host. */
|
|
14
8
|
l1ChainId: number;
|
|
15
|
-
/**
|
|
16
|
-
* The deployed l1 contract addresses
|
|
17
|
-
*/
|
|
9
|
+
/** The deployed l1 contract addresses */
|
|
18
10
|
l1Contracts: L1ContractAddresses;
|
|
19
|
-
/**
|
|
20
|
-
* The polling interval viem uses in ms
|
|
21
|
-
*/
|
|
11
|
+
/** The polling interval viem uses in ms */
|
|
22
12
|
viemPollingIntervalMS: number;
|
|
23
13
|
}
|
|
24
14
|
export declare const l1ReaderConfigMappings: ConfigMappingsType<L1ReaderConfig>;
|
package/dest/l1_reader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG
|
|
1
|
+
{"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IACjC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CAqBrE,CAAC"}
|
package/dest/l1_reader.js
CHANGED
|
@@ -22,4 +22,4 @@ export const l1ReaderConfigMappings = {
|
|
|
22
22
|
...numberConfigHelper(1000),
|
|
23
23
|
},
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2wxX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkYsT0FBTyxFQUE0QiwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBY2xHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF1QztJQUN4RSxRQUFRLEVBQUU7UUFDUixHQUFHLEVBQUUsZUFBZTtRQUNwQixXQUFXLEVBQUUsbUNBQW1DO0tBQ2pEO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsR0FBRyxFQUFFLGFBQWE7UUFDbEIsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDL0IsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLG9DQUFvQztLQUNsRDtJQUNELHFDQUFxQztJQUNyQyxXQUFXLEVBQUU7UUFDWCxXQUFXLEVBQUUsb0NBQW9DO1FBQ2pELFlBQVksRUFBRSwwQkFBMEI7S0FDekM7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsb0NBQW9DO1FBQ3pDLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsR0FBRyxrQkFBa0IsQ0FBQyxJQUFLLENBQUM7S0FDN0I7Q0FDRixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/ethereum",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.63.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -24,11 +24,12 @@
|
|
|
24
24
|
"../package.common.json"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aztec/foundation": "0.
|
|
28
|
-
"@aztec/l1-artifacts": "0.
|
|
27
|
+
"@aztec/foundation": "0.63.1",
|
|
28
|
+
"@aztec/l1-artifacts": "0.63.1",
|
|
29
29
|
"dotenv": "^16.0.3",
|
|
30
30
|
"tslib": "^2.4.0",
|
|
31
|
-
"viem": "^2.7.15"
|
|
31
|
+
"viem": "^2.7.15",
|
|
32
|
+
"zod": "^3.23.8"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@jest/globals": "^29.5.0",
|
package/src/config.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type ConfigMappingsType, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
+
|
|
3
|
+
export type L1ContractsConfig = {
|
|
4
|
+
/** How many seconds an L1 slot lasts. */
|
|
5
|
+
ethereumSlotDuration: number;
|
|
6
|
+
/** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */
|
|
7
|
+
aztecSlotDuration: number;
|
|
8
|
+
/** How many L2 slots an epoch lasts. */
|
|
9
|
+
aztecEpochDuration: number;
|
|
10
|
+
/** The target validator committee size. */
|
|
11
|
+
aztecTargetCommitteeSize: number;
|
|
12
|
+
/** The number of L2 slots that we can wait for a proof of an epoch to be produced. */
|
|
13
|
+
aztecEpochProofClaimWindowInL2Slots: number;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const DefaultL1ContractsConfig: L1ContractsConfig = {
|
|
17
|
+
ethereumSlotDuration: 12,
|
|
18
|
+
aztecSlotDuration: 24,
|
|
19
|
+
aztecEpochDuration: 16,
|
|
20
|
+
aztecTargetCommitteeSize: 48,
|
|
21
|
+
aztecEpochProofClaimWindowInL2Slots: 13,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig> = {
|
|
25
|
+
ethereumSlotDuration: {
|
|
26
|
+
env: 'ETHEREUM_SLOT_DURATION',
|
|
27
|
+
description: 'How many seconds an L1 slot lasts.',
|
|
28
|
+
...numberConfigHelper(DefaultL1ContractsConfig.ethereumSlotDuration),
|
|
29
|
+
},
|
|
30
|
+
aztecSlotDuration: {
|
|
31
|
+
env: 'AZTEC_SLOT_DURATION',
|
|
32
|
+
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
33
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecSlotDuration),
|
|
34
|
+
},
|
|
35
|
+
aztecEpochDuration: {
|
|
36
|
+
env: 'AZTEC_EPOCH_DURATION',
|
|
37
|
+
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
38
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochDuration),
|
|
39
|
+
},
|
|
40
|
+
aztecTargetCommitteeSize: {
|
|
41
|
+
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
42
|
+
description: 'The target validator committee size.',
|
|
43
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize),
|
|
44
|
+
},
|
|
45
|
+
aztecEpochProofClaimWindowInL2Slots: {
|
|
46
|
+
env: 'AZTEC_EPOCH_PROOF_CLAIM_WINDOW_IN_L2_SLOTS',
|
|
47
|
+
description: 'The number of L2 slots that we can wait for a proof of an epoch to be produced.',
|
|
48
|
+
...numberConfigHelper(DefaultL1ContractsConfig.aztecEpochProofClaimWindowInL2Slots),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export function getL1ContractsConfigEnvVars(): L1ContractsConfig {
|
|
53
|
+
return getConfigFromMappings(l1ContractsConfigMappings);
|
|
54
|
+
}
|
|
@@ -3,25 +3,25 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
3
3
|
import { type Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { type DebugLogger } from '@aztec/foundation/log';
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
CoinIssuerAbi,
|
|
7
|
+
CoinIssuerBytecode,
|
|
8
8
|
FeeJuicePortalAbi,
|
|
9
9
|
FeeJuicePortalBytecode,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
GovernanceAbi,
|
|
11
|
+
GovernanceBytecode,
|
|
12
|
+
GovernanceProposerAbi,
|
|
13
|
+
GovernanceProposerBytecode,
|
|
12
14
|
InboxAbi,
|
|
13
15
|
InboxBytecode,
|
|
14
|
-
NomismatokopioAbi,
|
|
15
|
-
NomismatokopioBytecode,
|
|
16
16
|
OutboxAbi,
|
|
17
17
|
OutboxBytecode,
|
|
18
18
|
RegistryAbi,
|
|
19
19
|
RegistryBytecode,
|
|
20
|
+
RewardDistributorAbi,
|
|
21
|
+
RewardDistributorBytecode,
|
|
20
22
|
RollupAbi,
|
|
21
23
|
RollupBytecode,
|
|
22
24
|
RollupLinkReferences,
|
|
23
|
-
SysstiaAbi,
|
|
24
|
-
SysstiaBytecode,
|
|
25
25
|
TestERC20Abi,
|
|
26
26
|
TestERC20Bytecode,
|
|
27
27
|
TxsDecoderAbi,
|
|
@@ -50,6 +50,7 @@ import {
|
|
|
50
50
|
import { type HDAccount, type PrivateKeyAccount, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
51
51
|
import { foundry } from 'viem/chains';
|
|
52
52
|
|
|
53
|
+
import { type L1ContractsConfig } from './config.js';
|
|
53
54
|
import { isAnvilTestChain } from './ethereum_chain.js';
|
|
54
55
|
import { type L1ContractAddresses } from './l1_contract_addresses.js';
|
|
55
56
|
|
|
@@ -132,21 +133,21 @@ export interface L1ContractArtifactsForDeployment {
|
|
|
132
133
|
*/
|
|
133
134
|
feeJuicePortal: ContractArtifacts;
|
|
134
135
|
/**
|
|
135
|
-
*
|
|
136
|
+
* CoinIssuer contract artifacts.
|
|
136
137
|
*/
|
|
137
|
-
|
|
138
|
+
coinIssuer: ContractArtifacts;
|
|
138
139
|
/**
|
|
139
|
-
*
|
|
140
|
+
* RewardDistributor contract artifacts.
|
|
140
141
|
*/
|
|
141
|
-
|
|
142
|
+
rewardDistributor: ContractArtifacts;
|
|
142
143
|
/**
|
|
143
|
-
*
|
|
144
|
+
* GovernanceProposer contract artifacts.
|
|
144
145
|
*/
|
|
145
|
-
|
|
146
|
+
governanceProposer: ContractArtifacts;
|
|
146
147
|
/**
|
|
147
|
-
*
|
|
148
|
+
* Governance contract artifacts.
|
|
148
149
|
*/
|
|
149
|
-
|
|
150
|
+
governance: ContractArtifacts;
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
export const l1Artifacts: L1ContractArtifactsForDeployment = {
|
|
@@ -183,48 +184,36 @@ export const l1Artifacts: L1ContractArtifactsForDeployment = {
|
|
|
183
184
|
contractAbi: FeeJuicePortalAbi,
|
|
184
185
|
contractBytecode: FeeJuicePortalBytecode,
|
|
185
186
|
},
|
|
186
|
-
|
|
187
|
-
contractAbi:
|
|
188
|
-
contractBytecode:
|
|
187
|
+
rewardDistributor: {
|
|
188
|
+
contractAbi: RewardDistributorAbi,
|
|
189
|
+
contractBytecode: RewardDistributorBytecode,
|
|
189
190
|
},
|
|
190
|
-
|
|
191
|
-
contractAbi:
|
|
192
|
-
contractBytecode:
|
|
191
|
+
coinIssuer: {
|
|
192
|
+
contractAbi: CoinIssuerAbi,
|
|
193
|
+
contractBytecode: CoinIssuerBytecode,
|
|
193
194
|
},
|
|
194
|
-
|
|
195
|
-
contractAbi:
|
|
196
|
-
contractBytecode:
|
|
195
|
+
governanceProposer: {
|
|
196
|
+
contractAbi: GovernanceProposerAbi,
|
|
197
|
+
contractBytecode: GovernanceProposerBytecode,
|
|
197
198
|
},
|
|
198
|
-
|
|
199
|
-
contractAbi:
|
|
200
|
-
contractBytecode:
|
|
199
|
+
governance: {
|
|
200
|
+
contractAbi: GovernanceAbi,
|
|
201
|
+
contractBytecode: GovernanceBytecode,
|
|
201
202
|
},
|
|
202
203
|
};
|
|
203
204
|
|
|
204
|
-
export interface DeployL1ContractsArgs {
|
|
205
|
-
/**
|
|
206
|
-
* The address of the L2 Fee Juice contract.
|
|
207
|
-
*/
|
|
205
|
+
export interface DeployL1ContractsArgs extends L1ContractsConfig {
|
|
206
|
+
/** The address of the L2 Fee Juice contract. */
|
|
208
207
|
l2FeeJuiceAddress: AztecAddress;
|
|
209
|
-
/**
|
|
210
|
-
* The vk tree root.
|
|
211
|
-
*/
|
|
208
|
+
/** The vk tree root. */
|
|
212
209
|
vkTreeRoot: Fr;
|
|
213
|
-
/**
|
|
214
|
-
* The protocol contract tree root.
|
|
215
|
-
*/
|
|
210
|
+
/** The protocol contract tree root. */
|
|
216
211
|
protocolContractTreeRoot: Fr;
|
|
217
|
-
/**
|
|
218
|
-
* The block number to assume proven through.
|
|
219
|
-
*/
|
|
212
|
+
/** The block number to assume proven through. */
|
|
220
213
|
assumeProvenThrough?: number;
|
|
221
|
-
/**
|
|
222
|
-
* The salt for CREATE2 deployment.
|
|
223
|
-
*/
|
|
214
|
+
/** The salt for CREATE2 deployment. */
|
|
224
215
|
salt: number | undefined;
|
|
225
|
-
/**
|
|
226
|
-
* The initial validators for the rollup contract.
|
|
227
|
-
*/
|
|
216
|
+
/** The initial validators for the rollup contract. */
|
|
228
217
|
initialValidators?: EthAddress[];
|
|
229
218
|
}
|
|
230
219
|
|
|
@@ -294,12 +283,11 @@ export const deployL1Contracts = async (
|
|
|
294
283
|
return await (await fetch(rpcUrl, content)).json();
|
|
295
284
|
};
|
|
296
285
|
if (isAnvilTestChain(chain.id)) {
|
|
297
|
-
const
|
|
298
|
-
const res = await rpcCall('anvil_setBlockTimestampInterval', [interval]);
|
|
286
|
+
const res = await rpcCall('anvil_setBlockTimestampInterval', [args.ethereumSlotDuration]);
|
|
299
287
|
if (res.error) {
|
|
300
288
|
throw new Error(`Error setting block interval: ${res.error.message}`);
|
|
301
289
|
}
|
|
302
|
-
logger.info(`Set block interval to ${
|
|
290
|
+
logger.info(`Set block interval to ${args.ethereumSlotDuration}`);
|
|
303
291
|
}
|
|
304
292
|
|
|
305
293
|
logger.info(`Deploying contracts from ${account.address.toString()}...`);
|
|
@@ -319,32 +307,32 @@ export const deployL1Contracts = async (
|
|
|
319
307
|
// @note These numbers are just chosen to make testing simple.
|
|
320
308
|
const quorumSize = 6n;
|
|
321
309
|
const roundSize = 10n;
|
|
322
|
-
const
|
|
310
|
+
const governanceProposerAddress = await govDeployer.deploy(l1Artifacts.governanceProposer, [
|
|
323
311
|
registryAddress.toString(),
|
|
324
312
|
quorumSize,
|
|
325
313
|
roundSize,
|
|
326
314
|
]);
|
|
327
|
-
logger.info(`Deployed
|
|
315
|
+
logger.info(`Deployed GovernanceProposer at ${governanceProposerAddress}`);
|
|
328
316
|
|
|
329
|
-
const
|
|
317
|
+
const governanceAddress = await govDeployer.deploy(l1Artifacts.governance, [
|
|
330
318
|
feeJuiceAddress.toString(),
|
|
331
|
-
|
|
319
|
+
governanceProposerAddress.toString(),
|
|
332
320
|
]);
|
|
333
|
-
logger.info(`Deployed
|
|
321
|
+
logger.info(`Deployed Governance at ${governanceAddress}`);
|
|
334
322
|
|
|
335
|
-
const
|
|
323
|
+
const coinIssuerAddress = await govDeployer.deploy(l1Artifacts.coinIssuer, [
|
|
336
324
|
feeJuiceAddress.toString(),
|
|
337
325
|
1n * 10n ** 18n, // @todo #8084
|
|
338
|
-
|
|
326
|
+
governanceAddress.toString(),
|
|
339
327
|
]);
|
|
340
|
-
logger.info(`Deployed
|
|
328
|
+
logger.info(`Deployed CoinIssuer at ${coinIssuerAddress}`);
|
|
341
329
|
|
|
342
|
-
const
|
|
330
|
+
const rewardDistributorAddress = await govDeployer.deploy(l1Artifacts.rewardDistributor, [
|
|
343
331
|
feeJuiceAddress.toString(),
|
|
344
332
|
registryAddress.toString(),
|
|
345
|
-
|
|
333
|
+
governanceAddress.toString(),
|
|
346
334
|
]);
|
|
347
|
-
logger.info(`Deployed
|
|
335
|
+
logger.info(`Deployed RewardDistributor at ${rewardDistributorAddress}`);
|
|
348
336
|
|
|
349
337
|
await govDeployer.waitForDeployments();
|
|
350
338
|
logger.info(`All governance contracts deployed`);
|
|
@@ -358,15 +346,22 @@ export const deployL1Contracts = async (
|
|
|
358
346
|
]);
|
|
359
347
|
logger.info(`Deployed Fee Juice Portal at ${feeJuicePortalAddress}`);
|
|
360
348
|
|
|
349
|
+
const rollupArgs = {
|
|
350
|
+
aztecSlotDuration: args.aztecSlotDuration,
|
|
351
|
+
aztecEpochDuration: args.aztecEpochDuration,
|
|
352
|
+
targetCommitteeSize: args.aztecTargetCommitteeSize,
|
|
353
|
+
aztecEpochProofClaimWindowInL2Slots: args.aztecEpochProofClaimWindowInL2Slots,
|
|
354
|
+
};
|
|
361
355
|
const rollupAddress = await deployer.deploy(l1Artifacts.rollup, [
|
|
362
356
|
feeJuicePortalAddress.toString(),
|
|
363
|
-
|
|
357
|
+
rewardDistributorAddress.toString(),
|
|
364
358
|
args.vkTreeRoot.toString(),
|
|
365
359
|
args.protocolContractTreeRoot.toString(),
|
|
366
360
|
account.address.toString(),
|
|
367
361
|
args.initialValidators?.map(v => v.toString()) ?? [],
|
|
362
|
+
rollupArgs,
|
|
368
363
|
]);
|
|
369
|
-
logger.info(`Deployed Rollup at ${rollupAddress}
|
|
364
|
+
logger.info(`Deployed Rollup at ${rollupAddress}`, rollupArgs);
|
|
370
365
|
|
|
371
366
|
await deployer.waitForDeployments();
|
|
372
367
|
logger.info(`All core contracts deployed`);
|
|
@@ -396,7 +391,7 @@ export const deployL1Contracts = async (
|
|
|
396
391
|
// because there is circular dependency hell. This is a temporary solution. #3342
|
|
397
392
|
// @todo #8084
|
|
398
393
|
// fund the portal contract with Fee Juice
|
|
399
|
-
const FEE_JUICE_INITIAL_MINT =
|
|
394
|
+
const FEE_JUICE_INITIAL_MINT = 200000000000000;
|
|
400
395
|
const mintTxHash = await feeJuice.write.mint([feeJuicePortalAddress.toString(), FEE_JUICE_INITIAL_MINT], {} as any);
|
|
401
396
|
|
|
402
397
|
// @note This is used to ensure we fully wait for the transaction when running against a real chain
|
|
@@ -468,16 +463,16 @@ export const deployL1Contracts = async (
|
|
|
468
463
|
logger.verbose(`Registry ${registryAddress} has already registered rollup ${rollupAddress}`);
|
|
469
464
|
}
|
|
470
465
|
|
|
471
|
-
// If the owner is not the
|
|
472
|
-
if ((await registryContract.read.owner([])) !== getAddress(
|
|
466
|
+
// If the owner is not the Governance contract, transfer ownership to the Governance contract
|
|
467
|
+
if ((await registryContract.read.owner([])) !== getAddress(governanceAddress.toString())) {
|
|
473
468
|
const transferOwnershipTxHash = await registryContract.write.transferOwnership(
|
|
474
|
-
[getAddress(
|
|
469
|
+
[getAddress(governanceAddress.toString())],
|
|
475
470
|
{
|
|
476
471
|
account,
|
|
477
472
|
},
|
|
478
473
|
);
|
|
479
474
|
logger.verbose(
|
|
480
|
-
`Transferring the ownership of the registry contract at ${registryAddress} to the
|
|
475
|
+
`Transferring the ownership of the registry contract at ${registryAddress} to the Governance ${governanceAddress} in tx ${transferOwnershipTxHash}`,
|
|
481
476
|
);
|
|
482
477
|
txHashes.push(transferOwnershipTxHash);
|
|
483
478
|
}
|
|
@@ -493,10 +488,10 @@ export const deployL1Contracts = async (
|
|
|
493
488
|
outboxAddress,
|
|
494
489
|
feeJuiceAddress,
|
|
495
490
|
feeJuicePortalAddress,
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
491
|
+
coinIssuerAddress,
|
|
492
|
+
rewardDistributorAddress,
|
|
493
|
+
governanceProposerAddress,
|
|
494
|
+
governanceAddress,
|
|
500
495
|
};
|
|
501
496
|
|
|
502
497
|
return {
|
package/src/index.ts
CHANGED
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { type ZodFor, schemas } from '@aztec/foundation/schemas';
|
|
4
|
+
|
|
5
|
+
import { z } from 'zod';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* The names of the current L1 contract addresses.
|
|
6
9
|
* NOTE: When changing this list, make sure to update CLI & CI scripts accordingly.
|
|
7
10
|
* For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
|
|
8
11
|
*/
|
|
9
|
-
export const
|
|
12
|
+
export const L1ContractsNames = [
|
|
10
13
|
'rollupAddress',
|
|
11
14
|
'registryAddress',
|
|
12
15
|
'inboxAddress',
|
|
13
16
|
'outboxAddress',
|
|
14
17
|
'feeJuiceAddress',
|
|
15
18
|
'feeJuicePortalAddress',
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
19
|
+
'coinIssuerAddress',
|
|
20
|
+
'rewardDistributorAddress',
|
|
21
|
+
'governanceProposerAddress',
|
|
22
|
+
'governanceAddress',
|
|
20
23
|
] as const;
|
|
21
24
|
|
|
22
|
-
/**
|
|
23
|
-
* Provides the directory of current L1 contract addresses
|
|
24
|
-
*/
|
|
25
|
+
/** Provides the directory of current L1 contract addresses */
|
|
25
26
|
export type L1ContractAddresses = {
|
|
26
|
-
[K in (typeof
|
|
27
|
+
[K in (typeof L1ContractsNames)[number]]: EthAddress;
|
|
27
28
|
};
|
|
28
29
|
|
|
30
|
+
export const L1ContractAddressesSchema = z.object({
|
|
31
|
+
rollupAddress: schemas.EthAddress,
|
|
32
|
+
registryAddress: schemas.EthAddress,
|
|
33
|
+
inboxAddress: schemas.EthAddress,
|
|
34
|
+
outboxAddress: schemas.EthAddress,
|
|
35
|
+
feeJuiceAddress: schemas.EthAddress,
|
|
36
|
+
feeJuicePortalAddress: schemas.EthAddress,
|
|
37
|
+
coinIssuerAddress: schemas.EthAddress,
|
|
38
|
+
rewardDistributorAddress: schemas.EthAddress,
|
|
39
|
+
governanceProposerAddress: schemas.EthAddress,
|
|
40
|
+
governanceAddress: schemas.EthAddress,
|
|
41
|
+
}) satisfies ZodFor<L1ContractAddresses>;
|
|
42
|
+
|
|
29
43
|
const parseEnv = (val: string) => EthAddress.fromString(val);
|
|
30
44
|
|
|
31
45
|
export const l1ContractAddressesMapping: ConfigMappingsType<L1ContractAddresses> = {
|
|
@@ -59,24 +73,24 @@ export const l1ContractAddressesMapping: ConfigMappingsType<L1ContractAddresses>
|
|
|
59
73
|
description: 'The deployed L1 Fee Juice portal contract address.',
|
|
60
74
|
parseEnv,
|
|
61
75
|
},
|
|
62
|
-
|
|
63
|
-
env: '
|
|
64
|
-
description: 'The deployed L1
|
|
76
|
+
coinIssuerAddress: {
|
|
77
|
+
env: 'COIN_ISSUER_CONTRACT_ADDRESS',
|
|
78
|
+
description: 'The deployed L1 coinIssuer contract address',
|
|
65
79
|
parseEnv,
|
|
66
80
|
},
|
|
67
|
-
|
|
68
|
-
env: '
|
|
69
|
-
description: 'The deployed L1
|
|
81
|
+
rewardDistributorAddress: {
|
|
82
|
+
env: 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS',
|
|
83
|
+
description: 'The deployed L1 rewardDistributor contract address',
|
|
70
84
|
parseEnv,
|
|
71
85
|
},
|
|
72
|
-
|
|
73
|
-
env: '
|
|
74
|
-
description: 'The deployed L1
|
|
86
|
+
governanceProposerAddress: {
|
|
87
|
+
env: 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS',
|
|
88
|
+
description: 'The deployed L1 governanceProposer contract address',
|
|
75
89
|
parseEnv,
|
|
76
90
|
},
|
|
77
|
-
|
|
78
|
-
env: '
|
|
79
|
-
description: 'The deployed L1
|
|
91
|
+
governanceAddress: {
|
|
92
|
+
env: 'GOVERNANCE_CONTRACT_ADDRESS',
|
|
93
|
+
description: 'The deployed L1 governance contract address',
|
|
80
94
|
parseEnv,
|
|
81
95
|
},
|
|
82
96
|
};
|
package/src/l1_reader.ts
CHANGED
|
@@ -2,26 +2,15 @@ import { type ConfigMappingsType, numberConfigHelper } from '@aztec/foundation/c
|
|
|
2
2
|
|
|
3
3
|
import { type L1ContractAddresses, l1ContractAddressesMapping } from './l1_contract_addresses.js';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Configuration of the L1GlobalReader.
|
|
7
|
-
*/
|
|
5
|
+
/** Configuration of the L1GlobalReader. */
|
|
8
6
|
export interface L1ReaderConfig {
|
|
9
|
-
/**
|
|
10
|
-
* The RPC Url of the ethereum host.
|
|
11
|
-
*/
|
|
7
|
+
/** The RPC Url of the ethereum host. */
|
|
12
8
|
l1RpcUrl: string;
|
|
13
|
-
/**
|
|
14
|
-
* The chain ID of the ethereum host.
|
|
15
|
-
*/
|
|
9
|
+
/** The chain ID of the ethereum host. */
|
|
16
10
|
l1ChainId: number;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The deployed l1 contract addresses
|
|
20
|
-
*/
|
|
11
|
+
/** The deployed l1 contract addresses */
|
|
21
12
|
l1Contracts: L1ContractAddresses;
|
|
22
|
-
/**
|
|
23
|
-
* The polling interval viem uses in ms
|
|
24
|
-
*/
|
|
13
|
+
/** The polling interval viem uses in ms */
|
|
25
14
|
viemPollingIntervalMS: number;
|
|
26
15
|
}
|
|
27
16
|
|