Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.0.0-alpha.1 release #109

Merged
merged 61 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e8a7a9f
Prevent executed proposals from changing state after cancelAll is called
Psirex Aug 13, 2024
25014bc
Fix the order of DG.activateNextState() calls in Escrow lock/unlock m…
Psirex Aug 13, 2024
1a17265
Update quorumAt after execution quorum changing
bulbozaur Aug 14, 2024
a50a1a4
fix: make tiebreakerScheduleProposal calling activateNextState
rkolpakov Aug 14, 2024
f2c9b56
feat: change timelockstate errors handling
rkolpakov Aug 16, 2024
92e9d49
feat: tiebreaker improvements and unit tests
rkolpakov Aug 14, 2024
06e1db2
feat: change escrowstate errors handling
rkolpakov Aug 16, 2024
ba51f14
feat: change tiebreaker error handling
rkolpakov Aug 16, 2024
97671b9
feat: change emergency protection errors handling
rkolpakov Aug 16, 2024
1c38dd0
feat: change emergency protected timelock errors handling
rkolpakov Aug 16, 2024
e27afc4
feat: change hash consensus errors handling
rkolpakov Aug 16, 2024
781a48d
fix: solidity warnings fixes
rkolpakov Aug 16, 2024
04a34ed
Align cancelAllPendingProposals method with specification
Psirex Aug 19, 2024
022d9d1
Merge pull request #97 from lidofinance/fix/dg-tiebreaker-schedule-pr…
Psirex Aug 19, 2024
48f8438
Merge pull request #99 from lidofinance/fix/solidity-warnings
rkolpakov Aug 20, 2024
962ccb9
fix: review fixes
rkolpakov Aug 20, 2024
a16055f
Merge branch 'develop' into feature/failure-models-of-setters
rkolpakov Aug 20, 2024
7e1094c
Merge pull request #98 from lidofinance/feature/failure-models-of-set…
rkolpakov Aug 20, 2024
3c3faa8
fix: sealable calls resume return value fix
rkolpakov Aug 20, 2024
39283d8
Merge pull request #102 from lidofinance/fix/sealable-calls-resume
bulbozaur Aug 20, 2024
0f7ca63
fix: withdrawETH reverts on empty array
rkolpakov Aug 21, 2024
4739b5a
fix: lockUnsteth reverts on empty array
rkolpakov Aug 21, 2024
44ce534
fix: requestNextWithdrawalBatch now closes when balance lower than mi…
rkolpakov Aug 21, 2024
405fc20
Merge pull request #103 from lidofinance/fix/audit-fixes-for-escrow
bulbozaur Aug 21, 2024
c7cebcb
Merge branch 'develop' into fix/escrow-activate-next-state-call-order
bulbozaur Aug 21, 2024
5f1f107
Merge pull request #95 from lidofinance/fix/escrow-activate-next-stat…
bulbozaur Aug 21, 2024
9dfcfbd
fix: proposers lib fix
rkolpakov Aug 22, 2024
3515294
fix: withdrawal batches fix
rkolpakov Aug 22, 2024
78131cd
Merge pull request #105 from lidofinance/fix/wq-fix
rkolpakov Aug 22, 2024
cb0f532
Merge pull request #104 from lidofinance/fix/proposal-spam-fix
bulbozaur Aug 23, 2024
86e12c1
Merge remote-tracking branch 'origin/develop' into feature/hashconsen…
bulbozaur Aug 23, 2024
e1018c4
proposal scheduling
bulbozaur Aug 23, 2024
a013a29
fix: check caller and typo
bulbozaur Aug 23, 2024
4d017c1
rename HashConsensus schedule
bulbozaur Aug 23, 2024
35acfba
natspec update
bulbozaur Aug 23, 2024
dc8444d
revert on schedule proposal
bulbozaur Aug 23, 2024
6c08364
fix typo
bulbozaur Aug 23, 2024
34b2b44
tests naming
bulbozaur Aug 23, 2024
c40cd6d
tests_naming
bulbozaur Aug 23, 2024
dc75ebd
using Timestamps and Durations
bulbozaur Aug 23, 2024
ecc2106
Add tests for EscrowState library
sandstone-ag Aug 9, 2024
a400f97
Fix AssetsAccounting tests after renaming
sandstone-ag Aug 12, 2024
d5e6b02
Use Duration/Timestamp instead of primitive type as a fuzzing parameter
sandstone-ag Aug 19, 2024
a06b67a
Pass named parameters to checkContext()
sandstone-ag Aug 19, 2024
b1103f1
Use assertEq() instead of regular assert()
sandstone-ag Aug 19, 2024
4e4982e
Use _wait() instead of vm.warp()
sandstone-ag Aug 19, 2024
ba395fa
Remove excessive type casts in AssetsAccounting tests
sandstone-ag Aug 19, 2024
3b9eb9d
Fix EscrowState tests
sandstone-ag Aug 20, 2024
4108d4f
Merge pull request #92 from lidofinance/feature/escrow-state-tests
rkolpakov Aug 26, 2024
6bf5739
Merge pull request #93 from lidofinance/feature/hashconsensus-quorum
rkolpakov Aug 26, 2024
f18fec6
Merge branch 'develop' into feature/tiebreaker-tests
rkolpakov Aug 26, 2024
8831953
fix: review fixes
rkolpakov Aug 27, 2024
81e23ec
Add unit tests for cancelAllPendingProposals()
Psirex Aug 27, 2024
dab02d6
Fix typo in the unstETHLockedShares value of getVetoerState method
Psirex Aug 27, 2024
1663175
Fix the overflow of the rage quit round
Psirex Aug 28, 2024
dd3bd6e
Merge pull request #108 from lidofinance/fix/get-vetoer-state-typo
Psirex Aug 28, 2024
10c2c2c
Merge pull request #100 from lidofinance/fix/cancell-all-pending-prop…
Psirex Aug 28, 2024
72a994a
Merge pull request #94 from lidofinance/fix/executed-proposals-canceling
Psirex Aug 28, 2024
a251e6e
Merge pull request #96 from lidofinance/feature/tiebreaker-tests
Psirex Aug 28, 2024
51ad0ef
Add check for rageQuitRound into the unit test
Psirex Aug 28, 2024
64ea7a9
Merge pull request #107 from lidofinance/fix/rage-quit-round-overflow
Psirex Aug 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: change emergency protection errors handling
  • Loading branch information
