Contract addresses
Check a YieldBasis contract address here before you sign a transaction or integrate a contract. All addresses are on Ethereum mainnet.
To confirm a role, read it from the contract. For example, call markets(i) on the Factory for a market, or POLICY() on a pool for its pool policy.
Core contracts
This table lists the protocol-wide contracts and the role of each. Where the Contract column names a getter, call it on the parent contract to confirm the address.
| Contract | Address | Role |
|---|---|---|
| YB | 0x01791F726B4103694969820be083196cC7c045fF | The YB governance token (ERC-20) |
| veYB | 0x8235c179E9e84688FBd8B12295EfC26834dAC211 | VotingEscrow: veYB balance and voting power |
| GaugeController | 0x1Be14811A3a06F6aF4fA64310a636e1Df04c1c21 | Gauge voting; lists the gauges by index (gauges(i)) |
| CliffEscrow (implementation for the cliff escrows of five vesting escrows) | 0x60043a545E22424E73A2dEbb98f8cd4361fE3DA0 | Blocks transfers of the escrowed YB and veYB until the cliff time; allows veYB locks and votes before it |
| Factory | 0x370a449FeBb9411c95bf897021377fe0B7D100c0 | Market registry: enumerate markets and get the contracts of each market (markets(i)) |
Emergency admin (Factory.emergency_admin(), Curve Emergency DAO, a Safe multisig) | 0x467947EE34aF926cF1DCac093870f613C96B1E0c | Emergency actions, for example to kill or revive a market. For the full list, read Curve Emergency DAO |
| StakeZap | 0xE862bC39B8D5F12D8c4117d3e2D493Dc20051EC6 | Deposit and stake, or unstake and withdraw, in one transaction |
| LTMigrator | 0xd5b450fDD5aF5341436Fc37A46BBEc39CA8F92CB | Migration from a legacy market to a current market |
| FeeDistributor | 0xD11b416573EbC59b6B2387DA0D2c0D1b3b1F7A90 | Admin-fee claims for veYB holders |
FeeSplitter (Factory.fee_receiver()) | 0x4B7782FD52143058E4495686EDf8917021D1c346 | Splits LT admin fees between the net-pressure reserve and the FeeDistributor |
crvUSD (Factory.STABLECOIN()) | 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E | The crvUSD token: the debt asset of every market, and coin 0 of each market pool |
crvUSD price aggregator (Factory.agg()) | 0x18672b1b0c623a30089A280Ed9256379fb0E4E62 | crvUSD price in USD. add_market() passes it to the LP oracle of each new market |
Flash lender (Factory.flash()) | 0x26dE7861e213A5351F6ED767d00e0839930e9eE1 | crvUSD flash loans for VirtualPool swaps |
Hybrid Vaults
This table lists the live Hybrid Vault contracts:
| Contract | Address |
|---|---|
HybridFactoryOwner (Factory.admin()) | 0xb8BA33CD1Ccb091a8468572950bD3669723FA5C6 |
| HybridVaultFactory | 0xBdC32268851C324c6185809271dfe6d8dab8dC5b |
| HybridVault implementation | 0xD772EDF092f155f3e81E2b261d96Bcfae4fDC3Ac |
HybridFactoryOwner accepts the LTMigrator in Core contracts as a limit setter. To check a migrator, call limit_setters(<address>) on HybridFactoryOwner.
Superseded Factory owners
These Factory owner contracts are superseded. This list is for reference only.
| Contract | Address |
|---|---|
| HybridFactoryOwner (superseded) | 0x0f4e1a1BcDe549653E9302Ba1cAaB403373f1048 |
| MigrationFactoryOwner (superseded) | 0xA68343ed4d517a277cFA1F2FC2b51f7a6794B6AD |
DAO, governance, and vesting
This table lists the DAO, governance, and vesting contracts:
| Contract | Address |
|---|---|
| DAO | 0x42F2A41A0D0e65A440813190880c8a65124895Fa |
| Plugin (Aragon TokenVoting) | 0x2be6670DE1cCEC715bDBBa2e3A6C1A05E496ec78 |
| VotingPowerCondition | 0x85AE9cCF1c862979e2D9B9f1aB819c212365fd92 |
| Curve Licensing | 0x36e36D5D588D480A15A40C7668Be52D36eb206A8 |
| Investors (vest, 15 September 2025 to 15 September 2027) | 0x11988547B064CaBF65c431c14Ef1b7435084602e |
| Team (vest, 15 September 2025 to 15 September 2027) | 0x93Eb25E380229bFED6AB4bf843E5f670c12785e3 |
| Protocol Development Reserve (vest, 15 September 2026 to 15 September 2027) | 0x525443603D6D0955142FaC8820b64Ae701F40065 |
| Ecosystem Reserve (vest, 15 October 2025 to 15 October 2027) | 0x7aC5922776034132D9ff5c7889d612d98e052Cf2 |
| YB Pair Rewards (vest, 15 September 2025 to 15 September 2026) | 0x1cb8f667De695f3d126534d9808567F299B90a86 |
| Early LPs Season 1 (vest, 4,888,138.575 YB, 15 October 2025 to 15 October 2026) | 0x7b5c75512C1b3749eb0ffE583C1349D02803CB13 |
Curve vote splitter (SnapshotSplitter, YB for Curve voters) | 0xC8aA884f54eA5eaEF5ef4086607C00580a103928 |
Each vest row is a VestingEscrow contract that holds YB. To read a schedule, call START_TIME(), END_TIME(), and initial_locked_supply() on the contract.
Active markets
Each table lists the contracts of one active market. LEVAMM is the market's leveraged automated market maker (AMM), yb-LP is its share token, and the gauge is its staking contract. For other terms, read Glossary.
Market 7: WBTC
Market 7 uses these contracts:
| Contract | Address |
|---|---|
| WBTC | 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 |
| yb-WBTC | 0x651D4b8168488FA163D85304662E8278d4c55BAa |
| Curve Cryptoswap pool (WBTC<>crvUSD) | 0x313698667d7FDD6789a9BC70821309ff891E729A |
| LEVAMM | 0x7b9817eb5C49A99875138A5d52bF64a8B2cFFFFE |
| VirtualPool | 0xF96Ff1189f1c2977b37E5Df01962e1895bcc3d6A |
| LP Oracle | 0x57977de27E8cEBaaE7D4f1c1c5E00A47177EAE0E |
| Gauge | 0xAa0b1d265F23972eafB7d088e963BD31403A58F5 |
Pool policy (YBTwocryptoPolicy) | 0x0436c0648AfD66de23f86f23cB42884304743EfA |
Market 8: cbBTC
Market 8 uses these contracts:
| Contract | Address |
|---|---|
| cbBTC | 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf |
| yb-cbBTC | 0x722FC3640BA007C3E9867CCdB0dCa59F2e2F29F9 |
| Curve Cryptoswap pool (cbBTC<>crvUSD) | 0x862CB4E988FB66E72f128d1183829f8c05B6c6A0 |
| LEVAMM | 0x49F51d7e279252F3C9a09678fdC65B4dBd5CB196 |
| VirtualPool | 0x04CA7a7E602335a261B63128e89d43b6fE1e2c87 |
| LP Oracle | 0x586855729584a2f2EB8d9ce93EC5EB678C124995 |
| Gauge | 0xF8764cBcdb15a9E4c7CA1b0b8a578d9ebEEC1b6f |
Pool policy (YBTwocryptoPolicy) | 0x038f549D21b9C22a26AdA4da2ebF7cFD1C3CA22d |
Market 9: tBTC
Market 9 uses these contracts:
| Contract | Address |
|---|---|
| tBTC | 0x18084fbA666a33d37592fA2633fD49a74DD93a88 |
| yb-tBTC | 0x771F7290428d830ECd41E980745c327e507823Ec |
| Curve Cryptoswap pool (tBTC<>crvUSD) | 0x4F52C3a81E33521e5a9A47FD9D3BE475D2279c2e |
| LEVAMM | 0x0e357Af536592F275C6Aa07b8AC2CA6EB3d0cF5a |
| VirtualPool | 0x1b9518f6B179552c6A903F213d4EA5503Ab7F96E |
| LP Oracle | 0xaD78a4e35166F9942FB2916fDcFc1888b4718036 |
| Gauge | 0xe83D888FE3213DD3471DE0bC1957E0f94F038483 |
Pool policy (YBTwocryptoPolicy) | 0xE99ee179f1Cc62d4A1d3e67dD5541Ecb63acA396 |
Market 10: WETH
Market 10 uses these contracts:
| Contract | Address |
|---|---|
| WETH | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| yb-WETH | 0x2B9c9f3BdcEb5d8E36a4704F08a78Fca53343cEa |
| Curve Cryptoswap pool (WETH<>crvUSD) | 0x656341Ef90b622c6634e0573772FfB7f3669b9f3 |
| LEVAMM | 0x5f8D24F33Cc5a1D5D1bf012261E6A2214C92233c |
| VirtualPool | 0x772cfF0BE38A6ED31aeAe479cbcb26D54B8404CF |
| LP Oracle | 0x231C37b8e9D2076d673C5E24eCFcC2a82652E054 |
| Gauge | 0xd829456FD63Ada7DE0657714A3A7A26DE403E3D8 |
Pool policy (YBOraclizedPolicy) | 0xAEa95d551154443E73565bE724d59D63d72f8A7d. For the policy status of each pool, read Pool policies. |
Pool policies
A pool policy is a contract that a Curve Cryptoswap pool calls to set its swap fee, its price_scale target, or both. To check which policy a pool runs, call POLICY() on the pool. For what each policy does, read Pool policies.
Policy of each market pool
This table maps each active market pool to its pool policy:
| Market | Pool | POLICY() |
|---|---|---|
| WBTC (market 7) | 0x313698667d7FDD6789a9BC70821309ff891E729A | YBTwocryptoPolicy 0x0436c0648AfD66de23f86f23cB42884304743EfA |
| cbBTC (market 8) | 0x862CB4E988FB66E72f128d1183829f8c05B6c6A0 | YBTwocryptoPolicy 0x038f549D21b9C22a26AdA4da2ebF7cFD1C3CA22d |
| tBTC (market 9) | 0x4F52C3a81E33521e5a9A47FD9D3BE475D2279c2e | YBTwocryptoPolicy 0xE99ee179f1Cc62d4A1d3e67dD5541Ecb63acA396 |
| WETH (market 10) | 0x656341Ef90b622c6634e0573772FfB7f3669b9f3 | YBOraclizedPolicy 0xAEa95d551154443E73565bE724d59D63d72f8A7d |
The pools of markets 7 to 10 run Twocrypto v3.0.0 (the v3 pools). The pools of markets 0 to 6 run Twocrypto v2.1.0d. That code has no POLICY() function and no policy hooks.
YBOraclizedPolicy contracts
This table lists the oracle-report policy contracts and the Pyth contracts that they use:
| Contract | Address | Status |
|---|---|---|
YB-WETH pool policy (YBOraclizedPolicy) | 0xAEa95d551154443E73565bE724d59D63d72f8A7d | Attached to the YB-WETH pool. Owner: YB DAO. Emergency admin: Curve Emergency DAO. |
YB-WETH pool policy (YBOraclizedPolicy, first deployment) | 0x508356890B1AB013b2f184604f403e435C794Cca | Superseded by 0xAEa9…8A7d. Never attached. Owner: YB DAO. |
Pyth Lazer verifier (proxy, set in oracle() of each YBOraclizedPolicy) | 0xACeA761c27A909d4D3895128EBe6370FDE2dF481 | Pyth contract. |
Pyth Lazer verifier implementation (PythLazer 0.2.0) | 0xD8f4A467AbeC64Bc944eee1325B9007879B6555b | Pyth contract. |
Curve contracts that control pool policies
This table lists the Curve contracts that control pool policies:
| Contract | Address |
|---|---|
| Curve Twocrypto factory | 0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F |
Pool admin proxy (factory.admin()) | 0x97aA696e37659Fb4f0B53824246d802Df40E980A |
Curve Ownership Agent (dao() of the pool admin proxy) | 0x40907540d8a6C65c637785e8f8B742ae6b0b9968 |
| Curve ownership voting | 0xE478de485ad2fe566d49342Cbd03E49ed7DB3356 |
The pool admin proxy has two roles:
dao(), the Curve Ownership Agent. Only this role can callexecute(). A Curve DAO ownership vote uses it to attach or replace a pool policy and to set the pool fee parameters.emergency_dao(), the Curve Emergency DAO0x4679…1e0c. Both this role and thedao()role can callemergency_parameters(). On the v3 pools of markets 7 to 10, a call toemergency_parameters()setsmid_fee,out_fee,fee_gamma,adjustment_step_min,adjustment_step_max, andma_timeon a pool.
For every role that can change a pool policy, read Pool policies in Roles and permissions.
Net pressure
These contracts route part of the LT admin fees into a crvUSD incentive campaign on Merkl. For how the campaign works, read Net pressure and the PID controller.
The first row repeats the FeeSplitter from Core contracts, because the getters in the next rows start from it:
| Contract | Address |
|---|---|
FeeSplitter (Factory.fee_receiver()) | 0x4B7782FD52143058E4495686EDf8917021D1c346 |
MerklPIDDriver (FeeSplitter.pid()) | 0x5b13273F3B584fE6864A2fde89e8F90B7e790D1c |
YBNetPressure (MerklPIDDriver.net_pressure()) | 0x7FBA07C40Ad1985f023e144E5732784aD6051591 |
MarketRateGetter (MerklPIDDriver.market_rate_getter()) | 0xC5498c1Afc75ffAa2A6F14Be0F0f41feDB683B58 |
Sink pool (MerklPIDDriver.sink_pool(), Curve pyUSD/crvUSD) | 0x625E92624Bc2D88619ACCc1788365A69767f6200 |
Merkl wrapper (MerklPIDDriver.reward_wrapper()) | 0x5D29949F8e64fA2f9cB2B1Fa190244b9413bc3Ea |
Merkl DistributionCreator (MerklPIDDriver.merkl_creator(), Merkl contract) | 0x8BB4C975Ff3c250e0ceEA271728547f3802B36Fd |
| LTSwapZap | 0xCd0074f0eC6319b288b76103D2ba89768a4476Fe |
The YB DAO owns MerklPIDDriver. Its pressure_lts() list holds the LTs of markets 7 to 10.
Lending oracles
These price oracles serve lending markets that accept yb-LP as collateral. The ENS name oracles.yieldbasis.eth resolves to YBLendingOracle, and oracles-ll.yieldbasis.eth resolves to the LlamaLend oracle factory.
For how each lending oracle prices a yb-LP share, read Lending oracles.
| Contract | Address |
|---|---|
| YBLendingOracle | 0x61BDFf6850ad7bBD67D3307d5c608C6e4cb3158f |
| YBLendingOracleLLFactory (LlamaLend, EMA variant) | 0x1C4E1a6E8e470753eAA63888A6b588c8fa06e600 |
Each lending oracle has a USD oracle and an asset oracle for each market:
Deprecated migration contracts
Use the LTMigrator in Core contracts for migrations. This list is for reference only.
| Contract | Address |
|---|---|
LTMigrator (superseded; its HybridFactoryOwner is no longer the Factory admin, so allocation calls revert with "Access") | 0xE707c7a9dD58fb7eEa17acFF875CEF8d10eD1a9F |
| LTMigrator (superseded, same-LT migration issue, replaced in September 2026) | 0x3e6Db519752d4d1EEEd0539A5F7BCF3Aa4089b62 |
| Initial v3 LTMigrator | 0xDfD6fe3A540F68601002E889E33117a7E8A0669D |
| Same-pool LTMigrator | 0x2cdb9f485e718F551CfEEa6c33cB7062ed37066C |
Legacy LTMigrator (for MigrationFactoryOwner 0xa683…b6ad) | 0xc51C8e4CFB7FB969DaE4b10052A1BB6d15fcd96B |
Deprecated markets
Market 6: WETH legacy (deprecated)
The active WETH market replaced this market. The Hybrid Vault pool limit for this market is 0. To check, call pool_limits(6) on HybridVaultFactory. The market has these contracts:
| Contract | Address |
|---|---|
| WETH | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| yb-WETH | 0x931d40dD07b25B91932b481B63631Ea86d236e09 |
| Curve Cryptoswap pool (WETH<>crvUSD) | 0x6e5492F8ea2370844EE098A56DD88e1717e4A9C2 |
| LEVAMM | 0x35095d94E0f1F4a78386B7eB74BB64768A2341e4 |
| VirtualPool | 0x7CAD378DF4a9a830505c18D3a83cAc5d8c9A55fd |
| LP Oracle | 0x84E7F75fF75A0935847D72e1F76Ceb392174EE17 |
| Gauge | 0xe4e656B5215a82009969219b1bAbB7c0757A3315 |
Market 5: tBTC v2 (deprecated)
The active tBTC market replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| tBTC | 0x18084fbA666a33d37592fA2633fD49a74DD93a88 |
| yb-tBTC | 0xaC0a340C1644321D0BBc6404946d828c1EBfAC92 |
| Curve Cryptoswap pool (tBTC<>crvUSD) | 0xf1F435B05D255a5dBdE37333C0f61DA6F69c6127 |
| LEVAMM | 0x61ED017468C8A3bE3Bac972b54fdae6eAfcbcd79 |
| VirtualPool | 0x61d2558FAA6b81814DEEADb0d390612Be291b827 |
| LP Oracle | 0x908640fb4cafD33389375F9b94E52f3f444771e8 |
| Gauge | 0x30ba8b27F2128c770B90C965FF671E08b9310D21 |
Market 4: cbBTC v2 (deprecated)
The active cbBTC market replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| cbBTC | 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf |
| yb-cbBTC | 0xAC0cfa7742069a8af0c63e14FFD0fe6b3e1Bf8D2 |
| Curve Cryptoswap pool (cbBTC<>crvUSD) | 0x83f24023d15d835a213df24fd309c47dAb5BEb32 |
| LEVAMM | 0xDC90F6B111DF0c26e349d3cC8d3C357b191e109a |
| VirtualPool | 0xE3ebC767F98a39dCfAA3272805C51caB7633Ebed |
| LP Oracle | 0x7110640E30B08F5aE10e8eaD5d99E8bBb29c783a |
| Gauge | 0xf3081A2eB8927C0462864EC3FdbE927C842A0893 |
Market 3: WBTC v2 (deprecated)
The active WBTC market replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| WBTC | 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 |
| yb-WBTC | 0xfBF3C16676055776Ab9B286492D8f13e30e2E763 |
| Curve Cryptoswap pool (WBTC<>crvUSD) | 0xD9FF8396554A0d18B2CFbeC53e1979b7ecCe8373 |
| LEVAMM | 0x10B663da78055bDA0c7c26712CE1A0613AF0Ae66 |
| VirtualPool | 0xf07c96d040a2D8455AEe8B0862DdFBeE479B1b72 |
| LP Oracle | 0x3F3F0512d148d691d294De306B306c4e740b70BF |
| Gauge | 0xbc56e3edB67b56d598aCE07668b138815F45d7aa |
Market 2: tBTC legacy (deprecated)
Later markets replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| tBTC | 0x18084fbA666a33d37592fA2633fD49a74DD93a88 |
| yb-tBTC | 0x2B513eBe7070Cff91cf699a0BFe5075020C732FF |
| Curve Cryptoswap pool (tBTC<>crvUSD) | 0xf1F435B05D255a5dBdE37333C0f61DA6F69c6127 |
| LEVAMM | 0xb0faaBE84076c6330A9642a6400e87CE4cAec9d4 |
| VirtualPool | 0xFD1DB6F59fd1FBe0635F3DF11c127B3DDC744092 |
| LP Oracle | 0x58321Ba91c7d4BdbCBC2142256b2c42d9eCFc573 |
| Gauge | 0x2a4671fd269dF5B3DA03103c74063dA10D03E23C |
Market 1: cbBTC legacy (deprecated)
Later markets replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| cbBTC | 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf |
| yb-cbBTC | 0xD6a1147666f6E4d7161caf436d9923D44d901112 |
| Curve Cryptoswap pool (cbBTC<>crvUSD) | 0x83f24023d15d835a213df24fd309c47dAb5BEb32 |
| LEVAMM | 0xB42e34Bf1f8627189e099ABDB069B9D73B521E4F |
| VirtualPool | 0x2dA2Aada1445a5101d648F3c8711B070799bbc91 |
| LP Oracle | 0x3E5A6c61488de85383Fb0efD8c152d3e10C6bfE6 |
| Gauge | 0x3dAe83d236b4Ec301A8d0553f8c13Cb9b7925B6a |
Market 0: WBTC legacy (deprecated)
Later markets replaced this market. The market has these contracts:
| Contract | Address |
|---|---|
| WBTC | 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 |
| yb-WBTC | 0x6095a220C5567360d459462A25b1AD5aEAD45204 |
| Curve Cryptoswap pool (WBTC<>crvUSD) | 0xD9FF8396554A0d18B2CFbeC53e1979b7ecCe8373 |
| LEVAMM | 0xa25306937dbA98378c32F167588F5Dc17A95c94b |
| VirtualPool | 0xABf17d1deF75dA1B41B6df5f0b4AecE602b4E045 |
| LP Oracle | 0x7Ec34e12A770DfCa068FF287bE9F2799EE70DE24 |
| Gauge | 0x37f45E64935e7B8383D2f034048B32770B04E8bd |