Skip to content

L1 staking #22

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

Merged
merged 30 commits into from
Apr 14, 2025
Merged

L1 staking #22

merged 30 commits into from
Apr 14, 2025

Conversation

gretzke
Copy link
Collaborator

@gretzke gretzke commented Mar 4, 2025

No description provided.

@gretzke gretzke changed the base branch from main to dev-uvn March 4, 2025 21:58
@gretzke gretzke marked this pull request as ready for review March 10, 2025 14:04
Comment on lines 13 to 17
struct AccessControl {
bool acceptDelegation;
address authorizedSender;
IDelegatorVerifier verifier;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: would prefer this to be in a library if used in other contracts

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not used in any other contracts, this is just internal storage


/// @inheritdoc IDelegatorAccessControl
function setDelegationStatus(bool status) external {
_delegatorAccessControl[msg.sender].acceptDelegation = status;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: cache sender

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

calling msg.sender directly is cheaper than caching it in a variable, or is this about readability instead of gas?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh for some reason I thought it was cheaper if used multiple times huh, I don't mind then. For larger functions def prefer for readability

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's true for things like .length when the array is in memory

zhongeric and others added 7 commits March 17, 2025 22:58
* Create base L1TestHandler

* remove solmate

* imports

* Add deployer to compile without IR and speed up compilation by 50%

---------

Co-authored-by: gretzke <[email protected]>
* initial staking middleware params tests

* add a few more tests
* add delegator access control tests

* fix shadowed variable

* use selectors from interfaces to test reverts

---------

Co-authored-by: gretzke <[email protected]>
* ProtocolRewardDistributor tests

* remove console.log, formatting

---------

Co-authored-by: gretzke <[email protected]>
zhongeric and others added 7 commits March 20, 2025 21:29
* Create base L1TestHandler

* remove solmate

* imports

* tests first pass

* Add tests

* clean up tests

* name

* Test/stake manager proposed changes (#49)

* No need to add these functions here

* Rename Wrapper => Harness to align with the naming used in other tests

* move delegator to L1 Handler

---------

Co-authored-by: Daniel Gretzke <[email protected]>
* Add explanation for added function to interface

* clarify logic flow of allowing delegation

* Add natspec

* make functions and variables internal in Votes, extend functionality in OperatorVotes

* add multicall to contract
* Initial commit: OperatorManager tests

* Overwrite public function instead of internal function

* rename internal functions

* cache msg.sender

* remove unused import

* rename variable
* Add some fuzz tests

* Add invariant tests

* Add slashing to invariant tests

* comments

* nit

* move file to StakingMiddleware directory

---------

Co-authored-by: gretzke <[email protected]>
* Simplify logic around slashing and add more comments

* Add fuzz and invariant to stake manager (#51)

* Add some fuzz tests

* Add invariant tests

* Add slashing to invariant tests

* comments

* nit

* move file to StakingMiddleware directory

---------

Co-authored-by: gretzke <[email protected]>

* Simplify logic around slashing and add more comments

* Add SlashingManager tests

---------

Co-authored-by: Eric Zhong <[email protected]>
* require stake to deposit into UniStaker, add view function to check whether user is deposited into unistaker

* add unistaker wrapper tests
* Initial commit: Notifier

* Notification implementation

* Add forceful withdrawals of ERC-721 tokens for operators

* Update documentation

* Initial commit: Stake Table Sync

* fix merge conflicts

* fix contract size, fix stack too deep in tests

* Add notifier tests

* remove duplicate remappings

* Add staketablesync tests

* Add trusted service contracts

* check header of 7702 smart wallets
@gretzke gretzke merged commit bee1679 into dev-uvn Apr 14, 2025
2 checks passed
@gretzke gretzke deleted the l1-staking branch April 14, 2025 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants