Skip to content

SIP-0094 Perimeter Fee - #91

Open
tjcloa wants to merge 11 commits into
mainfrom
SIP-0094-perimeter-fee
Open

SIP-0094 Perimeter Fee#91
tjcloa wants to merge 11 commits into
mainfrom
SIP-0094-perimeter-fee

Conversation

@tjcloa

@tjcloa tjcloa commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

No description provided.

tjcloa added 11 commits August 12, 2026 10:03
The text still promised a separate technical SIP document per ballot —
left over from the earlier multi-document plan. Corrected in all three
places: the summary now says this document covers all three parts, the
Part 1 section points at the Deployed contracts section for the
action-by-action breakdown, and the rollback anchors and runtime code
hashes are now an actual table in this document rather than a reference
to a document that does not exist. Notes that the two new registrations
have no rollback anchor and that the liquidation module is deliberately
not redeployed.
The Perimeter Fee controller and vault are deployed on RSK mainnet from
Sovryn-perimeter 881c74d and source-verified on Blockscout, so the core
table now carries final addresses instead of placeholders. Records that the
controller shipped switched off with the four charging surfaces at 10 bps,
the AMM surface shut, and admin plus ownership pointed at the Exchequer.
The lending and Zero tables stay placeholders until Phase B.
Phase B executed 2026-08-13: seven lending artifacts (commit 93997a55) and
the two Zero implementations (commit a6ad838e), all verified to hold code
on-chain, live proxies untouched. Zero implementation codehashes are
byte-identical to the fork rehearsal's pins. Adds the
SwapsImplSovrynSwapLib note: linked, not registered, address required to
reproduce module bytecode. The rollback-anchor table stays TBD until CP-C
freezes the live implementations it replaces.
The module now registered by Part 1 is 0x279D307C09E30d282aA96C3F4D216051277787f7,
linked against the already-verified library 0x47Dc479c… instead of the
byte-identical unverifiable copy, so voters audit a library whose source
is already on the explorer. On-chain proof: the relinked module differs
from its predecessor in exactly the 20 link-address bytes.
All seven rows now carry the currently-live implementation each Part 1
action supersedes (read from the protocol's getTarget routing, the two
iToken beacons' active module logs, and the two Zero proxies), the final
new implementation, and its on-chain runtime code hash. The CollSurplusPool
row's 'no prior implementation' claim is corrected: the proxy has served
its original implementation unupgraded since deployment, and that address
is the rollback anchor. Anchors are re-verified at proposal creation;
drift voids and re-freezes the table.
…, fix a stray character

Review found the library paragraph understated the facts: LoanClosingsWith
links the pre-existing library 0x47Dc479c…, but the other two registered
modules, LoanClosingsRollover and LoanMaintenance, link 0xFE2bb2d… — the
copy this release deployed, which the text described as merely set aside.
Both addresses are needed to rebuild the registered modules, and both are
explorer-verified, so both are now disclosed in a table naming which module
links which. Confirmed on-chain by reading each module's runtime bytecode.

The Part 1 summary promised action-by-action call data in the deployed
contracts section, which carried only addresses and code hashes. That
section now holds the ten actions in execution order with target, signature
and argument, noting that the encoded call data is frozen into the proposal
at creation, and that the implementation swap precedes the controller wiring
in actions 9 and 10.

Also removes a stray period after the third Risks bullet.
Carries the addresses of the release that is actually on chain, replacing the
set the document named before the identifier re-cut moved every surface id and
required a redeploy. All ten Part 1 actions were checked against the calldata
the proposal builders produce, action by action, on a forked-mainnet run
against the deployed bytecode.

Also in this pass:
- action 7's signature is setBorrowerExitPerimeterOps(address), and the module
  it registers is BorrowerExitPerimeterOps -- the re-cut reached both names;
- all three library consumers now link the same SwapsImplSovrynSwapLib
  deployment, the one the explorer verifies as a full source match, so the
  split-link table and its explanation are gone;
- runtime code hashes recomputed from chain for all six replaced artifacts;
- all seven rollback anchors re-read from the live protocol, beacons and
  proxies: unchanged, no drift;
- ownership stated precisely -- the Exchequer is the operational admin today
  and the named pending owner, and accepts before execution.
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.

1 participant