Skip to main content
IFÁ Labs deploys oracle infrastructure across every supported network. On EVM chains, this is a single smart contract address. On Sui, it is a set of shared objects — a Package, a Feed Object, and a Verifier Object. This page is the authoritative reference for all deployed addresses and object IDs. Verify every value against this page and the on-chain source before using it in production.

EVM Live Deployments

NetworkTypeContract AddressBlock Explorer
Base MainnetProduction0xA9F17344689C2c2328F94464998db1d3e35B80dCView on Basescan
Base SepoliaTestnet0xbF2ae81D8Adf3AA22401C4cC4f0116E936e1025bView on Basescan Sepolia
AssetChain TestnetTestnet0xBAc31e568883774A632275F9c8E7A5Bd117000F7View on AssetChain Explorer
Always verify contract addresses on the official block explorer before deploying to production. Never use an address sourced from a third party, a Discord message, or an unofficial repository. This page and the verified on-chain source are the only authoritative references.

Access the oracle’s read functions directly from the block explorer without writing any code:

Sui Deployments

On Sui, IFÁ Labs is deployed as a native Move package. There are three object IDs you need to know:
ObjectIDDescription
Package ID0x99847c953ee11ca57b6d602494c914d7d82a2d42c4c8a80307331fead5b22c4aThe published Move package. Used when importing the module in your own Move contracts.
Feed Object ID0x5d2728b862de08de767e4f8841a38c9452d951c0602e77fc47bfbb3ab03f33f0The shared IfaPriceFeed object. Pass this when reading prices.
Verifier Object ID0x028e5df554ac7d253a132c60bcd13cf32bea9eb8c81d04d685c2a31299fbe43bThe shared IfaPriceFeedVerifier object. Used by the relayer to submit price updates.
NetworkStatusExplorer
Sui TestnetTestnetView package on Suiscan
Redeployed contract. These object IDs were updated following a fresh deployment of the oracle package. If you have any of the previous IDs hardcoded or cached, they now point to a stale package and must be replaced.
When reading prices on Sui, always pass the Feed Object ID — not the Package ID. The Package ID is only needed when referencing the module as a dependency in your own Move package’s Move.toml.

Using Sui Object IDs in Move

// In your Move.toml — reference the package as a dependency
[dependencies]
ifa_oracle = { git = "https://github.com/IFA-Labs/oracle_contract_sui.git", rev = "main" }

// In your Move source — pass the feed object by reference
use ifa_oracle::price_feed::{Self, IfaPriceFeed};

public fun read_price(feed: &IfaPriceFeed, asset_id: vector<u8>) {
    let asset_index = bytes32::new(asset_id);
    let (price_feed, exists) = price_feed::get_asset_info(feed, asset_index);
    // ...
}

Using Sui Object IDs in TypeScript

import { SuiClient, getFullnodeUrl } from "@mysten/sui/client";
import { Transaction } from "@mysten/sui/transactions";

const client = new SuiClient({ url: getFullnodeUrl("testnet") });

// These are the object IDs you pass in transactions
const IFA_SUI_TESTNET = {
  packageId:  "0x99847c953ee11ca57b6d602494c914d7d82a2d42c4c8a80307331fead5b22c4a",
  feedId:     "0x5d2728b862de08de767e4f8841a38c9452d951c0602e77fc47bfbb3ab03f33f0",
  verifierId: "0x028e5df554ac7d253a132c60bcd13cf32bea9eb8c81d04d685c2a31299fbe43b",
} as const;

// Read a price via a devInspect transaction
const tx = new Transaction();
tx.moveCall({
  target: `${IFA_SUI_TESTNET.packageId}::price_feed::get_asset_info`,
  arguments: [
    tx.object(IFA_SUI_TESTNET.feedId),
    tx.pure.vector("u8", Array.from(
      Buffer.from("6ca0cef6107263f3b09a51448617b659278cff744f0e702c24a2f88c91e65a0d", "hex")
    )),
  ],
});

const result = await client.devInspectTransactionBlock({
  transactionBlock: tx,
  sender: "0x0000000000000000000000000000000000000000000000000000000000000000",
});

Upcoming Deployments

NetworkStatusTargetNotes
Sui MainnetPlannedTBDFull production deployment following testnet validation
AssetChain MainnetPlannedTBDFull production deployment for RWA-focused protocols
SolanaPlannedTBDNative Solana program — different interface from EVM and Sui contracts
OptimismPlannedTBDAdditional EVM L2
ArbitrumPlannedTBDAdditional EVM L2
Polygon zkEVMPlannedTBDAdditional EVM L2
Contract addresses and object IDs for upcoming deployments will be added to this page on launch day. Follow @ifalabs or join the Telegram for deployment announcements.

Using EVM Addresses in Your Contracts

