diff --git a/solidity/contracts/bridge/Bridge.sol b/solidity/contracts/bridge/Bridge.sol index 957f367bf..0b429f7cf 100644 --- a/solidity/contracts/bridge/Bridge.sol +++ b/solidity/contracts/bridge/Bridge.sol @@ -190,9 +190,9 @@ contract Bridge is uint64 redemptionDustThreshold, uint64 redemptionTreasuryFeeDivisor, uint64 redemptionTxMaxFee, - uint64 redemptionTimeout, + uint32 redemptionTimeout, uint96 redemptionTimeoutSlashingAmount, - uint64 redemptionTimeoutNotifierRewardMultiplier + uint32 redemptionTimeoutNotifierRewardMultiplier ); event MovingFundsParametersUpdated( @@ -201,11 +201,11 @@ contract Bridge is uint32 movingFundsTimeoutResetDelay, uint32 movingFundsTimeout, uint96 movingFundsTimeoutSlashingAmount, - uint256 movingFundsTimeoutNotifierRewardMultiplier, + uint32 movingFundsTimeoutNotifierRewardMultiplier, uint64 movedFundsSweepTxMaxTotalFee, uint32 movedFundsSweepTimeout, uint96 movedFundsSweepTimeoutSlashingAmount, - uint64 movedFundsSweepTimeoutNotifierRewardMultiplier + uint32 movedFundsSweepTimeoutNotifierRewardMultiplier ); event WalletParametersUpdated( @@ -1228,9 +1228,9 @@ contract Bridge is uint64 redemptionDustThreshold, uint64 redemptionTreasuryFeeDivisor, uint64 redemptionTxMaxFee, - uint64 redemptionTimeout, + uint32 redemptionTimeout, uint96 redemptionTimeoutSlashingAmount, - uint64 redemptionTimeoutNotifierRewardMultiplier + uint32 redemptionTimeoutNotifierRewardMultiplier ) external onlyGovernance { self.updateRedemptionParameters( redemptionDustThreshold, @@ -1311,11 +1311,11 @@ contract Bridge is uint32 movingFundsTimeoutResetDelay, uint32 movingFundsTimeout, uint96 movingFundsTimeoutSlashingAmount, - uint256 movingFundsTimeoutNotifierRewardMultiplier, + uint32 movingFundsTimeoutNotifierRewardMultiplier, uint64 movedFundsSweepTxMaxTotalFee, uint32 movedFundsSweepTimeout, uint96 movedFundsSweepTimeoutSlashingAmount, - uint64 movedFundsSweepTimeoutNotifierRewardMultiplier + uint32 movedFundsSweepTimeoutNotifierRewardMultiplier ) external onlyGovernance { self.updateMovingFundsParameters( movingFundsTxMaxTotalFee, @@ -1607,9 +1607,9 @@ contract Bridge is uint64 redemptionDustThreshold, uint64 redemptionTreasuryFeeDivisor, uint64 redemptionTxMaxFee, - uint64 redemptionTimeout, + uint32 redemptionTimeout, uint96 redemptionTimeoutSlashingAmount, - uint64 redemptionTimeoutNotifierRewardMultiplier + uint32 redemptionTimeoutNotifierRewardMultiplier ) { redemptionDustThreshold = self.redemptionDustThreshold; @@ -1672,11 +1672,11 @@ contract Bridge is uint32 movingFundsTimeoutResetDelay, uint32 movingFundsTimeout, uint96 movingFundsTimeoutSlashingAmount, - uint256 movingFundsTimeoutNotifierRewardMultiplier, + uint32 movingFundsTimeoutNotifierRewardMultiplier, uint64 movedFundsSweepTxMaxTotalFee, uint32 movedFundsSweepTimeout, uint96 movedFundsSweepTimeoutSlashingAmount, - uint256 movedFundsSweepTimeoutNotifierRewardMultiplier + uint32 movedFundsSweepTimeoutNotifierRewardMultiplier ) { movingFundsTxMaxTotalFee = self.movingFundsTxMaxTotalFee; diff --git a/solidity/contracts/bridge/BridgeState.sol b/solidity/contracts/bridge/BridgeState.sol index 577b50523..8f2976e25 100644 --- a/solidity/contracts/bridge/BridgeState.sol +++ b/solidity/contracts/bridge/BridgeState.sol @@ -62,9 +62,9 @@ library BridgeState { // This is a per-deposit input max fee for the sweep transaction. uint64 depositTxMaxFee; // Move movingFundsTxMaxTotalFee to the next storage slot for a more - // efficient variable layout + // efficient variable layout in the storage. // slither-disable-next-line unused-state - bytes8 __depositAlignmentGap; + bytes16 __depositAlignmentGap; // Maximum amount of the total BTC transaction fee that is acceptable in // a single moving funds transaction. // @@ -100,7 +100,11 @@ library BridgeState { // The percentage of the notifier reward from the staking contract // the notifier of a moving funds timeout receives. The value is in the // range [0, 100]. - uint256 movingFundsTimeoutNotifierRewardMultiplier; + uint32 movingFundsTimeoutNotifierRewardMultiplier; + // Move movedFundsSweepTxMaxTotalFee to the next storage slot for a more + // efficient variable layout in the storage. + // slither-disable-next-line unused-state + bytes16 __movingFundsAlignmentGap; // Maximum amount of the total BTC transaction fee that is acceptable in // a single moved funds sweep transaction. // @@ -119,7 +123,7 @@ library BridgeState { // The percentage of the notifier reward from the staking contract // the notifier of a moved funds sweep timeout receives. The value is // in the range [0, 100]. - uint64 movedFundsSweepTimeoutNotifierRewardMultiplier; + uint32 movedFundsSweepTimeoutNotifierRewardMultiplier; // The minimal amount that can be requested for redemption. // Value of this parameter must take into account the value of // `redemptionTreasuryFeeDivisor` and `redemptionTxMaxFee` @@ -146,7 +150,7 @@ library BridgeState { // transaction. uint64 redemptionTxMaxFee; // Move redemptionTimeout to the next storage slot for a more efficient - // variable layout + // variable layout in the storage. // slither-disable-next-line unused-state bytes8 __redemptionAlignmentGap; // Time after which the redemption request can be reported as @@ -154,14 +158,14 @@ library BridgeState { // request was created via `requestRedemption` call. Reported // timed out requests are cancelled and locked TBTC is returned // to the redeemer in full amount. - uint64 redemptionTimeout; + uint32 redemptionTimeout; // The amount of stake slashed from each member of a wallet for a // redemption timeout. uint96 redemptionTimeoutSlashingAmount; // The percentage of the notifier reward from the staking contract // the notifier of a redemption timeout receives. The value is in the // range [0, 100]. - uint64 redemptionTimeoutNotifierRewardMultiplier; + uint32 redemptionTimeoutNotifierRewardMultiplier; // The amount of ETH in wei the party challenging the wallet for fraud // needs to deposit. uint96 fraudChallengeDepositAmount; @@ -291,9 +295,9 @@ library BridgeState { uint64 redemptionDustThreshold, uint64 redemptionTreasuryFeeDivisor, uint64 redemptionTxMaxFee, - uint64 redemptionTimeout, + uint32 redemptionTimeout, uint96 redemptionTimeoutSlashingAmount, - uint64 redemptionTimeoutNotifierRewardMultiplier + uint32 redemptionTimeoutNotifierRewardMultiplier ); event MovingFundsParametersUpdated( @@ -302,11 +306,11 @@ library BridgeState { uint32 movingFundsTimeoutResetDelay, uint32 movingFundsTimeout, uint96 movingFundsTimeoutSlashingAmount, - uint256 movingFundsTimeoutNotifierRewardMultiplier, + uint32 movingFundsTimeoutNotifierRewardMultiplier, uint64 movedFundsSweepTxMaxTotalFee, uint32 movedFundsSweepTimeout, uint96 movedFundsSweepTimeoutSlashingAmount, - uint64 movedFundsSweepTimeoutNotifierRewardMultiplier + uint32 movedFundsSweepTimeoutNotifierRewardMultiplier ); event WalletParametersUpdated( @@ -433,9 +437,9 @@ library BridgeState { uint64 _redemptionDustThreshold, uint64 _redemptionTreasuryFeeDivisor, uint64 _redemptionTxMaxFee, - uint64 _redemptionTimeout, + uint32 _redemptionTimeout, uint96 _redemptionTimeoutSlashingAmount, - uint64 _redemptionTimeoutNotifierRewardMultiplier + uint32 _redemptionTimeoutNotifierRewardMultiplier ) internal { require( _redemptionDustThreshold > self.movingFundsDustThreshold, @@ -550,11 +554,11 @@ library BridgeState { uint32 _movingFundsTimeoutResetDelay, uint32 _movingFundsTimeout, uint96 _movingFundsTimeoutSlashingAmount, - uint256 _movingFundsTimeoutNotifierRewardMultiplier, + uint32 _movingFundsTimeoutNotifierRewardMultiplier, uint64 _movedFundsSweepTxMaxTotalFee, uint32 _movedFundsSweepTimeout, uint96 _movedFundsSweepTimeoutSlashingAmount, - uint64 _movedFundsSweepTimeoutNotifierRewardMultiplier + uint32 _movedFundsSweepTimeoutNotifierRewardMultiplier ) internal { require( _movingFundsTxMaxTotalFee > 0, diff --git a/solidity/test/bridge/Bridge.MovingFunds.test.ts b/solidity/test/bridge/Bridge.MovingFunds.test.ts index 483e2301a..b050e671f 100644 --- a/solidity/test/bridge/Bridge.MovingFunds.test.ts +++ b/solidity/test/bridge/Bridge.MovingFunds.test.ts @@ -58,10 +58,10 @@ describe("Bridge - Moving funds", () => { let movingFundsTimeoutResetDelay: number let movingFundsTimeout: number let movingFundsTimeoutSlashingAmount: BigNumber - let movingFundsTimeoutNotifierRewardMultiplier: BigNumber + let movingFundsTimeoutNotifierRewardMultiplier: number let movedFundsSweepTimeout: number let movedFundsSweepTimeoutSlashingAmount: BigNumber - let movedFundsSweepTimeoutNotifierRewardMultiplier: BigNumber + let movedFundsSweepTimeoutNotifierRewardMultiplier: number before(async () => { // eslint-disable-next-line @typescript-eslint/no-extra-semi diff --git a/solidity/test/bridge/Bridge.Redemption.test.ts b/solidity/test/bridge/Bridge.Redemption.test.ts index 3cf6bedeb..609e28f4d 100644 --- a/solidity/test/bridge/Bridge.Redemption.test.ts +++ b/solidity/test/bridge/Bridge.Redemption.test.ts @@ -59,7 +59,7 @@ describe("Bridge - Redemption", () => { let redemptionTimeout: BigNumber let redemptionTimeoutSlashingAmount: BigNumber - let redemptionTimeoutNotifierRewardMultiplier: BigNumber + let redemptionTimeoutNotifierRewardMultiplier: number before(async () => { // eslint-disable-next-line @typescript-eslint/no-extra-semi