Skip to content

feat: permissioned spoke via position manager override - #1348

Open
AlbertoCentonze wants to merge 10 commits into
mainfrom
feat/permissioned-spoke-position-manager
Open

feat: permissioned spoke via position manager override#1348
AlbertoCentonze wants to merge 10 commits into
mainfrom
feat/permissioned-spoke-position-manager

Conversation

@AlbertoCentonze

Copy link
Copy Markdown

Alternative to #1334 that keeps the canonical SpokeInstance runtime bytecode unchanged by making the internal and external position-manager queries virtual. Permissioned Spoke routes internal authorization through the gate while the external query explicitly preserves the stored position-manager relationship, preventing gate callback recursion. This also gates updateUserRiskPremium and updateUserDynamicConfig; liquidations remain permissionless.

avniculae and others added 10 commits August 11, 2026 13:10
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