Skip to content

Liquidity Hub

Contracts for the Liquidity Hub: one per-asset ERC-4626 allocator vault per asset, routing deposits across the Core, Flux, FRV, Spoke and Centrifuge yield families.

The canonical, always-current list of deployed Hubs lives on-chain: query getHubs() or hubForAsset(asset) on the HubRegistry below rather than hard-coding a Hub address. The addresses known at the time of writing are listed here for convenience.

The registry is a chain-level singleton behind a TransparentUpgradeableProxy, administered by Venus’s shared DefaultProxyAdmin 0x6beb6D2695B67FEb73ad4f172E8E2975497187e4 — the same one that administers the core pool and isolated pools — so it upgrades independently of the Hubs.

Each Hub is a beacon proxy over HubBeacon, holds exactly one asset, and issues a Venus Hub <asset> / vh<asset> share token.

Every Hub owns one YieldGroup proxy per yield family it is wired to, and the set differs per Hub: the U Hub has no Centrifuge Source. Resolve them from the Hub’s registeredYieldGroups() rather than hard-coding; the current set is:

USDT Hub

USDC Hub

U Hub

Each Core YieldGroup routes to the corresponding Core pool vToken (vUSDT, vUSDC, vU) and each Flux YieldGroup to the corresponding Fluid fToken (fUSDT, fUSDC, fU). The FRV YieldGroups were registered unwired at launch; VIP-657 then registered the Solv (Ceffu custody) vault 0x086fd7972510dF9d9cFdc4efB8677fc72d290103 (FRV-sv-17AUG2026-30) on FRVSource_USDT and the Asseto CASH+ vault 0x41179fc6ff878b7795B900888E0B61fd8029bceA (FRV-ast-13AUG2026-30) on FRVSource_U, and raised the FRV percentage cap on those two Hubs from 30% to 50% of TVL; VIP-664 later raised the U Hub’s to 90%. VIP-667 added a second resource to FRVSource_U, the Hash Global hBNB vault 0xfE419E150d63ff288b9802533f6Fe2f886DB6FED (FRV-hg-05OCT2026-30). FRVSource_USDC still carries no resource. The FRV sources stay out of the outer deposit queue, so lender deposits land in Core, Spoke and Flux (the outer deposit queue, in that order) and FRV is filled only by the Operator’s reallocate. Each Spoke YieldGroup routes to its asset’s liquidity market in the bStock index spoke pool (vUSDT_bStockIndex, vUSDC_bStockIndex, vU_bStockIndex), wired by VIP-669 and VIP-670; the pool’s addresses are on the spoke pools page. Read the live set with resources() on a YieldGroup, and its per-resource adapter with resourceConfig(resource).

The Centrifuge sources each carry two resources behind AdapterCentrifuge, the same two Janus Henderson funds in the Hub’s own asset: JTRSY (Janus Henderson Treasury Fund) and JAAA (Janus Henderson AAA CLO Fund). The funds share their share classes, NAV and request manager across the two assets, but each asset has its own vault contract.

SourceAdded byJTRSY vaultJAAA vault
CentrifugeSource_USDTVIP-6610x6e6B8498415083a4386BE83DD59Edd4366402FFa0xcbAfe61d84C6Fb88252a6Adf1C9CB0B9D029cb99
CentrifugeSource_USDCVIP-6660x5aa84705a2CB2054ed303565336F188e6bfFbAF50x9effaa5614c689fA12892379e097b3ACaD239961

Both sources carry the same caps, 5,000,000 of the Hub’s asset and 25% of TVL, and neither is in the outer deposit queue. The U Hub has no Centrifuge source.

One UpgradeableBeacon per family; upgrading a beacon upgrades every vault of that family atomically. All of them are owned by the Normal Timelock 0x939bD8d64c0A9583A7Dcea9933f7b21697ab6396.

Stateless, non-upgradeable singletons shared by every Hub; mutating calls reach them by delegatecall, so receipt tokens land on the calling YieldGroup. VIP-669 replaced the Core, Flux, FRV and Centrifuge adapters and repointed every resource live at the time with updateResourceAdapter; the Spoke resources were registered on AdapterSpokeV1 by VIP-670. An adapter address read from an older proposal or an older revision of this page may be a pre-replacement one; read a resource’s adapter with resourceConfig(resource) on its YieldGroup.

Stateless, permissionless and non-upgradeable; one-click migration of a Venus Core position into a Hub via migrateFromCore / migrateFromCoreBNB (plus the *WithConsent variants).

Stateless, unowned and non-upgradeable; read-only. The Hub itself computes no deposit ceiling, so this is where a frontend or an integrator reads one: maxDeposit(hub), maxMint(hub), depositCapacityBreakdown(hub) and spotAPYBps(hub). The Hub is a call parameter, so this single deployment serves every Hub. It is not registered in the HubRegistry and no Hub exposes its address, so read it here or from the repository’s deployment files, not from the chain. See Sizing a deposit.

A venus-periphery contract that pauses a whole Hub through EBrake when a Centrifuge position’s value breaks far out of its NAV band. See Automatic pause on a NAV break for its status.

Every gated function on the Hubs and YieldGroups is checked against AccessControlManagerV8 0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555. Role holders (governance, Operator, Guardian, and a Keeper limited to the Centrifuge claims) are granted by proposal rather than baked into the bytecode — see Permissions.

A parallel deployment exists for integration testing. It is not a faithful mirror of mainnet — share-token naming, FRV wiring, caps and the registry’s proxy admin all differ; see the technical reference for the full list of differences.

The testnet registry predates the decision to use the shared DefaultProxyAdmin, so it still carries a registry-specific ProxyAdmin.

The testnet registry lists seventeen Hubs, all over mock assets or, in one case, another Hub’s share token. The USDT Hub is the reference deployment documented in the technical reference; the rest were stood up for QA scenarios and their wiring varies per Hub: some carry every family, some only part of them, and one carries none. Read registeredYieldGroups() on a Hub, then resources() on each group, rather than assuming the mainnet shape.

The USDT Hub’s share token is named Vault Share / vSHARE, a placeholder predating the Venus Hub <asset> / vh<asset> convention the later Hubs and all of mainnet use.

Unlike mainnet, FRV is fully wired on testnet: the FRV YieldGroup has eight Fixed-Rate Vaults registered as resources. The Centrifuge group carries one resource, a mock Testnet JTRSY (USDT) vault 0x8a3C1f806B635230b74741066DE9B0Aa902F83dC, not the two real funds mainnet carries.