@aztec/ethereum 0.0.1-commit.993d240 → 0.0.1-commit.9a89641
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 +11 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +35 -3
- package/dest/config.d.ts +22 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +54 -3
- package/dest/contracts/governance.d.ts +36 -11
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +54 -24
- package/dest/contracts/governance_proposer.d.ts +7 -8
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +7 -10
- 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/multicall.d.ts +5 -3
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +7 -5
- package/dest/contracts/outbox.d.ts +8 -2
- package/dest/contracts/outbox.d.ts.map +1 -1
- package/dest/contracts/outbox.js +6 -2
- package/dest/contracts/rollup.d.ts +176 -9
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +48 -8
- package/dest/contracts/slashing_proposer.d.ts +37 -6
- package/dest/contracts/slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/slashing_proposer.js +447 -17
- package/dest/deploy_aztec_l1_contracts.d.ts +16 -5
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +26 -13
- 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 +1242 -95
- package/dest/l1_artifacts.d.ts.map +1 -1
- 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 +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +84 -22
- 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/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 +1 -1
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +7 -1
- 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 +33 -2
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +71 -6
- package/dest/test/eth_cheat_codes.d.ts +26 -3
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +72 -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 +30 -1
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +27 -0
- 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 +2 -2
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +15 -6
- package/package.json +5 -6
- package/src/client.ts +39 -1
- package/src/config.ts +73 -3
- package/src/contracts/governance.ts +63 -20
- package/src/contracts/governance_proposer.ts +11 -15
- package/src/contracts/gse.ts +19 -2
- package/src/contracts/multicall.ts +8 -5
- package/src/contracts/outbox.ts +6 -2
- package/src/contracts/rollup.ts +57 -8
- package/src/contracts/slashing_proposer.ts +78 -15
- package/src/deploy_aztec_l1_contracts.ts +31 -13
- package/src/foundry_binary.ts +57 -0
- 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 +71 -20
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +2 -1
- package/src/l1_tx_utils/types.ts +32 -0
- package/src/publisher_manager.ts +54 -18
- package/src/queries.ts +6 -0
- package/src/test/blob_kzg_warmup.ts +65 -0
- package/src/test/chain_monitor.ts +88 -5
- package/src/test/eth_cheat_codes.ts +66 -41
- package/src/test/index.ts +1 -0
- package/src/test/rollup_cheat_codes.ts +51 -0
- package/src/test/start_anvil.ts +38 -6
- package/src/utils.ts +12 -6
- 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/generated/l1-contracts-defaults.ts +0 -32
package/dest/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
-
import { type Chain, type HDAccount, type LocalAccount, type PrivateKeyAccount } from 'viem';
|
|
2
|
+
import { type Chain, type FallbackTransport, type HDAccount, type HttpTransport, type LocalAccount, type PrivateKeyAccount } from 'viem';
|
|
3
3
|
import type { ExtendedViemWalletClient, ViemPublicClient } from './types.js';
|
|
4
4
|
type Config = {
|
|
5
5
|
/** List of URLs of Ethereum RPC nodes that services will connect to (comma separated). */
|
|
@@ -12,10 +12,18 @@ type Config = {
|
|
|
12
12
|
l1HttpTimeoutMS?: number;
|
|
13
13
|
};
|
|
14
14
|
export type { Config as EthereumClientConfig };
|
|
15
|
+
/** Error exposed by L1 RPC transports without including provider URLs in its message. */
|
|
16
|
+
export declare class L1RpcError extends Error {
|
|
17
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18
|
+
}
|
|
15
19
|
/** Creates a viem fallback HTTP transport for the given L1 RPC URLs. */
|
|
16
20
|
export declare function makeL1HttpTransport(rpcUrls: string[], opts?: {
|
|
17
21
|
timeout?: number;
|
|
18
|
-
}):
|
|
22
|
+
}): FallbackTransport<HttpTransport[]>;
|
|
23
|
+
/** Returns the HTTP status from an L1 RPC error's cause chain, if one is available. */
|
|
24
|
+
export declare function getL1RpcHttpStatus(err: unknown): number | undefined;
|
|
25
|
+
/** Returns true when an L1 RPC error's cause chain contains the given HTTP status. */
|
|
26
|
+
export declare function isL1RpcHttpStatus(err: unknown, status: number): boolean;
|
|
19
27
|
/**
|
|
20
28
|
* Returns the individual RPC URLs underlying a viem public client that was constructed with a
|
|
21
29
|
* fallback HTTP transport (see {@link makeL1HttpTransport}). Returns an empty array if the
|
|
@@ -29,4 +37,4 @@ export declare function waitForPublicClient(config: Config, logger?: Logger): Pr
|
|
|
29
37
|
export declare function createExtendedL1Client(rpcUrls: string[], mnemonicOrPrivateKeyOrHdAccount: string | HDAccount | PrivateKeyAccount | LocalAccount, chain?: Chain, pollingIntervalMS?: number, addressIndex?: number, opts?: {
|
|
30
38
|
httpTimeoutMS?: number;
|
|
31
39
|
}): ExtendedViemWalletClient;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFDTCxLQUFLLEtBQUssRUFDVixLQUFLLGlCQUFpQixFQUN0QixLQUFLLFNBQVMsRUFFZCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxZQUFZLEVBQ2pCLEtBQUssaUJBQWlCLEVBTXZCLE1BQU0sTUFBTSxDQUFDO0FBS2QsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0UsS0FBSyxNQUFNLEdBQUc7SUFDWiwwRkFBMEY7SUFDMUYsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLHlDQUF5QztJQUN6QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDJDQUEyQztJQUMzQyxxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwwREFBMEQ7SUFDMUQsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQzFCLENBQUM7QUFFRixZQUFZLEVBQUUsTUFBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7QUFFL0MseUZBQXlGO0FBQ3pGLHFCQUFhLFVBQVcsU0FBUSxLQUFLO0lBQ25DLFlBQVksT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxZQUFZLEVBR2xEO0NBQ0Y7QUFFRCx3RUFBd0U7QUFDeEUsd0JBQWdCLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtJQUFFLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLHNDQUVqRjtBQUVELHVGQUF1RjtBQUN2Rix3QkFBZ0Isa0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUVuRTtBQUVELHNGQUFzRjtBQUN0Rix3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FFdkU7QUFrQkQ7Ozs7R0FJRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsTUFBTSxFQUFFLENBV3ZFO0FBSUQsd0RBQXdEO0FBQ3hELHdCQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxnQkFBZ0IsQ0FPaEU7QUFFRCwwRkFBMEY7QUFDMUYsd0JBQXNCLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUlwRztBQXlCRCx3QkFBZ0Isc0JBQXNCLENBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsK0JBQStCLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxpQkFBaUIsR0FBRyxZQUFZLEVBQ3RGLEtBQUssR0FBRSxLQUFlLEVBQ3RCLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUMxQixZQUFZLENBQUMsRUFBRSxNQUFNLEVBQ3JCLElBQUksQ0FBQyxFQUFFO0lBQUUsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FDaEMsd0JBQXdCLENBZ0IxQiJ9
|
package/dest/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAEd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAMvB,MAAM,MAAM,CAAC;AAKd,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7E,KAAK,MAAM,GAAG;IACZ,0FAA0F;IAC1F,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,YAAY,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC;AAE/C,yFAAyF;AACzF,qBAAa,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAGlD;CACF;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,sCAEjF;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvE;AAkBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAWvE;AAID,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAOhE;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIpG;AAyBD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,EACtF,KAAK,GAAE,KAAe,EACtB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,wBAAwB,CAgB1B"}
|
package/dest/client.js
CHANGED
|
@@ -1,13 +1,45 @@
|
|
|
1
1
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
2
|
-
import {
|
|
2
|
+
import { getErrorCause } from '@aztec/foundation/types';
|
|
3
|
+
import { HttpRequestError, createPublicClient, createWalletClient, fallback, http, publicActions } from 'viem';
|
|
3
4
|
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
4
5
|
import { foundry } from 'viem/chains';
|
|
5
6
|
import { createEthereumChain } from './chain.js';
|
|
7
|
+
/** Error exposed by L1 RPC transports without including provider URLs in its message. */ export class L1RpcError extends Error {
|
|
8
|
+
constructor(message, options){
|
|
9
|
+
super(message, options);
|
|
10
|
+
this.name = 'L1RpcError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
6
13
|
/** Creates a viem fallback HTTP transport for the given L1 RPC URLs. */ export function makeL1HttpTransport(rpcUrls, opts) {
|
|
7
|
-
return fallback(rpcUrls.map((url)=>http(url, {
|
|
14
|
+
return wrapL1RpcTransport(fallback(rpcUrls.map((url)=>http(url, {
|
|
8
15
|
batch: false,
|
|
9
16
|
timeout: opts?.timeout
|
|
10
|
-
})));
|
|
17
|
+
}))));
|
|
18
|
+
}
|
|
19
|
+
/** Returns the HTTP status from an L1 RPC error's cause chain, if one is available. */ export function getL1RpcHttpStatus(err) {
|
|
20
|
+
return getErrorCause(err, HttpRequestError)?.status;
|
|
21
|
+
}
|
|
22
|
+
/** Returns true when an L1 RPC error's cause chain contains the given HTTP status. */ export function isL1RpcHttpStatus(err, status) {
|
|
23
|
+
return getL1RpcHttpStatus(err) === status;
|
|
24
|
+
}
|
|
25
|
+
function wrapL1RpcTransport(transport) {
|
|
26
|
+
const wrappedTransport = (parameters)=>{
|
|
27
|
+
const fallbackTransport = transport(parameters);
|
|
28
|
+
const request = async (args)=>{
|
|
29
|
+
try {
|
|
30
|
+
return await fallbackTransport.request(args);
|
|
31
|
+
} catch (err) {
|
|
32
|
+
throw err instanceof L1RpcError ? err : new L1RpcError('L1 RPC request failed', {
|
|
33
|
+
cause: err
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
...fallbackTransport,
|
|
39
|
+
request
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
return wrappedTransport;
|
|
11
43
|
}
|
|
12
44
|
/**
|
|
13
45
|
* Returns the individual RPC URLs underlying a viem public client that was constructed with a
|
package/dest/config.d.ts
CHANGED
|
@@ -68,19 +68,38 @@ export type L1ContractsConfig = {
|
|
|
68
68
|
initialEthPerFeeAsset: bigint;
|
|
69
69
|
/** The number of seconds to wait for an exit */
|
|
70
70
|
exitDelaySeconds: number;
|
|
71
|
+
/** Validator set size at or below which the entry queue uses the bootstrap flush size. */
|
|
72
|
+
entryQueueBootstrapValidatorSetSize: number;
|
|
73
|
+
/** Number of validators admitted from the entry queue per flush during the bootstrap phase. */
|
|
74
|
+
entryQueueBootstrapFlushSize: number;
|
|
75
|
+
/** Minimum number of validators admitted from the entry queue per flush. */
|
|
76
|
+
entryQueueFlushSizeMin: number;
|
|
77
|
+
/** Divisor applied to the queue size to derive the normal per-flush admission count. */
|
|
78
|
+
entryQueueFlushSizeQuotient: number;
|
|
79
|
+
/** Maximum number of validators admitted from the entry queue per flush. */
|
|
80
|
+
entryQueueMaxFlushSize: number;
|
|
71
81
|
} & L1TxUtilsConfig;
|
|
72
82
|
/**
|
|
73
83
|
* Config mappings for L1ContractsConfig.
|
|
74
|
-
* Default values come from
|
|
84
|
+
* Default values come from l1-contracts/scripts/network-defaults.json (published via @aztec/l1-artifacts).
|
|
75
85
|
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
76
86
|
*/
|
|
77
87
|
export declare const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig>;
|
|
78
88
|
/**
|
|
79
89
|
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
80
|
-
* Source of truth:
|
|
90
|
+
* Source of truth: l1-contracts/scripts/network-defaults.json (published via @aztec/l1-artifacts).
|
|
81
91
|
*/
|
|
82
92
|
export declare const DefaultL1ContractsConfig: L1ContractsConfig;
|
|
93
|
+
/**
|
|
94
|
+
* Validates that `ethereumSlotDuration` and `aztecSlotDuration` are positive and that the L2 slot is an exact
|
|
95
|
+
* multiple of the L1 slot. Every L2 slot boundary must land on an L1 slot boundary; a non-multiple pairing
|
|
96
|
+
* desyncs the epoch/checkpoint timing math throughout the sequencer, validator client, and timetables. Returns
|
|
97
|
+
* a list of error messages (empty when valid).
|
|
98
|
+
*/
|
|
99
|
+
export declare function validateSlotDurations(config: Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration'>): string[];
|
|
100
|
+
/** Throws if {@link validateSlotDurations} reports any errors. */
|
|
101
|
+
export declare function assertValidSlotDurations(config: Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration'>): void;
|
|
83
102
|
export declare const genesisStateConfigMappings: ConfigMappingsType<GenesisStateConfig>;
|
|
84
103
|
export declare function getL1ContractsConfigEnvVars(): L1ContractsConfig;
|
|
85
104
|
export declare function getGenesisStateConfigEnvVars(): GenesisStateConfig;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQVF4QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQTJCLE1BQU0seUJBQXlCLENBQUM7QUFFeEYsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0lBQ3RCLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0lBQ3RCLGdFQUFnRTtJQUNoRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztDQUM1QixDQUFDO0FBRUYsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLHlDQUF5QztJQUN6QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsdUZBQXVGO0lBQ3ZGLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQix3Q0FBd0M7SUFDeEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLDJDQUEyQztJQUMzQyx3QkFBd0IsRUFBRSxNQUFNLENBQUM7SUFDakMsb0ZBQW9GO0lBQ3BGLDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQyxpRkFBaUY7SUFDakYsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLHNGQUFzRjtJQUN0RixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLCtFQUErRTtJQUMvRSwwQkFBMEIsRUFBRSxNQUFNLENBQUM7SUFDbkMseUNBQXlDO0lBQ3pDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1Qix5Q0FBeUM7SUFDekMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLG1IQUFtSDtJQUNuSCxzQkFBc0IsRUFBRSxNQUFNLENBQUM7SUFDL0Isd0tBQXdLO0lBQ3hLLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4Qiw0RUFBNEU7SUFDNUUseUJBQXlCLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLGdHQUFnRztJQUNoRyx3QkFBd0IsRUFBRSxNQUFNLENBQUM7SUFDakMseUdBQXlHO0lBQ3pHLDhCQUE4QixFQUFFLE1BQU0sQ0FBQztJQUN2Qyx5RUFBeUU7SUFDekUsY0FBYyxFQUFFLFVBQVUsQ0FBQztJQUMzQiw0SUFBNEk7SUFDNUksc0JBQXNCLEVBQUUsTUFBTSxDQUFDO0lBQy9CLCtFQUErRTtJQUMvRSx1QkFBdUIsRUFBRSxNQUFNLENBQUM7SUFDaEMsMkNBQTJDO0lBQzNDLGNBQWMsRUFBRSxPQUFPLENBQUM7SUFDeEIseUNBQXlDO0lBQ3pDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qiw2QkFBNkI7SUFDN0IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLG1EQUFtRDtJQUNuRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFDekIsZ0VBQWdFO0lBQ2hFLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLHNDQUFzQztJQUN0QywyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFDcEMsMkZBQTJGO0lBQzNGLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLHFDQUFxQztJQUNyQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLGdDQUFnQztJQUNoQyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsZ0VBQWdFO0lBQ2hFLHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUM5QixnREFBZ0Q7SUFDaEQsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLDBGQUEwRjtJQUMxRixtQ0FBbUMsRUFBRSxNQUFNLENBQUM7SUFDNUMsK0ZBQStGO0lBQy9GLDRCQUE0QixFQUFFLE1BQU0sQ0FBQztJQUNyQyw0RUFBNEU7SUFDNUUsc0JBQXNCLEVBQUUsTUFBTSxDQUFDO0lBQy9CLHdGQUF3RjtJQUN4RiwyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFDcEMsNEVBQTRFO0lBQzVFLHNCQUFzQixFQUFFLE1BQU0sQ0FBQztDQUNoQyxHQUFHLGVBQWUsQ0FBQztBQUVwQjs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQStLM0UsQ0FBQztBQUVGOzs7R0FHRztBQUNILGVBQU8sTUFBTSx3QkFBd0IsbUJBQThDLENBQUM7QUFFcEY7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IscUJBQXFCLENBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEdBQUcsbUJBQW1CLENBQUMsR0FDNUUsTUFBTSxFQUFFLENBZVY7QUFFRCxrRUFBa0U7QUFDbEUsd0JBQWdCLHdCQUF3QixDQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDLEdBQzVFLElBQUksQ0FLTjtBQUVELGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FxQjdFLENBQUM7QUFFRix3QkFBZ0IsMkJBQTJCLElBQUksaUJBQWlCLENBRS9EO0FBRUQsd0JBQWdCLDRCQUE0QixJQUFJLGtCQUFrQixDQUVqRSJ9
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAQxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,yBAAyB,CAAC;AAExF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,oFAAoF;IACpF,0BAA0B,EAAE,MAAM,CAAC;IACnC,iFAAiF;IACjF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mHAAmH;IACnH,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wKAAwK;IACxK,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,yBAAyB,EAAE,MAAM,CAAC;IAClC,gGAAgG;IAChG,wBAAwB,EAAE,MAAM,CAAC;IACjC,yGAAyG;IACzG,8BAA8B,EAAE,MAAM,CAAC;IACvC,yEAAyE;IACzE,cAAc,EAAE,UAAU,CAAC;IAC3B,4IAA4I;IAC5I,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,2FAA2F;IAC3F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dest/config.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, omitConfigMappings, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
-
import
|
|
3
|
+
import l1ContractsDefaultEnv from '@aztec/l1-artifacts/network-defaults.json' with {
|
|
4
|
+
type: 'json'
|
|
5
|
+
};
|
|
4
6
|
import { l1TxUtilsConfigMappings } from './l1_tx_utils/config.js';
|
|
5
7
|
/**
|
|
6
8
|
* Config mappings for L1ContractsConfig.
|
|
7
|
-
* Default values come from
|
|
9
|
+
* Default values come from l1-contracts/scripts/network-defaults.json (published via @aztec/l1-artifacts).
|
|
8
10
|
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
9
11
|
*/ export const l1ContractsConfigMappings = {
|
|
10
12
|
ethereumSlotDuration: {
|
|
@@ -153,14 +155,63 @@ import { l1TxUtilsConfigMappings } from './l1_tx_utils/config.js';
|
|
|
153
155
|
description: 'The delay before a validator can exit the set',
|
|
154
156
|
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EXIT_DELAY_SECONDS)
|
|
155
157
|
},
|
|
158
|
+
entryQueueBootstrapValidatorSetSize: {
|
|
159
|
+
env: 'AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE',
|
|
160
|
+
description: 'Validator set size at or below which the entry queue uses the bootstrap flush size.',
|
|
161
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE)
|
|
162
|
+
},
|
|
163
|
+
entryQueueBootstrapFlushSize: {
|
|
164
|
+
env: 'AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE',
|
|
165
|
+
description: 'Number of validators admitted from the entry queue per flush during the bootstrap phase.',
|
|
166
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE)
|
|
167
|
+
},
|
|
168
|
+
entryQueueFlushSizeMin: {
|
|
169
|
+
env: 'AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN',
|
|
170
|
+
description: 'Minimum number of validators admitted from the entry queue per flush.',
|
|
171
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN)
|
|
172
|
+
},
|
|
173
|
+
entryQueueFlushSizeQuotient: {
|
|
174
|
+
env: 'AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT',
|
|
175
|
+
description: 'Divisor applied to the queue size to derive the normal per-flush admission count.',
|
|
176
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT)
|
|
177
|
+
},
|
|
178
|
+
entryQueueMaxFlushSize: {
|
|
179
|
+
env: 'AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE',
|
|
180
|
+
description: 'Maximum number of validators admitted from the entry queue per flush.',
|
|
181
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE)
|
|
182
|
+
},
|
|
156
183
|
...omitConfigMappings(l1TxUtilsConfigMappings, [
|
|
157
184
|
'ethereumSlotDuration'
|
|
158
185
|
])
|
|
159
186
|
};
|
|
160
187
|
/**
|
|
161
188
|
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
162
|
-
* Source of truth:
|
|
189
|
+
* Source of truth: l1-contracts/scripts/network-defaults.json (published via @aztec/l1-artifacts).
|
|
163
190
|
*/ export const DefaultL1ContractsConfig = getDefaultConfig(l1ContractsConfigMappings);
|
|
191
|
+
/**
|
|
192
|
+
* Validates that `ethereumSlotDuration` and `aztecSlotDuration` are positive and that the L2 slot is an exact
|
|
193
|
+
* multiple of the L1 slot. Every L2 slot boundary must land on an L1 slot boundary; a non-multiple pairing
|
|
194
|
+
* desyncs the epoch/checkpoint timing math throughout the sequencer, validator client, and timetables. Returns
|
|
195
|
+
* a list of error messages (empty when valid).
|
|
196
|
+
*/ export function validateSlotDurations(config) {
|
|
197
|
+
const errors = [];
|
|
198
|
+
if (config.ethereumSlotDuration <= 0) {
|
|
199
|
+
errors.push(`ethereumSlotDuration must be positive (got ${config.ethereumSlotDuration})`);
|
|
200
|
+
}
|
|
201
|
+
if (config.aztecSlotDuration <= 0) {
|
|
202
|
+
errors.push(`aztecSlotDuration must be positive (got ${config.aztecSlotDuration})`);
|
|
203
|
+
}
|
|
204
|
+
if (config.ethereumSlotDuration > 0 && config.aztecSlotDuration % config.ethereumSlotDuration !== 0) {
|
|
205
|
+
errors.push(`aztecSlotDuration (${config.aztecSlotDuration}s) must be a multiple of ethereumSlotDuration ` + `(${config.ethereumSlotDuration}s)`);
|
|
206
|
+
}
|
|
207
|
+
return errors;
|
|
208
|
+
}
|
|
209
|
+
/** Throws if {@link validateSlotDurations} reports any errors. */ export function assertValidSlotDurations(config) {
|
|
210
|
+
const errors = validateSlotDurations(config);
|
|
211
|
+
if (errors.length > 0) {
|
|
212
|
+
throw new Error(`Invalid slot duration configuration:\n${errors.map((e)=>` - ${e}`).join('\n')}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
164
215
|
export const genesisStateConfigMappings = {
|
|
165
216
|
testAccounts: {
|
|
166
217
|
env: 'TEST_ACCOUNTS',
|
|
@@ -12,9 +12,19 @@ export declare enum ProposalState {
|
|
|
12
12
|
Executable = 3,
|
|
13
13
|
Rejected = 4,
|
|
14
14
|
Executed = 5,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
Droppable = 6,
|
|
16
|
+
Dropped = 7,
|
|
17
|
+
Expired = 8
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Outcome of {@link ReadOnlyGovernanceContract.getPayloadProposalStatus} for a queried payload.
|
|
21
|
+
* - `'live'`: a proposal referencing the payload is still progressing (Pending/Active/Queued/
|
|
22
|
+
* Executable) or is `Droppable`, so signalling for it again is redundant or premature.
|
|
23
|
+
* - `'executed'`: no live proposal references the payload, but one was already executed within the
|
|
24
|
+
* bounded lookback (or a prior sweep observed the execution and memoized it).
|
|
25
|
+
* - `'none'`: no live or executed proposal references the payload within the bounded lookback.
|
|
26
|
+
*/
|
|
27
|
+
export type PayloadProposalStatus = 'live' | 'executed' | 'none';
|
|
18
28
|
/** Vote tallies on a single proposal. Both fields are mutated by `Governance.vote`. */
|
|
19
29
|
export interface Ballot {
|
|
20
30
|
yea: bigint;
|
|
@@ -91,6 +101,13 @@ export declare class ReadOnlyGovernanceContract {
|
|
|
91
101
|
* proposals) and should be treated as "no original".
|
|
92
102
|
*/
|
|
93
103
|
private readonly originalPayloadCache;
|
|
104
|
+
/**
|
|
105
|
+
* Payloads (lowercased hex) observed as the subject of an `Executed` Governance proposal. Execution
|
|
106
|
+
* is immutable on-chain, so this verdict never expires within a process. It restores the
|
|
107
|
+
* `'executed'` classification for payloads whose executed proposal has since aged past the bounded
|
|
108
|
+
* lookback below. Lost on restart, at which point the bounded-lookback limitation applies again.
|
|
109
|
+
*/
|
|
110
|
+
private readonly executedPayloads;
|
|
94
111
|
constructor(address: Hex, client: ViemClient);
|
|
95
112
|
get address(): EthAddress;
|
|
96
113
|
getGovernanceProposerAddress(): Promise<EthAddress>;
|
|
@@ -116,19 +133,27 @@ export declare class ReadOnlyGovernanceContract {
|
|
|
116
133
|
getProposalState(proposalId: bigint): Promise<ProposalState>;
|
|
117
134
|
getProposalCount(): Promise<bigint>;
|
|
118
135
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
136
|
+
* Classifies the given original payload against the Governance proposal history. Distinguishes a
|
|
137
|
+
* payload that is still the subject of a live proposal (`'live'`) from one whose proposal was
|
|
138
|
+
* already executed (`'executed'`) from one that has no relevant proposal (`'none'`), so callers can
|
|
139
|
+
* stop re-signalling an executed payload while still re-signalling one whose proposal was merely
|
|
140
|
+
* rejected/dropped/expired (each GovernanceProposer round is independent and there is no
|
|
141
|
+
* payload-level uniqueness check on-chain).
|
|
142
|
+
*
|
|
143
|
+
* A proposal matches the payload either directly (its stored `payload` equals the target, as for
|
|
144
|
+
* `proposeWithLock` proposals) or via its `GSEPayload` wrapper unwrapping to the target. `'live'`
|
|
145
|
+
* (including `Droppable`) takes precedence over `'executed'`, so a payload re-submitted while a
|
|
146
|
+
* prior execution is still in the lookback window reads as `'live'`.
|
|
125
147
|
*
|
|
126
148
|
* Implemented as a bounded view-call sweep over `Governance.proposals` rather than an event scan,
|
|
127
149
|
* because `eth_getLogs` over the full deployment history of a long-lived rollup exceeds typical
|
|
128
150
|
* RPC block-range caps. The number of proposals (`proposalCount`) is small in practice, and we
|
|
129
|
-
* walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap.
|
|
151
|
+
* walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap. This
|
|
152
|
+
* makes the `'executed'` verdict a *bounded lookback* rather than permanent suppression: a proposal
|
|
153
|
+
* executed longer ago than the lifetime cap is only reported once it has been observed and
|
|
154
|
+
* memoized in-process (memo is lost on restart).
|
|
130
155
|
*/
|
|
131
|
-
|
|
156
|
+
getPayloadProposalStatus(payload: Hex): Promise<PayloadProposalStatus>;
|
|
132
157
|
private getOriginalPayload;
|
|
133
158
|
awaitProposalActive({ proposalId, logger }: {
|
|
134
159
|
proposalId: bigint;
|
|
@@ -164,4 +189,4 @@ export declare class GovernanceContract extends ReadOnlyGovernanceContract {
|
|
|
164
189
|
logger: Logger;
|
|
165
190
|
}): Promise<void>;
|
|
166
191
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFpQi9GLE1BQU0sTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQzlDLG1CQUFtQixFQUNuQixtQkFBbUIsR0FBRyxlQUFlLEdBQUcsaUJBQWlCLEdBQUcsMkJBQTJCLENBQ3hGLENBQUM7QUFHRixvQkFBWSxhQUFhO0lBQ3ZCLE9BQU8sSUFBQTtJQUNQLE1BQU0sSUFBQTtJQUNOLE1BQU0sSUFBQTtJQUNOLFVBQVUsSUFBQTtJQUNWLFFBQVEsSUFBQTtJQUNSLFFBQVEsSUFBQTtJQUNSLFNBQVMsSUFBQTtJQUNULE9BQU8sSUFBQTtJQUNQLE9BQU8sSUFBQTtDQUNSO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxNQUFNLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUVqRSx1RkFBdUY7QUFDdkYsTUFBTSxXQUFXLE1BQU07SUFDckIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUNaLEdBQUcsRUFBRSxNQUFNLENBQUM7Q0FDYjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFdB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EACR,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,UAAU,EAAoB,MAAM,aAAa,CAAC;AAiB/F,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CACxF,CAAC;AAGF,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,MAAM,IAAA;IACN,MAAM,IAAA;IACN,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,uFAAuF;AACvF,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iHAAiH;AACjH,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,aAAa,EAAE,4BAA4B,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,EAAE,aAAa,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ const ProposerPayloadAbi = [
|
|
|
22
22
|
stateMutability: 'view'
|
|
23
23
|
}
|
|
24
24
|
];
|
|
25
|
-
// NOTE: Must be kept in sync with
|
|
25
|
+
// NOTE: Must be kept in sync with IGovernance.ProposalState in l1-contracts
|
|
26
26
|
export var ProposalState = /*#__PURE__*/ function(ProposalState) {
|
|
27
27
|
ProposalState[ProposalState["Pending"] = 0] = "Pending";
|
|
28
28
|
ProposalState[ProposalState["Active"] = 1] = "Active";
|
|
@@ -30,15 +30,26 @@ export var ProposalState = /*#__PURE__*/ function(ProposalState) {
|
|
|
30
30
|
ProposalState[ProposalState["Executable"] = 3] = "Executable";
|
|
31
31
|
ProposalState[ProposalState["Rejected"] = 4] = "Rejected";
|
|
32
32
|
ProposalState[ProposalState["Executed"] = 5] = "Executed";
|
|
33
|
-
ProposalState[ProposalState["
|
|
34
|
-
ProposalState[ProposalState["
|
|
33
|
+
ProposalState[ProposalState["Droppable"] = 6] = "Droppable";
|
|
34
|
+
ProposalState[ProposalState["Dropped"] = 7] = "Dropped";
|
|
35
|
+
ProposalState[ProposalState["Expired"] = 8] = "Expired";
|
|
35
36
|
return ProposalState;
|
|
36
37
|
}({});
|
|
37
38
|
/** Set of `ProposalState` values for which a proposal is fully immutable on-chain. */ const TERMINAL_PROPOSAL_STATES = new Set([
|
|
38
39
|
5,
|
|
39
40
|
4,
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
7,
|
|
42
|
+
8
|
|
43
|
+
]);
|
|
44
|
+
// Set of `ProposalState` values in which a proposal is still progressing towards execution.
|
|
45
|
+
// `Droppable` is deliberately excluded: it is neither live (it cannot progress on its own) nor
|
|
46
|
+
// terminal (it can resume its lifecycle if the governanceProposer is restored), so it is handled
|
|
47
|
+
// separately and is never memoized as immutable.
|
|
48
|
+
const LIVE_PROPOSAL_STATES = new Set([
|
|
49
|
+
0,
|
|
50
|
+
1,
|
|
51
|
+
2,
|
|
52
|
+
3
|
|
42
53
|
]);
|
|
43
54
|
// Hard upper bound on the wall-clock lifetime of any Governance proposal, in seconds.
|
|
44
55
|
// Each proposal stores its own snapshot of `ProposalConfiguration` at creation time and progresses
|
|
@@ -54,7 +65,7 @@ export const MAX_PROPOSAL_LIFETIME_SECONDS = 4n * 90n * 24n * 3600n;
|
|
|
54
65
|
* `ProposalState` enum. Throws if the value is out of range.
|
|
55
66
|
*/ function asProposalState(raw) {
|
|
56
67
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
57
|
-
if (raw < 0 || raw >
|
|
68
|
+
if (raw < 0 || raw > 8) {
|
|
58
69
|
throw new Error(`Invalid proposal state: ${raw}`);
|
|
59
70
|
}
|
|
60
71
|
return raw;
|
|
@@ -85,10 +96,17 @@ export class ReadOnlyGovernanceContract {
|
|
|
85
96
|
* encodes a proposal whose payload doesn't implement `getOriginalPayload` (e.g. proposeWithLock
|
|
86
97
|
* proposals) and should be treated as "no original".
|
|
87
98
|
*/ originalPayloadCache;
|
|
99
|
+
/**
|
|
100
|
+
* Payloads (lowercased hex) observed as the subject of an `Executed` Governance proposal. Execution
|
|
101
|
+
* is immutable on-chain, so this verdict never expires within a process. It restores the
|
|
102
|
+
* `'executed'` classification for payloads whose executed proposal has since aged past the bounded
|
|
103
|
+
* lookback below. Lost on restart, at which point the bounded-lookback limitation applies again.
|
|
104
|
+
*/ executedPayloads;
|
|
88
105
|
constructor(address, client){
|
|
89
106
|
this.client = client;
|
|
90
107
|
this.proposalCache = new Map();
|
|
91
108
|
this.originalPayloadCache = new Map();
|
|
109
|
+
this.executedPayloads = new Set();
|
|
92
110
|
this.governanceContract = getContract({
|
|
93
111
|
address,
|
|
94
112
|
abi: GovernanceAbi,
|
|
@@ -179,46 +197,58 @@ export class ReadOnlyGovernanceContract {
|
|
|
179
197
|
return this.governanceContract.read.proposalCount();
|
|
180
198
|
}
|
|
181
199
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
200
|
+
* Classifies the given original payload against the Governance proposal history. Distinguishes a
|
|
201
|
+
* payload that is still the subject of a live proposal (`'live'`) from one whose proposal was
|
|
202
|
+
* already executed (`'executed'`) from one that has no relevant proposal (`'none'`), so callers can
|
|
203
|
+
* stop re-signalling an executed payload while still re-signalling one whose proposal was merely
|
|
204
|
+
* rejected/dropped/expired (each GovernanceProposer round is independent and there is no
|
|
205
|
+
* payload-level uniqueness check on-chain).
|
|
206
|
+
*
|
|
207
|
+
* A proposal matches the payload either directly (its stored `payload` equals the target, as for
|
|
208
|
+
* `proposeWithLock` proposals) or via its `GSEPayload` wrapper unwrapping to the target. `'live'`
|
|
209
|
+
* (including `Droppable`) takes precedence over `'executed'`, so a payload re-submitted while a
|
|
210
|
+
* prior execution is still in the lookback window reads as `'live'`.
|
|
188
211
|
*
|
|
189
212
|
* Implemented as a bounded view-call sweep over `Governance.proposals` rather than an event scan,
|
|
190
213
|
* because `eth_getLogs` over the full deployment history of a long-lived rollup exceeds typical
|
|
191
214
|
* RPC block-range caps. The number of proposals (`proposalCount`) is small in practice, and we
|
|
192
|
-
* walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap.
|
|
193
|
-
|
|
215
|
+
* walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap. This
|
|
216
|
+
* makes the `'executed'` verdict a *bounded lookback* rather than permanent suppression: a proposal
|
|
217
|
+
* executed longer ago than the lifetime cap is only reported once it has been observed and
|
|
218
|
+
* memoized in-process (memo is lost on restart).
|
|
219
|
+
*/ async getPayloadProposalStatus(payload) {
|
|
220
|
+
const target = payload.toLowerCase();
|
|
194
221
|
const proposalCount = await this.getProposalCount();
|
|
195
222
|
if (proposalCount === 0n) {
|
|
196
|
-
return
|
|
223
|
+
return this.executedPayloads.has(target) ? 'executed' : 'none';
|
|
197
224
|
}
|
|
198
225
|
// Anything created before this cutoff is guaranteed terminal regardless of its frozen config.
|
|
199
226
|
const block = await this.client.getBlock();
|
|
200
227
|
const hardCutoff = block.timestamp - MAX_PROPOSAL_LIFETIME_SECONDS;
|
|
201
|
-
const target = payload.toLowerCase();
|
|
202
228
|
// Proposals are append-only with monotonically non-decreasing creation timestamps, so iterating
|
|
203
229
|
// from newest -> oldest lets us early-stop as soon as we cross the lifetime cutoff.
|
|
204
230
|
for(let id = proposalCount - 1n; id >= 0n; id--){
|
|
205
231
|
const proposal = await this.getProposal(id);
|
|
206
232
|
// Hard early-stop: every older proposal is also older than the cutoff and therefore terminal.
|
|
207
233
|
if (proposal.creation < hardCutoff) {
|
|
208
|
-
|
|
234
|
+
break;
|
|
209
235
|
}
|
|
236
|
+
const proposalPayload = proposal.payload.toString().toLowerCase();
|
|
210
237
|
const original = await this.getOriginalPayload(proposal.payload);
|
|
211
|
-
|
|
238
|
+
const matches = proposalPayload === target || original !== undefined && original.toLowerCase() === target;
|
|
239
|
+
if (!matches) {
|
|
212
240
|
continue;
|
|
213
241
|
}
|
|
214
|
-
//
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
242
|
+
// A live or Droppable proposal blocks re-signalling and wins over any executed one.
|
|
243
|
+
if (LIVE_PROPOSAL_STATES.has(proposal.state) || proposal.state === 6) {
|
|
244
|
+
return 'live';
|
|
245
|
+
}
|
|
246
|
+
if (proposal.state === 5) {
|
|
247
|
+
this.executedPayloads.add(target);
|
|
218
248
|
}
|
|
219
|
-
|
|
249
|
+
// Rejected/Dropped/Expired proposals allow re-proposing the same payload; keep scanning.
|
|
220
250
|
}
|
|
221
|
-
return
|
|
251
|
+
return this.executedPayloads.has(target) ? 'executed' : 'none';
|
|
222
252
|
}
|
|
223
253
|
/**
|
|
224
254
|
* Resolves the original payload behind a `GSEPayload` wrapper. Returns `undefined` if the
|
|
@@ -4,7 +4,7 @@ import { type Hex, type TransactionReceipt, type TypedDataDefinition } from 'vie
|
|
|
4
4
|
import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
|
|
5
5
|
import type { ViemClient } from '../types.js';
|
|
6
6
|
import { type IEmpireBase } from './empire_base.js';
|
|
7
|
-
import { ReadOnlyGovernanceContract } from './governance.js';
|
|
7
|
+
import { type PayloadProposalStatus, ReadOnlyGovernanceContract } from './governance.js';
|
|
8
8
|
export declare class GovernanceProposerContract implements IEmpireBase {
|
|
9
9
|
readonly client: ViemClient;
|
|
10
10
|
private readonly proposer;
|
|
@@ -21,7 +21,6 @@ export declare class GovernanceProposerContract implements IEmpireBase {
|
|
|
21
21
|
getRegistryAddress(): Promise<EthAddress>;
|
|
22
22
|
getQuorumSize(): Promise<bigint>;
|
|
23
23
|
getRoundSize(): Promise<bigint>;
|
|
24
|
-
getInstance(): Promise<`0x${string}`>;
|
|
25
24
|
computeRound(slot: SlotNumber): Promise<bigint>;
|
|
26
25
|
getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
|
|
27
26
|
lastSignalSlot: SlotNumber;
|
|
@@ -39,13 +38,13 @@ export declare class GovernanceProposerContract implements IEmpireBase {
|
|
|
39
38
|
*/
|
|
40
39
|
getGovernance(): Promise<ReadOnlyGovernanceContract>;
|
|
41
40
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* implements the actual sweep against the Governance contract -- this method exists only as
|
|
45
|
-
* convenience wrapper so callers that already hold a GovernanceProposer reference don't have to
|
|
41
|
+
* Classifies the given original payload against the Governance proposal history (`'live'` /
|
|
42
|
+
* `'executed'` / `'none'`). Delegates to `ReadOnlyGovernanceContract.getPayloadProposalStatus`,
|
|
43
|
+
* which implements the actual sweep against the Governance contract -- this method exists only as
|
|
44
|
+
* a convenience wrapper so callers that already hold a GovernanceProposer reference don't have to
|
|
46
45
|
* resolve the Governance address themselves.
|
|
47
46
|
*/
|
|
48
|
-
|
|
47
|
+
getPayloadProposalStatus(payload: Hex): Promise<PayloadProposalStatus>;
|
|
49
48
|
/**
|
|
50
49
|
* Returns true if the given payload address has no deployed bytecode. Used as a cheap
|
|
51
50
|
* pre-flight check before casting a governance signal — voting for a zero-code address
|
|
@@ -61,4 +60,4 @@ export declare class GovernanceProposerContract implements IEmpireBase {
|
|
|
61
60
|
proposalId: bigint;
|
|
62
61
|
}>;
|
|
63
62
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlX3Byb3Bvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUVMLEtBQUssR0FBRyxFQUNSLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssbUJBQW1CLEVBR3pCLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQThELE1BQU0sa0JBQWtCLENBQUM7QUFDaEgsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsMEJBQTBCLEVBQTZCLE1BQU0saUJBQWlCLENBQUM7QUFFcEgscUJBQWEsMEJBQTJCLFlBQVcsV0FBVzthQVkxQyxNQUFNLEVBQUUsVUFBVTtJQVhwQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBa0U7SUFFM0Y7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFnQztJQUVsRSxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFNMUI7SUFFRCxJQUFXLE9BQU8sSUFBSSxVQUFVLENBRS9CO0lBRVksZ0JBQWdCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUVuRDtJQUdZLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFckQ7SUFFTSxhQUFhLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV0QztJQUVNLFlBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXJDO0lBRU0sWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUVyRDtJQUVZLFlBQVksQ0FDdkIsYUFBYSxFQUFFLEdBQUcsRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUM7UUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDO1FBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDO1FBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7S0FBRSxDQUFDLENBWWpIO0lBRU0saUJBQWlCLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV6RjtJQUVNLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsV0FBVyxDQU1wRDtJQUVZLGdDQUFnQyxDQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUNaLElBQUksRUFBRSxVQUFVLEVBQ2hCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLEdBQUcsRUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FDakQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQWN0QjtJQUVEOzs7O09BSUc7SUFFVSxhQUFhLElBQUksT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBR2hFO0lBRUQ7Ozs7OztPQU1HO0lBQ1Usd0JBQXdCLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FHbEY7SUFFRDs7Ozs7Ozs7T0FRRztJQUNVLGNBQWMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FXakU7SUFFWSxpQkFBaUIsQ0FDNUIsS0FBSyxFQUFFLE1BQU0sRUFDYixTQUFTLEVBQUUsU0FBUyxHQUNuQixPQUFPLENBQUM7UUFDVCxPQUFPLEVBQUUsa0JBQWtCLENBQUM7UUFDNUIsVUFBVSxFQUFFLE1BQU0sQ0FBQztLQUNwQixDQUFDLENBWUQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,0BAA0B,EAA6B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,KAAK,qBAAqB,EAAE,0BAA0B,EAA6B,MAAM,iBAAiB,CAAC;AAEpH,qBAAa,0BAA2B,YAAW,WAAW;aAY1C,MAAM,EAAE,UAAU;IAXpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;IAE3F;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,IAAI,UAAU,CAE/B;IAEY,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEnD;IAGY,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CAErD;IAEM,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtC;IAEM,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAErC;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEY,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAYjH;IAEM,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;IAEM,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAMpD;IAEY,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CActB;IAED;;;;OAIG;IAEU,aAAa,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAGhE;IAED;;;;;;OAMG;IACU,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAGlF;IAED;;;;;;;;OAQG;IACU,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAWjE;IAEY,iBAAiB,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAYD;CACF"}
|
|
@@ -428,9 +428,6 @@ export class GovernanceProposerContract {
|
|
|
428
428
|
getRoundSize() {
|
|
429
429
|
return this.proposer.read.ROUND_SIZE();
|
|
430
430
|
}
|
|
431
|
-
getInstance() {
|
|
432
|
-
return this.proposer.read.getInstance();
|
|
433
|
-
}
|
|
434
431
|
computeRound(slot) {
|
|
435
432
|
return this.proposer.read.computeRound([
|
|
436
433
|
BigInt(slot)
|
|
@@ -471,7 +468,7 @@ export class GovernanceProposerContract {
|
|
|
471
468
|
};
|
|
472
469
|
}
|
|
473
470
|
async createSignalRequestWithSignature(payload, slot, chainId, signerAddress, signer) {
|
|
474
|
-
const signature = await signSignalWithSig(signer, payload, slot, await this.
|
|
471
|
+
const signature = await signSignalWithSig(signer, payload, slot, (await this.getRollupAddress()).toString(), this.address.toString(), chainId);
|
|
475
472
|
return {
|
|
476
473
|
to: this.address.toString(),
|
|
477
474
|
abi: GovernanceProposerAbi,
|
|
@@ -487,14 +484,14 @@ export class GovernanceProposerContract {
|
|
|
487
484
|
return new ReadOnlyGovernanceContract(address, this.client);
|
|
488
485
|
}
|
|
489
486
|
/**
|
|
490
|
-
*
|
|
491
|
-
*
|
|
492
|
-
* implements the actual sweep against the Governance contract -- this method exists only as
|
|
493
|
-
* convenience wrapper so callers that already hold a GovernanceProposer reference don't have to
|
|
487
|
+
* Classifies the given original payload against the Governance proposal history (`'live'` /
|
|
488
|
+
* `'executed'` / `'none'`). Delegates to `ReadOnlyGovernanceContract.getPayloadProposalStatus`,
|
|
489
|
+
* which implements the actual sweep against the Governance contract -- this method exists only as
|
|
490
|
+
* a convenience wrapper so callers that already hold a GovernanceProposer reference don't have to
|
|
494
491
|
* resolve the Governance address themselves.
|
|
495
|
-
*/ async
|
|
492
|
+
*/ async getPayloadProposalStatus(payload) {
|
|
496
493
|
const governance = await this.getGovernance();
|
|
497
|
-
return governance.
|
|
494
|
+
return governance.getPayloadProposalStatus(payload);
|
|
498
495
|
}
|
|
499
496
|
/**
|
|
500
497
|
* Returns true if the given payload address has no deployed bytecode. Used as a cheap
|