Skip to main content

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.

ContractAddressRole
YB0x01791F726B4103694969820be083196cC7c045fFThe YB governance token (ERC-20)
veYB0x8235c179E9e84688FBd8B12295EfC26834dAC211VotingEscrow: veYB balance and voting power
GaugeController0x1Be14811A3a06F6aF4fA64310a636e1Df04c1c21Gauge voting; lists the gauges by index (gauges(i))
CliffEscrow (implementation for the cliff escrows of five vesting escrows)0x60043a545E22424E73A2dEbb98f8cd4361fE3DA0Blocks transfers of the escrowed YB and veYB until the cliff time; allows veYB locks and votes before it
Factory0x370a449FeBb9411c95bf897021377fe0B7D100c0Market registry: enumerate markets and get the contracts of each market (markets(i))
Emergency admin (Factory.emergency_admin(), Curve Emergency DAO, a Safe multisig)0x467947EE34aF926cF1DCac093870f613C96B1E0cEmergency actions, for example to kill or revive a market. For the full list, read Curve Emergency DAO
StakeZap0xE862bC39B8D5F12D8c4117d3e2D493Dc20051EC6Deposit and stake, or unstake and withdraw, in one transaction
LTMigrator0xd5b450fDD5aF5341436Fc37A46BBEc39CA8F92CBMigration from a legacy market to a current market
FeeDistributor0xD11b416573EbC59b6B2387DA0D2c0D1b3b1F7A90Admin-fee claims for veYB holders
FeeSplitter (Factory.fee_receiver())0x4B7782FD52143058E4495686EDf8917021D1c346Splits LT admin fees between the net-pressure reserve and the FeeDistributor
crvUSD (Factory.STABLECOIN())0xf939E0A03FB07F59A73314E73794Be0E57ac1b4EThe crvUSD token: the debt asset of every market, and coin 0 of each market pool
crvUSD price aggregator (Factory.agg())0x18672b1b0c623a30089A280Ed9256379fb0E4E62crvUSD price in USD. add_market() passes it to the LP oracle of each new market
Flash lender (Factory.flash())0x26dE7861e213A5351F6ED767d00e0839930e9eE1crvUSD flash loans for VirtualPool swaps

Hybrid Vaults​

This table lists the live Hybrid Vault contracts:

ContractAddress
HybridFactoryOwner (Factory.admin())0xb8BA33CD1Ccb091a8468572950bD3669723FA5C6
HybridVaultFactory0xBdC32268851C324c6185809271dfe6d8dab8dC5b
HybridVault implementation0xD772EDF092f155f3e81E2b261d96Bcfae4fDC3Ac

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.

ContractAddress
HybridFactoryOwner (superseded)0x0f4e1a1BcDe549653E9302Ba1cAaB403373f1048
MigrationFactoryOwner (superseded)0xA68343ed4d517a277cFA1F2FC2b51f7a6794B6AD

DAO, governance, and vesting​

This table lists the DAO, governance, and vesting contracts:

ContractAddress
DAO0x42F2A41A0D0e65A440813190880c8a65124895Fa
Plugin (Aragon TokenVoting)0x2be6670DE1cCEC715bDBBa2e3A6C1A05E496ec78
VotingPowerCondition0x85AE9cCF1c862979e2D9B9f1aB819c212365fd92
Curve Licensing0x36e36D5D588D480A15A40C7668Be52D36eb206A8
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:

ContractAddress
WBTC0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
yb-WBTC0x651D4b8168488FA163D85304662E8278d4c55BAa
Curve Cryptoswap pool (WBTC<>crvUSD)0x313698667d7FDD6789a9BC70821309ff891E729A
LEVAMM0x7b9817eb5C49A99875138A5d52bF64a8B2cFFFFE
VirtualPool0xF96Ff1189f1c2977b37E5Df01962e1895bcc3d6A
LP Oracle0x57977de27E8cEBaaE7D4f1c1c5E00A47177EAE0E
Gauge0xAa0b1d265F23972eafB7d088e963BD31403A58F5
Pool policy (YBTwocryptoPolicy)0x0436c0648AfD66de23f86f23cB42884304743EfA

