Curve Meta Registry
The MetaRegistry functions as a Curve Finance Pool Registry Aggregator and offers an on-chain API for various properties of Curve pools by consolidating different registries into a single contract.
For complete and detailed documentation on the MetaRegistry contract, please see here .
For a list of all deployments, see here.
Requirements & Implementations
The MetaRegistry requires that all Factory contracts, which deploy pools and gauges, are added to the MetaRegistry. Without this, the MetaRegistry cannot retrieve specific information. To see which handlers and registries are added, see Handlers and Registries.
The newly deployed MetaRegistries on sidechains currently only pick up new-generation (NG) pools. Although earlier pools will be added as soon as possible, this requires some time as it involves quite a bit of manual work.
Handlers and Registries¶
The MetaRegistry introduces Handlers
, which are essentially wrappers around other contracts (mostly Pool Factories) to ensure ABI compatibility with the MetaRegistry itself.
New handlers can be added or existing ones can be updated by the owner
of the contract.
Helpful Functions in the Curve Meta Registry
:
get_registry_length
: Returns the total number of registries added.get_registry
: Fetches single registries.get_base_registry
: Returns the "base registry" of a handler.get_registry_handlers_from_pool
: Fetches the handler from pools.
Google Colab Notebook
A Google Colab notebook showcasing how to query registries or add/update them can be found here .
Currently integrated Base Registries and Handlers:
Base Registry | Handler | Description |
---|---|---|
0x90E00ACe148ca3b23Ac1bC8C240C2a7Dd9c2d7f5 | 0x46a8a9CF4Fc8e99EC3A14558ACABC1D93A27de68 | Oldschool Curve Registry |
0xB9fC157394Af804a3578134A6585C0dc9cc990d4 | 0x127db66E7F0b16470Bec194d0f496F9Fa065d0A9 | Oldschool Curve Factory (Metapool Factory) |
0x9a32aF1A11D9c937aEa61A3790C2983257eA8Bc0 | 0x5f493fEE8D67D3AE3bA730827B34126CFcA0ae94 | Curve Cryptoswap Registry |
0xF18056Bbd320E96A48e3Fbf8bC061322531aac99 | 0xC4F389020002396143B863F6325aAa6ae481D19CE | Curve Factory (CryptoSwap) |
0x4F8846Ae9380B90d2E71D5e3D042dff3E7ebb40d | 0x538E984C2d5f821d51932dd9C570Dff192D3DF2D | Curve Factory |
0x0c0e5f2fF0ff18a3be9b835635039256dC4B4963 | 0x30a4249C42be05215b6063691949710592859697 | CurveTricryptoFactory |
Fetching Liquidity Pools¶
Deployment of Curve pools is permissionless, leading to a significant number of pools being deployed. Managing this vast array of pools can be challenging, and relying solely on a UI may not be the most effective approach. The Curve Meta Registry
serves as an ideal tool for querying specific pools directly from the blockchain.
Understanding Base- and Metapool Logic
The Meta Registry
considers metapools as well1. For example, the mkUSD/3CRV pool pairs mkUSD with the 3CRV LP Token, which consists of USDT, USDC, and DAI. The contract identifies this logic and returns this pool when querying for find_pools_for_coins(mkUSD, USDC)
, because mkUSD and USDC can be exchanged through this pool.
Key Methods for Querying Pools:
find_pools_for_coins
: This method returns a list of all pools containing two specific tokens, e.g. pools that include bothcrvUSD
andUSDC
.find_pool_for_coins
: Returns a single pool according to the input index from the list returned byfind_pools_for_coins
.
Google Colab Notebook
A Jupyter notebook showcasing how to fetch pools directly from the blockchain, which contain two specific assets, can be found here.
-
Metapools are liquidity pools that pair a token against the LP token of another pool. ↩