@aztec/ethereum 0.0.1-commit.6d3c34e → 0.0.1-commit.7ac86ea28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +15 -28
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +50 -57
- package/dest/contracts/empire_base.d.ts +3 -1
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.d.ts +3 -1
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.js +22 -15
- package/dest/contracts/fee_asset_handler.d.ts +1 -1
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.js +2 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts +101 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
- package/dest/contracts/fee_asset_price_oracle.js +651 -0
- package/dest/contracts/governance.d.ts +3 -1
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +14 -4
- package/dest/contracts/governance_proposer.d.ts +3 -1
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +13 -1
- package/dest/contracts/inbox.d.ts +18 -1
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/inbox.js +32 -1
- package/dest/contracts/index.d.ts +3 -1
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +2 -0
- package/dest/contracts/log.d.ts +13 -0
- package/dest/contracts/log.d.ts.map +1 -0
- package/dest/contracts/log.js +1 -0
- package/dest/contracts/multicall.d.ts +1 -1
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +2 -1
- package/dest/contracts/rollup.d.ts +35 -3
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +76 -6
- package/dest/contracts/tally_slashing_proposer.d.ts +1 -1
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +8 -1
- package/dest/deploy_aztec_l1_contracts.d.ts +7 -3
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +56 -28
- package/dest/deploy_l1_contract.js +3 -3
- package/dest/generated/l1-contracts-defaults.d.ts +30 -0
- package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
- package/dest/generated/l1-contracts-defaults.js +30 -0
- package/dest/l1_artifacts.d.ts +2405 -473
- package/dest/l1_artifacts.d.ts.map +1 -1
- 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 +14 -1
- package/dest/l1_tx_utils/constants.d.ts +1 -1
- package/dest/l1_tx_utils/constants.js +2 -2
- 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 +15 -5
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +47 -13
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +3 -3
- package/dest/l1_tx_utils/tx_delayer.d.ts +56 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
- package/dest/{test → l1_tx_utils}/tx_delayer.js +62 -34
- package/dest/publisher_manager.d.ts +3 -2
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +2 -2
- package/dest/queries.d.ts +2 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +4 -1
- package/dest/test/eth_cheat_codes.d.ts +13 -1
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/index.d.ts +1 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +0 -2
- package/dest/test/rollup_cheat_codes.d.ts +4 -2
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +10 -1
- package/dest/test/start_anvil.js +1 -1
- package/dest/test/upgrade_utils.js +2 -2
- package/dest/utils.d.ts +2 -1
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +46 -0
- package/package.json +8 -7
- package/src/config.ts +58 -56
- package/src/contracts/README.md +157 -0
- package/src/contracts/empire_base.ts +2 -0
- package/src/contracts/empire_slashing_proposer.ts +22 -27
- package/src/contracts/fee_asset_handler.ts +2 -0
- package/src/contracts/fee_asset_price_oracle.ts +280 -0
- package/src/contracts/governance.ts +13 -4
- package/src/contracts/governance_proposer.ts +10 -1
- package/src/contracts/inbox.ts +48 -1
- package/src/contracts/index.ts +2 -0
- package/src/contracts/log.ts +13 -0
- package/src/contracts/multicall.ts +5 -2
- package/src/contracts/rollup.ts +111 -11
- package/src/contracts/tally_slashing_proposer.ts +5 -1
- package/src/deploy_aztec_l1_contracts.ts +80 -35
- package/src/deploy_l1_contract.ts +3 -3
- package/src/generated/l1-contracts-defaults.ts +32 -0
- package/src/l1_tx_utils/config.ts +20 -0
- package/src/l1_tx_utils/constants.ts +2 -2
- 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 +52 -17
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +3 -3
- package/src/{test → l1_tx_utils}/tx_delayer.ts +78 -50
- package/src/publisher_manager.ts +4 -2
- package/src/queries.ts +3 -1
- package/src/test/index.ts +0 -2
- package/src/test/rollup_cheat_codes.ts +11 -2
- package/src/test/start_anvil.ts +1 -1
- package/src/test/upgrade_utils.ts +2 -2
- package/src/utils.ts +53 -0
- 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/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
- package/src/test/delayed_tx_utils.ts +0 -52
package/dest/config.d.ts
CHANGED
|
@@ -56,42 +56,29 @@ export type L1ContractsConfig = {
|
|
|
56
56
|
governanceProposerQuorum?: number;
|
|
57
57
|
/** Governance proposing round size */
|
|
58
58
|
governanceProposerRoundSize: number;
|
|
59
|
+
/** Governance voting duration in seconds (only for local/devnet/next-net, default 3600) */
|
|
60
|
+
governanceVotingDuration?: number;
|
|
59
61
|
/** The mana target for the rollup */
|
|
60
62
|
manaTarget: bigint;
|
|
61
63
|
/** The proving cost per mana */
|
|
62
64
|
provingCostPerMana: bigint;
|
|
65
|
+
/** The initial ETH per fee asset price (with 1e12 precision) */
|
|
66
|
+
initialEthPerFeeAsset: bigint;
|
|
63
67
|
/** The number of seconds to wait for an exit */
|
|
64
68
|
exitDelaySeconds: number;
|
|
65
69
|
} & L1TxUtilsConfig;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
lagInEpochsForValidatorSet: number;
|
|
72
|
-
lagInEpochsForRandao: number;
|
|
73
|
-
inboxLag: number;
|
|
74
|
-
aztecProofSubmissionEpochs: number;
|
|
75
|
-
activationThreshold: bigint;
|
|
76
|
-
ejectionThreshold: bigint;
|
|
77
|
-
localEjectionThreshold: bigint;
|
|
78
|
-
slashAmountSmall: bigint;
|
|
79
|
-
slashAmountMedium: bigint;
|
|
80
|
-
slashAmountLarge: bigint;
|
|
81
|
-
slashingRoundSizeInEpochs: number;
|
|
82
|
-
slashingLifetimeInRounds: number;
|
|
83
|
-
slashingExecutionDelayInRounds: number;
|
|
84
|
-
slashingVetoer: EthAddress;
|
|
85
|
-
governanceProposerRoundSize: number;
|
|
86
|
-
manaTarget: bigint;
|
|
87
|
-
provingCostPerMana: bigint;
|
|
88
|
-
exitDelaySeconds: number;
|
|
89
|
-
slasherFlavor: "tally";
|
|
90
|
-
slashingOffsetInRounds: number;
|
|
91
|
-
slashingDisableDuration: number;
|
|
92
|
-
};
|
|
70
|
+
/**
|
|
71
|
+
* Config mappings for L1ContractsConfig.
|
|
72
|
+
* Default values come from generated l1-contracts-defaults.json (source: defaults.yml).
|
|
73
|
+
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
74
|
+
*/
|
|
93
75
|
export declare const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig>;
|
|
76
|
+
/**
|
|
77
|
+
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
78
|
+
* Source of truth: spartan/environments/defaults.yml -> defaults.l1-contracts
|
|
79
|
+
*/
|
|
80
|
+
export declare const DefaultL1ContractsConfig: L1ContractsConfig;
|
|
94
81
|
export declare const genesisStateConfigMappings: ConfigMappingsType<GenesisStateConfig>;
|
|
95
82
|
export declare function getL1ContractsConfigEnvVars(): L1ContractsConfig;
|
|
96
83
|
export declare function getGenesisStateConfigEnvVars(): GenesisStateConfig;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQVN4QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQTJCLE1BQU0seUJBQXlCLENBQUM7QUFFeEYsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0lBQ3RCLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0NBQ3ZCLENBQUM7QUFFRixNQUFNLE1BQU0saUJBQWlCLEdBQUc7SUFDOUIseUNBQXlDO0lBQ3pDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3Qix1RkFBdUY7SUFDdkYsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLHdDQUF3QztJQUN4QyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsMkNBQTJDO0lBQzNDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQyxvRkFBb0Y7SUFDcEYsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO0lBQ25DLGlGQUFpRjtJQUNqRixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0Isc0ZBQXNGO0lBQ3RGLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsK0VBQStFO0lBQy9FLDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQyx5Q0FBeUM7SUFDekMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO0lBQzVCLHlDQUF5QztJQUN6QyxpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsbUhBQW1IO0lBQ25ILHNCQUFzQixFQUFFLE1BQU0sQ0FBQztJQUMvQix3S0FBd0s7SUFDeEssY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLDRFQUE0RTtJQUM1RSx5QkFBeUIsRUFBRSxNQUFNLENBQUM7SUFDbEMsZ0dBQWdHO0lBQ2hHLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQyx5R0FBeUc7SUFDekcsOEJBQThCLEVBQUUsTUFBTSxDQUFDO0lBQ3ZDLHlFQUF5RTtJQUN6RSxjQUFjLEVBQUUsVUFBVSxDQUFDO0lBQzNCLDRJQUE0STtJQUM1SSxzQkFBc0IsRUFBRSxNQUFNLENBQUM7SUFDL0IsK0VBQStFO0lBQy9FLHVCQUF1QixFQUFFLE1BQU0sQ0FBQztJQUNoQywrQkFBK0I7SUFDL0IsYUFBYSxFQUFFLFFBQVEsR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzNDLDJEQUEyRDtJQUMzRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFDekIsK0NBQStDO0lBQy9DLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixxRUFBcUU7SUFDckUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLGdFQUFnRTtJQUNoRSx3QkFBd0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxzQ0FBc0M7SUFDdEMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDO0lBQ3BDLDJGQUEyRjtJQUMzRix3QkFBd0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxxQ0FBcUM7SUFDckMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixnQ0FBZ0M7SUFDaEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLGdFQUFnRTtJQUNoRSxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsZ0RBQWdEO0lBQ2hELGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUMxQixHQUFHLGVBQWUsQ0FBQztBQUVwQjs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQXlKM0UsQ0FBQztBQUVGOzs7R0FHRztBQUNILGVBQU8sTUFBTSx3QkFBd0IsbUJBQThDLENBQUM7QUFFcEYsZUFBTyxNQUFNLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLGtCQUFrQixDQVc3RSxDQUFDO0FBRUYsd0JBQWdCLDJCQUEyQixJQUFJLGlCQUFpQixDQUUvRDtBQUVELHdCQUFnQiw0QkFBNEIsSUFBSSxrQkFBa0IsQ0FFakUifQ==
|
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,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EASxB,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;CACvB,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,+BAA+B;IAC/B,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,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;CAC1B,GAAG,eAAe,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAyJ3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,mBAA8C,CAAC;AAEpF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE"}
|
package/dest/config.js
CHANGED
|
@@ -1,94 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bigintConfigHelper, booleanConfigHelper, enumConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
1
|
+
import { bigintConfigHelper, booleanConfigHelper, enumConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, omitConfigMappings, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
3
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { l1ContractsDefaultEnv } from './generated/l1-contracts-defaults.js';
|
|
4
4
|
import { l1TxUtilsConfigMappings } from './l1_tx_utils/config.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
lagInEpochsForValidatorSet: 2,
|
|
11
|
-
lagInEpochsForRandao: 2,
|
|
12
|
-
inboxLag: 1,
|
|
13
|
-
aztecProofSubmissionEpochs: 1,
|
|
14
|
-
activationThreshold: 100n * 10n ** 18n,
|
|
15
|
-
ejectionThreshold: 50n * 10n ** 18n,
|
|
16
|
-
localEjectionThreshold: 98n * 10n ** 18n,
|
|
17
|
-
slashAmountSmall: 10n * 10n ** 18n,
|
|
18
|
-
slashAmountMedium: 20n * 10n ** 18n,
|
|
19
|
-
slashAmountLarge: 50n * 10n ** 18n,
|
|
20
|
-
slashingRoundSizeInEpochs: 4,
|
|
21
|
-
slashingLifetimeInRounds: 5,
|
|
22
|
-
slashingExecutionDelayInRounds: 0,
|
|
23
|
-
slashingVetoer: EthAddress.ZERO,
|
|
24
|
-
governanceProposerRoundSize: 300,
|
|
25
|
-
manaTarget: BigInt(100e6),
|
|
26
|
-
provingCostPerMana: BigInt(100),
|
|
27
|
-
exitDelaySeconds: 2 * 24 * 60 * 60,
|
|
28
|
-
slasherFlavor: 'tally',
|
|
29
|
-
slashingOffsetInRounds: 2,
|
|
30
|
-
slashingDisableDuration: 5 * 24 * 60 * 60
|
|
31
|
-
};
|
|
32
|
-
export const l1ContractsConfigMappings = {
|
|
5
|
+
/**
|
|
6
|
+
* Config mappings for L1ContractsConfig.
|
|
7
|
+
* Default values come from generated l1-contracts-defaults.json (source: defaults.yml).
|
|
8
|
+
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
9
|
+
*/ export const l1ContractsConfigMappings = {
|
|
33
10
|
ethereumSlotDuration: {
|
|
34
11
|
env: 'ETHEREUM_SLOT_DURATION',
|
|
35
12
|
description: 'How many seconds an L1 slot lasts.',
|
|
36
|
-
...numberConfigHelper(
|
|
13
|
+
...numberConfigHelper(l1ContractsDefaultEnv.ETHEREUM_SLOT_DURATION)
|
|
37
14
|
},
|
|
38
15
|
aztecSlotDuration: {
|
|
39
16
|
env: 'AZTEC_SLOT_DURATION',
|
|
40
17
|
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
41
|
-
...numberConfigHelper(
|
|
18
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLOT_DURATION)
|
|
42
19
|
},
|
|
43
20
|
aztecEpochDuration: {
|
|
44
21
|
env: 'AZTEC_EPOCH_DURATION',
|
|
45
|
-
description: `How many L2 slots an epoch lasts (maximum
|
|
46
|
-
...numberConfigHelper(
|
|
22
|
+
description: `How many L2 slots an epoch lasts (maximum MAX_CHECKPOINTS_PER_EPOCH).`,
|
|
23
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EPOCH_DURATION)
|
|
47
24
|
},
|
|
48
25
|
aztecTargetCommitteeSize: {
|
|
49
26
|
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
50
27
|
description: 'The target validator committee size.',
|
|
51
|
-
...numberConfigHelper(
|
|
28
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_TARGET_COMMITTEE_SIZE)
|
|
52
29
|
},
|
|
53
30
|
lagInEpochsForValidatorSet: {
|
|
54
31
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET',
|
|
55
32
|
description: 'The number of epochs to lag behind the current epoch for validator selection.',
|
|
56
|
-
...numberConfigHelper(
|
|
33
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET)
|
|
57
34
|
},
|
|
58
35
|
lagInEpochsForRandao: {
|
|
59
36
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_RANDAO',
|
|
60
37
|
description: 'The number of epochs to lag behind the current epoch for randao selection.',
|
|
61
|
-
...numberConfigHelper(
|
|
38
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_RANDAO)
|
|
62
39
|
},
|
|
63
40
|
inboxLag: {
|
|
64
41
|
env: 'AZTEC_INBOX_LAG',
|
|
65
42
|
description: 'The number of checkpoints to lag in the inbox (prevents sequencer DOS attacks).',
|
|
66
|
-
...numberConfigHelper(
|
|
43
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_INBOX_LAG)
|
|
67
44
|
},
|
|
68
45
|
aztecProofSubmissionEpochs: {
|
|
69
46
|
env: 'AZTEC_PROOF_SUBMISSION_EPOCHS',
|
|
70
47
|
description: 'The number of epochs after an epoch ends that proofs are still accepted.',
|
|
71
|
-
...numberConfigHelper(
|
|
48
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_PROOF_SUBMISSION_EPOCHS)
|
|
72
49
|
},
|
|
73
50
|
activationThreshold: {
|
|
74
51
|
env: 'AZTEC_ACTIVATION_THRESHOLD',
|
|
75
52
|
description: 'The deposit amount for a validator',
|
|
76
|
-
...bigintConfigHelper(
|
|
53
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_ACTIVATION_THRESHOLD))
|
|
77
54
|
},
|
|
78
55
|
ejectionThreshold: {
|
|
79
56
|
env: 'AZTEC_EJECTION_THRESHOLD',
|
|
80
57
|
description: 'The minimum stake for a validator.',
|
|
81
|
-
...bigintConfigHelper(
|
|
58
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_EJECTION_THRESHOLD))
|
|
82
59
|
},
|
|
83
60
|
localEjectionThreshold: {
|
|
84
61
|
env: 'AZTEC_LOCAL_EJECTION_THRESHOLD',
|
|
85
62
|
description: 'The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup',
|
|
86
|
-
...bigintConfigHelper(
|
|
63
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_LOCAL_EJECTION_THRESHOLD))
|
|
87
64
|
},
|
|
88
65
|
slashingOffsetInRounds: {
|
|
89
66
|
env: 'AZTEC_SLASHING_OFFSET_IN_ROUNDS',
|
|
90
67
|
description: 'How many slashing rounds back we slash (ie when slashing in round N, we slash for offenses committed during epochs of round N-offset)',
|
|
91
|
-
...numberConfigHelper(
|
|
68
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_OFFSET_IN_ROUNDS)
|
|
92
69
|
},
|
|
93
70
|
slasherFlavor: {
|
|
94
71
|
env: 'AZTEC_SLASHER_FLAVOR',
|
|
@@ -97,22 +74,22 @@ export const l1ContractsConfigMappings = {
|
|
|
97
74
|
'empire',
|
|
98
75
|
'tally',
|
|
99
76
|
'none'
|
|
100
|
-
],
|
|
77
|
+
], l1ContractsDefaultEnv.AZTEC_SLASHER_FLAVOR)
|
|
101
78
|
},
|
|
102
79
|
slashAmountSmall: {
|
|
103
80
|
env: 'AZTEC_SLASH_AMOUNT_SMALL',
|
|
104
81
|
description: 'Small slashing amount for light offenses',
|
|
105
|
-
...bigintConfigHelper(
|
|
82
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_SMALL))
|
|
106
83
|
},
|
|
107
84
|
slashAmountMedium: {
|
|
108
85
|
env: 'AZTEC_SLASH_AMOUNT_MEDIUM',
|
|
109
86
|
description: 'Medium slashing amount for moderate offenses',
|
|
110
|
-
...bigintConfigHelper(
|
|
87
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_MEDIUM))
|
|
111
88
|
},
|
|
112
89
|
slashAmountLarge: {
|
|
113
90
|
env: 'AZTEC_SLASH_AMOUNT_LARGE',
|
|
114
91
|
description: 'Large slashing amount for severe offenses',
|
|
115
|
-
...bigintConfigHelper(
|
|
92
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_LARGE))
|
|
116
93
|
},
|
|
117
94
|
slashingQuorum: {
|
|
118
95
|
env: 'AZTEC_SLASHING_QUORUM',
|
|
@@ -122,28 +99,28 @@ export const l1ContractsConfigMappings = {
|
|
|
122
99
|
slashingRoundSizeInEpochs: {
|
|
123
100
|
env: 'AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS',
|
|
124
101
|
description: 'The slashing round size',
|
|
125
|
-
...numberConfigHelper(
|
|
102
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS)
|
|
126
103
|
},
|
|
127
104
|
slashingLifetimeInRounds: {
|
|
128
105
|
env: 'AZTEC_SLASHING_LIFETIME_IN_ROUNDS',
|
|
129
106
|
description: 'The slashing lifetime in rounds',
|
|
130
|
-
...numberConfigHelper(
|
|
107
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_LIFETIME_IN_ROUNDS)
|
|
131
108
|
},
|
|
132
109
|
slashingExecutionDelayInRounds: {
|
|
133
110
|
env: 'AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS',
|
|
134
111
|
description: 'The slashing execution delay in rounds',
|
|
135
|
-
...numberConfigHelper(
|
|
112
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS)
|
|
136
113
|
},
|
|
137
114
|
slashingVetoer: {
|
|
138
115
|
env: 'AZTEC_SLASHING_VETOER',
|
|
139
116
|
description: 'The slashing vetoer',
|
|
140
117
|
parseEnv: (val)=>EthAddress.fromString(val),
|
|
141
|
-
defaultValue:
|
|
118
|
+
defaultValue: EthAddress.fromString(l1ContractsDefaultEnv.AZTEC_SLASHING_VETOER)
|
|
142
119
|
},
|
|
143
120
|
slashingDisableDuration: {
|
|
144
121
|
env: 'AZTEC_SLASHING_DISABLE_DURATION',
|
|
145
122
|
description: 'How long slashing can be disabled for in seconds when vetoer disables it',
|
|
146
|
-
...numberConfigHelper(
|
|
123
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_DISABLE_DURATION)
|
|
147
124
|
},
|
|
148
125
|
governanceProposerQuorum: {
|
|
149
126
|
env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
|
|
@@ -153,25 +130,41 @@ export const l1ContractsConfigMappings = {
|
|
|
153
130
|
governanceProposerRoundSize: {
|
|
154
131
|
env: 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE',
|
|
155
132
|
description: 'The governance proposing round size',
|
|
156
|
-
...numberConfigHelper(
|
|
133
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE)
|
|
134
|
+
},
|
|
135
|
+
governanceVotingDuration: {
|
|
136
|
+
env: 'AZTEC_GOVERNANCE_VOTING_DURATION',
|
|
137
|
+
description: 'Governance voting duration in seconds (only for local/devnet/next-net)',
|
|
138
|
+
...numberConfigHelper(3600)
|
|
157
139
|
},
|
|
158
140
|
manaTarget: {
|
|
159
141
|
env: 'AZTEC_MANA_TARGET',
|
|
160
142
|
description: 'The mana target for the rollup',
|
|
161
|
-
...bigintConfigHelper(
|
|
143
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_MANA_TARGET))
|
|
162
144
|
},
|
|
163
145
|
provingCostPerMana: {
|
|
164
146
|
env: 'AZTEC_PROVING_COST_PER_MANA',
|
|
165
147
|
description: 'The proving cost per mana',
|
|
166
|
-
...bigintConfigHelper(
|
|
148
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_PROVING_COST_PER_MANA))
|
|
149
|
+
},
|
|
150
|
+
initialEthPerFeeAsset: {
|
|
151
|
+
env: 'AZTEC_INITIAL_ETH_PER_FEE_ASSET',
|
|
152
|
+
description: 'The initial ETH per fee asset price (with 1e12 precision)',
|
|
153
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_INITIAL_ETH_PER_FEE_ASSET))
|
|
167
154
|
},
|
|
168
155
|
exitDelaySeconds: {
|
|
169
156
|
env: 'AZTEC_EXIT_DELAY_SECONDS',
|
|
170
157
|
description: 'The delay before a validator can exit the set',
|
|
171
|
-
...numberConfigHelper(
|
|
158
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EXIT_DELAY_SECONDS)
|
|
172
159
|
},
|
|
173
|
-
...l1TxUtilsConfigMappings
|
|
160
|
+
...omitConfigMappings(l1TxUtilsConfigMappings, [
|
|
161
|
+
'ethereumSlotDuration'
|
|
162
|
+
])
|
|
174
163
|
};
|
|
164
|
+
/**
|
|
165
|
+
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
166
|
+
* Source of truth: spartan/environments/defaults.yml -> defaults.l1-contracts
|
|
167
|
+
*/ export const DefaultL1ContractsConfig = getDefaultConfig(l1ContractsConfigMappings);
|
|
175
168
|
export const genesisStateConfigMappings = {
|
|
176
169
|
testAccounts: {
|
|
177
170
|
env: 'TEST_ACCOUNTS',
|
|
@@ -14,6 +14,8 @@ export interface IEmpireBase {
|
|
|
14
14
|
computeRound(slot: SlotNumber): Promise<bigint>;
|
|
15
15
|
createSignalRequest(payload: Hex): L1TxRequest;
|
|
16
16
|
createSignalRequestWithSignature(payload: Hex, slot: SlotNumber, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
|
|
17
|
+
/** Checks if a payload was ever submitted to governance via submitRoundWinner. */
|
|
18
|
+
hasPayloadBeenProposed(payload: Hex, fromBlock: bigint): Promise<boolean>;
|
|
17
19
|
}
|
|
18
20
|
export declare function encodeSignal(payload: Hex): Hex;
|
|
19
21
|
export declare function encodeSignalWithSignature(payload: Hex, signature: Signature): `0x${string}`;
|
|
@@ -27,4 +29,4 @@ export declare function encodeSignalWithSignature(payload: Hex, signature: Signa
|
|
|
27
29
|
* @returns The EIP-712 signature
|
|
28
30
|
*/
|
|
29
31
|
export declare function signSignalWithSig(signer: (msg: TypedDataDefinition) => Promise<Hex>, payload: Hex, slot: SlotNumber, instance: Hex, verifyingContract: Hex, chainId: number): Promise<Signature>;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX2Jhc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZW1waXJlX2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzVELE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLG1CQUFtQixFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxNQUFNLFdBQVcsV0FBVztJQUMxQixJQUFJLE9BQU8sSUFBSSxVQUFVLENBQUM7SUFDMUIsWUFBWSxDQUNWLGFBQWEsRUFBRSxHQUFHLEVBQ2xCLEtBQUssRUFBRSxNQUFNLEdBQ1osT0FBTyxDQUFDO1FBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztRQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFBO0tBQUUsQ0FBQyxDQUFDO0lBQ25ILFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMvQyxnQ0FBZ0MsQ0FDOUIsT0FBTyxFQUFFLEdBQUcsRUFDWixJQUFJLEVBQUUsVUFBVSxFQUNoQixPQUFPLEVBQUUsTUFBTSxFQUNmLGFBQWEsRUFBRSxHQUFHLEVBQ2xCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQ2pELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QixrRkFBa0Y7SUFDbEYsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUMzRTtBQUVELHdCQUFnQixZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBTTlDO0FBRUQsd0JBQWdCLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsaUJBTTNFO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBc0IsaUJBQWlCLENBQ3JDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQ1osSUFBSSxFQUFFLFVBQVUsRUFDaEIsUUFBUSxFQUFFLEdBQUcsRUFDYixpQkFBaUIsRUFBRSxHQUFHLEVBQ3RCLE9BQU8sRUFBRSxNQUFNLEdBQ2QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQThCcEIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAsB,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,OAAO,IAAI,UAAU,CAAC;IAC1B,YAAY,CACV,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,CAAC;IACnH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;IAC/C,gCAAgC,CAC9B,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,CAAC;
|
|
1
|
+
{"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAsB,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,OAAO,IAAI,UAAU,CAAC;IAC1B,YAAY,CACV,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,CAAC;IACnH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;IAC/C,gCAAgC,CAC9B,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,CAAC;IACxB,kFAAkF;IAClF,sBAAsB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAM9C;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,iBAM3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,EAClD,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,GAAG,EACb,iBAAiB,EAAE,GAAG,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CA8BpB"}
|
|
@@ -31,6 +31,8 @@ export declare class EmpireSlashingProposerContract extends EventEmitter impleme
|
|
|
31
31
|
getPayloadSignals(rollupAddress: Hex, round: bigint, payload: Hex): Promise<bigint>;
|
|
32
32
|
createSignalRequest(payload: Hex): L1TxRequest;
|
|
33
33
|
createSignalRequestWithSignature(payload: Hex, slot: SlotNumber, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
|
|
34
|
+
/** Checks if a payload was ever submitted to governance via submitRoundWinner. */
|
|
35
|
+
hasPayloadBeenProposed(payload: Hex, fromBlock: bigint): Promise<boolean>;
|
|
34
36
|
listenToSubmittablePayloads(callback: (args: {
|
|
35
37
|
payload: `0x${string}`;
|
|
36
38
|
round: bigint;
|
|
@@ -64,4 +66,4 @@ export declare class EmpireSlashingProposerContract extends EventEmitter impleme
|
|
|
64
66
|
waitForRound(round: bigint, pollingIntervalSeconds?: number): Promise<boolean>;
|
|
65
67
|
executeRound(txUtils: L1TxUtils, round: bigint | number): ReturnType<typeof txUtils.sendAndMonitorTransaction>;
|
|
66
68
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX3NsYXNoaW5nX3Byb3Bvc2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2VtcGlyZV9zbGFzaGluZ19wcm9wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBRUwsS0FBSyxHQUFHLEVBQ1IsS0FBSyxHQUFHLEVBQ1IsS0FBSyxtQkFBbUIsRUFHekIsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBOEQsTUFBTSxrQkFBa0IsQ0FBQztBQUVoSCxxQkFBYSw0QkFBNkIsU0FBUSxLQUFLO0lBQ3JELFlBQVksS0FBSyxFQUFFLE1BQU0sRUFFeEI7Q0FDRjtBQUVELHFCQUFhLDhCQUErQixTQUFRLFlBQWEsWUFBVyxXQUFXO2FBT25FLE1BQU0sRUFBRSxVQUFVO0lBTnBDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUErRDtJQUN0RixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBc0U7SUFFL0YsU0FBZ0IsSUFBSSxXQUFxQjtJQUV6QyxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFRMUI7SUFFRCxJQUFXLE9BQU8sZUFFakI7SUFFTSxhQUFhLG9CQUVuQjtJQUVNLFlBQVksb0JBRWxCO0lBRU0sbUJBQW1CLG9CQUV6QjtJQUVNLHlCQUF5QixvQkFFL0I7SUFFTSxlQUFlLG9CQUVyQjtJQUVNLFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFckQ7SUFFTSxXQUFXLDJCQUVqQjtJQUVZLFlBQVksQ0FDdkIsYUFBYSxFQUFFLEdBQUcsRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUM7UUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDO1FBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDO1FBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7S0FBRSxDQUFDLENBWWpIO0lBRU0saUJBQWlCLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV6RjtJQUVNLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsV0FBVyxDQU1wRDtJQUVZLGdDQUFnQyxDQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUNaLElBQUksRUFBRSxVQUFVLEVBQ2hCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLEdBQUcsRUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FDakQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQWN0QjtJQUVELGtGQUFrRjtJQUNyRSxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUdyRjtJQUVNLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtRQUFFLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEtBQUssT0FBTywrQ0FleEc7SUFFTSx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUE7S0FBRSxLQUFLLE9BQU8sK0NBY3JHO0lBRU0sb0JBQW9CLENBQ3pCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFBO0tBQUUsS0FBSyxPQUFPLCtDQWVoRztJQUVELDZFQUE2RTtJQUN0RSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FVMUQ7SUFFRCxxRUFBcUU7SUFDOUQsK0JBQStCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTs7Ozs7O2tCQUVqRDtJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixHQUFFLE1BQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYXZGO0lBRVksWUFBWSxDQUN2QixPQUFPLEVBQUUsU0FBUyxFQUNsQixLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FDckIsVUFBVSxDQUFDLE9BQU8sT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBbUN0RDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empire_slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"empire_slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,GAAG,EACR,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;AAE9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAEhH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,KAAK,EAAE,MAAM,EAExB;CACF;AAED,qBAAa,8BAA+B,SAAQ,YAAa,YAAW,WAAW;aAOnE,MAAM,EAAE,UAAU;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAE/F,SAAgB,IAAI,WAAqB;IAEzC,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAQ1B;IAED,IAAW,OAAO,eAEjB;IAEM,aAAa,oBAEnB;IAEM,YAAY,oBAElB;IAEM,mBAAmB,oBAEzB;IAEM,yBAAyB,oBAE/B;IAEM,eAAe,oBAErB;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEM,WAAW,2BAEjB;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,kFAAkF;IACrE,sBAAsB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrF;IAEM,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,+CAexG;IAEM,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAcrG;IAEM,oBAAoB,CACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAehG;IAED,6EAA6E;IACtE,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAU1D;IAED,qEAAqE;IAC9D,+BAA+B,CAAC,IAAI,EAAE,GAAG,EAAE;;;;;;kBAEjD;IAED;;;;;;OAMG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAavF;IAEY,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAmCtD;CACF"}
|
|
@@ -81,6 +81,7 @@ export class EmpireSlashingProposerContract extends EventEmitter {
|
|
|
81
81
|
createSignalRequest(payload) {
|
|
82
82
|
return {
|
|
83
83
|
to: this.address.toString(),
|
|
84
|
+
abi: EmpireSlashingProposerAbi,
|
|
84
85
|
data: encodeSignal(payload)
|
|
85
86
|
};
|
|
86
87
|
}
|
|
@@ -88,9 +89,19 @@ export class EmpireSlashingProposerContract extends EventEmitter {
|
|
|
88
89
|
const signature = await signSignalWithSig(signer, payload, slot, await this.getInstance(), this.address.toString(), chainId);
|
|
89
90
|
return {
|
|
90
91
|
to: this.address.toString(),
|
|
92
|
+
abi: EmpireSlashingProposerAbi,
|
|
91
93
|
data: encodeSignalWithSignature(payload, signature)
|
|
92
94
|
};
|
|
93
95
|
}
|
|
96
|
+
/** Checks if a payload was ever submitted to governance via submitRoundWinner. */ async hasPayloadBeenProposed(payload, fromBlock) {
|
|
97
|
+
const events = await this.proposer.getEvents.PayloadSubmitted({
|
|
98
|
+
payload
|
|
99
|
+
}, {
|
|
100
|
+
fromBlock,
|
|
101
|
+
strict: true
|
|
102
|
+
});
|
|
103
|
+
return events.length > 0;
|
|
104
|
+
}
|
|
94
105
|
listenToSubmittablePayloads(callback) {
|
|
95
106
|
return this.proposer.watchEvent.PayloadSubmittable({}, {
|
|
96
107
|
strict: true,
|
|
@@ -141,6 +152,7 @@ export class EmpireSlashingProposerContract extends EventEmitter {
|
|
|
141
152
|
/** Creates an L1TxRequest to submit the round winner for the given round. */ buildExecuteRoundRequest(round) {
|
|
142
153
|
return {
|
|
143
154
|
to: this.address.toString(),
|
|
155
|
+
abi: EmpireSlashingProposerAbi,
|
|
144
156
|
data: encodeFunctionData({
|
|
145
157
|
abi: EmpireSlashingProposerAbi,
|
|
146
158
|
functionName: 'submitRoundWinner',
|
|
@@ -172,18 +184,8 @@ export class EmpireSlashingProposerContract extends EventEmitter {
|
|
|
172
184
|
if (typeof round === 'number') {
|
|
173
185
|
round = BigInt(round);
|
|
174
186
|
}
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
functionName: 'submitRoundWinner',
|
|
178
|
-
args: [
|
|
179
|
-
round
|
|
180
|
-
]
|
|
181
|
-
};
|
|
182
|
-
const data = encodeFunctionData(args);
|
|
183
|
-
const response = await txUtils.sendAndMonitorTransaction({
|
|
184
|
-
to: this.address.toString(),
|
|
185
|
-
data
|
|
186
|
-
}, {
|
|
187
|
+
const request = this.buildExecuteRoundRequest(round);
|
|
188
|
+
const response = await txUtils.sendAndMonitorTransaction(request, {
|
|
187
189
|
// Gas estimation is way off for this, likely because we are creating the contract/selector to call
|
|
188
190
|
// for the actual slashing dynamically.
|
|
189
191
|
gasLimitBufferPercentage: 50
|
|
@@ -194,10 +196,15 @@ export class EmpireSlashingProposerContract extends EventEmitter {
|
|
|
194
196
|
throw err;
|
|
195
197
|
});
|
|
196
198
|
if (response.receipt.status === 'reverted') {
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
+
const args = {
|
|
200
|
+
abi: EmpireSlashingProposerAbi,
|
|
201
|
+
functionName: 'submitRoundWinner',
|
|
202
|
+
args: [
|
|
203
|
+
round
|
|
204
|
+
],
|
|
199
205
|
address: this.address.toString()
|
|
200
|
-
}
|
|
206
|
+
};
|
|
207
|
+
const error = await txUtils.tryGetErrorFromRevertedTx(request.data, args, undefined, []);
|
|
201
208
|
if (error?.includes('ProposalAlreadyExecuted')) {
|
|
202
209
|
throw new ProposalAlreadyExecutedError(round);
|
|
203
210
|
}
|
|
@@ -17,4 +17,4 @@ export declare class FeeAssetHandlerContract {
|
|
|
17
17
|
state: import("../l1_tx_utils/types.js").L1TxState;
|
|
18
18
|
}>;
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX2Fzc2V0X2hhbmRsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZmVlX2Fzc2V0X2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBbUMsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLHFCQUFhLHVCQUF1QjthQUloQixNQUFNLEVBQUUsVUFBVTtJQUg3QixPQUFPLEVBQUUsVUFBVSxDQUFDO0lBRTNCLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU0xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBTzNDO0lBRU0sYUFBYSxvQkFPbkI7SUFFTSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLFVBQVU7OztPQWExRDtJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNOzs7T0FVdEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee_asset_handler.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_asset_handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,KAAK,GAAG,EAAmC,MAAM,MAAM,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,uBAAuB;aAIhB,MAAM,EAAE,UAAU;IAH7B,OAAO,EAAE,UAAU,CAAC;IAE3B,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAO3C;IAEM,aAAa,oBAOnB;IAEM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,UAAU;;;
|
|
1
|
+
{"version":3,"file":"fee_asset_handler.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_asset_handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,KAAK,GAAG,EAAmC,MAAM,MAAM,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,uBAAuB;aAIhB,MAAM,EAAE,UAAU;IAH7B,OAAO,EAAE,UAAU,CAAC;IAE3B,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAO3C;IAEM,aAAa,oBAOnB;IAEM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,UAAU;;;OAa1D;IAEM,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;;;OAUtD;CACF"}
|
|
@@ -33,6 +33,7 @@ export class FeeAssetHandlerContract {
|
|
|
33
33
|
}
|
|
34
34
|
return txUtils.sendAndMonitorTransaction({
|
|
35
35
|
to: this.address.toString(),
|
|
36
|
+
abi: FeeAssetHandlerAbi,
|
|
36
37
|
data: encodeFunctionData({
|
|
37
38
|
abi: FeeAssetHandlerAbi,
|
|
38
39
|
functionName: 'mint',
|
|
@@ -45,6 +46,7 @@ export class FeeAssetHandlerContract {
|
|
|
45
46
|
setMintAmount(txUtils, amount) {
|
|
46
47
|
return txUtils.sendAndMonitorTransaction({
|
|
47
48
|
to: this.address.toString(),
|
|
49
|
+
abi: FeeAssetHandlerAbi,
|
|
48
50
|
data: encodeFunctionData({
|
|
49
51
|
abi: FeeAssetHandlerAbi,
|
|
50
52
|
functionName: 'setMintAmount',
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
3
|
+
import { type Hex } from 'viem';
|
|
4
|
+
import type { ViemClient } from '../types.js';
|
|
5
|
+
import { RollupContract } from './rollup.js';
|
|
6
|
+
/** Maximum price modifier per checkpoint in basis points. ±100 bps = ±1% */
|
|
7
|
+
export declare const MAX_FEE_ASSET_PRICE_MODIFIER_BPS = 100n;
|
|
8
|
+
/**
|
|
9
|
+
* Validates that a fee asset price modifier is within the allowed range.
|
|
10
|
+
* Validators should call this before attesting to a checkpoint proposal.
|
|
11
|
+
*
|
|
12
|
+
* @param modifier - The fee asset price modifier in basis points
|
|
13
|
+
* @returns true if the modifier is valid (between -100 and +100 bps)
|
|
14
|
+
*/
|
|
15
|
+
export declare function validateFeeAssetPriceModifier(modifier: bigint): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Oracle for computing fee asset price modifiers based on Uniswap V4 pool prices.
|
|
18
|
+
* Only active on Ethereum mainnet - returns 0 on other chains.
|
|
19
|
+
*/
|
|
20
|
+
export declare class FeeAssetPriceOracle {
|
|
21
|
+
private client;
|
|
22
|
+
private readonly rollupContract;
|
|
23
|
+
private log;
|
|
24
|
+
constructor(client: ViemClient, rollupContract: RollupContract, log?: Logger);
|
|
25
|
+
getUniswapOracle(): Promise<UniswapPriceOracle | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Computes the fee asset price modifier to be used in the next checkpoint proposal.
|
|
28
|
+
*
|
|
29
|
+
* The modifier adjusts the on-chain fee asset price toward the oracle price,
|
|
30
|
+
* clamped to ±1% (±100 basis points) per checkpoint.
|
|
31
|
+
*
|
|
32
|
+
* Returns 0 if not on mainnet or if the oracle query fails.
|
|
33
|
+
*
|
|
34
|
+
* @returns The price modifier in basis points (positive to increase price, negative to decrease)
|
|
35
|
+
*/
|
|
36
|
+
computePriceModifier(): Promise<bigint>;
|
|
37
|
+
/**
|
|
38
|
+
* Gets the current oracle price (ETH per fee asset, scaled by 1e12).
|
|
39
|
+
* Returns undefined if not on mainnet or if the oracle query fails.
|
|
40
|
+
*/
|
|
41
|
+
getOraclePrice(): Promise<bigint | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Computes the basis points modifier needed to move from current price toward target price.
|
|
44
|
+
*
|
|
45
|
+
* @param currentPrice - Current ETH per fee asset (E12 scale)
|
|
46
|
+
* @param targetPrice - Target ETH per fee asset (E12 scale)
|
|
47
|
+
* @returns Basis points modifier clamped to ±100 (±1%)
|
|
48
|
+
*/
|
|
49
|
+
computePriceModifierBps(currentPrice: bigint, targetPrice: bigint): bigint;
|
|
50
|
+
}
|
|
51
|
+
/** Mainnet Uniswap V4 StateView contract address */
|
|
52
|
+
export declare const STATE_VIEW_ADDRESS: EthAddress;
|
|
53
|
+
/**
|
|
54
|
+
* Converts Uniswap's sqrtPriceX96 directly to ETH per FeeAsset (E12).
|
|
55
|
+
*
|
|
56
|
+
* For an ETH/FeeAsset pool where ETH is currency0 and FeeAsset is currency1:
|
|
57
|
+
* - Uniswap's sqrtPriceX96 = sqrt(FeeAsset/ETH) * 2^96
|
|
58
|
+
* - We need: ETH/FeeAsset with 1e12 precision
|
|
59
|
+
*
|
|
60
|
+
* Math:
|
|
61
|
+
* price = (sqrtPriceX96 / 2^96)^2 = sqrtPriceX96^2 / 2^192 (FeeAsset per ETH)
|
|
62
|
+
* ethPerFeeAsset = 1 / price = 2^192 / sqrtPriceX96^2
|
|
63
|
+
* ethPerFeeAssetE12 = ethPerFeeAsset * 1e12 = 1e12 * 2^192 / sqrtPriceX96^2
|
|
64
|
+
*/
|
|
65
|
+
export declare function sqrtPriceX96ToEthPerFeeAssetE12(sqrtPriceX96: bigint): bigint;
|
|
66
|
+
/**
|
|
67
|
+
* Client for querying the ETH/FeeAsset price from Uniswap V4.
|
|
68
|
+
* Returns prices in ETH per FeeAsset format (E12) to match the rollup contract.
|
|
69
|
+
*/
|
|
70
|
+
declare class UniswapPriceOracle {
|
|
71
|
+
private readonly client;
|
|
72
|
+
private readonly stateView;
|
|
73
|
+
private readonly poolId;
|
|
74
|
+
private readonly log;
|
|
75
|
+
constructor(client: ViemClient, log?: Logger);
|
|
76
|
+
/**
|
|
77
|
+
* Computes the PoolId from the pool configuration by hashing its components.
|
|
78
|
+
* PoolId = keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))
|
|
79
|
+
* For mainnet, the value is expected to be: 0xce2899b16743cfd5a954d8122d5e07f410305b1aebee39fd73d9f3b9ebf10c2f
|
|
80
|
+
* Derived anyway to make it simpler to change if needed.
|
|
81
|
+
*/
|
|
82
|
+
computePoolId(): Hex;
|
|
83
|
+
isPoolInitialized(): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Gets the price as ETH per FeeAsset, scaled by 1e12.
|
|
86
|
+
* This is the format expected by the rollup contract.
|
|
87
|
+
*
|
|
88
|
+
* @param blockNumber - Optional block number to query at (defaults to latest)
|
|
89
|
+
*/
|
|
90
|
+
getEthPerFeeAssetE12(blockNumber?: bigint): Promise<bigint>;
|
|
91
|
+
/**
|
|
92
|
+
* Gets the median price over the last N blocks as ETH per FeeAsset (E12).
|
|
93
|
+
* Using median helps protect against single-block manipulation.
|
|
94
|
+
*
|
|
95
|
+
* @param numBlocks - Number of recent blocks to sample (default: 5)
|
|
96
|
+
* @returns Median price as ETH per FeeAsset, scaled by 1e12
|
|
97
|
+
*/
|
|
98
|
+
getMeanEthPerFeeAssetE12(numBlocks?: number): Promise<bigint>;
|
|
99
|
+
}
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX2Fzc2V0X3ByaWNlX29yYWNsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9mZWVfYXNzZXRfcHJpY2Vfb3JhY2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFtRSxNQUFNLE1BQU0sQ0FBQztBQUVqRyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3Qyw4RUFBNEU7QUFDNUUsZUFBTyxNQUFNLGdDQUFnQyxPQUFPLENBQUM7QUFFckQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUV2RTtBQUVEOzs7R0FHRztBQUNILHFCQUFhLG1CQUFtQjtJQUU1QixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUMvQixPQUFPLENBQUMsR0FBRztJQUhiLFlBQ1UsTUFBTSxFQUFFLFVBQVUsRUFDVCxjQUFjLEVBQUUsY0FBYyxFQUN2QyxHQUFHLEdBQUUsTUFBK0MsRUFDMUQ7SUFHRSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLENBb0JoRTtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNHLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0EyQjVDO0lBRUQ7OztPQUdHO0lBQ0csY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBWWxEO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUJBQXVCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FrQnpFO0NBQ0Y7QUFFRCxvREFBb0Q7QUFDcEQsZUFBTyxNQUFNLGtCQUFrQixZQUFzRSxDQUFDO0FBSXRHOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLCtCQUErQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUs1RTtBQW1CRDs7O0dBR0c7QUFDSCxjQUFNLGtCQUFrQjtJQU1wQixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFMekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQU07SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVM7SUFFN0IsWUFDbUIsTUFBTSxFQUFFLFVBQVUsRUFDbkMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQVViO0lBRUQ7Ozs7O09BS0c7SUFFSCxhQUFhLElBQUksR0FBRyxDQVVuQjtJQUVLLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHMUM7SUFFRDs7Ozs7T0FLRztJQUNHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBTWhFO0lBRUQ7Ozs7OztPQU1HO0lBQ0csd0JBQXdCLENBQUMsU0FBUyxHQUFFLE1BQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBMkJyRTtDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee_asset_price_oracle.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_asset_price_oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,KAAK,GAAG,EAAmE,MAAM,MAAM,CAAC;AAEjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,8EAA4E;AAC5E,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,GAAG;IAHb,YACU,MAAM,EAAE,UAAU,EACT,cAAc,EAAE,cAAc,EACvC,GAAG,GAAE,MAA+C,EAC1D;IAGE,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAoBhE;IAED;;;;;;;;;OASG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CA2B5C;IAED;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAYlD;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBzE;CACF;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,YAAsE,CAAC;AAItG;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAK5E;AAmBD;;;GAGG;AACH,cAAM,kBAAkB;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,YACmB,MAAM,EAAE,UAAU,EACnC,GAAG,CAAC,EAAE,MAAM,EAUb;IAED;;;;;OAKG;IAEH,aAAa,IAAI,GAAG,CAUnB;IAEK,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1C;IAED;;;;;OAKG;IACG,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;IAED;;;;;;OAMG;IACG,wBAAwB,CAAC,SAAS,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrE;CACF"}
|