Market 8: cbBTC​

Market 8 uses these contracts:

ContractAddress
cbBTC0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
yb-cbBTC0x722FC3640BA007C3E9867CCdB0dCa59F2e2F29F9
Curve Cryptoswap pool (cbBTC<>crvUSD)0x862CB4E988FB66E72f128d1183829f8c05B6c6A0
LEVAMM0x49F51d7e279252F3C9a09678fdC65B4dBd5CB196
VirtualPool0x04CA7a7E602335a261B63128e89d43b6fE1e2c87
LP Oracle0x586855729584a2f2EB8d9ce93EC5EB678C124995
Gauge0xF8764cBcdb15a9E4c7CA1b0b8a578d9ebEEC1b6f
Pool policy (YBTwocryptoPolicy)0x038f549D21b9C22a26AdA4da2ebF7cFD1C3CA22d

Market 9: tBTC​

Market 9 uses these contracts:

ContractAddress
tBTC0x18084fbA666a33d37592fA2633fD49a74DD93a88
yb-tBTC0x771F7290428d830ECd41E980745c327e507823Ec
Curve Cryptoswap pool (tBTC<>crvUSD)0x4F52C3a81E33521e5a9A47FD9D3BE475D2279c2e
LEVAMM0x0e357Af536592F275C6Aa07b8AC2CA6EB3d0cF5a
VirtualPool0x1b9518f6B179552c6A903F213d4EA5503Ab7F96E
LP Oracle0xaD78a4e35166F9942FB2916fDcFc1888b4718036
Gauge0xe83D888FE3213DD3471DE0bC1957E0f94F038483
Pool policy (YBTwocryptoPolicy)0xE99ee179f1Cc62d4A1d3e67dD5541Ecb63acA396

Market 10: WETH​

Market 10 uses these contracts:

ContractAddress
WETH0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
yb-WETH0x2B9c9f3BdcEb5d8E36a4704F08a78Fca53343cEa
Curve Cryptoswap pool (WETH<>crvUSD)0x656341Ef90b622c6634e0573772FfB7f3669b9f3
LEVAMM0x5f8D24F33Cc5a1D5D1bf012261E6A2214C92233c
VirtualPool0x772cfF0BE38A6ED31aeAe479cbcb26D54B8404CF
LP Oracle0x231C37b8e9D2076d673C5E24eCFcC2a82652E054
Gauge0xd829456FD63Ada7DE0657714A3A7A26DE403E3D8
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:

MarketPoolPOLICY()
WBTC (market 7)0x313698667d7FDD6789a9BC70821309ff891E729AYBTwocryptoPolicy 0x0436c0648AfD66de23f86f23cB42884304743EfA
cbBTC (market 8)0x862CB4E988FB66E72f128d1183829f8c05B6c6A0YBTwocryptoPolicy 0x038f549D21b9C22a26AdA4da2ebF7cFD1C3CA22d
tBTC (market 9)0x4F52C3a81E33521e5a9A47FD9D3BE475D2279c2eYBTwocryptoPolicy 0xE99ee179f1Cc62d4A1d3e67dD5541Ecb63acA396
WETH (market 10)0x656341Ef90b622c6634e0573772FfB7f3669b9f3YBOraclizedPolicy 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:

ContractAddressStatus
YB-WETH pool policy (YBOraclizedPolicy)0xAEa95d551154443E73565bE724d59D63d72f8A7dAttached to the YB-WETH pool. Owner: YB DAO. Emergency admin: Curve Emergency DAO.
YB-WETH pool policy (YBOraclizedPolicy, first deployment)0x508356890B1AB013b2f184604f403e435C794CcaSuperseded by 0xAEa9…8A7d. Never attached. Owner: YB DAO.
Pyth Lazer verifier (proxy, set in oracle() of each YBOraclizedPolicy)0xACeA761c27A909d4D3895128EBe6370FDE2dF481Pyth contract.
Pyth Lazer verifier implementation (PythLazer 0.2.0)0xD8f4A467AbeC64Bc944eee1325B9007879B6555bPyth contract.