rkolpakov committed Aug 16, 2024
commit 97671b98e4f315994551eb87f6120ae3cccb1d79
52 changes: 35 additions & 17 deletions contracts/libraries/EmergencyProtection.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,15 @@ library EmergencyProtection {
error CallerIsNotEmergencyActivationCommittee(address caller);
error CallerIsNotEmergencyExecutionCommittee(address caller);
error EmergencyProtectionExpired(Timestamp protectedTill);
error InvalidEmergencyGovernance(address governance);
error InvalidEmergencyActivationCommittee(address committee);
error InvalidEmergencyExecutionCommittee(address committee);
error InvalidEmergencyModeDuration(Duration value);
error InvalidEmergencyProtectionEndDate(Timestamp value);
error UnexpectedEmergencyModeState(bool value);

event EmergencyModeActivated();
event EmergencyModeDeactivated();
event EmergencyModeActivated(Timestamp activatedAt);
event EmergencyModeDeactivated(Timestamp deactivatedAt);
event EmergencyGovernanceSet(address newEmergencyGovernance);
event EmergencyActivationCommitteeSet(address newActivationCommittee);
event EmergencyExecutionCommitteeSet(address newActivationCommittee);
Expand Down Expand Up @@ -52,8 +55,7 @@ library EmergencyProtection {
}

self.emergencyModeEndsAfter = self.emergencyModeDuration.addTo(now_);

emit EmergencyModeActivated();
emit EmergencyModeActivated(Timestamps.now());
}

