Skip to content

Feat/liquidity hub centrifuge onboarding - #759

Draft
GitGuru7 wants to merge 2 commits into
mainfrom
feat/liquidity-hub-centrifuge-onboarding
Draft

Feat/liquidity hub centrifuge onboarding#759
GitGuru7 wants to merge 2 commits into
mainfrom
feat/liquidity-hub-centrifuge-onboarding

Conversation

@GitGuru7

Copy link
Copy Markdown
Contributor

Summary

Draft VIP onboarding a Centrifuge yield group into the USDT Liquidity Hub on BNB Chain, wiring
two Centrifuge v3 (ERC-7540) tokenised-fund vaults into it — JTRSY (Janus Henderson Anemoy Treasury
Fund) and JAAA (Janus Henderson Anemoy AAA CLO Fund) — alongside the existing Core, Flux and FRV
groups.

What the VIP does

34 commands across 6 targets, one atomic transaction, order-dependent.

1. ACM grants (28) on the new yield group:

Holder Signatures
Normal Timelock the full 18-signature set (8 YieldGroupBase + 10 YieldGroupCentrifuge)
Critical Guardian 6 — both inner queues, pauseResource, requestRedeem, both cancellations
Keeper / Operator 4 — claimDeposit, claimRedeem, claimCancelDeposit, claimCancelRedeem

The Guardian set is containment and wind-down only: no unpause, no claims, no sweep, no price-guard
control, so it can contain but never undo a governance-ordered pause.

2. Resource registrationaddResource for the JTRSY and JAAA vaults behind the shared
AdapterCentrifuge. Must precede the queue setters, which reject an unregistered resource.

3. setInnerDepositQueue([JTRSY, JAAA]). The inner withdraw queue is deliberately not set.

4. setPriceGuard per vault against the live Centrifuge Spoke, 5-day staleness window.

5. addYieldGroup on the USDT Hub at 5,000,000 USDT absolute and 2000 bps (20% of TVL).
_effectiveCap takes the lower, so the percentage dimension binds at the current TVL.

6. setOuterWithdrawQueue([Flux, Core, FRV, Centrifuge]) — rewritten in full, because the Hub
rejects a queue omitting a registered group that holds a balance.

No acceptOwnership() appears: the CentrifugeBeacon receives governance ownership inside the deploy
transaction (OpenZeppelin Ownable is single-step). The USDC and U Hubs are untouched.

The Spoke reports maxAge == validUntil == type(uint64).max for both share classes and
_enforcePriceGuard never reads them, so the 5-day window is sized from observed publication cadence
instead: NAV is published on business days — 1-day gaps, 3 days over weekends, 4.00 days worst case
over 60 days of samples
. That leaves one day of headroom.

Pending before this can be proposed

  • CENTRIFUGE_YIELD_GROUP — the YieldGroupCentrifuge BeaconProxy for the USDT Hub. Not
    deployed;`
  • ADAPTER_CENTRIFUGE — the stateless per-chain adapter. Not deployed.
  • Centrifuge must memberlist the group proxy on both share tokens.

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