Curve contracts that control pool policies​

This table lists the Curve contracts that control pool policies:

ContractAddress
Curve Twocrypto factory0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F
Pool admin proxy (factory.admin())0x97aA696e37659Fb4f0B53824246d802Df40E980A
Curve Ownership Agent (dao() of the pool admin proxy)0x40907540d8a6C65c637785e8f8B742ae6b0b9968
Curve ownership voting0xE478de485ad2fe566d49342Cbd03E49ed7DB3356

The pool admin proxy has two roles:

  • dao(), the Curve Ownership Agent. Only this role can call execute(). 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 DAO 0x4679…1e0c. Both this role and the dao() role can call emergency_parameters(). On the v3 pools of markets 7 to 10, a call to emergency_parameters() sets mid_fee, out_fee, fee_gamma, adjustment_step_min, adjustment_step_max, and ma_time on 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:

ContractAddress
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
LTSwapZap0xCd0074f0eC6319b288b76103D2ba89768a4476Fe

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.

ContractAddress
YBLendingOracle0x61BDFf6850ad7bBD67D3307d5c608C6e4cb3158f
YBLendingOracleLLFactory (LlamaLend, EMA variant)0x1C4E1a6E8e470753eAA63888A6b588c8fa06e600

Each lending oracle has a USD oracle and an asset oracle for each market:

MarketYBLendingOracle USD oracleYBLendingOracle asset oracleLlamaLend USD oracleLlamaLend asset oracle
WBTC0x0D9F4518aa4Eaa37338641e8145455F7ad5C47170x411fd4eeC5717263330bC5fe7ec482EB7Aab62f90xCF8E828d29cE630288C6Ae9D5dA5E327a401310b0x8ff647485C1A92E2B4B998d2e03b9eC66734E1ab
cbBTC0x9B6c1766c98D0cfB6D748E763048E9F664A064720xaE0d2cCE2343A8916Ee6BF822Dc72C501E7746820x8199e25cf77729cE42d5F5892e3d72a81D4bFDEE0xC9260CCF096A2e015c28A52f89Db3274aE768531
tBTC0xcFC607b44FE208eE26E72F4650351311644A3E7e0xf946C09fdF38d84fFB8Ab57Fd5D71C12dB95F2950x125e76399211cE97B6b5413116cf0b0756f77bE90x21B32Cf690C47195A06190A6ea4dcFB1c5059949
WETH0x14F03759a0374F215Bd33a0eC36f9d72a743060b0x64DaB8F3A684f11D9e296E8e44b3b28Ff39549B20x69A2E6bA8cFa2d732936334322D5E753ecBd1e860xf82189c39e8E96DF43E942448E2a9328a8A793b6

Deprecated migration contracts​

Use the LTMigrator in Core contracts for migrations. This list is for reference only.

ContractAddress
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 LTMigrator0xDfD6fe3A540F68601002E889E33117a7E8A0669D
Same-pool LTMigrator0x2cdb9f485e718F551CfEEa6c33cB7062ed37066C
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:

ContractAddress
WETH0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
yb-WETH0x931d40dD07b25B91932b481B63631Ea86d236e09
Curve Cryptoswap pool (WETH<>crvUSD)0x6e5492F8ea2370844EE098A56DD88e1717e4A9C2
LEVAMM0x35095d94E0f1F4a78386B7eB74BB64768A2341e4
VirtualPool0x7CAD378DF4a9a830505c18D3a83cAc5d8c9A55fd
LP Oracle0x84E7F75fF75A0935847D72e1F76Ceb392174EE17
Gauge0xe4e656B5215a82009969219b1bAbB7c0757A3315

Market 5: tBTC v2 (deprecated)​

The active tBTC market replaced this market. The market has these contracts:

ContractAddress
tBTC0x18084fbA666a33d37592fA2633fD49a74DD93a88
yb-tBTC0xaC0a340C1644321D0BBc6404946d828c1EBfAC92
Curve Cryptoswap pool (tBTC<>crvUSD)0xf1F435B05D255a5dBdE37333C0f61DA6F69c6127
LEVAMM0x61ED017468C8A3bE3Bac972b54fdae6eAfcbcd79
VirtualPool0x61d2558FAA6b81814DEEADb0d390612Be291b827
LP Oracle0x908640fb4cafD33389375F9b94E52f3f444771e8
Gauge0x30ba8b27F2128c770B90C965FF671E08b9310D21

