Skip to content

Conversation

@0xClandestine
Copy link
Member

@0xClandestine 0xClandestine commented Oct 9, 2025

Motivation:

We want to reduce codesize throughout our core contracts.

Modifications:

  • Removed SemVerMixin from every contract that doesn't inherit SignatureUtilsMixin.

Result:

~300 bytes of codesize saved per contract.

@0xClandestine 0xClandestine changed the title feat: add ProtocolRegistry + one-click pause all feat: add ProtocolRegistry + remove semver Oct 9, 2025
@0xClandestine 0xClandestine changed the title feat: add ProtocolRegistry + remove semver feat: remove semver + minor optimizations Oct 9, 2025
@0xClandestine 0xClandestine force-pushed the refactor/split-alm branch 3 times, most recently from 42af1f1 to ecc69cf Compare October 16, 2025 15:14
Copy link
Collaborator

@ypatil12 ypatil12 left a comment

Choose a reason for hiding this comment

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

We may not want to update the Eigen token

import "../mixins/SemVerMixin.sol";

contract Eigen is OwnableUpgradeable, ERC20VotesUpgradeable, SemVerMixin {
contract Eigen is OwnableUpgradeable, ERC20VotesUpgradeable {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Maybe we don't want to remove the Eigen semver? cc @nadir-akhtar

Copy link
Collaborator

Choose a reason for hiding this comment

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

Changes to the Eigen token aren't unthinkable (e.g. we merged in a couple event emissions earlier this year), so long as they don't impact token functionality and we inform stakeholders prior to performing the upgrade.

I would err on the side of not making the change unless there's a pressing need. But, if we want to remove it for consistency, we can entertain the option.

Copy link
Member Author

Choose a reason for hiding this comment

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

Lets discuss

Base automatically changed from refactor/split-alm to release-dev/slashing-ux-improvements October 23, 2025 20:01
squash

feat: split alm

wip

wip

wip

wip

wip

wip

wip

unit tests passing

remove extsload

wip

tests passing

chore: git mv storage to folder

wip

ci

docs

todo

cleanup

ci

ci

rename `secondHalf`

rm extsload

move storage

add protocol registry to zeus

squash

feat: split alm

wip

wip

wip

wip

wip

wip

wip

unit tests passing

remove extsload

wip

tests passing

chore: git mv storage to folder

wip

ci

wip

wip

wip

wip

wip

remove extsload

wip

tests passing

wip

passing

perf: wrap modifier logic to save codesize

chore: forge fmt

refactor: remove semver (#1641)

**Motivation:**

We want to consolidate semver logic into a single purpose built
contract.

**Modifications:**

- Removed `SemVerMixin` import from all contracts.

**Result:**

More codesize savings.

make fmt

refactor: expand `ProtocolRegistry` to list all contracts + pause

rm gas snapshots

rm extsload

rebase
Copy link
Collaborator

@nadir-akhtar nadir-akhtar left a comment

Choose a reason for hiding this comment

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

The changes to remove SemVerMixin look good from a correctness standpoint.

That said, taking a step back, I'm not sure removing SemVerMixin for the 300 bytes return is ideal. It's a strange property for some contracts to have a version attributed to them, and for others not to.

If we're to make a change here, I recommend we have some replacement, e.g. a registry with either a global protocol version or versions for each contract. That way, we don't have a strange situation where some contracts have version while others don't.

) external onlyWhenNotPaused(PAUSED_MODIFY_ALLOCATIONS) {
// Check that the caller is allowed to modify allocations on behalf of the operator
// We do not use a modifier to avoid `stack too deep` errors
require(_checkCanCall(operator), InvalidCaller());
Copy link
Collaborator

Choose a reason for hiding this comment

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

Curious to know what the need for these changes to the PermissionControllerMixin and related contracts was in this PR is, as it seems unrelated to the SemVerMixin. We lose some granularity in error specification here -- not the worst situation as InvalidPermissions is fairly explanatory for a given function, but recommend we save this for a different PR.

Copy link
Member Author

Choose a reason for hiding this comment

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

srry squashed, commit history not as useful now

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