Core concepts
Four concepts are enough to start building. Each section defines the concept, shows it, and links to the full reference.
USDT0 as gas
You pay transaction fees in USDT0, the same asset you're already holding and transacting in. There's no second token to fund or manage.
USDT0 is both the native gas asset (18 decimals, read via address(x).balance) and an ERC-20 token (6 decimals, read via USDT0.balanceOf(x)). Both interfaces operate on the same underlying balance, and the protocol reconciles the 12-digit precision gap automatically.
// Both read the same balance:
uint256 native = address(user).balance; // 18 decimals
uint256 erc20 = IERC20(USDT0).balanceOf(user); // 6 decimalsRead more: USDT0 as gas · USDT0 behavior on Stable.
Guaranteed blockspace
Stable v1.4.0 can reserve a gas quota within each block for eligible priority workloads. Normal traffic cannot consume this VIP-lane capacity during congestion.
Standard EVM transactions keep using the default nonce channel, NonceKey = 0. Eligible priority flows use CustomTx type 0x3F and a protocol-reserved NonceKey that identifies the VIP lane.
Governance configures the lanes and quotas. With no configuration, every transaction uses one normal lane. The feature is currently in the v1.4.0 Testnet release candidate, with its Mainnet schedule pending.
Read more: Guaranteed blockspace.
USDT transfer aggregator
High-volume USDT0 transfers are batched and verified in parallel using a MapReduce-inspired pipeline. Per-account failures are isolated, so one bad transfer doesn't abort the batch.
The caller-side transfer API is unchanged. You submit transfers the normal way and gain throughput without code changes.
Read more: USDT transfer aggregator.
EVM compatibility
Standard EVM tooling works unchanged. At the EVM level, three behaviors differ from Ethereum (USDT0 as gas, covered above, is the fourth).
Single-slot finality. A transaction is final once included in a block. Blocks are produced roughly every 0.7 seconds.
No priority tips. maxPriorityFeePerGas is always ignored. The effective gas price is the base fee set by the protocol.
import { ethers } from "ethers";
const block = await provider.getBlock("latest");
const baseFee = block.baseFeePerGas;
const tx = await wallet.sendTransaction({
to: "0xRecipientAddress",
value: ethers.parseEther("0.1"),
maxFeePerGas: baseFee * 2n, // 2x base fee as safety margin
maxPriorityFeePerGas: 0n, // always 0 on Stable
});
await tx.wait();
console.log("Included at gas price:", tx.gasPrice?.toString());Included at gas price: 1000000000Dual-role USDT0, porting risks. Contracts ported from Ethereum should not mirror native balance, should reject address(0) transfers, and should not rely on EXTCODEHASH for address-reuse detection.
Read more: Differences from Ethereum · Contracts on Stable · USDT0 migration checklist.
Confidential transfer (planned)
Stable has a planned feature for zero-knowledge transfers that hide amounts while staying auditable for authorized parties. It is not yet live.
Read more: Confidential transfer.
Next recommended
- Quick start: Connect to testnet and send a first transaction.
- USDT0 behavior: Port a contract to Stable without hitting dual-role gotchas.
- Gas pricing: Construct transactions correctly on Stable's fee model.
- Production readiness: Validate an integration before shipping to mainnet.