Market 4: cbBTC v2 (deprecated)​

The active cbBTC market replaced this market. The market has these contracts:

ContractAddress
cbBTC0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
yb-cbBTC0xAC0cfa7742069a8af0c63e14FFD0fe6b3e1Bf8D2
Curve Cryptoswap pool (cbBTC<>crvUSD)0x83f24023d15d835a213df24fd309c47dAb5BEb32
LEVAMM0xDC90F6B111DF0c26e349d3cC8d3C357b191e109a
VirtualPool0xE3ebC767F98a39dCfAA3272805C51caB7633Ebed
LP Oracle0x7110640E30B08F5aE10e8eaD5d99E8bBb29c783a
Gauge0xf3081A2eB8927C0462864EC3FdbE927C842A0893

Market 3: WBTC v2 (deprecated)​

The active WBTC market replaced this market. The market has these contracts:

ContractAddress
WBTC0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
yb-WBTC0xfBF3C16676055776Ab9B286492D8f13e30e2E763
Curve Cryptoswap pool (WBTC<>crvUSD)0xD9FF8396554A0d18B2CFbeC53e1979b7ecCe8373
LEVAMM0x10B663da78055bDA0c7c26712CE1A0613AF0Ae66
VirtualPool0xf07c96d040a2D8455AEe8B0862DdFBeE479B1b72
LP Oracle0x3F3F0512d148d691d294De306B306c4e740b70BF
Gauge0xbc56e3edB67b56d598aCE07668b138815F45d7aa

Market 2: tBTC legacy (deprecated)​

Later markets replaced this market. The market has these contracts:

ContractAddress
tBTC0x18084fbA666a33d37592fA2633fD49a74DD93a88
yb-tBTC0x2B513eBe7070Cff91cf699a0BFe5075020C732FF
Curve Cryptoswap pool (tBTC<>crvUSD)0xf1F435B05D255a5dBdE37333C0f61DA6F69c6127
LEVAMM0xb0faaBE84076c6330A9642a6400e87CE4cAec9d4
VirtualPool0xFD1DB6F59fd1FBe0635F3DF11c127B3DDC744092
LP Oracle0x58321Ba91c7d4BdbCBC2142256b2c42d9eCFc573
Gauge0x2a4671fd269dF5B3DA03103c74063dA10D03E23C

Market 1: cbBTC legacy (deprecated)​

Later markets replaced this market. The market has these contracts:

ContractAddress
cbBTC0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
yb-cbBTC0xD6a1147666f6E4d7161caf436d9923D44d901112
Curve Cryptoswap pool (cbBTC<>crvUSD)0x83f24023d15d835a213df24fd309c47dAb5BEb32
LEVAMM0xB42e34Bf1f8627189e099ABDB069B9D73B521E4F
VirtualPool0x2dA2Aada1445a5101d648F3c8711B070799bbc91
LP Oracle0x3E5A6c61488de85383Fb0efD8c152d3e10C6bfE6
Gauge0x3dAe83d236b4Ec301A8d0553f8c13Cb9b7925B6a

Market 0: WBTC legacy (deprecated)​

Later markets replaced this market. The market has these contracts:

ContractAddress
WBTC0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
yb-WBTC0x6095a220C5567360d459462A25b1AD5aEAD45204
Curve Cryptoswap pool (WBTC<>crvUSD)0xD9FF8396554A0d18B2CFbeC53e1979b7ecCe8373
LEVAMM0xa25306937dbA98378c32F167588F5Dc17A95c94b
VirtualPool0xABf17d1deF75dA1B41B6df5f0b4AecE602b4E045
LP Oracle0x7Ec34e12A770DfCa068FF287bE9F2799EE70DE24
Gauge0x37f45E64935e7B8383D2f034048B32770B04E8bd