Skip to content

feat: permissioned spoke via modifier override - #1347

Open
AlbertoCentonze wants to merge 9 commits into
mainfrom
feat/permissioned-spoke-modifier
Open

feat: permissioned spoke via modifier override#1347
AlbertoCentonze wants to merge 9 commits into
mainfrom
feat/permissioned-spoke-modifier

Conversation

@AlbertoCentonze

Copy link
Copy Markdown

Alternative to #1334 that keeps the canonical SpokeInstance runtime bytecode unchanged by making onlyPositionManager virtual and overriding it for permissioned instances. The concrete instance repeats the modifier override to resolve the Spoke inheritance diamond. The gate applies to modifier-protected position actions; liquidations and direct _isPositionManager callers retain canonical behavior.

Marking the modifier virtual is the only change to Spoke, which keeps
SpokeInstance deployed bytecode byte-identical to main. The gate check
lives in an internal function so the override is not inlined per entry
point (24,527 bytes at 750 runs).
SpokeInstance is back to exactly the main version. The gate authorization
lives in an abstract PermissionedSpoke core, and the instance inherits
SpokeInstance and PermissionedSpoke (diamond over Spoke), re-declaring the
modifier override as required by the compiler. The modifier passes
msg.sender and msg.data down instead of reading them in the internal
check. SpokeInstance deployed bytecode stays byte-identical to main;
PermissionedSpokeInstance is 24,535 bytes at 750 runs.
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