Contracts
Every deployed address on X Layer testnet.
Addresses come from the app's own registry
This page reads the same configuration the interface uses, so it cannot drift out of sync with what is actually deployed.
What each contract does#
| Contract | Role |
|---|---|
| HaltController | The five-state machine. Reads the oracle's pause flag and gates everything else. |
| Market | Collateral, debt, LTV, liquidations, interest and fixed-term loans. Never holds lender cash. |
| LenderVault | ERC-4626 vault holding the USDG. Halt-gated, settlement-aware redemptions. |
| InterestRateModel | Kinked utilization curve. Stateless, so every market shares one. |
| SwapModule | Oracle-priced swap standing in for a DEX. Halt-gated. |
| LeverageZap | Stateless leverage and multiply. Takes the market as a parameter. |
| Multisig | Propose, confirm, execute. Threshold-based. |
| Timelock | OpenZeppelin TimelockController. Owns the risk-bearing contracts. |
| Faucet | Permissionless collateral faucet, one claim per address. |
Shared across all markets#
| Contract | Address |
|---|---|
| USDG (real testnet) | 0xF0863D7A29a55d0c4263c11bFac754312ff078DF |
| InterestRateModel | 0xC9Dcc5A359F868c4F13BBd658E4e88B1228e1bFD |
| LeverageZap | 0xfCB4A5C042fE54e04A7F9027992f06F40F4F55be |
| Multisig | 0x46Af2FD4bF206321Bcd24A58F4497B2681C7716F |
| Timelock | 0x6e4591c9A44C28f29F570B19ab82781BA136305F |
Markets#
Each market is a fully isolated stack with its own collateral token, faucet, oracle, halt controller, vault, market and swap module. That isolation is the point: halting one leaves the other four trading.
NVIDIA (wNVDAx)
| Contract | Address |
|---|---|
| Market | 0x5Ab50694d35Cb078Aa827E819cf3EC8AcCadd022 |
| LenderVault | 0x7B43744576dBf2C711bE16035FCD812F1A6e4F91 |
| HaltController | 0x4C4AC6fd104Eb8CE9887a0e7Da757f86d08EE807 |
| Oracle (mock) | 0x6092743d17D892c2C6033CF323783Bd7ec5952D4 |
| SwapModule | 0x3797E011686e756EFfb8619B5faDCE261BA59680 |
| Collateral token | 0xe37088E75e24AbE5DE1ac6d188803405D9DEbb42 |
| Faucet | 0xBCFDa358dfdA7d8FFB53e2294846809c5DB8b57D |
Tesla (wTSLAx)
| Contract | Address |
|---|---|
| Market | 0x7497EDBb50Fe8F2B71CDC9e98656966eAf6a60BE |
| LenderVault | 0xbCf783A460205BE1c1C8dF92C4cC2EBa020C2B9E |
| HaltController | 0x0c69EF3ce2fBaCcadAd1d1dbE88C315dB491d649 |
| Oracle (mock) | 0xa15Be4B64b08EEfcc85ad375AD391A167DEdF3E2 |
| SwapModule | 0x10510b248972732b565b333d0Ccfa60493607C21 |
| Collateral token | 0x3a18BcB208dCF1A5e65d8243E7337F8be3Bb2A13 |
| Faucet | 0x2e167DBB68E47c17dc28b7DB6D8A00E896D55692 |
Apple (wAAPLx)
| Contract | Address |
|---|---|
| Market | 0xA16aCbCe117CF87019c053039c18E9b3b7efDc73 |
| LenderVault | 0xa16DaB259511dea662Cbf9fc8C68f6A84508F226 |
| HaltController | 0x1567e8F41DE5f8a67d3aF33214129AB310149C9A |
| Oracle (mock) | 0x365262ae56532C1594B42B6C944768E1aAF9caf6 |
| SwapModule | 0xD1ff0651B9e4111cAaA5C33F3150DdE0451B8019 |
| Collateral token | 0x457e9D75e6ACE368d12442616471EEe28D2Df19c |
| Faucet | 0x3a67fF41E0A14EcCFABff32fD4aEd1aD69a75ad1 |
Microsoft (wMSFTx)
| Contract | Address |
|---|---|
| Market | 0xC9A951d7cC8ae123847288907519ea9FcbCe8492 |
| LenderVault | 0x51f9c6881bb046F64C4BDe379d071719f1eb42c7 |
| HaltController | 0x4FF088755DcB27F88C5515b17F3263CCB3f7E81c |
| Oracle (mock) | 0xe722cc0b1C5EadAa69a5deE603954AC71753cc19 |
| SwapModule | 0xb4681F6945038E5a7Be56C0aFec01ee8A5c2B0c6 |
| Collateral token | 0x4Add596629BddD11C29929A7726873A19A9E95D1 |
| Faucet | 0x5bbE7FF75476bc86Db13292cB58d8C61a1524094 |
S&P 500 ETF (wSPYx)
| Contract | Address |
|---|---|
| Market | 0x5aeAfD27D4adafd1554d3F78b59AB7a255898c47 |
| LenderVault | 0xFbCC82c5BC3Cd21170288B37A911D3DF6317B28a |
| HaltController | 0x78aDcB61837Dd42C1AED161F0B3Fd42C57A7ca69 |
| Oracle (mock) | 0xD1405dba838e4d01Db8581441f47Cd57D49F7f8E |
| SwapModule | 0x4c26B0CB20a985049C7a9817aAFd93C6c93cADd2 |
| Collateral token | 0xe28EfB0Eb1A3b17DD59f5E1c3281B0BC147cB313 |
| Faucet | 0x2F515a5FF950037857cE9a5C62E677057Ef9fca4 |
Ownership#
| Contract | Owner |
|---|---|
| Market | Timelock |
| LenderVault | Timelock |
| HaltController | Timelock |
| InterestRateModel | Timelock |
| Oracle | Multisig |
| SwapModule | Multisig |
| LeverageZap | No owner, stateless |
| Faucet | No owner, permissionless |
See Governance for why the split runs this way.
Verifying for yourself#
Every address above links to OKLink ↗. The parameters on Risk parameters are all public getters, so maxLTV(), fixedMaxLTV(), settlementBounty() and the rest can be read directly rather than taken on trust.
Addresses change on core upgrades
The contracts are not proxied. A change to Market or LenderVault logic means a new address for both, since each holds an immutable reference to the other. Check here rather than relying on a copy made earlier.