@aztec/ethereum 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7
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/client.d.ts +17 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +49 -3
- package/dest/config.d.ts +27 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +59 -12
- package/dest/contracts/chain_state_override.d.ts +78 -0
- package/dest/contracts/chain_state_override.d.ts.map +1 -0
- package/dest/contracts/chain_state_override.js +137 -0
- package/dest/contracts/empire_base.d.ts +1 -3
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/fee_asset_price_oracle.d.ts +6 -2
- package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -1
- package/dest/contracts/fee_asset_price_oracle.js +11 -6
- package/dest/contracts/governance.d.ts +135 -35
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +226 -15
- package/dest/contracts/governance_proposer.d.ts +33 -4
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +52 -13
- package/dest/contracts/gse.d.ts +8 -2
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/gse.js +11 -2
- package/dest/contracts/inbox.d.ts +3 -3
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/inbox.js +12 -7
- package/dest/contracts/index.d.ts +3 -3
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +2 -2
- package/dest/contracts/multicall.d.ts +82 -14
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +119 -95
- package/dest/contracts/outbox.d.ts +27 -4
- package/dest/contracts/outbox.d.ts.map +1 -1
- package/dest/contracts/outbox.js +34 -7
- package/dest/contracts/rollup.d.ts +5408 -25
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +349 -66
- package/dest/contracts/slashing_proposer.d.ts +170 -0
- package/dest/contracts/slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/slashing_proposer.js +748 -0
- package/dest/deploy_aztec_l1_contracts.d.ts +18 -10
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +28 -17
- package/dest/foundry_binary.d.ts +13 -0
- package/dest/foundry_binary.d.ts.map +1 -0
- package/dest/foundry_binary.js +52 -0
- package/dest/l1_artifacts.d.ts +14943 -16270
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_artifacts.js +9 -24
- package/dest/l1_contract_addresses.d.ts +61 -65
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +101 -82
- package/dest/l1_reader.d.ts +3 -5
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +3 -6
- package/dest/l1_tx_utils/config.js +3 -3
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +23 -4
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_fee_analyzer.js +65 -3
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +9 -1
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +138 -57
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -1
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +2 -1
- package/dest/l1_tx_utils/tx_delayer.d.ts +5 -3
- package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -1
- package/dest/l1_tx_utils/tx_delayer.js +7 -5
- package/dest/l1_tx_utils/types.d.ts +27 -1
- package/dest/l1_tx_utils/types.d.ts.map +1 -1
- package/dest/l1_tx_utils/types.js +10 -0
- package/dest/publisher_manager.d.ts +18 -6
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +44 -7
- package/dest/queries.d.ts +13 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +69 -4
- package/dest/test/blob_kzg_warmup.d.ts +19 -0
- package/dest/test/blob_kzg_warmup.d.ts.map +1 -0
- package/dest/test/blob_kzg_warmup.js +64 -0
- package/dest/test/chain_monitor.d.ts +34 -2
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +76 -6
- package/dest/test/eth_cheat_codes.d.ts +32 -3
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +83 -37
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -0
- package/dest/test/rollup_cheat_codes.d.ts +60 -3
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +86 -7
- package/dest/test/start_anvil.d.ts +1 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +41 -5
- package/dest/utils.d.ts +9 -2
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +34 -6
- package/package.json +6 -7
- package/src/client.ts +57 -1
- package/src/config.ts +82 -16
- package/src/contracts/chain_state_override.ts +200 -0
- package/src/contracts/empire_base.ts +0 -2
- package/src/contracts/fee_asset_price_oracle.ts +10 -5
- package/src/contracts/governance.ts +310 -10
- package/src/contracts/governance_proposer.ts +56 -13
- package/src/contracts/gse.ts +19 -2
- package/src/contracts/inbox.ts +13 -5
- package/src/contracts/index.ts +2 -2
- package/src/contracts/multicall.ts +183 -106
- package/src/contracts/outbox.ts +42 -8
- package/src/contracts/rollup.ts +389 -63
- package/src/contracts/{tally_slashing_proposer.ts → slashing_proposer.ts} +91 -30
- package/src/deploy_aztec_l1_contracts.ts +32 -18
- package/src/foundry_binary.ts +57 -0
- package/src/l1_artifacts.ts +12 -35
- package/src/l1_contract_addresses.ts +120 -94
- package/src/l1_reader.ts +4 -9
- package/src/l1_tx_utils/config.ts +3 -3
- package/src/l1_tx_utils/l1_fee_analyzer.ts +75 -3
- package/src/l1_tx_utils/l1_tx_utils.ts +122 -48
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +2 -1
- package/src/l1_tx_utils/tx_delayer.ts +16 -7
- package/src/l1_tx_utils/types.ts +32 -0
- package/src/publisher_manager.ts +54 -18
- package/src/queries.ts +76 -4
- package/src/test/blob_kzg_warmup.ts +65 -0
- package/src/test/chain_monitor.ts +93 -5
- package/src/test/eth_cheat_codes.ts +76 -41
- package/src/test/index.ts +1 -0
- package/src/test/rollup_cheat_codes.ts +115 -6
- package/src/test/start_anvil.ts +38 -6
- package/src/utils.ts +30 -6
- package/dest/contracts/empire_slashing_proposer.d.ts +0 -69
- package/dest/contracts/empire_slashing_proposer.d.ts.map +0 -1
- package/dest/contracts/empire_slashing_proposer.js +0 -216
- package/dest/contracts/tally_slashing_proposer.d.ts +0 -140
- package/dest/contracts/tally_slashing_proposer.d.ts.map +0 -1
- package/dest/contracts/tally_slashing_proposer.js +0 -320
- package/dest/generated/l1-contracts-defaults.d.ts +0 -30
- package/dest/generated/l1-contracts-defaults.d.ts.map +0 -1
- package/dest/generated/l1-contracts-defaults.js +0 -30
- package/src/contracts/empire_slashing_proposer.ts +0 -265
- package/src/generated/l1-contracts-defaults.ts +0 -32
|
@@ -3,7 +3,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
3
3
|
import type { Fr } from '@aztec/foundation/schemas';
|
|
4
4
|
import type { Abi, Narrow } from 'abitype';
|
|
5
5
|
import type { Hex } from 'viem';
|
|
6
|
-
import type
|
|
6
|
+
import { type L1ContractsConfig } from './config.js';
|
|
7
7
|
import { RollupContract } from './contracts/rollup.js';
|
|
8
8
|
import type { L1ContractAddresses } from './l1_contract_addresses.js';
|
|
9
9
|
import type { ExtendedViemWalletClient } from './types.js';
|
|
@@ -26,9 +26,10 @@ export interface ValidatorJson {
|
|
|
26
26
|
publicKeyInG2: G2PointJson;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Gets the path to the l1-contracts foundry artifacts directory.
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* Gets the path to the l1-contracts foundry artifacts directory bundled inside @aztec/l1-artifacts.
|
|
30
|
+
* Resolved through the package (its "." export -> dest/index.js) so it works whether the package is
|
|
31
|
+
* linked via portal (monorepo) or installed under node_modules (published npm) — resolution follows
|
|
32
|
+
* the symlink in the portal case. The bundled foundry subtree sits alongside dest/, at <pkg>/l1-contracts.
|
|
32
33
|
*/
|
|
33
34
|
export declare function getL1ContractsPath(): string;
|
|
34
35
|
/**
|
|
@@ -49,7 +50,6 @@ export declare function computeValidatorData(operator: Operator): ValidatorJson;
|
|
|
49
50
|
export interface RollupUpgradeAddresses {
|
|
50
51
|
rollupAddress: string;
|
|
51
52
|
verifierAddress: string;
|
|
52
|
-
slashFactoryAddress: string;
|
|
53
53
|
inboxAddress: string;
|
|
54
54
|
outboxAddress: string;
|
|
55
55
|
feeJuicePortalAddress: string;
|
|
@@ -61,7 +61,6 @@ export interface RollupUpgradeAddresses {
|
|
|
61
61
|
export interface ForgeRollupUpgradeResult {
|
|
62
62
|
rollupAddress: Hex;
|
|
63
63
|
verifierAddress: Hex;
|
|
64
|
-
slashFactoryAddress: Hex;
|
|
65
64
|
inboxAddress: Hex;
|
|
66
65
|
outboxAddress: Hex;
|
|
67
66
|
feeJuicePortalAddress: Hex;
|
|
@@ -210,13 +209,18 @@ export declare function getDeployAztecL1ContractsEnvVars(args: DeployAztecL1Cont
|
|
|
210
209
|
readonly AZTEC_EXIT_DELAY_SECONDS: string;
|
|
211
210
|
readonly AZTEC_PROVING_COST_PER_MANA: string;
|
|
212
211
|
readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: string;
|
|
213
|
-
readonly
|
|
212
|
+
readonly AZTEC_SLASHER_ENABLED: "false" | "true";
|
|
214
213
|
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: string;
|
|
215
214
|
readonly AZTEC_SLASHING_QUORUM: string | undefined;
|
|
216
215
|
readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: string;
|
|
217
216
|
readonly AZTEC_SLASH_AMOUNT_SMALL: string;
|
|
218
217
|
readonly AZTEC_SLASH_AMOUNT_MEDIUM: string;
|
|
219
218
|
readonly AZTEC_SLASH_AMOUNT_LARGE: string;
|
|
219
|
+
readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: string;
|
|
220
|
+
readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: string;
|
|
221
|
+
readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: string;
|
|
222
|
+
readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: string;
|
|
223
|
+
readonly AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: string;
|
|
220
224
|
};
|
|
221
225
|
export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL1ContractsArgs, 'governanceProposerQuorum' | 'governanceProposerRoundSize' | 'ejectionThreshold' | 'activationThreshold' | 'getZkPassportArgs'>): {
|
|
222
226
|
readonly INITIAL_VALIDATORS: string;
|
|
@@ -241,19 +245,23 @@ export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL
|
|
|
241
245
|
readonly AZTEC_EXIT_DELAY_SECONDS: string;
|
|
242
246
|
readonly AZTEC_PROVING_COST_PER_MANA: string;
|
|
243
247
|
readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: string;
|
|
244
|
-
readonly
|
|
248
|
+
readonly AZTEC_SLASHER_ENABLED: "false" | "true";
|
|
245
249
|
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: string;
|
|
246
250
|
readonly AZTEC_SLASHING_QUORUM: string | undefined;
|
|
247
251
|
readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: string;
|
|
248
252
|
readonly AZTEC_SLASH_AMOUNT_SMALL: string;
|
|
249
253
|
readonly AZTEC_SLASH_AMOUNT_MEDIUM: string;
|
|
250
254
|
readonly AZTEC_SLASH_AMOUNT_LARGE: string;
|
|
255
|
+
readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: string;
|
|
256
|
+
readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: string;
|
|
257
|
+
readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: string;
|
|
258
|
+
readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: string;
|
|
259
|
+
readonly AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: string;
|
|
251
260
|
};
|
|
252
261
|
/**
|
|
253
262
|
* Deploys a new rollup, using the existing canonical version to derive certain values (addresses of assets etc).
|
|
254
263
|
*/
|
|
255
264
|
export declare const deployRollupForUpgrade: (privateKey: `0x${string}`, rpcUrl: string, chainId: number, registryAddress: EthAddress, args: Omit<DeployAztecL1ContractsArgs, "activationThreshold" | "ejectionThreshold" | "governanceProposerQuorum" | "governanceProposerRoundSize" | "zkPassportArgs">) => Promise<{
|
|
256
265
|
rollup: RollupContract;
|
|
257
|
-
slashFactoryAddress: `0x${string}`;
|
|
258
266
|
}>;
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2F6dGVjX2wxX2NvbnRyYWN0cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGxveV9henRlY19sMV9jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU8zQyxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLaEMsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTRCLE1BQU0sYUFBYSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBc0YzRCxNQUFNLFdBQVcsV0FBVztJQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNYLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxFQUFFLEVBQUUsTUFBTSxDQUFDO0NBQ1o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsYUFBYTtJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIscUNBQXFDO0lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsa0VBQWtFO0lBQ2xFLGFBQWEsRUFBRSxXQUFXLENBQUM7Q0FDNUI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixrQkFBa0IsSUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_aztec_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_aztec_l1_contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_aztec_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_aztec_l1_contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,19 +4,22 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
4
4
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
7
|
-
import { fileURLToPath } from '@aztec/foundation/url';
|
|
8
7
|
import { bn254 } from '@noble/curves/bn254';
|
|
9
8
|
import { spawn } from 'child_process';
|
|
10
9
|
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
|
10
|
+
import { createRequire } from 'node:module';
|
|
11
11
|
import { tmpdir } from 'os';
|
|
12
12
|
import { dirname, join, resolve } from 'path';
|
|
13
13
|
import readline from 'readline';
|
|
14
14
|
import { mainnet, sepolia } from 'viem/chains';
|
|
15
15
|
import { createEthereumChain, isAnvilTestChain } from './chain.js';
|
|
16
16
|
import { createExtendedL1Client } from './client.js';
|
|
17
|
+
import { assertValidSlotDurations } from './config.js';
|
|
17
18
|
import { deployMulticall3 } from './contracts/multicall.js';
|
|
18
19
|
import { RollupContract } from './contracts/rollup.js';
|
|
20
|
+
import { resolveFoundryBinary } from './foundry_binary.js';
|
|
19
21
|
const logger = createLogger('ethereum:deploy_aztec_l1_contracts');
|
|
22
|
+
const require = createRequire(import.meta.url);
|
|
20
23
|
const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
21
24
|
/**
|
|
22
25
|
* Runs a process and parses JSON deploy results from stdout.
|
|
@@ -81,11 +84,11 @@ const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
|
81
84
|
}
|
|
82
85
|
// Covers an edge where where we may have a cached BlobLib that is not meant for production.
|
|
83
86
|
// Despite the profile apparently sometimes cached code remains (so says Lasse after his ignition-monorepo arc).
|
|
84
|
-
async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId) {
|
|
87
|
+
async function maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, script, chainId) {
|
|
85
88
|
if (chainId === mainnet.id) {
|
|
86
89
|
logger.info(`Recompiling ${script} with production profile for mainnet deployment`);
|
|
87
90
|
logger.info('This may take a minute but ensures production BlobLib is used.');
|
|
88
|
-
await runProcess(
|
|
91
|
+
await runProcess(forgeBin, [
|
|
89
92
|
'build',
|
|
90
93
|
script,
|
|
91
94
|
'--force'
|
|
@@ -95,14 +98,12 @@ async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId)
|
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
/**
|
|
98
|
-
* Gets the path to the l1-contracts foundry artifacts directory.
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
+
* Gets the path to the l1-contracts foundry artifacts directory bundled inside @aztec/l1-artifacts.
|
|
102
|
+
* Resolved through the package (its "." export -> dest/index.js) so it works whether the package is
|
|
103
|
+
* linked via portal (monorepo) or installed under node_modules (published npm) — resolution follows
|
|
104
|
+
* the symlink in the portal case. The bundled foundry subtree sits alongside dest/, at <pkg>/l1-contracts.
|
|
101
105
|
*/ export function getL1ContractsPath() {
|
|
102
|
-
|
|
103
|
-
// Go up from yarn-project/ethereum/dest to yarn-project, then to l1-artifacts/l1-contracts
|
|
104
|
-
const l1ContractsPath = resolve(currentDir, '..', '..', 'l1-artifacts', 'l1-contracts');
|
|
105
|
-
return l1ContractsPath;
|
|
106
|
+
return resolve(dirname(require.resolve('@aztec/l1-artifacts')), '..', 'l1-contracts');
|
|
106
107
|
}
|
|
107
108
|
// Cached deployment directory
|
|
108
109
|
let preparedDeployDir;
|
|
@@ -201,6 +202,7 @@ function cleanupDeployDir() {
|
|
|
201
202
|
* @returns The deployment result with all contract addresses and an l1Client
|
|
202
203
|
*/ export async function deployAztecL1Contracts(rpcUrl, privateKey, chainId, args) {
|
|
203
204
|
logger.info(`Deploying L1 contracts with config: ${jsonStringify(args)}`);
|
|
205
|
+
assertValidSlotDurations(args);
|
|
204
206
|
if (args.initialValidators && args.initialValidators.length > 0 && args.existingTokenAddress) {
|
|
205
207
|
throw new Error('Cannot deploy with both initialValidators and existingTokenAddress. ' + 'Initial validator funding requires minting tokens, which is not possible with an external token.');
|
|
206
208
|
}
|
|
@@ -235,8 +237,9 @@ function cleanupDeployDir() {
|
|
|
235
237
|
}
|
|
236
238
|
// Use foundry-artifacts from l1-artifacts package
|
|
237
239
|
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
240
|
+
const forgeBin = resolveFoundryBinary('forge');
|
|
238
241
|
const FORGE_SCRIPT = 'script/deploy/DeployAztecL1Contracts.s.sol';
|
|
239
|
-
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
242
|
+
await maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
240
243
|
// Verify contracts on Etherscan when on mainnet/sepolia and ETHERSCAN_API_KEY is available.
|
|
241
244
|
const isVerifiableChain = chainId === mainnet.id || chainId === sepolia.id;
|
|
242
245
|
const shouldVerify = isVerifiableChain && !!process.env.ETHERSCAN_API_KEY;
|
|
@@ -257,6 +260,8 @@ function cleanupDeployDir() {
|
|
|
257
260
|
] : []
|
|
258
261
|
];
|
|
259
262
|
const forgeEnv = {
|
|
263
|
+
// Resolved forge binary picked up by forge_broadcast.js, so it works without forge on PATH.
|
|
264
|
+
FORGE_BIN: forgeBin,
|
|
260
265
|
// Env vars required by l1-contracts/script/deploy/DeploymentConfiguration.sol.
|
|
261
266
|
NETWORK: getActiveNetworkName(),
|
|
262
267
|
FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
|
|
@@ -310,7 +315,6 @@ function cleanupDeployDir() {
|
|
|
310
315
|
governanceProposerAddress: EthAddress.fromString(result.governanceProposerAddress),
|
|
311
316
|
governanceAddress: EthAddress.fromString(result.governanceAddress),
|
|
312
317
|
stakingAssetAddress: EthAddress.fromString(result.stakingAssetAddress),
|
|
313
|
-
slashFactoryAddress: result.slashFactoryAddress ? EthAddress.fromString(result.slashFactoryAddress) : undefined,
|
|
314
318
|
feeAssetHandlerAddress: result.feeAssetHandlerAddress ? EthAddress.fromString(result.feeAssetHandlerAddress) : undefined,
|
|
315
319
|
stakingAssetHandlerAddress: result.stakingAssetHandlerAddress ? EthAddress.fromString(result.stakingAssetHandlerAddress) : undefined,
|
|
316
320
|
zkPassportVerifierAddress: result.zkPassportVerifierAddress ? EthAddress.fromString(result.zkPassportVerifierAddress) : undefined,
|
|
@@ -361,13 +365,18 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
361
365
|
AZTEC_EXIT_DELAY_SECONDS: args.exitDelaySeconds.toString(),
|
|
362
366
|
AZTEC_PROVING_COST_PER_MANA: args.provingCostPerMana.toString(),
|
|
363
367
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: args.initialEthPerFeeAsset.toString(),
|
|
364
|
-
|
|
368
|
+
AZTEC_SLASHER_ENABLED: args.slasherEnabled ? 'true' : 'false',
|
|
365
369
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: args.slashingRoundSizeInEpochs.toString(),
|
|
366
370
|
AZTEC_SLASHING_QUORUM: args.slashingQuorum?.toString(),
|
|
367
371
|
AZTEC_SLASHING_OFFSET_IN_ROUNDS: args.slashingOffsetInRounds.toString(),
|
|
368
372
|
AZTEC_SLASH_AMOUNT_SMALL: args.slashAmountSmall.toString(),
|
|
369
373
|
AZTEC_SLASH_AMOUNT_MEDIUM: args.slashAmountMedium.toString(),
|
|
370
|
-
AZTEC_SLASH_AMOUNT_LARGE: args.slashAmountLarge.toString()
|
|
374
|
+
AZTEC_SLASH_AMOUNT_LARGE: args.slashAmountLarge.toString(),
|
|
375
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: args.entryQueueBootstrapValidatorSetSize.toString(),
|
|
376
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: args.entryQueueBootstrapFlushSize.toString(),
|
|
377
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: args.entryQueueFlushSizeMin.toString(),
|
|
378
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: args.entryQueueFlushSizeQuotient.toString(),
|
|
379
|
+
AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: args.entryQueueMaxFlushSize.toString()
|
|
371
380
|
};
|
|
372
381
|
}
|
|
373
382
|
/**
|
|
@@ -375,8 +384,9 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
375
384
|
*/ export const deployRollupForUpgrade = async (privateKey, rpcUrl, chainId, registryAddress, args)=>{
|
|
376
385
|
// Use foundry-artifacts from l1-artifacts package
|
|
377
386
|
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
387
|
+
const forgeBin = resolveFoundryBinary('forge');
|
|
378
388
|
const FORGE_SCRIPT = 'script/deploy/DeployRollupForUpgrade.s.sol';
|
|
379
|
-
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
389
|
+
await maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
380
390
|
const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
|
|
381
391
|
const forgeArgs = [
|
|
382
392
|
FORGE_SCRIPT,
|
|
@@ -388,6 +398,8 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
388
398
|
rpcUrl
|
|
389
399
|
];
|
|
390
400
|
const forgeEnv = {
|
|
401
|
+
// Resolved forge binary picked up by forge_broadcast.js, so it works without forge on PATH.
|
|
402
|
+
FORGE_BIN: forgeBin,
|
|
391
403
|
FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
|
|
392
404
|
// Env vars required by l1-contracts/script/deploy/RollupConfiguration.sol.
|
|
393
405
|
REGISTRY_ADDRESS: registryAddress.toString(),
|
|
@@ -407,7 +419,6 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
407
419
|
// Create RollupContract wrapper for the deployed rollup
|
|
408
420
|
const rollup = new RollupContract(extendedClient, result.rollupAddress);
|
|
409
421
|
return {
|
|
410
|
-
rollup
|
|
411
|
-
slashFactoryAddress: result.slashFactoryAddress
|
|
422
|
+
rollup
|
|
412
423
|
};
|
|
413
424
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locate a Foundry binary (`anvil`, `forge`, ...) without relying on the caller's PATH. Order:
|
|
3
|
+
* 1. `$<NAME>_BIN` (e.g. `$ANVIL_BIN`, `$FORGE_BIN`) — explicit override, e.g. for CI with a pinned
|
|
4
|
+
* version. Throws if set but not pointing at an executable, instead of silently falling back.
|
|
5
|
+
* 2. `~/.aztec/current/internal-bin/<name>` — where aztec-up installs it.
|
|
6
|
+
* 3. `~/.aztec/current/bin/aztec-<name>` — the publicly-exposed symlink.
|
|
7
|
+
* 4. `~/.foundry/bin/<name>` — standalone foundryup install.
|
|
8
|
+
* 5. `command -v <name>` — anything else on PATH.
|
|
9
|
+
*
|
|
10
|
+
* Throws with a directive message if none work.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveFoundryBinary(name: string): string;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm91bmRyeV9iaW5hcnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3VuZHJ5X2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQWdCLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsTUFBTSxDQStCekQifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundry_binary.d.ts","sourceRoot":"","sources":["../src/foundry_binary.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BzD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
import { accessSync, constants } from 'fs';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
function isExecutable(path) {
|
|
6
|
+
try {
|
|
7
|
+
accessSync(path, constants.X_OK);
|
|
8
|
+
return true;
|
|
9
|
+
} catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Locate a Foundry binary (`anvil`, `forge`, ...) without relying on the caller's PATH. Order:
|
|
15
|
+
* 1. `$<NAME>_BIN` (e.g. `$ANVIL_BIN`, `$FORGE_BIN`) — explicit override, e.g. for CI with a pinned
|
|
16
|
+
* version. Throws if set but not pointing at an executable, instead of silently falling back.
|
|
17
|
+
* 2. `~/.aztec/current/internal-bin/<name>` — where aztec-up installs it.
|
|
18
|
+
* 3. `~/.aztec/current/bin/aztec-<name>` — the publicly-exposed symlink.
|
|
19
|
+
* 4. `~/.foundry/bin/<name>` — standalone foundryup install.
|
|
20
|
+
* 5. `command -v <name>` — anything else on PATH.
|
|
21
|
+
*
|
|
22
|
+
* Throws with a directive message if none work.
|
|
23
|
+
*/ export function resolveFoundryBinary(name) {
|
|
24
|
+
const envVar = `${name.toUpperCase()}_BIN`;
|
|
25
|
+
const envBin = process.env[envVar];
|
|
26
|
+
if (envBin) {
|
|
27
|
+
if (!isExecutable(envBin)) {
|
|
28
|
+
throw new Error(`$${envVar} is set to ${envBin}, which does not exist or is not executable.`);
|
|
29
|
+
}
|
|
30
|
+
return envBin;
|
|
31
|
+
}
|
|
32
|
+
const candidates = [
|
|
33
|
+
join(homedir(), '.aztec', 'current', 'internal-bin', name),
|
|
34
|
+
join(homedir(), '.aztec', 'current', 'bin', `aztec-${name}`),
|
|
35
|
+
join(homedir(), '.foundry', 'bin', name)
|
|
36
|
+
];
|
|
37
|
+
for (const path of candidates){
|
|
38
|
+
if (isExecutable(path)) {
|
|
39
|
+
return path;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const which = spawnSync('sh', [
|
|
43
|
+
'-c',
|
|
44
|
+
`command -v ${name}`
|
|
45
|
+
], {
|
|
46
|
+
encoding: 'utf8'
|
|
47
|
+
});
|
|
48
|
+
if (which.status === 0 && which.stdout.trim()) {
|
|
49
|
+
return which.stdout.trim();
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`${name} binary not found. Tried $${envVar}, ~/.aztec/current/internal-bin/${name}, ` + `~/.aztec/current/bin/aztec-${name}, ~/.foundry/bin/${name}, and $PATH. ` + `Install via \`aztec-up\` or set ${envVar} to a working binary.`);
|
|
52
|
+
}
|