> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stable.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Contracts on Stable

> Deploy, verify, and index smart contracts on Stable. Full EVM compatibility plus precompiles for Bank, Distribution, and Staking modules.

Stable is fully EVM-compatible. Solidity, Vyper, Hardhat, Foundry, ethers.js, and viem work unchanged. Existing contracts deploy as-is once you point tooling at Stable's RPC. On top of the standard EVM, Stable exposes protocol-level modules (Bank, Distribution, Staking) as precompiled contracts at fixed addresses, so your Solidity can call into staking and reward distribution without re-implementing them.

## What you can build

* **Standard application contracts** (ERC-20, ERC-721, escrows, AMMs) with any EVM toolchain.
* **Verified, indexed contracts** on Stablescan with live event streams through ethers.js.
* **Protocol-integrated contracts** that call Bank / Distribution / Staking precompiles from Solidity.
* **System-transaction listeners** that watch for protocol-emitted events (for example, unbonding completions) through standard `eth_getLogs`.

## How Stable differs

* **USDT0 is the gas token.** `maxPriorityFeePerGas` must be `0`. The `value` field in native transfers carries USDT0, not ETH. See [Work with USDT0 as gas](/en/how-to/work-with-usdt-gas).
* **USDT0 has a dual role.** Contracts that hold native USDT0 can have their balance changed by ERC-20 `transferFrom` or `permit` — never mirror native balance in a `uint256`. See [USDT0 behavior on Stable](/en/explanation/usdt0-behavior).
* **Precompile addresses are fixed across testnet and mainnet.** Burn them into your contract as constants.

## Start here

<CardGroup cols={3}>
  <Card title="Deploy" icon="rocket" href="/en/tutorial/smart-contract">
    Scaffold Foundry, configure Stable, and deploy Counter.
  </Card>

  <Card title="Verify" icon="check-circle" href="/en/how-to/verify-contract">
    Upload source to Stablescan with forge verify-contract.
  </Card>

  <Card title="Index" icon="activity" href="/en/how-to/index-contract">
    Subscribe to events with ethers.js and backfill historical logs.
  </Card>
</CardGroup>

## Next recommended

<CardGroup cols={3}>
  <Card title="Contracts guide index" icon="list" href="/en/explanation/contracts-index">
    Full list of contract guides, precompile references, and system module ABIs.
  </Card>

  <Card title="Use system modules" icon="cpu" href="/en/how-to/use-system-modules">
    Call Bank / Distribution / Staking from Solidity and ethers.js.
  </Card>

  <Card title="JSON-RPC reference" icon="book-open" href="/en/reference/json-rpc-api">
    Which `eth_*` and `debug_*` methods Stable supports.
  </Card>
</CardGroup>