Declare the oracle address as a constant in your contract. This is the most gas-efficient pattern and prevents the address from being modified after deployment.
// Base Mainnet
IIfaPriceFeed public constant ORACLE =
    IIfaPriceFeed(0xA9F17344689C2c2328F94464998db1d3e35B80dC);

Immutable Declaration (For Multi-Network Deployments)

If your deployment scripts target multiple networks and need to set the address at deploy time rather than compile time, use immutable:
IIfaPriceFeed public immutable ORACLE;

constructor(address oracleAddress) {
    require(oracleAddress != address(0), "Invalid oracle address");
    ORACLE = IIfaPriceFeed(oracleAddress);
}
Then pass the correct address per network in your deploy script:
    // script/Deploy.s.sol
    contract DeployScript is Script {
        function run() external {
            address oracle = vm.envAddress("ORACLE_ADDRESS");

            vm.startBroadcast();
            new MyProtocol(oracle);
            vm.stopBroadcast();
        }
    }
    # Base Mainnet
    ORACLE_ADDRESS=0xA9F17344689C2c2328F94464998db1d3e35B80dC \
    forge script script/Deploy.s.sol --rpc-url base-mainnet --broadcast

    # Base Sepolia
    ORACLE_ADDRESS=0xbF2ae81D8Adf3AA22401C4cC4f0116E936e1025b \
    forge script script/Deploy.s.sol --rpc-url base-sepolia --broadcast

Verifying EVM Contracts On-Chain

Before using any EVM address in production, verify it on the block explorer:
1

Open the contract on Basescan

Navigate to the address on Basescan. The contract should show a green checkmark indicating the source code is verified.
2

Confirm the contract name

Under the Contract tab, confirm the contract name matches IfaPriceFeed. A mismatch means you have the wrong address.
3

Cross-reference the ABI

The verified ABI should include getAssetInfo, getAssetsInfo, and the derived pair functions. If these are absent, the address is wrong.
4

Call getAssetInfo

Under Read Contract, call getAssetInfo with the USDT/USD asset ID: 0x6ca0cef6107263f3b09a51448617b659278cff744f0e702c24a2f88c91e65a0d. A valid response with exists = true and a reasonable price confirms the contract is live and correctly addressed.

Verifying Sui Objects On-Chain

Before using any Sui object ID, verify it on Suiscan:
1

Open the package on Suiscan

Navigate to the Package ID on Suiscan. Confirm the package name is ifa_oracle and the modules listed include price_feed, verifier, and bytes32.
2

Verify the Feed Object

Navigate to the Feed Object ID on Suiscan. Confirm the object type is ifa_oracle::price_feed::IfaPriceFeed and it is a shared object.
3

Check recent transactions

On the Feed Object page, review recent transactions. You should see submit_price_feed calls from the relayer — confirming the oracle is actively updating prices.

Network Configuration Reference

EVM Networks

ParameterBase MainnetBase SepoliaAssetChain Testnet
Chain ID84538453242421
RPC URLhttps://mainnet.base.orghttps://sepolia.base.orghttps://enugu-rpc.assetchain.org
CurrencyETHETH (test)Test Token
Block Explorerbasescan.orgsepolia.basescan.orgscan-testnet.assetchain.org
Oracle Address0xA9F17344689C2c2328F94464998db1d3e35B80dC0xbF2ae81D8Adf3AA22401C4cC4f0116E936e1025b0xBAc31e568883774A632275F9c8E7A5Bd117000F7
FaucetN/Abase.org/faucetN/A

Sui Testnet

ParameterValue
NetworkSui Testnet
Explorersuiscan.xyz/testnet
Package ID0x99847c953ee11ca57b6d602494c914d7d82a2d42c4c8a80307331fead5b22c4a
Feed Object ID0x5d2728b862de08de767e4f8841a38c9452d951c0602e77fc47bfbb3ab03f33f0
Verifier Object ID0x028e5df554ac7d253a132c60bcd13cf32bea9eb8c81d04d685c2a31299fbe43b
Faucetfaucet.sui.io

Reporting an Address Discrepancy

If you encounter an address or object ID that claims to be an IFÁ Labs oracle but is not listed on this page, do not use it and report it immediately: Include the suspicious address or object ID, the network it was found on, and where you encountered it. Address impersonation is a common attack vector in DeFi — reporting suspicious addresses quickly protects the broader ecosystem.

Next Steps

Function Reference (EVM)

Complete API reference for all EVM oracle contract functions and return types.

Sui Integration Guide

Read prices from the IFÁ Labs oracle on Sui using Move or the TypeScript SDK.

ABI Download

Get the official EVM ABI for use in your development tools and scripts.

Network Information

Full network reference including RPC endpoints, object IDs, and faucet links.