/// @dev Deactivates the emergency mode.
Expand All @@ -64,64 +66,80 @@ library EmergencyProtection {
self.emergencyProtectionEndsAfter = Timestamps.ZERO;
self.emergencyModeEndsAfter = Timestamps.ZERO;
self.emergencyModeDuration = Durations.ZERO;
emit EmergencyModeDeactivated();
emit EmergencyModeDeactivated(Timestamps.now());
}

// ---
// Setup functionality
// ---

/// @dev Sets the emergency governance address.
/// @param self The storage reference to the Context struct.
/// @param newEmergencyGovernance The new emergency governance address.
function setEmergencyGovernance(Context storage self, address newEmergencyGovernance) internal {
if (newEmergencyGovernance == self.emergencyGovernance) {
return;
revert InvalidEmergencyGovernance(newEmergencyGovernance);
}
self.emergencyGovernance = newEmergencyGovernance;
emit EmergencyGovernanceSet(newEmergencyGovernance);
}

/// @dev Sets the emergency protection end date.
/// @param self The storage reference to the Context struct.
/// @param newEmergencyProtectionEndDate The new emergency protection end date.
/// @param maxEmergencyProtectionDuration The maximum duration for the emergency protection.
function setEmergencyProtectionEndDate(
Context storage self,
Timestamp newEmergencyProtectionEndDate,
Duration maxEmergencyProtectionDuration
) internal {
if (newEmergencyProtectionEndDate > maxEmergencyProtectionDuration.addTo(Timestamps.now())) {
if (
newEmergencyProtectionEndDate > maxEmergencyProtectionDuration.addTo(Timestamps.now())
|| newEmergencyProtectionEndDate == self.emergencyProtectionEndsAfter
) {
revert InvalidEmergencyProtectionEndDate(newEmergencyProtectionEndDate);
}

if (newEmergencyProtectionEndDate == self.emergencyProtectionEndsAfter) {
return;
}
self.emergencyProtectionEndsAfter = newEmergencyProtectionEndDate;
emit EmergencyProtectionEndDateSet(newEmergencyProtectionEndDate);
}

/// @dev Sets the emergency mode duration.
/// @param self The storage reference to the Context struct.
/// @param newEmergencyModeDuration The new emergency mode duration.
/// @param maxEmergencyModeDuration The maximum duration for the emergency mode.
function setEmergencyModeDuration(
Context storage self,
Duration newEmergencyModeDuration,
Duration maxEmergencyModeDuration
) internal {
if (newEmergencyModeDuration > maxEmergencyModeDuration) {
if (
newEmergencyModeDuration > maxEmergencyModeDuration
|| newEmergencyModeDuration == self.emergencyModeDuration
) {
revert InvalidEmergencyModeDuration(newEmergencyModeDuration);
}
if (newEmergencyModeDuration == self.emergencyModeDuration) {
return;
}

self.emergencyModeDuration = newEmergencyModeDuration;
emit EmergencyModeDurationSet(newEmergencyModeDuration);
}

/// @dev Sets the emergency activation committee address.
/// @param self The storage reference to the Context struct.
/// @param newActivationCommittee The new emergency activation committee address.
function setEmergencyActivationCommittee(Context storage self, address newActivationCommittee) internal {
if (newActivationCommittee == self.emergencyActivationCommittee) {
return;
revert InvalidEmergencyActivationCommittee(newActivationCommittee);
}
self.emergencyActivationCommittee = newActivationCommittee;
emit EmergencyActivationCommitteeSet(newActivationCommittee);
}

/// @dev Sets the emergency execution committee address.
/// @param self The storage reference to the Context struct.
/// @param newExecutionCommittee The new emergency execution committee address.
function setEmergencyExecutionCommittee(Context storage self, address newExecutionCommittee) internal {
if (newExecutionCommittee == self.emergencyExecutionCommittee) {
return;
revert InvalidEmergencyExecutionCommittee(newExecutionCommittee);
}
self.emergencyExecutionCommittee = newExecutionCommittee;
emit EmergencyExecutionCommitteeSet(newExecutionCommittee);
Expand Down
Loading