@@ -18,12 +18,11 @@ pragma solidity 0.8.17;
1818import "@keep-network/random-beacon/contracts/Governable.sol " ;
1919import "@keep-network/random-beacon/contracts/ReimbursementPool.sol " ;
2020// D-2 dropped `IWalletOwner` inheritance: the ECDSA wallet
21- // registry's `__ecdsaWalletCreatedCallback` callback path is
22- // removed entirely (no new ECDSA wallets after D-2 ships). The
23- // heartbeat callback is preserved as a standalone external
24- // function for existing-wallet lifecycle. Import path retained
25- // for the registry contract handle (used via
26- // `BridgeState.Storage.ecdsaWalletRegistry`).
21+ // registry's `__ecdsaWalletCreatedCallback` callback path was
22+ // removed entirely (no new ECDSA wallets after D-2 ships).
23+ // D-2.2 slice 4 also removes the ECDSA heartbeat-failure
24+ // callback. Import path retained for the legacy registry storage
25+ // slot and ABI getter (`BridgeState.Storage.ecdsaWalletRegistry`).
2726
2827import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol " ;
2928import "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol " ;
@@ -838,12 +837,8 @@ contract Bridge is Governable, Initializable, IReceiveBalanceApproval {
838837 /// - The source wallet must not have pending redemption requests,
839838 /// - The source wallet must not have pending moved funds sweep requests,
840839 /// - The source wallet must not have submitted its commitment already,
841- /// - The expression `keccak256(abi.encode(walletMembersIDs))` must
842- /// be exactly the same as the hash stored under `membersIdsHash`
843- /// for the given source wallet in the ECDSA registry. Those IDs are
844- /// not directly stored in the contract for gas efficiency purposes
845- /// but they can be read from appropriate `DkgResultSubmitted`
846- /// and `DkgResultApproved` events,
840+ /// - The lifecycle router must confirm the caller is a member of the
841+ /// source wallet signing group at the provided member index,
847842 /// - The `walletMemberIndex` must be in range [1, walletMembersIDs.length],
848843 /// - The caller must be the member of the source wallet signing group
849844 /// at the position indicated by `walletMemberIndex` parameter,
@@ -1091,15 +1086,12 @@ contract Bridge is Governable, Initializable, IReceiveBalanceApproval {
10911086 /// Ethereum chain. If there is no active wallet at the moment, or
10921087 /// the active wallet has no main UTXO, this parameter can be
10931088 /// empty as it is ignored,
1094- /// - Wallet creation must not be in progress,
10951089 /// - If the active wallet is set, one of the following
10961090 /// conditions must be true:
10971091 /// - The active wallet BTC balance is above the minimum threshold
10981092 /// and the active wallet is old enough, i.e. the creation period
10991093 /// was elapsed since its creation time,
11001094 /// - The active wallet BTC balance is above the maximum threshold,
1101- /// - `currentNewWalletScheme` must be `Frost` (any Ecdsa
1102- /// selection reverts unconditionally in D-2),
11031095 /// - `frostWalletRegistry` must be set (governance one-
11041096 /// time setter; required before FROST wallet creation).
11051097 function requestNewWallet (BitcoinTx.UTXO calldata activeWalletMainUtxo )
@@ -1160,21 +1152,6 @@ contract Bridge is Governable, Initializable, IReceiveBalanceApproval {
11601152 self.registerNewFrostWallet (xOnlyOutputKey);
11611153 }
11621154
1163- /// @notice A callback function that is called by the ECDSA Wallet Registry
1164- /// once a wallet heartbeat failure is detected.
1165- /// @param publicKeyX Wallet's public key's X coordinate.
1166- /// @param publicKeyY Wallet's public key's Y coordinate.
1167- /// @dev Requirements:
1168- /// - The only caller authorized to call this function is `registry`,
1169- /// - Wallet must be in Live state.
1170- function __ecdsaWalletHeartbeatFailedCallback (
1171- bytes32 ,
1172- bytes32 publicKeyX ,
1173- bytes32 publicKeyY
1174- ) external {
1175- self.notifyWalletHeartbeatFailed (publicKeyX, publicKeyY);
1176- }
1177-
11781155 /// @notice Notifies that the wallet is either old enough or has too few
11791156 /// satoshi left and qualifies to be closed.
11801157 /// @param walletPubKeyHash 20-byte public key hash of the wallet.
@@ -1198,7 +1175,7 @@ contract Bridge is Governable, Initializable, IReceiveBalanceApproval {
11981175 }
11991176
12001177 /// @notice Notifies about the end of the closing period for the given wallet.
1201- /// Closes the wallet ultimately and notifies the ECDSA registry
1178+ /// Closes the wallet ultimately and notifies the lifecycle router
12021179 /// about this fact.
12031180 /// @param walletPubKeyHash 20-byte public key hash of the wallet.
12041181 /// @dev Requirements:
@@ -2243,11 +2220,8 @@ contract Bridge is Governable, Initializable, IReceiveBalanceApproval {
22432220 }
22442221
22452222 /// @notice Sets the BridgeLifecycleRouter address. The router is
2246- /// the authorized dispatcher for FROST-scheme wallet
2247- /// lifecycle operations (closeWallet, seize,
2248- /// isWalletMember). ECDSA lifecycle operations bypass it
2249- /// entirely and continue to call ecdsaWalletRegistry
2250- /// directly.
2223+ /// the authorized dispatcher for wallet lifecycle
2224+ /// operations (closeWallet, seize, isWalletMember).
22512225 /// @param lifecycleRouter Address of the BridgeLifecycleRouter.
22522226 /// @dev Requirements:
22532227 /// - The caller must be the governance,
0 commit comments