Pool and several capability objects.
Core Objects
| Object | ID |
|---|---|
| Package ID | 0x765c26edd8a46750c017281c249cece13e7d6a2581698777ab9c804175b20f4b |
| Pool ID | 0x905157cac184db49923b54c8baeeed6d03fcfca2bde2a89ac120c81c47666b6d |
| AdminCap ID | 0x9e022992fa149edfd33978e50c87037dbfcb8292f655a6b7cc28801fc206caf8 |
| HLP Treasury Cap ID | 0xf13db564315b09bbee997915e7c2b3d218a7118466871933f7550178eee62b3f |
| HLP Metadata Cap ID | 0xa2e31bcbed80a5f0225f6f883c8b6a8bc07fda94ac910d95933814e493cc8f92 |
AdminCap, HLP Treasury Cap, and HLP Metadata Cap are owned objects held by the IFÁ Labs team — not objects you pass into deposit, withdraw, swap, or sweep calls. They’re listed here for completeness and transparency, not because integrators need them. The Pool ID is the object you’ll actually pass into every periphery function.Pool Configuration
| Parameter | Value |
|---|---|
| LP Fee | 30 bps (0.30%) |
| Protocol Fee | 10 bps (0.10%) |
| Max Price Age | 3,600,000 ms (1 hour) |
| Sync Interval | 600,000 ms (10 minutes) |
| Protocol Fee Recipient | 0x549182227b60dc5e499d77df18f2608991ca3440f7cd848bb5206885596dd315 |
| Paused | false |
Asset Vaults
Each supported asset has its ownAssetVault<T> and ProtocolFeeVault<T> — both required as arguments whenever you deposit, withdraw, or swap that asset.
SUI
| Object | ID |
|---|---|
| Coin Type | 0x2::sui::SUI |
| Asset Vault ID | 0xcc4404aaef9fd5b33890e3249bbaf41045c63f7f9fc1c390dc375eec54e7331d |
| Protocol Fee Vault ID | 0x019ff372771260fe057bd91569ee7a72914fa1675f9a605d86b8efa767d8ce15 |
| Asset Index | 0xd57f164423e2cda5609280f00a447a518e3dd6877cb4e3b44f30d1c75ac1fa27 |
| Coin Decimals | 9 |
| Target Weight | 4,000 bps (40%) |
| Status | Enabled |
USDSUI
| Object | ID |
|---|---|
| Coin Type | 0x03d89b35c658a0b0359b35fd83fc5c44949af781e376125d382eed9142aefe6d::usdsui::USDSUI |
| Asset Vault ID | 0xebd902f3725acfe43e8abc31300e306c782198c0d3978f5a3ca8417355dfa706 |
| Protocol Fee Vault ID | 0x533a2d45e9a6ebf8b352004207bae4851a63ee656b09f9c046f15a9d53a82cbc |
| Asset Index | 0xf184c9079687c0c05097f861cd229697c610d4443712d900f162ef5b605d8bb9 |
| Coin Decimals | 9 |
| Target Weight | 4,000 bps (40%) |
| Status | Enabled |
CNGN
| Object | ID |
|---|---|
| Coin Type | 0x03d89b35c658a0b0359b35fd83fc5c44949af781e376125d382eed9142aefe6d::cngn::CNGN |
| Asset Vault ID | 0x5fb56bd1d5162af2ce67f06a969dad0df60ff8c628af429efe2ff5e2aceebcd0 |
| Protocol Fee Vault ID | 0xac6819647ff6c9773bfef4ac34569f3ed43e359f7fa36dffaf3f861221e1a9b3 |
| Asset Index | 0x83a18c73cf75a028a24b79cbedb3b8d8ba363b748a3210ddbcaa95eec3b87b3a |
| Coin Decimals | 6 |
| Target Weight | 4,000 bps (40%) |
| Status | Enabled |
This Asset Index matches the CNGN/USD asset ID used on the oracle directly — confirming the swap contract reads the exact same
IfaPriceFeed entries documented on Supported Assets.ZARP
| Object | ID |
|---|---|
| Coin Type | 0x03d89b35c658a0b0359b35fd83fc5c44949af781e376125d382eed9142aefe6d::zarp::ZARP |
| Asset Vault ID | 0xcefba8afe12d87aa206a8988629fdd91deec4f89ff484c628af8a50785986bec |
| Protocol Fee Vault ID | 0x44c76eb9786a73eaf895a516d6d96544acb1f8c78cc729d60f2e4f7ad0624e8c |
| Asset Index | 0x12373a3b1c4827c84bf6d7b11df100442695d0abfdb7a20d30a41d67d58e75a8 |
| Coin Decimals | 6 |
| Target Weight | 4,000 bps (40%) |
| Status | Enabled |
WAL
| Object | ID |
|---|---|
| Coin Type | 0x03d89b35c658a0b0359b35fd83fc5c44949af781e376125d382eed9142aefe6d::wal::WAL |
| Asset Vault ID | Not yet created |
| Protocol Fee Vault ID | Not yet created |
| Status | Listed, not whitelisted |
TypeScript Constants
Copy-paste ready object IDs and coin types for the live Sui Testnet deployment:Using These IDs in a Transaction
A complete swap example — SUI for CNGN — using the real testnet IDs above:Notice the swap contract requires both its own Pool/Vault objects and the oracle’s Feed Object ID in the same call. This is the swap contract directly consuming the oracle — exactly as described in the Sui Swap Contract Overview.
Verifying These Objects On-Chain
Open the package on Suiscan
Navigate to the Package ID on Suiscan. Confirm the package name is
ifalabs and the modules listed include hetero_swap_core, hetero_swap_periphery, and hlp.Verify the Pool object
Navigate to the Pool ID on Suiscan. Confirm the object type is
ifalabs::hetero_swap_core::Pool and it is a shared object.Verify an asset vault
Pick any asset vault ID from the tables above and confirm its object type matches
ifalabs::hetero_swap_core::AssetVault<T>, where T is the expected coin type.Reporting an Address Discrepancy
If you encounter an object ID claiming to be part of the IFÁ Labs Swap Contract that is not listed on this page, do not use it and report it immediately:- Email: support@ifalabs.com
- Telegram: t.me/ifalabs
- GitHub: IFA-Labs/swap_contract_sui/issues
Next Steps
Swap Function Reference
Every public function — deposit, withdraw, swap, sweep, and quote.
Sui Swap Contract Overview
Architecture, core concepts, and what the pool does.
Contract Addresses
The oracle’s object IDs — required alongside the Pool ID for every swap call.
Testnet Faucet
Claim testnet SUI and WAL to try a deposit or swap yourself.

