> For the complete documentation index, see [llms.txt](https://novacont.gitbook.io/nova-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://novacont.gitbook.io/nova-docs/security-and-developers/supported-tokens-and-oracles.md).

# Supported Tokens & Oracles

NovaCont supports multiple payment tokens and uses Chainlink price feeds to determine real-time USD values for deposit calculations.

<figure><img src="/files/Lu9PmD2n7f0x6lRkqvWi" alt=""><figcaption></figcaption></figure>

### Supported Payment Tokens

By default, NovaCont supports two payment tokens:

**Native ETH** Represented internally as `address(0)`. ETH is the primary payment token and requires no approval step. The deposit is sent directly with the transaction.

**USDT** The ERC-20 stablecoin used natively within the NovaJury system for staking and dispute fees. USDT payments in escrow contracts require a standard ERC-20 approval before the deposit transaction.

Additional ERC-20 tokens can be added by the contract owner via `addSupportedToken()`, provided a valid Chainlink price feed exists for that token. Tokens can also be removed with the exception of native ETH and USDT, which are core to the protocol and cannot be deregistered.

### Oracle Integration

NovaCont uses **Chainlink price feeds** to convert agreed USD prices into the correct token amounts at the time of contract creation. This ensures that the deposit requirement accurately reflects the real-world value of the agreement regardless of market conditions at the moment of funding.

**Stale price protection:** Every oracle call validates that the returned price data is no older than **24 hours**. If the price feed has not been updated within this window, the transaction reverts with a stale price error. This prevents contracts from being funded at significantly outdated exchange rates during periods of oracle downtime.

**Fallback behavior:** If no price feed is registered for a given token, the contract cannot determine its USD value and defaults to requiring a **1.25x extra deposit** as a conservative safety measure. USDT is an exception. It is hardcoded to return a value of $1 USD since its peg is well established and a dedicated feed is not strictly necessary.

**Feed requirements:** All registered price feeds must return values with **8 decimal places**, consistent with the standard Chainlink USD feed format. Feeds with non-standard decimal configurations are rejected at registration time.
