@aztec/ethereum 0.59.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/deploy_l1_contracts.d.ts +18 -2
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +98 -14
- package/dest/l1_contract_addresses.d.ts +1 -4
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +25 -30
- package/package.json +3 -2
- package/src/deploy_l1_contracts.ts +146 -13
- package/src/l1_contract_addresses.ts +25 -35
|
@@ -64,7 +64,24 @@ export interface L1ContractArtifactsForDeployment {
|
|
|
64
64
|
* Fee juice portal contract artifacts. Optional for now as gas is not strictly enforced
|
|
65
65
|
*/
|
|
66
66
|
feeJuicePortal: ContractArtifacts;
|
|
67
|
+
/**
|
|
68
|
+
* Nomismatokopio contract artifacts.
|
|
69
|
+
*/
|
|
70
|
+
nomismatokopio: ContractArtifacts;
|
|
71
|
+
/**
|
|
72
|
+
* Sysstia contract artifacts.
|
|
73
|
+
*/
|
|
74
|
+
sysstia: ContractArtifacts;
|
|
75
|
+
/**
|
|
76
|
+
* Gerousia contract artifacts.
|
|
77
|
+
*/
|
|
78
|
+
gerousia: ContractArtifacts;
|
|
79
|
+
/**
|
|
80
|
+
* Apella contract artifacts.
|
|
81
|
+
*/
|
|
82
|
+
apella: ContractArtifacts;
|
|
67
83
|
}
|
|
84
|
+
export declare const l1Artifacts: L1ContractArtifactsForDeployment;
|
|
68
85
|
export interface DeployL1ContractsArgs {
|
|
69
86
|
/**
|
|
70
87
|
* The address of the L2 Fee Juice contract.
|
|
@@ -109,11 +126,10 @@ export declare function createL1Clients(rpcUrl: string, mnemonicOrPrivateKeyOrHd
|
|
|
109
126
|
* @param account - Private Key or HD Account that will deploy the contracts.
|
|
110
127
|
* @param chain - The chain instance to deploy to.
|
|
111
128
|
* @param logger - A logger object.
|
|
112
|
-
* @param contractsToDeploy - The set of L1 artifacts to be deployed
|
|
113
129
|
* @param args - Arguments for initialization of L1 contracts
|
|
114
130
|
* @returns A list of ETH addresses of the deployed contracts.
|
|
115
131
|
*/
|
|
116
|
-
export declare const deployL1Contracts: (rpcUrl: string, account: HDAccount | PrivateKeyAccount, chain: Chain, logger: DebugLogger,
|
|
132
|
+
export declare const deployL1Contracts: (rpcUrl: string, account: HDAccount | PrivateKeyAccount, chain: Chain, logger: DebugLogger, args: DeployL1ContractsArgs) => Promise<DeployL1Contracts>;
|
|
117
133
|
/**
|
|
118
134
|
* Compiles a contract source code using the provided solc compiler.
|
|
119
135
|
* @param fileName - Contract file name (eg UltraHonkVerifier.sol)
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_l1_contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,51 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { ApellaAbi, ApellaBytecode, FeeJuicePortalAbi, FeeJuicePortalBytecode, GerousiaAbi, GerousiaBytecode, InboxAbi, InboxBytecode, NomismatokopioAbi, NomismatokopioBytecode, OutboxAbi, OutboxBytecode, RegistryAbi, RegistryBytecode, RollupAbi, RollupBytecode, SysstiaAbi, SysstiaBytecode, TestERC20Abi, TestERC20Bytecode, } from '@aztec/l1-artifacts';
|
|
2
3
|
import { concatHex, createPublicClient, createWalletClient, encodeDeployData, getAddress, getContract, getContractAddress, http, numberToHex, padHex, zeroAddress, } from 'viem';
|
|
3
4
|
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
4
5
|
import { foundry } from 'viem/chains';
|
|
5
6
|
import { isAnvilTestChain } from './ethereum_chain.js';
|
|
7
|
+
export const l1Artifacts = {
|
|
8
|
+
registry: {
|
|
9
|
+
contractAbi: RegistryAbi,
|
|
10
|
+
contractBytecode: RegistryBytecode,
|
|
11
|
+
},
|
|
12
|
+
inbox: {
|
|
13
|
+
contractAbi: InboxAbi,
|
|
14
|
+
contractBytecode: InboxBytecode,
|
|
15
|
+
},
|
|
16
|
+
outbox: {
|
|
17
|
+
contractAbi: OutboxAbi,
|
|
18
|
+
contractBytecode: OutboxBytecode,
|
|
19
|
+
},
|
|
20
|
+
rollup: {
|
|
21
|
+
contractAbi: RollupAbi,
|
|
22
|
+
contractBytecode: RollupBytecode,
|
|
23
|
+
},
|
|
24
|
+
feeJuice: {
|
|
25
|
+
contractAbi: TestERC20Abi,
|
|
26
|
+
contractBytecode: TestERC20Bytecode,
|
|
27
|
+
},
|
|
28
|
+
feeJuicePortal: {
|
|
29
|
+
contractAbi: FeeJuicePortalAbi,
|
|
30
|
+
contractBytecode: FeeJuicePortalBytecode,
|
|
31
|
+
},
|
|
32
|
+
sysstia: {
|
|
33
|
+
contractAbi: SysstiaAbi,
|
|
34
|
+
contractBytecode: SysstiaBytecode,
|
|
35
|
+
},
|
|
36
|
+
nomismatokopio: {
|
|
37
|
+
contractAbi: NomismatokopioAbi,
|
|
38
|
+
contractBytecode: NomismatokopioBytecode,
|
|
39
|
+
},
|
|
40
|
+
gerousia: {
|
|
41
|
+
contractAbi: GerousiaAbi,
|
|
42
|
+
contractBytecode: GerousiaBytecode,
|
|
43
|
+
},
|
|
44
|
+
apella: {
|
|
45
|
+
contractAbi: ApellaAbi,
|
|
46
|
+
contractBytecode: ApellaBytecode,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
6
49
|
/**
|
|
7
50
|
* Creates a wallet and a public viem client for interacting with L1.
|
|
8
51
|
* @param rpcUrl - RPC URL to connect to L1.
|
|
@@ -33,11 +76,10 @@ export function createL1Clients(rpcUrl, mnemonicOrPrivateKeyOrHdAccount, chain =
|
|
|
33
76
|
* @param account - Private Key or HD Account that will deploy the contracts.
|
|
34
77
|
* @param chain - The chain instance to deploy to.
|
|
35
78
|
* @param logger - A logger object.
|
|
36
|
-
* @param contractsToDeploy - The set of L1 artifacts to be deployed
|
|
37
79
|
* @param args - Arguments for initialization of L1 contracts
|
|
38
80
|
* @returns A list of ETH addresses of the deployed contracts.
|
|
39
81
|
*/
|
|
40
|
-
export const deployL1Contracts = async (rpcUrl, account, chain, logger,
|
|
82
|
+
export const deployL1Contracts = async (rpcUrl, account, chain, logger, args) => {
|
|
41
83
|
// We are assuming that you are running this on a local anvil node which have 1s block times
|
|
42
84
|
// To align better with actual deployment, we update the block interval to 12s
|
|
43
85
|
// The code is same as `setBlockInterval` in `cheat_codes.ts`
|
|
@@ -51,7 +93,7 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
51
93
|
return await (await fetch(rpcUrl, content)).json();
|
|
52
94
|
};
|
|
53
95
|
if (isAnvilTestChain(chain.id)) {
|
|
54
|
-
const interval = 12;
|
|
96
|
+
const interval = 12; // @todo #8084
|
|
55
97
|
const res = await rpcCall('anvil_setBlockTimestampInterval', [interval]);
|
|
56
98
|
if (res.error) {
|
|
57
99
|
throw new Error(`Error setting block interval: ${res.error.message}`);
|
|
@@ -61,19 +103,49 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
61
103
|
logger.info(`Deploying contracts from ${account.address.toString()}...`);
|
|
62
104
|
const walletClient = createWalletClient({ account, chain, transport: http(rpcUrl) });
|
|
63
105
|
const publicClient = createPublicClient({ chain, transport: http(rpcUrl) });
|
|
64
|
-
|
|
65
|
-
const
|
|
106
|
+
// Governance stuff
|
|
107
|
+
const govDeployer = new L1Deployer(walletClient, publicClient, args.salt, logger);
|
|
108
|
+
const registryAddress = await govDeployer.deploy(l1Artifacts.registry, [account.address.toString()]);
|
|
66
109
|
logger.info(`Deployed Registry at ${registryAddress}`);
|
|
67
|
-
const feeJuiceAddress = await
|
|
110
|
+
const feeJuiceAddress = await govDeployer.deploy(l1Artifacts.feeJuice);
|
|
68
111
|
logger.info(`Deployed Fee Juice at ${feeJuiceAddress}`);
|
|
69
|
-
const
|
|
112
|
+
const nomismatokopioAddress = await govDeployer.deploy(l1Artifacts.nomismatokopio, [
|
|
113
|
+
feeJuiceAddress.toString(),
|
|
114
|
+
1n * 10n ** 18n, // @todo #8084
|
|
115
|
+
account.address.toString(),
|
|
116
|
+
]);
|
|
117
|
+
logger.info(`Deployed Nomismatokopio at ${nomismatokopioAddress}`);
|
|
118
|
+
const sysstiaAddress = await govDeployer.deploy(l1Artifacts.sysstia, [
|
|
119
|
+
feeJuiceAddress.toString(),
|
|
120
|
+
registryAddress.toString(),
|
|
121
|
+
]);
|
|
122
|
+
logger.info(`Deployed Sysstia at ${sysstiaAddress}`);
|
|
123
|
+
// @todo #8084
|
|
124
|
+
// @note These numbers are just chosen to make testing simple.
|
|
125
|
+
const quorumSize = 6n;
|
|
126
|
+
const roundSize = 10n;
|
|
127
|
+
const gerousiaAddress = await govDeployer.deploy(l1Artifacts.gerousia, [
|
|
128
|
+
registryAddress.toString(),
|
|
129
|
+
quorumSize,
|
|
130
|
+
roundSize,
|
|
131
|
+
]);
|
|
132
|
+
logger.info(`Deployed Gerousia at ${gerousiaAddress}`);
|
|
133
|
+
const apellaAddress = await govDeployer.deploy(l1Artifacts.apella, [
|
|
134
|
+
feeJuiceAddress.toString(),
|
|
135
|
+
gerousiaAddress.toString(),
|
|
136
|
+
]);
|
|
137
|
+
logger.info(`Deployed Apella at ${apellaAddress}`);
|
|
138
|
+
await govDeployer.waitForDeployments();
|
|
139
|
+
logger.info(`All governance contracts deployed`);
|
|
140
|
+
const deployer = new L1Deployer(walletClient, publicClient, args.salt, logger);
|
|
141
|
+
const feeJuicePortalAddress = await deployer.deploy(l1Artifacts.feeJuicePortal, [
|
|
70
142
|
account.address.toString(),
|
|
71
143
|
registryAddress.toString(),
|
|
72
144
|
feeJuiceAddress.toString(),
|
|
73
145
|
args.l2FeeJuiceAddress.toString(),
|
|
74
146
|
]);
|
|
75
147
|
logger.info(`Deployed Fee Juice Portal at ${feeJuicePortalAddress}`);
|
|
76
|
-
const rollupAddress = await deployer.deploy(
|
|
148
|
+
const rollupAddress = await deployer.deploy(l1Artifacts.rollup, [
|
|
77
149
|
feeJuicePortalAddress.toString(),
|
|
78
150
|
args.vkTreeRoot.toString(),
|
|
79
151
|
args.protocolContractTreeRoot.toString(),
|
|
@@ -82,20 +154,20 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
82
154
|
]);
|
|
83
155
|
logger.info(`Deployed Rollup at ${rollupAddress}`);
|
|
84
156
|
await deployer.waitForDeployments();
|
|
85
|
-
logger.info(`All contracts deployed`);
|
|
157
|
+
logger.info(`All core contracts deployed`);
|
|
86
158
|
const feeJuicePortal = getContract({
|
|
87
159
|
address: feeJuicePortalAddress.toString(),
|
|
88
|
-
abi:
|
|
160
|
+
abi: l1Artifacts.feeJuicePortal.contractAbi,
|
|
89
161
|
client: walletClient,
|
|
90
162
|
});
|
|
91
163
|
const feeJuice = getContract({
|
|
92
164
|
address: feeJuiceAddress.toString(),
|
|
93
|
-
abi:
|
|
165
|
+
abi: l1Artifacts.feeJuice.contractAbi,
|
|
94
166
|
client: walletClient,
|
|
95
167
|
});
|
|
96
168
|
const rollup = getContract({
|
|
97
169
|
address: getAddress(rollupAddress.toString()),
|
|
98
|
-
abi:
|
|
170
|
+
abi: l1Artifacts.rollup.contractAbi,
|
|
99
171
|
client: walletClient,
|
|
100
172
|
});
|
|
101
173
|
// Transaction hashes to await
|
|
@@ -153,7 +225,7 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
153
225
|
// We need to call a function on the registry to set the various contract addresses.
|
|
154
226
|
const registryContract = getContract({
|
|
155
227
|
address: getAddress(registryAddress.toString()),
|
|
156
|
-
abi:
|
|
228
|
+
abi: l1Artifacts.registry.contractAbi,
|
|
157
229
|
client: walletClient,
|
|
158
230
|
});
|
|
159
231
|
if (!(await registryContract.read.isRollupRegistered([getAddress(rollupAddress.toString())]))) {
|
|
@@ -164,6 +236,14 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
164
236
|
else {
|
|
165
237
|
logger.verbose(`Registry ${registryAddress} has already registered rollup ${rollupAddress}`);
|
|
166
238
|
}
|
|
239
|
+
// If the owner is not the Apella contract, transfer ownership to the Apella contract
|
|
240
|
+
if ((await registryContract.read.owner([])) !== getAddress(apellaAddress.toString())) {
|
|
241
|
+
const transferOwnershipTxHash = await registryContract.write.transferOwnership([getAddress(apellaAddress.toString())], {
|
|
242
|
+
account,
|
|
243
|
+
});
|
|
244
|
+
logger.verbose(`Transferring the ownership of the registry contract at ${registryAddress} to the Apella ${apellaAddress} in tx ${transferOwnershipTxHash}`);
|
|
245
|
+
txHashes.push(transferOwnershipTxHash);
|
|
246
|
+
}
|
|
167
247
|
// Wait for all actions to be mined
|
|
168
248
|
await Promise.all(txHashes.map(txHash => publicClient.waitForTransactionReceipt({ hash: txHash })));
|
|
169
249
|
logger.verbose(`All transactions for L1 deployment have been mined`);
|
|
@@ -174,6 +254,10 @@ export const deployL1Contracts = async (rpcUrl, account, chain, logger, contract
|
|
|
174
254
|
outboxAddress,
|
|
175
255
|
feeJuiceAddress,
|
|
176
256
|
feeJuicePortalAddress,
|
|
257
|
+
nomismatokopioAddress,
|
|
258
|
+
sysstiaAddress,
|
|
259
|
+
gerousiaAddress,
|
|
260
|
+
apellaAddress,
|
|
177
261
|
};
|
|
178
262
|
return {
|
|
179
263
|
walletClient,
|
|
@@ -275,4 +359,4 @@ export async function deployL1Contract(walletClient, publicClient, abi, bytecode
|
|
|
275
359
|
return { address: EthAddress.fromString(address), txHash };
|
|
276
360
|
}
|
|
277
361
|
// docs:end:deployL1Contract
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3lfbDFfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUszRCxPQUFPLEVBT0wsU0FBUyxFQUNULGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLElBQUksRUFDSixXQUFXLEVBQ1gsTUFBTSxFQUNOLFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBMEMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlHdkQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBYyxFQUNkLCtCQUF1RixFQUN2RixRQUFlLE9BQU87SUFFdEIsTUFBTSxTQUFTLEdBQ2IsT0FBTywrQkFBK0IsS0FBSyxRQUFRO1FBQ2pELENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2hELENBQUMsQ0FBQyxtQkFBbUIsQ0FBQywrQkFBZ0QsQ0FBQztZQUN2RSxDQUFDLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUM7UUFDdEQsQ0FBQyxDQUFDLCtCQUErQixDQUFDO0lBRXRDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ3RDLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLEtBQUs7UUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUN4QixDQUFDLENBQUM7SUFDSCxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztRQUN0QyxLQUFLO1FB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
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3lfbDFfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsY0FBYyxFQUNkLFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFPTCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUEwQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBaUZ2RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQXFDO0lBQzNELFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxXQUFXO1FBQ3hCLGdCQUFnQixFQUFFLGdCQUFnQjtLQUNuQztJQUNELEtBQUssRUFBRTtRQUNMLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLGdCQUFnQixFQUFFLGFBQWE7S0FDaEM7SUFDRCxNQUFNLEVBQUU7UUFD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
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
-
import type { DebugLogger } from '@aztec/foundation/log';
|
|
4
3
|
/**
|
|
5
4
|
* The names of the current L1 contract addresses.
|
|
6
5
|
* NOTE: When changing this list, make sure to update CLI & CI scripts accordingly.
|
|
7
6
|
* For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
|
|
8
7
|
*/
|
|
9
|
-
export declare const l1ContractsNames: readonly ["rollupAddress", "registryAddress", "inboxAddress", "outboxAddress", "feeJuiceAddress", "feeJuicePortalAddress"];
|
|
8
|
+
export declare const l1ContractsNames: readonly ["rollupAddress", "registryAddress", "inboxAddress", "outboxAddress", "feeJuiceAddress", "feeJuicePortalAddress", "nomismatokopioAddress", "sysstiaAddress", "gerousiaAddress", "apellaAddress"];
|
|
10
9
|
/**
|
|
11
10
|
* Provides the directory of current L1 contract addresses
|
|
12
11
|
*/
|
|
@@ -14,6 +13,4 @@ export type L1ContractAddresses = {
|
|
|
14
13
|
[K in (typeof l1ContractsNames)[number]]: EthAddress;
|
|
15
14
|
};
|
|
16
15
|
export declare const l1ContractAddressesMapping: ConfigMappingsType<L1ContractAddresses>;
|
|
17
|
-
export declare function getL1ContractAddressesFromEnv(): L1ContractAddresses;
|
|
18
|
-
export declare function getL1ContractAddressesFromUrl(url: string, log: DebugLogger): Promise<L1ContractAddresses>;
|
|
19
16
|
//# 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,
|
|
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;AAE3D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,2MAWnB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;KAC/B,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU;CACrD,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,mBAAmB,CAmD9E,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getConfigFromMappings } from '@aztec/foundation/config';
|
|
2
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
2
|
/**
|
|
4
3
|
* The names of the current L1 contract addresses.
|
|
@@ -12,6 +11,10 @@ export const l1ContractsNames = [
|
|
|
12
11
|
'outboxAddress',
|
|
13
12
|
'feeJuiceAddress',
|
|
14
13
|
'feeJuicePortalAddress',
|
|
14
|
+
'nomismatokopioAddress',
|
|
15
|
+
'sysstiaAddress',
|
|
16
|
+
'gerousiaAddress',
|
|
17
|
+
'apellaAddress',
|
|
15
18
|
];
|
|
16
19
|
const parseEnv = (val) => EthAddress.fromString(val);
|
|
17
20
|
export const l1ContractAddressesMapping = {
|
|
@@ -45,33 +48,25 @@ export const l1ContractAddressesMapping = {
|
|
|
45
48
|
description: 'The deployed L1 Fee Juice portal contract address.',
|
|
46
49
|
parseEnv,
|
|
47
50
|
},
|
|
51
|
+
nomismatokopioAddress: {
|
|
52
|
+
env: 'NOMISMATOKOPIO_CONTRACT_ADDRESS',
|
|
53
|
+
description: 'The deployed L1 nomismatokopio contract address',
|
|
54
|
+
parseEnv,
|
|
55
|
+
},
|
|
56
|
+
sysstiaAddress: {
|
|
57
|
+
env: 'SYSSTIA_CONTRACT_ADDRESS',
|
|
58
|
+
description: 'The deployed L1 sysstia contract address',
|
|
59
|
+
parseEnv,
|
|
60
|
+
},
|
|
61
|
+
gerousiaAddress: {
|
|
62
|
+
env: 'GEROUSIA_CONTRACT_ADDRESS',
|
|
63
|
+
description: 'The deployed L1 gerousia contract address',
|
|
64
|
+
parseEnv,
|
|
65
|
+
},
|
|
66
|
+
apellaAddress: {
|
|
67
|
+
env: 'APELLA_CONTRACT_ADDRESS',
|
|
68
|
+
description: 'The deployed L1 apella contract address',
|
|
69
|
+
parseEnv,
|
|
70
|
+
},
|
|
48
71
|
};
|
|
49
|
-
|
|
50
|
-
return getConfigFromMappings(l1ContractAddressesMapping);
|
|
51
|
-
}
|
|
52
|
-
function convertToL1ContractAddresses(obj) {
|
|
53
|
-
if (typeof obj !== 'object' || obj === null) {
|
|
54
|
-
throw new Error('Object is not valid');
|
|
55
|
-
}
|
|
56
|
-
const result = {};
|
|
57
|
-
for (const key of l1ContractsNames) {
|
|
58
|
-
const value = obj[key];
|
|
59
|
-
result[key] = EthAddress.fromString(value);
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
export async function getL1ContractAddressesFromUrl(url, log) {
|
|
64
|
-
try {
|
|
65
|
-
const response = await fetch(url);
|
|
66
|
-
if (!response.ok) {
|
|
67
|
-
throw new Error(`HTTP error when fetching L1 contracts from ${url}. Status: ${response.status}`);
|
|
68
|
-
}
|
|
69
|
-
const data = await response.json();
|
|
70
|
-
return convertToL1ContractAddresses(data);
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
log.error(`Error fetching JSON from ${url}:`, error);
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfY29udHJhY3RfYWRkcmVzc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2wxX2NvbnRyYWN0X2FkZHJlc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLHVCQUF1QjtDQUNmLENBQUM7QUFTWCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBNEM7SUFDakYsYUFBYSxFQUFFO1FBQ2IsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixXQUFXLEVBQUUsMENBQTBDO1FBQ3ZELFFBQVE7S0FDVDtJQUNELGVBQWUsRUFBRTtRQUNmLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsV0FBVyxFQUFFLDRDQUE0QztRQUN6RCxRQUFRO0tBQ1Q7SUFDRCxZQUFZLEVBQUU7UUFDWixHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFdBQVcsRUFBRSx5Q0FBeUM7UUFDdEQsUUFBUTtLQUNUO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixXQUFXLEVBQUUsMENBQTBDO1FBQ3ZELFFBQVE7S0FDVDtJQUNELGVBQWUsRUFBRTtRQUNmLEdBQUcsRUFBRSw0QkFBNEI7UUFDakMsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxRQUFRO0tBQ1Q7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLEVBQUUsbUNBQW1DO1FBQ3hDLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsUUFBUTtLQUNUO0NBQ0YsQ0FBQztBQUVGLE1BQU0sVUFBVSw2QkFBNkI7SUFDM0MsT0FBTyxxQkFBcUIsQ0FBc0IsMEJBQTBCLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBQyxHQUFRO0lBQzVDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFpQyxFQUFFLENBQUM7SUFFaEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsT0FBTyxNQUE2QixDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLDZCQUE2QixDQUFDLEdBQVcsRUFBRSxHQUFnQjtJQUMvRSxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLEdBQUcsYUFBYSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMifQ==
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfY29udHJhY3RfYWRkcmVzc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2wxX2NvbnRyYWN0X2FkZHJlc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGVBQWU7Q0FDUCxDQUFDO0FBU1gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQTRDO0lBQ2pGLGFBQWEsRUFBRTtRQUNiLEdBQUcsRUFBRSx5QkFBeUI7UUFDOUIsV0FBVyxFQUFFLDBDQUEwQztRQUN2RCxRQUFRO0tBQ1Q7SUFDRCxlQUFlLEVBQUU7UUFDZixHQUFHLEVBQUUsMkJBQTJCO1FBQ2hDLFdBQVcsRUFBRSw0Q0FBNEM7UUFDekQsUUFBUTtLQUNUO0lBQ0QsWUFBWSxFQUFFO1FBQ1osR0FBRyxFQUFFLHdCQUF3QjtRQUM3QixXQUFXLEVBQUUseUNBQXlDO1FBQ3RELFFBQVE7S0FDVDtJQUNELGFBQWEsRUFBRTtRQUNiLEdBQUcsRUFBRSx5QkFBeUI7UUFDOUIsV0FBVyxFQUFFLDBDQUEwQztRQUN2RCxRQUFRO0tBQ1Q7SUFDRCxlQUFlLEVBQUU7UUFDZixHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsUUFBUTtLQUNUO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsR0FBRyxFQUFFLG1DQUFtQztRQUN4QyxXQUFXLEVBQUUsb0RBQW9EO1FBQ2pFLFFBQVE7S0FDVDtJQUNELHFCQUFxQixFQUFFO1FBQ3JCLEdBQUcsRUFBRSxpQ0FBaUM7UUFDdEMsV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxRQUFRO0tBQ1Q7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsMEJBQTBCO1FBQy9CLFdBQVcsRUFBRSwwQ0FBMEM7UUFDdkQsUUFBUTtLQUNUO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsR0FBRyxFQUFFLDJCQUEyQjtRQUNoQyxXQUFXLEVBQUUsMkNBQTJDO1FBQ3hELFFBQVE7S0FDVDtJQUNELGFBQWEsRUFBRTtRQUNiLEdBQUcsRUFBRSx5QkFBeUI7UUFDOUIsV0FBVyxFQUFFLHlDQUF5QztRQUN0RCxRQUFRO0tBQ1Q7Q0FDRixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/ethereum",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.60.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"../package.common.json"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aztec/foundation": "0.
|
|
27
|
+
"@aztec/foundation": "0.60.0",
|
|
28
|
+
"@aztec/l1-artifacts": "0.60.0",
|
|
28
29
|
"dotenv": "^16.0.3",
|
|
29
30
|
"tslib": "^2.4.0",
|
|
30
31
|
"viem": "^2.7.15"
|
|
@@ -2,6 +2,28 @@ import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
|
2
2
|
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
|
+
import {
|
|
6
|
+
ApellaAbi,
|
|
7
|
+
ApellaBytecode,
|
|
8
|
+
FeeJuicePortalAbi,
|
|
9
|
+
FeeJuicePortalBytecode,
|
|
10
|
+
GerousiaAbi,
|
|
11
|
+
GerousiaBytecode,
|
|
12
|
+
InboxAbi,
|
|
13
|
+
InboxBytecode,
|
|
14
|
+
NomismatokopioAbi,
|
|
15
|
+
NomismatokopioBytecode,
|
|
16
|
+
OutboxAbi,
|
|
17
|
+
OutboxBytecode,
|
|
18
|
+
RegistryAbi,
|
|
19
|
+
RegistryBytecode,
|
|
20
|
+
RollupAbi,
|
|
21
|
+
RollupBytecode,
|
|
22
|
+
SysstiaAbi,
|
|
23
|
+
SysstiaBytecode,
|
|
24
|
+
TestERC20Abi,
|
|
25
|
+
TestERC20Bytecode,
|
|
26
|
+
} from '@aztec/l1-artifacts';
|
|
5
27
|
|
|
6
28
|
import type { Abi, Narrow } from 'abitype';
|
|
7
29
|
import {
|
|
@@ -89,8 +111,67 @@ export interface L1ContractArtifactsForDeployment {
|
|
|
89
111
|
* Fee juice portal contract artifacts. Optional for now as gas is not strictly enforced
|
|
90
112
|
*/
|
|
91
113
|
feeJuicePortal: ContractArtifacts;
|
|
114
|
+
/**
|
|
115
|
+
* Nomismatokopio contract artifacts.
|
|
116
|
+
*/
|
|
117
|
+
nomismatokopio: ContractArtifacts;
|
|
118
|
+
/**
|
|
119
|
+
* Sysstia contract artifacts.
|
|
120
|
+
*/
|
|
121
|
+
sysstia: ContractArtifacts;
|
|
122
|
+
/**
|
|
123
|
+
* Gerousia contract artifacts.
|
|
124
|
+
*/
|
|
125
|
+
gerousia: ContractArtifacts;
|
|
126
|
+
/**
|
|
127
|
+
* Apella contract artifacts.
|
|
128
|
+
*/
|
|
129
|
+
apella: ContractArtifacts;
|
|
92
130
|
}
|
|
93
131
|
|
|
132
|
+
export const l1Artifacts: L1ContractArtifactsForDeployment = {
|
|
133
|
+
registry: {
|
|
134
|
+
contractAbi: RegistryAbi,
|
|
135
|
+
contractBytecode: RegistryBytecode,
|
|
136
|
+
},
|
|
137
|
+
inbox: {
|
|
138
|
+
contractAbi: InboxAbi,
|
|
139
|
+
contractBytecode: InboxBytecode,
|
|
140
|
+
},
|
|
141
|
+
outbox: {
|
|
142
|
+
contractAbi: OutboxAbi,
|
|
143
|
+
contractBytecode: OutboxBytecode,
|
|
144
|
+
},
|
|
145
|
+
rollup: {
|
|
146
|
+
contractAbi: RollupAbi,
|
|
147
|
+
contractBytecode: RollupBytecode,
|
|
148
|
+
},
|
|
149
|
+
feeJuice: {
|
|
150
|
+
contractAbi: TestERC20Abi,
|
|
151
|
+
contractBytecode: TestERC20Bytecode,
|
|
152
|
+
},
|
|
153
|
+
feeJuicePortal: {
|
|
154
|
+
contractAbi: FeeJuicePortalAbi,
|
|
155
|
+
contractBytecode: FeeJuicePortalBytecode,
|
|
156
|
+
},
|
|
157
|
+
sysstia: {
|
|
158
|
+
contractAbi: SysstiaAbi,
|
|
159
|
+
contractBytecode: SysstiaBytecode,
|
|
160
|
+
},
|
|
161
|
+
nomismatokopio: {
|
|
162
|
+
contractAbi: NomismatokopioAbi,
|
|
163
|
+
contractBytecode: NomismatokopioBytecode,
|
|
164
|
+
},
|
|
165
|
+
gerousia: {
|
|
166
|
+
contractAbi: GerousiaAbi,
|
|
167
|
+
contractBytecode: GerousiaBytecode,
|
|
168
|
+
},
|
|
169
|
+
apella: {
|
|
170
|
+
contractAbi: ApellaAbi,
|
|
171
|
+
contractBytecode: ApellaBytecode,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
|
|
94
175
|
export interface DeployL1ContractsArgs {
|
|
95
176
|
/**
|
|
96
177
|
* The address of the L2 Fee Juice contract.
|
|
@@ -161,7 +242,6 @@ export function createL1Clients(
|
|
|
161
242
|
* @param account - Private Key or HD Account that will deploy the contracts.
|
|
162
243
|
* @param chain - The chain instance to deploy to.
|
|
163
244
|
* @param logger - A logger object.
|
|
164
|
-
* @param contractsToDeploy - The set of L1 artifacts to be deployed
|
|
165
245
|
* @param args - Arguments for initialization of L1 contracts
|
|
166
246
|
* @returns A list of ETH addresses of the deployed contracts.
|
|
167
247
|
*/
|
|
@@ -170,7 +250,6 @@ export const deployL1Contracts = async (
|
|
|
170
250
|
account: HDAccount | PrivateKeyAccount,
|
|
171
251
|
chain: Chain,
|
|
172
252
|
logger: DebugLogger,
|
|
173
|
-
contractsToDeploy: L1ContractArtifactsForDeployment,
|
|
174
253
|
args: DeployL1ContractsArgs,
|
|
175
254
|
): Promise<DeployL1Contracts> => {
|
|
176
255
|
// We are assuming that you are running this on a local anvil node which have 1s block times
|
|
@@ -186,7 +265,7 @@ export const deployL1Contracts = async (
|
|
|
186
265
|
return await (await fetch(rpcUrl, content)).json();
|
|
187
266
|
};
|
|
188
267
|
if (isAnvilTestChain(chain.id)) {
|
|
189
|
-
const interval = 12;
|
|
268
|
+
const interval = 12; // @todo #8084
|
|
190
269
|
const res = await rpcCall('anvil_setBlockTimestampInterval', [interval]);
|
|
191
270
|
if (res.error) {
|
|
192
271
|
throw new Error(`Error setting block interval: ${res.error.message}`);
|
|
@@ -198,15 +277,51 @@ export const deployL1Contracts = async (
|
|
|
198
277
|
|
|
199
278
|
const walletClient = createWalletClient({ account, chain, transport: http(rpcUrl) });
|
|
200
279
|
const publicClient = createPublicClient({ chain, transport: http(rpcUrl) });
|
|
201
|
-
|
|
280
|
+
// Governance stuff
|
|
281
|
+
const govDeployer = new L1Deployer(walletClient, publicClient, args.salt, logger);
|
|
202
282
|
|
|
203
|
-
const registryAddress = await
|
|
283
|
+
const registryAddress = await govDeployer.deploy(l1Artifacts.registry, [account.address.toString()]);
|
|
204
284
|
logger.info(`Deployed Registry at ${registryAddress}`);
|
|
205
285
|
|
|
206
|
-
const feeJuiceAddress = await
|
|
286
|
+
const feeJuiceAddress = await govDeployer.deploy(l1Artifacts.feeJuice);
|
|
207
287
|
logger.info(`Deployed Fee Juice at ${feeJuiceAddress}`);
|
|
208
288
|
|
|
209
|
-
const
|
|
289
|
+
const nomismatokopioAddress = await govDeployer.deploy(l1Artifacts.nomismatokopio, [
|
|
290
|
+
feeJuiceAddress.toString(),
|
|
291
|
+
1n * 10n ** 18n, // @todo #8084
|
|
292
|
+
account.address.toString(),
|
|
293
|
+
]);
|
|
294
|
+
logger.info(`Deployed Nomismatokopio at ${nomismatokopioAddress}`);
|
|
295
|
+
|
|
296
|
+
const sysstiaAddress = await govDeployer.deploy(l1Artifacts.sysstia, [
|
|
297
|
+
feeJuiceAddress.toString(),
|
|
298
|
+
registryAddress.toString(),
|
|
299
|
+
]);
|
|
300
|
+
logger.info(`Deployed Sysstia at ${sysstiaAddress}`);
|
|
301
|
+
|
|
302
|
+
// @todo #8084
|
|
303
|
+
// @note These numbers are just chosen to make testing simple.
|
|
304
|
+
const quorumSize = 6n;
|
|
305
|
+
const roundSize = 10n;
|
|
306
|
+
const gerousiaAddress = await govDeployer.deploy(l1Artifacts.gerousia, [
|
|
307
|
+
registryAddress.toString(),
|
|
308
|
+
quorumSize,
|
|
309
|
+
roundSize,
|
|
310
|
+
]);
|
|
311
|
+
logger.info(`Deployed Gerousia at ${gerousiaAddress}`);
|
|
312
|
+
|
|
313
|
+
const apellaAddress = await govDeployer.deploy(l1Artifacts.apella, [
|
|
314
|
+
feeJuiceAddress.toString(),
|
|
315
|
+
gerousiaAddress.toString(),
|
|
316
|
+
]);
|
|
317
|
+
logger.info(`Deployed Apella at ${apellaAddress}`);
|
|
318
|
+
|
|
319
|
+
await govDeployer.waitForDeployments();
|
|
320
|
+
logger.info(`All governance contracts deployed`);
|
|
321
|
+
|
|
322
|
+
const deployer = new L1Deployer(walletClient, publicClient, args.salt, logger);
|
|
323
|
+
|
|
324
|
+
const feeJuicePortalAddress = await deployer.deploy(l1Artifacts.feeJuicePortal, [
|
|
210
325
|
account.address.toString(),
|
|
211
326
|
registryAddress.toString(),
|
|
212
327
|
feeJuiceAddress.toString(),
|
|
@@ -214,7 +329,7 @@ export const deployL1Contracts = async (
|
|
|
214
329
|
]);
|
|
215
330
|
logger.info(`Deployed Fee Juice Portal at ${feeJuicePortalAddress}`);
|
|
216
331
|
|
|
217
|
-
const rollupAddress = await deployer.deploy(
|
|
332
|
+
const rollupAddress = await deployer.deploy(l1Artifacts.rollup, [
|
|
218
333
|
feeJuicePortalAddress.toString(),
|
|
219
334
|
args.vkTreeRoot.toString(),
|
|
220
335
|
args.protocolContractTreeRoot.toString(),
|
|
@@ -224,23 +339,23 @@ export const deployL1Contracts = async (
|
|
|
224
339
|
logger.info(`Deployed Rollup at ${rollupAddress}`);
|
|
225
340
|
|
|
226
341
|
await deployer.waitForDeployments();
|
|
227
|
-
logger.info(`All contracts deployed`);
|
|
342
|
+
logger.info(`All core contracts deployed`);
|
|
228
343
|
|
|
229
344
|
const feeJuicePortal = getContract({
|
|
230
345
|
address: feeJuicePortalAddress.toString(),
|
|
231
|
-
abi:
|
|
346
|
+
abi: l1Artifacts.feeJuicePortal.contractAbi,
|
|
232
347
|
client: walletClient,
|
|
233
348
|
});
|
|
234
349
|
|
|
235
350
|
const feeJuice = getContract({
|
|
236
351
|
address: feeJuiceAddress.toString(),
|
|
237
|
-
abi:
|
|
352
|
+
abi: l1Artifacts.feeJuice.contractAbi,
|
|
238
353
|
client: walletClient,
|
|
239
354
|
});
|
|
240
355
|
|
|
241
356
|
const rollup = getContract({
|
|
242
357
|
address: getAddress(rollupAddress.toString()),
|
|
243
|
-
abi:
|
|
358
|
+
abi: l1Artifacts.rollup.contractAbi,
|
|
244
359
|
client: walletClient,
|
|
245
360
|
});
|
|
246
361
|
|
|
@@ -310,7 +425,7 @@ export const deployL1Contracts = async (
|
|
|
310
425
|
// We need to call a function on the registry to set the various contract addresses.
|
|
311
426
|
const registryContract = getContract({
|
|
312
427
|
address: getAddress(registryAddress.toString()),
|
|
313
|
-
abi:
|
|
428
|
+
abi: l1Artifacts.registry.contractAbi,
|
|
314
429
|
client: walletClient,
|
|
315
430
|
});
|
|
316
431
|
if (!(await registryContract.read.isRollupRegistered([getAddress(rollupAddress.toString())]))) {
|
|
@@ -323,6 +438,20 @@ export const deployL1Contracts = async (
|
|
|
323
438
|
logger.verbose(`Registry ${registryAddress} has already registered rollup ${rollupAddress}`);
|
|
324
439
|
}
|
|
325
440
|
|
|
441
|
+
// If the owner is not the Apella contract, transfer ownership to the Apella contract
|
|
442
|
+
if ((await registryContract.read.owner([])) !== getAddress(apellaAddress.toString())) {
|
|
443
|
+
const transferOwnershipTxHash = await registryContract.write.transferOwnership(
|
|
444
|
+
[getAddress(apellaAddress.toString())],
|
|
445
|
+
{
|
|
446
|
+
account,
|
|
447
|
+
},
|
|
448
|
+
);
|
|
449
|
+
logger.verbose(
|
|
450
|
+
`Transferring the ownership of the registry contract at ${registryAddress} to the Apella ${apellaAddress} in tx ${transferOwnershipTxHash}`,
|
|
451
|
+
);
|
|
452
|
+
txHashes.push(transferOwnershipTxHash);
|
|
453
|
+
}
|
|
454
|
+
|
|
326
455
|
// Wait for all actions to be mined
|
|
327
456
|
await Promise.all(txHashes.map(txHash => publicClient.waitForTransactionReceipt({ hash: txHash })));
|
|
328
457
|
logger.verbose(`All transactions for L1 deployment have been mined`);
|
|
@@ -334,6 +463,10 @@ export const deployL1Contracts = async (
|
|
|
334
463
|
outboxAddress,
|
|
335
464
|
feeJuiceAddress,
|
|
336
465
|
feeJuicePortalAddress,
|
|
466
|
+
nomismatokopioAddress,
|
|
467
|
+
sysstiaAddress,
|
|
468
|
+
gerousiaAddress,
|
|
469
|
+
apellaAddress,
|
|
337
470
|
};
|
|
338
471
|
|
|
339
472
|
return {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type ConfigMappingsType
|
|
1
|
+
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
-
import type { DebugLogger } from '@aztec/foundation/log';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* The names of the current L1 contract addresses.
|
|
@@ -14,6 +13,10 @@ export const l1ContractsNames = [
|
|
|
14
13
|
'outboxAddress',
|
|
15
14
|
'feeJuiceAddress',
|
|
16
15
|
'feeJuicePortalAddress',
|
|
16
|
+
'nomismatokopioAddress',
|
|
17
|
+
'sysstiaAddress',
|
|
18
|
+
'gerousiaAddress',
|
|
19
|
+
'apellaAddress',
|
|
17
20
|
] as const;
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -56,37 +59,24 @@ export const l1ContractAddressesMapping: ConfigMappingsType<L1ContractAddresses>
|
|
|
56
59
|
description: 'The deployed L1 Fee Juice portal contract address.',
|
|
57
60
|
parseEnv,
|
|
58
61
|
},
|
|
62
|
+
nomismatokopioAddress: {
|
|
63
|
+
env: 'NOMISMATOKOPIO_CONTRACT_ADDRESS',
|
|
64
|
+
description: 'The deployed L1 nomismatokopio contract address',
|
|
65
|
+
parseEnv,
|
|
66
|
+
},
|
|
67
|
+
sysstiaAddress: {
|
|
68
|
+
env: 'SYSSTIA_CONTRACT_ADDRESS',
|
|
69
|
+
description: 'The deployed L1 sysstia contract address',
|
|
70
|
+
parseEnv,
|
|
71
|
+
},
|
|
72
|
+
gerousiaAddress: {
|
|
73
|
+
env: 'GEROUSIA_CONTRACT_ADDRESS',
|
|
74
|
+
description: 'The deployed L1 gerousia contract address',
|
|
75
|
+
parseEnv,
|
|
76
|
+
},
|
|
77
|
+
apellaAddress: {
|
|
78
|
+
env: 'APELLA_CONTRACT_ADDRESS',
|
|
79
|
+
description: 'The deployed L1 apella contract address',
|
|
80
|
+
parseEnv,
|
|
81
|
+
},
|
|
59
82
|
};
|
|
60
|
-
|
|
61
|
-
export function getL1ContractAddressesFromEnv() {
|
|
62
|
-
return getConfigFromMappings<L1ContractAddresses>(l1ContractAddressesMapping);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function convertToL1ContractAddresses(obj: any): L1ContractAddresses {
|
|
66
|
-
if (typeof obj !== 'object' || obj === null) {
|
|
67
|
-
throw new Error('Object is not valid');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const result: Partial<L1ContractAddresses> = {};
|
|
71
|
-
|
|
72
|
-
for (const key of l1ContractsNames) {
|
|
73
|
-
const value = obj[key];
|
|
74
|
-
result[key] = EthAddress.fromString(value);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return result as L1ContractAddresses;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export async function getL1ContractAddressesFromUrl(url: string, log: DebugLogger): Promise<L1ContractAddresses> {
|
|
81
|
-
try {
|
|
82
|
-
const response = await fetch(url);
|
|
83
|
-
if (!response.ok) {
|
|
84
|
-
throw new Error(`HTTP error when fetching L1 contracts from ${url}. Status: ${response.status}`);
|
|
85
|
-
}
|
|
86
|
-
const data = await response.json();
|
|
87
|
-
return convertToL1ContractAddresses(data);
|
|
88
|
-
} catch (error) {
|
|
89
|
-
log.error(`Error fetching JSON from ${url}:`, error);
|
|
90
|
-
throw error;
|
|
91
|
-
}
|
|
92
|
-
}
|