Skip to content

Conversation

@0xClandestine
Copy link
Member

@0xClandestine 0xClandestine commented Sep 29, 2025

Motivation:

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

Modifications:

  • Removed SemVerMixin import from all contracts.

Result:

More codesize savings.

**Motivation:**

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

**Modifications:**

- Added `ProtocolRegistry` contract.

**Result:**

Users can now query semver via the `ProtocolRegistry` rather than
through each contract address.
@0xClandestine 0xClandestine merged commit 926a3f8 into perf/codesize Oct 9, 2025
1 check passed
@0xClandestine 0xClandestine deleted the perf/remove-semver branch October 9, 2025 15:46
0xClandestine added a commit that referenced this pull request Oct 9, 2025
**Motivation:**

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

**Modifications:**

- Removed `SemVerMixin` import from all contracts.

**Result:**

More codesize savings.
0xClandestine added a commit that referenced this pull request Oct 9, 2025
**Motivation:**

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

**Modifications:**

- Removed `SemVerMixin` import from all contracts.

**Result:**

More codesize savings.
0xClandestine added a commit that referenced this pull request Oct 9, 2025
**Motivation:**

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

**Modifications:**

- Removed `SemVerMixin` import from all contracts.

**Result:**

More codesize savings.
0xClandestine added a commit that referenced this pull request Oct 9, 2025
**Motivation:**

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

**Modifications:**

- Removed `SemVerMixin` import from all contracts.

**Result:**

More codesize savings.
0xClandestine added a commit that referenced this pull request Oct 16, 2025
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
0xClandestine added a commit that referenced this pull request Oct 16, 2025
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
0xClandestine added a commit that referenced this pull request Oct 24, 2025
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
0xClandestine added a commit that referenced this pull request Oct 24, 2025
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
ypatil12 pushed a commit that referenced this pull request Nov 5, 2025
**Motivation:**

The `AllocationManager` contract was hitting the 24KB bytecode size
limit, which would have blocked deployment. We needed a solution to
reduce the contract size while maintaining backwards compatibility with
existing integrations that call view functions on `AllocationManager`.

**Modifications:**

- Created a new `SplitContractMixin` that uses a fallback to delegate
unmatched function calls via `delegatecall` to a secondary contract
- Split `AllocationManager` into two contracts: the main contract
handles state-mutating operations, while `AllocationManagerView` handles
all read-only view functions
- Both contracts inherit from `AllocationManagerStorage` to share the
same storage layout, enabling the view contract to read from the main
contract's storage
- Updated `AllocationManager` constructor to accept and store the
`AllocationManagerView` address
- Modified all deployment scripts (devnet, local, integration) to deploy
both proxies and implementations
- Updated `ExistingDeploymentParser`, test harnesses, and
unit/integration tests to work with the split architecture

**Result:**

- The `AllocationManager` is now about ~ 4.8KB under the 24KB limit with
room to grow.
- The `AllocationManagerView` contract has 16KB of available space for
future view functions.

TODO: Add a ci check (I don't have privs but the code is written
locally)
1) Get list of all contracts ending in View.sol in the repo.
2) Use forge inspect abi and check all mutability fields == view|pure.
3) Basic search over the file to see if sstore or delegatecall is used
on a for additional sanity.

---------

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

squash

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

ci

revert eigen changes

remove stale scripts
ypatil12 pushed a commit that referenced this pull request Nov 5, 2025
**Motivation:**

The `AllocationManager` contract was hitting the 24KB bytecode size
limit, which would have blocked deployment. We needed a solution to
reduce the contract size while maintaining backwards compatibility with
existing integrations that call view functions on `AllocationManager`.

**Modifications:**

- Created a new `SplitContractMixin` that uses a fallback to delegate
unmatched function calls via `delegatecall` to a secondary contract
- Split `AllocationManager` into two contracts: the main contract
handles state-mutating operations, while `AllocationManagerView` handles
all read-only view functions
- Both contracts inherit from `AllocationManagerStorage` to share the
same storage layout, enabling the view contract to read from the main
contract's storage
- Updated `AllocationManager` constructor to accept and store the
`AllocationManagerView` address
- Modified all deployment scripts (devnet, local, integration) to deploy
both proxies and implementations
- Updated `ExistingDeploymentParser`, test harnesses, and
unit/integration tests to work with the split architecture

**Result:**

- The `AllocationManager` is now about ~ 4.8KB under the 24KB limit with
room to grow.
- The `AllocationManagerView` contract has 16KB of available space for
future view functions.

TODO: Add a ci check (I don't have privs but the code is written
locally)
1) Get list of all contracts ending in View.sol in the repo.
2) Use forge inspect abi and check all mutability fields == view|pure.
3) Basic search over the file to see if sstore or delegatecall is used
on a for additional sanity.

---------

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

squash

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

ci

revert eigen changes

remove stale scripts
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.

2 participants