@aztec/ethereum 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928
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 +27 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +63 -8
- package/dest/config.d.ts +17 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +38 -10
- 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/fee_asset_price_oracle.d.ts +105 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
- package/dest/contracts/fee_asset_price_oracle.js +656 -0
- package/dest/contracts/governance.d.ts +135 -35
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +229 -18
- package/dest/contracts/governance_proposer.d.ts +33 -2
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +54 -6
- package/dest/contracts/gse.d.ts +4 -2
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/gse.js +2 -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 +4 -3
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +3 -2
- package/dest/contracts/multicall.d.ts +127 -12
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +201 -94
- 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/registry.d.ts +3 -1
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/registry.js +30 -1
- package/dest/contracts/rollup.d.ts +5437 -34
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +448 -104
- package/dest/contracts/slashing_proposer.d.ts +171 -0
- package/dest/contracts/slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/slashing_proposer.js +753 -0
- package/dest/contracts/watch_event.d.ts +36 -0
- package/dest/contracts/watch_event.d.ts.map +1 -0
- package/dest/contracts/watch_event.js +66 -0
- package/dest/deploy_aztec_l1_contracts.d.ts +5 -9
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +48 -27
- package/dest/deploy_l1_contract.js +3 -3
- 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/generated/l1-contracts-defaults.d.ts +3 -3
- package/dest/generated/l1-contracts-defaults.js +3 -3
- package/dest/l1_artifacts.d.ts +15524 -15847
- 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 +5 -5
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +9 -7
- package/dest/l1_tx_utils/config.d.ts +7 -1
- package/dest/l1_tx_utils/config.d.ts.map +1 -1
- package/dest/l1_tx_utils/config.js +17 -4
- package/dest/l1_tx_utils/factory.d.ts +18 -10
- package/dest/l1_tx_utils/factory.d.ts.map +1 -1
- package/dest/l1_tx_utils/factory.js +17 -7
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +1 -1
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +1 -1
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +15 -15
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +9 -15
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -3
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -1
- package/dest/l1_tx_utils/index-blobs.js +2 -2
- package/dest/l1_tx_utils/index.d.ts +2 -1
- package/dest/l1_tx_utils/index.d.ts.map +1 -1
- package/dest/l1_tx_utils/index.js +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +26 -7
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +156 -79
- 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 +57 -23
- package/dest/l1_tx_utils/tx_delayer.d.ts +58 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
- package/dest/{test → l1_tx_utils}/tx_delayer.js +67 -37
- package/dest/publisher_manager.d.ts +34 -8
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +119 -8
- package/dest/queries.d.ts +13 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +62 -3
- 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 +55 -4
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +104 -3
- package/dest/test/eth_cheat_codes.d.ts +31 -6
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +67 -44
- package/dest/test/index.d.ts +2 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -2
- package/dest/test/recording_rpc_server.d.ts +18 -0
- package/dest/test/recording_rpc_server.d.ts.map +1 -0
- package/dest/test/recording_rpc_server.js +68 -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 +23 -3
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +182 -32
- package/dest/test/upgrade_utils.js +2 -2
- package/dest/utils.d.ts +9 -2
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +59 -24
- package/package.json +6 -8
- package/src/client.ts +72 -2
- package/src/config.ts +58 -14
- package/src/contracts/chain_state_override.ts +200 -0
- package/src/contracts/fee_asset_price_oracle.ts +285 -0
- package/src/contracts/governance.ts +313 -13
- package/src/contracts/governance_proposer.ts +58 -9
- package/src/contracts/gse.ts +7 -2
- package/src/contracts/inbox.ts +13 -5
- package/src/contracts/index.ts +3 -2
- package/src/contracts/multicall.ts +243 -105
- package/src/contracts/outbox.ts +42 -8
- package/src/contracts/registry.ts +31 -1
- package/src/contracts/rollup.ts +507 -109
- package/src/contracts/{tally_slashing_proposer.ts → slashing_proposer.ts} +119 -45
- package/src/contracts/watch_event.ts +110 -0
- package/src/deploy_aztec_l1_contracts.ts +75 -39
- package/src/deploy_l1_contract.ts +3 -3
- package/src/foundry_binary.ts +57 -0
- package/src/generated/l1-contracts-defaults.ts +3 -3
- package/src/l1_artifacts.ts +12 -35
- package/src/l1_contract_addresses.ts +120 -94
- package/src/l1_reader.ts +17 -10
- package/src/l1_tx_utils/config.ts +23 -3
- package/src/l1_tx_utils/factory.ts +31 -31
- package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +1 -1
- package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +1 -1
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +43 -54
- package/src/l1_tx_utils/index-blobs.ts +2 -2
- package/src/l1_tx_utils/index.ts +1 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +149 -64
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +57 -17
- package/src/{test → l1_tx_utils}/tx_delayer.ts +93 -56
- package/src/publisher_manager.ts +143 -12
- package/src/queries.ts +70 -4
- package/src/test/blob_kzg_warmup.ts +65 -0
- package/src/test/chain_monitor.ts +148 -3
- package/src/test/eth_cheat_codes.ts +63 -47
- package/src/test/index.ts +1 -2
- package/src/test/recording_rpc_server.ts +69 -0
- package/src/test/rollup_cheat_codes.ts +115 -6
- package/src/test/start_anvil.ts +212 -32
- package/src/test/upgrade_utils.ts +2 -2
- package/src/utils.ts +56 -29
- package/dest/contracts/empire_slashing_proposer.d.ts +0 -67
- package/dest/contracts/empire_slashing_proposer.d.ts.map +0 -1
- package/dest/contracts/empire_slashing_proposer.js +0 -207
- 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/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +0 -26
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +0 -26
- package/dest/test/delayed_tx_utils.d.ts +0 -13
- package/dest/test/delayed_tx_utils.d.ts.map +0 -1
- package/dest/test/delayed_tx_utils.js +0 -28
- package/dest/test/tx_delayer.d.ts +0 -36
- package/dest/test/tx_delayer.d.ts.map +0 -1
- package/src/contracts/empire_slashing_proposer.ts +0 -259
- package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
- package/src/test/delayed_tx_utils.ts +0 -52
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
import type { Abi, ContractEventName, GetContractEventsReturnType, Hex } from 'viem';
|
|
3
|
+
import type { ViemClient } from '../types.js';
|
|
4
|
+
/** Options for {@link watchContractEvent}. */
|
|
5
|
+
export type WatchContractEventOptions = {
|
|
6
|
+
/** How often to poll for new L1 blocks, in ms. Defaults to the client's polling interval. */
|
|
7
|
+
pollingIntervalMs?: number;
|
|
8
|
+
/** Maximum number of blocks per `eth_getLogs` request; wider catch-up ranges are split into chunks. */
|
|
9
|
+
maxBlockRange?: number;
|
|
10
|
+
};
|
|
11
|
+
/** Event identity and handler for {@link watchContractEvent}. */
|
|
12
|
+
export type WatchContractEventParameters<TAbi extends Abi, TEventName extends ContractEventName<TAbi>, TStrict extends boolean | undefined = undefined> = {
|
|
13
|
+
address: Hex;
|
|
14
|
+
abi: TAbi;
|
|
15
|
+
eventName: TEventName;
|
|
16
|
+
/** Whether logs must decode against the event's indexed/non-indexed arguments (defaults to false). */
|
|
17
|
+
strict?: TStrict;
|
|
18
|
+
/** Called once per event log. Errors, thrown or from a returned promise, are caught and logged. */
|
|
19
|
+
onLog: (log: GetContractEventsReturnType<TAbi, TEventName, TStrict>[number]) => unknown;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Watches for contract events by polling `eth_blockNumber` (cached by viem per client) and fetching new logs with
|
|
23
|
+
* ranged `eth_getLogs` requests, never installing server-side filters. Server-side filters are unusable against
|
|
24
|
+
* real-world endpoints: a load balancer routes polls to backends that never saw the filter, and providers report a
|
|
25
|
+
* purged filter with error codes viem does not recognize as "filter gone", so viem's own watchers either churn
|
|
26
|
+
* recreating filters or poll a dead filter id forever while silently missing events.
|
|
27
|
+
*
|
|
28
|
+
* The block that is latest on the first poll becomes the starting cursor, so its events are reported and events from
|
|
29
|
+
* earlier blocks are not. Requests never span more than `maxBlockRange` blocks: catching up after downtime is
|
|
30
|
+
* chunked into multiple requests, and the cursor advances per successful chunk so a failure retries from where it
|
|
31
|
+
* left off on the next tick. A reorg may re-emit events and removals are never reported.
|
|
32
|
+
*
|
|
33
|
+
* @returns A function that stops the watcher.
|
|
34
|
+
*/
|
|
35
|
+
export declare function watchContractEvent<TAbi extends Abi, TEventName extends ContractEventName<TAbi>, TStrict extends boolean | undefined = undefined>(client: ViemClient, logger: Logger, params: WatchContractEventParameters<TAbi, TEventName, TStrict>, options?: WatchContractEventOptions): () => void;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hfZXZlbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvd2F0Y2hfZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLOUMsOENBQThDO0FBQzlDLE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0Qyw2RkFBNkY7SUFDN0YsaUJBQWlCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDM0IsdUdBQXVHO0lBQ3ZHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN4QixDQUFDO0FBRUYsaUVBQWlFO0FBQ2pFLE1BQU0sTUFBTSw0QkFBNEIsQ0FDdEMsSUFBSSxTQUFTLEdBQUcsRUFDaEIsVUFBVSxTQUFTLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUMxQyxPQUFPLFNBQVMsT0FBTyxHQUFHLFNBQVMsR0FBRyxTQUFTLElBQzdDO0lBQ0YsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUNiLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDVixTQUFTLEVBQUUsVUFBVSxDQUFDO0lBQ3RCLHNHQUFzRztJQUN0RyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDakIsbUdBQW1HO0lBQ25HLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLE9BQU8sQ0FBQztDQUN6RixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHdCQUFnQixrQkFBa0IsQ0FDaEMsSUFBSSxTQUFTLEdBQUcsRUFDaEIsVUFBVSxTQUFTLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUMxQyxPQUFPLFNBQVMsT0FBTyxHQUFHLFNBQVMsR0FBRyxTQUFTLEVBRS9DLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsTUFBTSxFQUFFLDRCQUE0QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQy9ELE9BQU8sR0FBRSx5QkFBOEIsR0FDdEMsTUFBTSxJQUFJLENBcURaIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch_event.d.ts","sourceRoot":"","sources":["../../src/contracts/watch_event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,8CAA8C;AAC9C,MAAM,MAAM,yBAAyB,GAAG;IACtC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uGAAuG;IACvG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,4BAA4B,CACtC,IAAI,SAAS,GAAG,EAChB,UAAU,SAAS,iBAAiB,CAAC,IAAI,CAAC,EAC1C,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,IAC7C;IACF,OAAO,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,SAAS,EAAE,UAAU,CAAC;IACtB,sGAAsG;IACtG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,KAAK,EAAE,CAAC,GAAG,EAAE,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;CACzF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,GAAG,EAChB,UAAU,SAAS,iBAAiB,CAAC,IAAI,CAAC,EAC1C,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EAE/C,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAC/D,OAAO,GAAE,yBAA8B,GACtC,MAAM,IAAI,CAqDZ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { RunningPromise } from '@aztec/foundation/promise';
|
|
2
|
+
/** Default maximum number of blocks queried per `eth_getLogs` request. */ const DEFAULT_MAX_BLOCK_RANGE = 100;
|
|
3
|
+
/**
|
|
4
|
+
* Watches for contract events by polling `eth_blockNumber` (cached by viem per client) and fetching new logs with
|
|
5
|
+
* ranged `eth_getLogs` requests, never installing server-side filters. Server-side filters are unusable against
|
|
6
|
+
* real-world endpoints: a load balancer routes polls to backends that never saw the filter, and providers report a
|
|
7
|
+
* purged filter with error codes viem does not recognize as "filter gone", so viem's own watchers either churn
|
|
8
|
+
* recreating filters or poll a dead filter id forever while silently missing events.
|
|
9
|
+
*
|
|
10
|
+
* The block that is latest on the first poll becomes the starting cursor, so its events are reported and events from
|
|
11
|
+
* earlier blocks are not. Requests never span more than `maxBlockRange` blocks: catching up after downtime is
|
|
12
|
+
* chunked into multiple requests, and the cursor advances per successful chunk so a failure retries from where it
|
|
13
|
+
* left off on the next tick. A reorg may re-emit events and removals are never reported.
|
|
14
|
+
*
|
|
15
|
+
* @returns A function that stops the watcher.
|
|
16
|
+
*/ export function watchContractEvent(client, logger, params, options = {}) {
|
|
17
|
+
const { address, abi, eventName, strict, onLog } = params;
|
|
18
|
+
const pollingIntervalMs = options.pollingIntervalMs ?? client.pollingInterval;
|
|
19
|
+
const maxBlockRange = BigInt(options.maxBlockRange ?? DEFAULT_MAX_BLOCK_RANGE);
|
|
20
|
+
const logHandlerError = (err)=>logger.error(`Error handling ${eventName} L1 event`, err);
|
|
21
|
+
const deliver = (log)=>{
|
|
22
|
+
try {
|
|
23
|
+
const result = onLog(log);
|
|
24
|
+
if (result instanceof Promise) {
|
|
25
|
+
result.catch(logHandlerError);
|
|
26
|
+
}
|
|
27
|
+
} catch (err) {
|
|
28
|
+
logHandlerError(err);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
let stopped = false;
|
|
32
|
+
let nextBlock;
|
|
33
|
+
const poll = async ()=>{
|
|
34
|
+
const latestBlock = await client.getBlockNumber();
|
|
35
|
+
if (nextBlock === undefined) {
|
|
36
|
+
nextBlock = latestBlock;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let fromBlock = nextBlock;
|
|
40
|
+
while(fromBlock <= latestBlock && !stopped){
|
|
41
|
+
const chunkEnd = fromBlock + maxBlockRange - 1n;
|
|
42
|
+
const toBlock = chunkEnd < latestBlock ? chunkEnd : latestBlock;
|
|
43
|
+
const logs = await client.getContractEvents({
|
|
44
|
+
address,
|
|
45
|
+
abi,
|
|
46
|
+
eventName,
|
|
47
|
+
strict,
|
|
48
|
+
fromBlock,
|
|
49
|
+
toBlock
|
|
50
|
+
});
|
|
51
|
+
for (const log of logs){
|
|
52
|
+
deliver(log);
|
|
53
|
+
}
|
|
54
|
+
fromBlock = toBlock + 1n;
|
|
55
|
+
nextBlock = fromBlock;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const handlePollError = (err)=>logger.warn(`Error polling for ${eventName} L1 events`, {
|
|
59
|
+
err
|
|
60
|
+
});
|
|
61
|
+
const runner = new RunningPromise(poll, logger, pollingIntervalMs, handlePollError).start();
|
|
62
|
+
return ()=>{
|
|
63
|
+
stopped = true;
|
|
64
|
+
void runner.stop();
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -3,10 +3,9 @@ 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
|
-
import type { L1TxUtilsConfig } from './l1_tx_utils/config.js';
|
|
10
9
|
import type { ExtendedViemWalletClient } from './types.js';
|
|
11
10
|
export interface G2PointJson {
|
|
12
11
|
x0: string;
|
|
@@ -50,7 +49,6 @@ export declare function computeValidatorData(operator: Operator): ValidatorJson;
|
|
|
50
49
|
export interface RollupUpgradeAddresses {
|
|
51
50
|
rollupAddress: string;
|
|
52
51
|
verifierAddress: string;
|
|
53
|
-
slashFactoryAddress: string;
|
|
54
52
|
inboxAddress: string;
|
|
55
53
|
outboxAddress: string;
|
|
56
54
|
feeJuicePortalAddress: string;
|
|
@@ -62,7 +60,6 @@ export interface RollupUpgradeAddresses {
|
|
|
62
60
|
export interface ForgeRollupUpgradeResult {
|
|
63
61
|
rollupAddress: Hex;
|
|
64
62
|
verifierAddress: Hex;
|
|
65
|
-
slashFactoryAddress: Hex;
|
|
66
63
|
inboxAddress: Hex;
|
|
67
64
|
outboxAddress: Hex;
|
|
68
65
|
feeJuicePortalAddress: Hex;
|
|
@@ -156,7 +153,7 @@ export type VerificationRecord = {
|
|
|
156
153
|
constructorArgsHex: Hex;
|
|
157
154
|
libraries: VerificationLibraryEntry[];
|
|
158
155
|
};
|
|
159
|
-
export interface DeployAztecL1ContractsArgs extends Omit<L1ContractsConfig,
|
|
156
|
+
export interface DeployAztecL1ContractsArgs extends Omit<L1ContractsConfig, 'gasLimitBufferPercentage' | 'maxGwei' | 'maxBlobGwei' | 'priorityFeeBumpPercentage' | 'priorityFeeRetryBumpPercentage' | 'minimumPriorityFeePerGas' | 'maxSpeedUpAttempts' | 'checkIntervalMs' | 'stallTimeMs' | 'txTimeoutMs' | 'cancelTxOnTimeout' | 'txCancellationFinalTimeoutMs' | 'txUnseenConsideredDroppedMs' | 'enableDelayer' | 'txDelayerMaxInclusionTimeIntoSlot'> {
|
|
160
157
|
/** The vk tree root. */
|
|
161
158
|
vkTreeRoot: Fr;
|
|
162
159
|
/** The hash of the protocol contracts. */
|
|
@@ -211,7 +208,7 @@ export declare function getDeployAztecL1ContractsEnvVars(args: DeployAztecL1Cont
|
|
|
211
208
|
readonly AZTEC_EXIT_DELAY_SECONDS: string;
|
|
212
209
|
readonly AZTEC_PROVING_COST_PER_MANA: string;
|
|
213
210
|
readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: string;
|
|
214
|
-
readonly
|
|
211
|
+
readonly AZTEC_SLASHER_ENABLED: "false" | "true";
|
|
215
212
|
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: string;
|
|
216
213
|
readonly AZTEC_SLASHING_QUORUM: string | undefined;
|
|
217
214
|
readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: string;
|
|
@@ -242,7 +239,7 @@ export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL
|
|
|
242
239
|
readonly AZTEC_EXIT_DELAY_SECONDS: string;
|
|
243
240
|
readonly AZTEC_PROVING_COST_PER_MANA: string;
|
|
244
241
|
readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: string;
|
|
245
|
-
readonly
|
|
242
|
+
readonly AZTEC_SLASHER_ENABLED: "false" | "true";
|
|
246
243
|
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: string;
|
|
247
244
|
readonly AZTEC_SLASHING_QUORUM: string | undefined;
|
|
248
245
|
readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: string;
|
|
@@ -255,6 +252,5 @@ export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL
|
|
|
255
252
|
*/
|
|
256
253
|
export declare const deployRollupForUpgrade: (privateKey: `0x${string}`, rpcUrl: string, chainId: number, registryAddress: EthAddress, args: Omit<DeployAztecL1ContractsArgs, "activationThreshold" | "ejectionThreshold" | "governanceProposerQuorum" | "governanceProposerRoundSize" | "zkPassportArgs">) => Promise<{
|
|
257
254
|
rollup: RollupContract;
|
|
258
|
-
slashFactoryAddress: `0x${string}`;
|
|
259
255
|
}>;
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2F6dGVjX2wxX2NvbnRyYWN0cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGxveV9henRlY19sMV9jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU0zQyxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLaEMsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTRCLE1BQU0sYUFBYSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBb0YzRCxNQUFNLFdBQVcsV0FBVztJQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNYLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxFQUFFLEVBQUUsTUFBTSxDQUFDO0NBQ1o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsYUFBYTtJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIscUNBQXFDO0lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsa0VBQWtFO0lBQ2xFLGFBQWEsRUFBRSxXQUFXLENBQUM7Q0FDNUI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGtCQUFrQixJQUFJ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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;AAIpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAM3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKhC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"deploy_aztec_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_aztec_l1_contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,14 +14,16 @@ 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');
|
|
20
22
|
const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
21
23
|
/**
|
|
22
|
-
* Runs a process
|
|
23
|
-
*
|
|
24
|
-
*
|
|
24
|
+
* Runs a process and parses JSON deploy results from stdout.
|
|
25
|
+
* Lines starting with JSON_DEPLOY_RESULT_PREFIX are parsed and returned.
|
|
26
|
+
* All other stdout goes to logger.info, stderr goes to logger.warn.
|
|
25
27
|
*/ function runProcess(command, args, env, cwd) {
|
|
26
28
|
const { promise, resolve, reject } = promiseWithResolvers();
|
|
27
29
|
const proc = spawn(command, args, {
|
|
@@ -37,27 +39,42 @@ const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
|
37
39
|
]
|
|
38
40
|
});
|
|
39
41
|
let result;
|
|
42
|
+
let parseError;
|
|
43
|
+
let settled = false;
|
|
40
44
|
readline.createInterface({
|
|
41
45
|
input: proc.stdout
|
|
42
46
|
}).on('line', (line)=>{
|
|
43
47
|
const trimmedLine = line.trim();
|
|
44
48
|
if (trimmedLine.startsWith(JSON_DEPLOY_RESULT_PREFIX)) {
|
|
45
49
|
const jsonStr = trimmedLine.slice(JSON_DEPLOY_RESULT_PREFIX.length).trim();
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
try {
|
|
51
|
+
result = JSON.parse(jsonStr);
|
|
52
|
+
} catch {
|
|
53
|
+
parseError = new Error(`Failed to parse deploy result JSON: ${jsonStr.slice(0, 200)}`);
|
|
54
|
+
}
|
|
48
55
|
} else {
|
|
49
56
|
logger.info(line);
|
|
50
57
|
}
|
|
51
58
|
});
|
|
52
59
|
readline.createInterface({
|
|
53
60
|
input: proc.stderr
|
|
54
|
-
}).on('line', logger.
|
|
61
|
+
}).on('line', logger.warn.bind(logger));
|
|
55
62
|
proc.on('error', (error)=>{
|
|
63
|
+
if (settled) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
settled = true;
|
|
56
67
|
reject(new Error(`Failed to spawn ${command}: ${error.message}`));
|
|
57
68
|
});
|
|
58
69
|
proc.on('close', (code)=>{
|
|
70
|
+
if (settled) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
settled = true;
|
|
59
74
|
if (code !== 0) {
|
|
60
|
-
reject(new Error(`${command} exited with code ${code}
|
|
75
|
+
reject(new Error(`${command} exited with code ${code}`));
|
|
76
|
+
} else if (parseError) {
|
|
77
|
+
reject(parseError);
|
|
61
78
|
} else {
|
|
62
79
|
resolve(result);
|
|
63
80
|
}
|
|
@@ -66,11 +83,11 @@ const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
|
66
83
|
}
|
|
67
84
|
// Covers an edge where where we may have a cached BlobLib that is not meant for production.
|
|
68
85
|
// Despite the profile apparently sometimes cached code remains (so says Lasse after his ignition-monorepo arc).
|
|
69
|
-
async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId) {
|
|
86
|
+
async function maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, script, chainId) {
|
|
70
87
|
if (chainId === mainnet.id) {
|
|
71
88
|
logger.info(`Recompiling ${script} with production profile for mainnet deployment`);
|
|
72
89
|
logger.info('This may take a minute but ensures production BlobLib is used.');
|
|
73
|
-
await runProcess(
|
|
90
|
+
await runProcess(forgeBin, [
|
|
74
91
|
'build',
|
|
75
92
|
script,
|
|
76
93
|
'--force'
|
|
@@ -186,6 +203,7 @@ function cleanupDeployDir() {
|
|
|
186
203
|
* @returns The deployment result with all contract addresses and an l1Client
|
|
187
204
|
*/ export async function deployAztecL1Contracts(rpcUrl, privateKey, chainId, args) {
|
|
188
205
|
logger.info(`Deploying L1 contracts with config: ${jsonStringify(args)}`);
|
|
206
|
+
assertValidSlotDurations(args);
|
|
189
207
|
if (args.initialValidators && args.initialValidators.length > 0 && args.existingTokenAddress) {
|
|
190
208
|
throw new Error('Cannot deploy with both initialValidators and existingTokenAddress. ' + 'Initial validator funding requires minting tokens, which is not possible with an external token.');
|
|
191
209
|
}
|
|
@@ -220,19 +238,17 @@ function cleanupDeployDir() {
|
|
|
220
238
|
}
|
|
221
239
|
// Use foundry-artifacts from l1-artifacts package
|
|
222
240
|
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
241
|
+
const forgeBin = resolveFoundryBinary('forge');
|
|
223
242
|
const FORGE_SCRIPT = 'script/deploy/DeployAztecL1Contracts.s.sol';
|
|
224
|
-
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
243
|
+
await maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
225
244
|
// Verify contracts on Etherscan when on mainnet/sepolia and ETHERSCAN_API_KEY is available.
|
|
226
245
|
const isVerifiableChain = chainId === mainnet.id || chainId === sepolia.id;
|
|
227
246
|
const shouldVerify = isVerifiableChain && !!process.env.ETHERSCAN_API_KEY;
|
|
228
247
|
if (isVerifiableChain && !process.env.ETHERSCAN_API_KEY) {
|
|
229
248
|
logger.warn(`Deploying to chain ${chainId} (${chainId === mainnet.id ? 'mainnet' : 'sepolia'}) without ETHERSCAN_API_KEY. ` + `Contracts will NOT be verified on Etherscan. Set ETHERSCAN_API_KEY environment variable to enable verification.`);
|
|
230
249
|
}
|
|
231
|
-
|
|
232
|
-
const MAGIC_ANVIL_BATCH_SIZE = 8;
|
|
233
|
-
// Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
|
|
250
|
+
const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
|
|
234
251
|
const forgeArgs = [
|
|
235
|
-
'script',
|
|
236
252
|
FORGE_SCRIPT,
|
|
237
253
|
'--sig',
|
|
238
254
|
'run()',
|
|
@@ -240,20 +256,22 @@ function cleanupDeployDir() {
|
|
|
240
256
|
privateKey,
|
|
241
257
|
'--rpc-url',
|
|
242
258
|
rpcUrl,
|
|
243
|
-
'--broadcast',
|
|
244
|
-
'--batch-size',
|
|
245
|
-
MAGIC_ANVIL_BATCH_SIZE.toString(),
|
|
246
259
|
...shouldVerify ? [
|
|
247
260
|
'--verify'
|
|
248
261
|
] : []
|
|
249
262
|
];
|
|
250
263
|
const forgeEnv = {
|
|
264
|
+
// Resolved forge binary picked up by forge_broadcast.js, so it works without forge on PATH.
|
|
265
|
+
FORGE_BIN: forgeBin,
|
|
251
266
|
// Env vars required by l1-contracts/script/deploy/DeploymentConfiguration.sol.
|
|
252
267
|
NETWORK: getActiveNetworkName(),
|
|
253
268
|
FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
|
|
254
269
|
...getDeployAztecL1ContractsEnvVars(args)
|
|
255
270
|
};
|
|
256
|
-
const result = await runProcess(
|
|
271
|
+
const result = await runProcess(process.execPath, [
|
|
272
|
+
scriptPath,
|
|
273
|
+
...forgeArgs
|
|
274
|
+
], forgeEnv, l1ContractsPath);
|
|
257
275
|
if (!result) {
|
|
258
276
|
throw new Error('Forge script did not output deployment result');
|
|
259
277
|
}
|
|
@@ -298,7 +316,6 @@ function cleanupDeployDir() {
|
|
|
298
316
|
governanceProposerAddress: EthAddress.fromString(result.governanceProposerAddress),
|
|
299
317
|
governanceAddress: EthAddress.fromString(result.governanceAddress),
|
|
300
318
|
stakingAssetAddress: EthAddress.fromString(result.stakingAssetAddress),
|
|
301
|
-
slashFactoryAddress: result.slashFactoryAddress ? EthAddress.fromString(result.slashFactoryAddress) : undefined,
|
|
302
319
|
feeAssetHandlerAddress: result.feeAssetHandlerAddress ? EthAddress.fromString(result.feeAssetHandlerAddress) : undefined,
|
|
303
320
|
stakingAssetHandlerAddress: result.stakingAssetHandlerAddress ? EthAddress.fromString(result.stakingAssetHandlerAddress) : undefined,
|
|
304
321
|
zkPassportVerifierAddress: result.zkPassportVerifierAddress ? EthAddress.fromString(result.zkPassportVerifierAddress) : undefined,
|
|
@@ -349,7 +366,7 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
349
366
|
AZTEC_EXIT_DELAY_SECONDS: args.exitDelaySeconds.toString(),
|
|
350
367
|
AZTEC_PROVING_COST_PER_MANA: args.provingCostPerMana.toString(),
|
|
351
368
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: args.initialEthPerFeeAsset.toString(),
|
|
352
|
-
|
|
369
|
+
AZTEC_SLASHER_ENABLED: args.slasherEnabled ? 'true' : 'false',
|
|
353
370
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: args.slashingRoundSizeInEpochs.toString(),
|
|
354
371
|
AZTEC_SLASHING_QUORUM: args.slashingQuorum?.toString(),
|
|
355
372
|
AZTEC_SLASHING_OFFSET_IN_ROUNDS: args.slashingOffsetInRounds.toString(),
|
|
@@ -363,27 +380,32 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
363
380
|
*/ export const deployRollupForUpgrade = async (privateKey, rpcUrl, chainId, registryAddress, args)=>{
|
|
364
381
|
// Use foundry-artifacts from l1-artifacts package
|
|
365
382
|
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
383
|
+
const forgeBin = resolveFoundryBinary('forge');
|
|
366
384
|
const FORGE_SCRIPT = 'script/deploy/DeployRollupForUpgrade.s.sol';
|
|
367
|
-
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
385
|
+
await maybeForgeForceProductionBuild(forgeBin, l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
386
|
+
const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
|
|
368
387
|
const forgeArgs = [
|
|
369
|
-
'script',
|
|
370
388
|
FORGE_SCRIPT,
|
|
371
389
|
'--sig',
|
|
372
390
|
'run()',
|
|
373
391
|
'--private-key',
|
|
374
392
|
privateKey,
|
|
375
393
|
'--rpc-url',
|
|
376
|
-
rpcUrl
|
|
377
|
-
'--broadcast'
|
|
394
|
+
rpcUrl
|
|
378
395
|
];
|
|
379
396
|
const forgeEnv = {
|
|
397
|
+
// Resolved forge binary picked up by forge_broadcast.js, so it works without forge on PATH.
|
|
398
|
+
FORGE_BIN: forgeBin,
|
|
380
399
|
FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
|
|
381
400
|
// Env vars required by l1-contracts/script/deploy/RollupConfiguration.sol.
|
|
382
401
|
REGISTRY_ADDRESS: registryAddress.toString(),
|
|
383
402
|
NETWORK: getActiveNetworkName(),
|
|
384
403
|
...getDeployRollupForUpgradeEnvVars(args)
|
|
385
404
|
};
|
|
386
|
-
const result = await runProcess(
|
|
405
|
+
const result = await runProcess(process.execPath, [
|
|
406
|
+
scriptPath,
|
|
407
|
+
...forgeArgs
|
|
408
|
+
], forgeEnv, l1ContractsPath);
|
|
387
409
|
if (!result) {
|
|
388
410
|
throw new Error('Forge script did not output deployment result');
|
|
389
411
|
}
|
|
@@ -393,7 +415,6 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
393
415
|
// Create RollupContract wrapper for the deployed rollup
|
|
394
416
|
const rollup = new RollupContract(extendedClient, result.rollupAddress);
|
|
395
417
|
return {
|
|
396
|
-
rollup
|
|
397
|
-
slashFactoryAddress: result.slashFactoryAddress
|
|
418
|
+
rollup
|
|
398
419
|
};
|
|
399
420
|
};
|
|
@@ -5,7 +5,7 @@ import { concatHex, encodeAbiParameters, encodeDeployData, getContractAddress, n
|
|
|
5
5
|
import { DEPLOYER_ADDRESS } from './deploy_aztec_l1_contracts.js';
|
|
6
6
|
import { RegisterNewRollupVersionPayloadArtifact } from './l1_artifacts.js';
|
|
7
7
|
import { getL1TxUtilsConfigEnvVars } from './l1_tx_utils/config.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createL1TxUtils } from './l1_tx_utils/factory.js';
|
|
9
9
|
import { formatViemError } from './utils.js';
|
|
10
10
|
export class L1Deployer {
|
|
11
11
|
client;
|
|
@@ -28,7 +28,7 @@ export class L1Deployer {
|
|
|
28
28
|
this.salt = maybeSalt ? padHex(numberToHex(maybeSalt), {
|
|
29
29
|
size: 32
|
|
30
30
|
}) : undefined;
|
|
31
|
-
this.l1TxUtils =
|
|
31
|
+
this.l1TxUtils = createL1TxUtils(this.client, {
|
|
32
32
|
logger: this.logger,
|
|
33
33
|
dateProvider
|
|
34
34
|
}, {
|
|
@@ -130,7 +130,7 @@ export class L1Deployer {
|
|
|
130
130
|
let { l1TxUtils } = opts;
|
|
131
131
|
if (!l1TxUtils) {
|
|
132
132
|
const config = getL1TxUtilsConfigEnvVars();
|
|
133
|
-
l1TxUtils =
|
|
133
|
+
l1TxUtils = createL1TxUtils(extendedClient, {
|
|
134
134
|
logger
|
|
135
135
|
}, {
|
|
136
136
|
...config,
|
|
@@ -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
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Default L1 contracts configuration values from network-defaults.yml */
|
|
2
2
|
export declare const l1ContractsDefaultEnv: {
|
|
3
3
|
readonly ETHEREUM_SLOT_DURATION: 12;
|
|
4
|
-
readonly AZTEC_SLOT_DURATION:
|
|
4
|
+
readonly AZTEC_SLOT_DURATION: 72;
|
|
5
5
|
readonly AZTEC_EPOCH_DURATION: 32;
|
|
6
6
|
readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
|
|
7
7
|
readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
|
|
@@ -10,12 +10,12 @@ export declare const l1ContractsDefaultEnv: {
|
|
|
10
10
|
readonly AZTEC_EJECTION_THRESHOLD: 50000000000000000000;
|
|
11
11
|
readonly AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000;
|
|
12
12
|
readonly AZTEC_EXIT_DELAY_SECONDS: 172800;
|
|
13
|
-
readonly AZTEC_INBOX_LAG:
|
|
13
|
+
readonly AZTEC_INBOX_LAG: 2;
|
|
14
14
|
readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
|
|
15
15
|
readonly AZTEC_MANA_TARGET: 100000000;
|
|
16
16
|
readonly AZTEC_PROVING_COST_PER_MANA: 100;
|
|
17
17
|
readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000;
|
|
18
|
-
readonly
|
|
18
|
+
readonly AZTEC_SLASHER_ENABLED: true;
|
|
19
19
|
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4;
|
|
20
20
|
readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5;
|
|
21
21
|
readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Do not edit manually - run yarn generate to regenerate
|
|
3
3
|
/** Default L1 contracts configuration values from network-defaults.yml */ export const l1ContractsDefaultEnv = {
|
|
4
4
|
ETHEREUM_SLOT_DURATION: 12,
|
|
5
|
-
AZTEC_SLOT_DURATION:
|
|
5
|
+
AZTEC_SLOT_DURATION: 72,
|
|
6
6
|
AZTEC_EPOCH_DURATION: 32,
|
|
7
7
|
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
8
8
|
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
|
|
12
12
|
AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
|
|
13
13
|
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
14
|
-
AZTEC_INBOX_LAG:
|
|
14
|
+
AZTEC_INBOX_LAG: 2,
|
|
15
15
|
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
16
16
|
AZTEC_MANA_TARGET: 100000000,
|
|
17
17
|
AZTEC_PROVING_COST_PER_MANA: 100,
|
|
18
18
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
19
|
-
|
|
19
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
20
20
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
21
21
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
22
22
|
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0,
|