Current Price Feeds
| Asset | Symbol | Category | Decimal (EVM) | Asset ID (bytes32) |
|---|---|---|---|---|
| Tether | USDT/USD | Global | -18 | 0x6ca0cef6107263f3b09a51448617b659278cff744f0e702c24a2f88c91e65a0d |
| USD Coin | USDC/USD | Global | -18 | 0xf989296bde68043d307a2bc0e59de3445defc5f292eb390b80d78162c8a6b13d |
| Nigerian Naira Stablecoin | CNGN/USD | Emerging Market | -18 | 0x83a18c73cf75a028a24b79cbedb3b8d8ba363b748a3210ddbcaa95eec3b87b3a |
| South African Rand Stablecoin | ZARP/USD | Emerging Market | -18 | 0x12373a3b1c4827c84bf6d7b11df100442695d0abfdb7a20d30a41d67d58e75a8 |
| Brazilian Real Stablecoin | BRZ/USD | Emerging Market | -18 | 0xbc60b55b031dce1ee5679098bf2f35d66a94a566124e2b233324d2bafcc6d5b5 |
| Ethereum | ETH/USD | Reference Asset | -18 | 0x8c3fb07cab369fe230ca4e45d095f796c4c1a30131f1799766d4fec5ee1325c0 |
The
Decimal (EVM) column reflects EVM scaling where -18 means divide by 10^18. On Sui, the same feeds use a positive decimal 18 — the same division applies but the sign convention differs. See Decimal Precision & Formatting for the full explanation.ETH/USD is included as a reference asset to enable derived pair calculations between stablecoins and ETH. IFÁ Labs is stablecoin-first — ETH is not a primary feed target.
Feed Configuration
Each asset is configured with independent update triggers calibrated to its market behaviour:| Asset | Deviation Threshold | Heartbeat | Recommended MAX_PRICE_AGE |
|---|---|---|---|
| USDT/USD | 0.1% | 1 hour | 5,400s (90 min) |
| USDC/USD | 0.1% | 1 hour | 5,400s (90 min) |
| CNGN/USD | 0.3% | 2 hours | 10,800s (3 hrs) |
| ZARP/USD | 0.3% | 2 hours | 10,800s (3 hrs) |
| BRZ/USD | 0.3% | 2 hours | 10,800s (3 hrs) |
| ETH/USD | 0.5% | 1 hour | 5,400s (90 min) |
Recommended MAX_PRICE_AGE is 1.5× the heartbeat interval — the minimum safe staleness threshold accounting for heartbeat jitter. See Update Triggers for a full explanation of the trigger model.
Network Availability
All feeds are available on every currently supported network. Asset IDs are identical across networks — only the contract address changes.| Network | Status | Contract Address |
|---|---|---|
| Base Mainnet | Live | 0xA9F17344689C2c2328F94464998db1d3e35B80dC |
| Base Sepolia | Testnet | 0xbF2ae81D8Adf3AA22401C4cC4f0116E936e1025b |
| AssetChain Testnet | Testnet | 0xBAc31e568883774A632275F9c8E7A5Bd117000F7 |
| Sui Testnet | Testnet | 0x4d165602d4bb3a7d428a3aa567e27cbe03c9de2ed5995f8c13d1adc4cd3d196f |
Asset ID Generation
Every asset ID is deterministically generated from its symbol string usingkeccak256:
/USD suffix. Case-sensitive — "usdt/usd" produces a different hash and returns exists = false.
Verify any asset ID independently:
On Sui
Asset IDs on Sui use the same underlying 32-byte value but are passed asvector<u8> instead of bytes32. To construct one in Move:
Do not include the
0x prefix when converting asset IDs for Sui. Pass the raw 32 bytes only. The bytes32::new() function in the IFÁ Labs Move package validates that the input is exactly 32 bytes and will abort if the length is wrong.Solidity Constants
Copy-paste ready constants for every supported asset:Move Constants (Sui)
JavaScript / TypeScript Constants
Python Constants
Derived Pair Support
Any two supported assets can be priced against each other using the oracle’s derived pair functions — without requiring a dedicated feed for every possible combination. Examples of available derived pairs:| Pair | Description | EVM Function | Sui Function |
|---|---|---|---|
| CNGN/USDT | Nigerian naira stablecoin priced in USDT | getPairbyId(CNGN, USDT, Forward) | get_pair_by_id(&feed, cngn_id, usdt_id, 0) |
| ZARP/USDC | South African rand stablecoin priced in USDC | getPairbyId(ZARP, USDC, Forward) | get_pair_by_id(&feed, zarp_id, usdc_id, 0) |
| BRZ/USDT | Brazilian real stablecoin priced in USDT | getPairbyId(BRZ, USDT, Forward) | get_pair_by_id(&feed, brz_id, usdt_id, 0) |
| USDT/CNGN | USDT priced in CNGN terms | getPairbyId(CNGN, USDT, Backward) | get_pair_by_id(&feed, cngn_id, usdt_id, 1) |
| ETH/USDC | ETH priced in USDC terms | getPairbyId(ETH, USDC, Forward) | get_pair_by_id(&feed, eth_id, usdc_id, 0) |
0 = Forward (asset0 / asset1), 1 = Backward (asset1 / asset0).
Any combination of the six supported assets is computable as a derived pair. See Function Reference for the full EVM derived pair API, or the Sui Function Reference for Move.
Requesting New Feeds
IFÁ Labs adds new assets on a rolling basis based on ecosystem demand. Priority is given to:- Stablecoins with verified, transparent backing
- Assets with demonstrated on-chain or real-world adoption
- Emerging market stablecoins in Africa, Latin America, and Southeast Asia
- Assets requested by active protocol integrations
support@ifalabs.com — include token contract, backing proof, and use case
Telegram
t.me/ifalabs — fastest response for quick questions
GitHub
Open a feed request issue with full details
- Token contract address on all relevant chains
- Backing mechanism and reserve proof
- Current daily trading volume across all venues
- The protocol or use case driving the request
- Any existing oracle coverage on other networks
Next Steps
Network Information
RPC endpoints, chain IDs, and explorer links for all supported networks.
Working with Asset IDs
How asset IDs are generated, verified, and used in contracts.

