# Documentation ⋅ Tempo > Documentation for Tempo testnet and protocol specifications ## Docs - [TypeScript SDKs](/sdk/typescript): **Note:** `tempo.ts/chains` & `tempo.ts/viem` have been upstreamed into [Viem](https://viem.sh/tempo) as of `viem@2.43.0`. If you are using either entrypoint, please update to use `viem/chains` or `viem/tempo` instead. - [Setup](/sdk/typescript/wagmi/setup): Setup the Tempo extension for Wagmi by following the steps below. - [Overview](/sdk/typescript/wagmi/keyManagers): WebAuthn-based accounts in Tempo require the public key to be attached to transactions and other protocol features. However, **it is not possible to extract a public key from a WebAuthn credential after its registration**. - [Overview](/sdk/typescript/wagmi/hooks) - [Transports](/sdk/typescript/wagmi/connectors) - [Overview](/sdk/typescript/wagmi/actions) - [Overview](/sdk/typescript/server/handlers): Server handlers are framework-agnostic handlers that run on your backend to manage protocol operations that require server-side logic. - [Setup](/sdk/typescript/prool/setup): Setup infinite pooled Tempo node instances in TypeScript using [`prool`](https://github.com/wevm/prool) by following the steps below. - [Rust](/sdk/rust): Tempo distributes a Rust SDK in the form of an [Alloy](https://alloy.rs) crate. Alloy is a popular Rust crate for interacting with EVM-compatible blockchains. - [Go](/sdk/go): Tempo distributes a Go SDK for building application clients. The SDK provides packages for RPC communication, transaction signing, and key management. - [Foundry for Tempo](/sdk/foundry): Tempo builds on top of [Foundry](https://github.com/foundry-rs/foundry): the leading Ethereum development toolkit, through a custom fork that adds first-class support for Tempo. - [Developer Tools](/quickstart/developer-tools): Integrating with Tempo is easy by leveraging services provided by our infrastructure partners. These partners take advantage of Tempo transactions, TIP-20 tokens, and more. Visit their documentation for more information on how to get started. - [Use the TIP-20 Standard](/quickstart/tip20): TIP-20 is Tempo's native token standard for stablecoins and payment tokens. TIP-20 is designed for stablecoin payments, and is the foundation for many token-related functions on Tempo including transaction fees, payment lanes, and optimized routing for DEX liquidity on Tempo. - [Wallet Integration Guide](/quickstart/wallet-developers): Because there is [no native token on Tempo](/quickstart/evm-compatibility#handling-eth-native-token-balance-checks) and transaction fees are paid directly in stablecoins, wallets need specific UI and logic adjustments to support the network. Follow this guide if your wallet logic and/or interfaces are dependent on the existence of a native token. - [Account Keychain Precompile](/protocol/transactions/AccountKeychain): **Address:** `0xAAAAAAAA00000000000000000000000000000000` - [Accounts](/protocol/transactions/spec-default-delegation): Default Delegation (Experimental) - [Tempo Transaction](/protocol/transactions/spec-tempo-transaction): This spec introduces native protocol support for the following features, using a new Tempo transaction type: - [TIP-403 Policy Registry](/protocol/tip403/overview): TIP-403 is Tempo's policy registry system that enables TIP-20 tokens to enforce access control. Instead of each token implementing its own logic, TIP-403 provides a registry where policies can be created once and shared across multiple tokens. - [Overview](/protocol/tip403/spec): TIP-403 provides a policy registry system that allows TIP-20 tokens to inherit access control and compliance policies. The registry supports two types of policies (whitelist and blacklist) and includes special built-in policies for common use cases. Policies can be shared across multiple tokens, enabling consistent compliance enforcement. - [Specification](/protocol/tip403/spec): The TIP-403 registry stores policies that TIP-20 tokens check against on any token transfer. Policies are associated with a unique `policyId`, can either be a blacklist or a whitelist policy, and contain a list of addresses. This list of addresses can be updated by the policy `admin`. - [Invariants](/protocol/tip403/spec): `policyId = 0` is the `always-reject` policy and rejects all token transfers - [TIP-20 Rewards](/protocol/tip20-rewards/overview): TIP-20 Rewards is a built-in mechanism that allows for efficient distribution of rewards to opted-in token holders proportional to their holdings, while maintaining low gas costs at scale and complying with [TIP-403 transfer policies](/protocol/tip403/spec). - [TIP-20 Rewards Distribution](/protocol/tip20-rewards/spec): An opt-in, scalable, pro-rata reward distribution mechanism built into TIP-20 tokens. The system uses a "reward-per-token" accumulator pattern to distribute rewards proportionally to opted-in holders without requiring staking or per-holder iteration. Rewards are distributed instantly; time-based streaming distributions are planned for a future upgrade. - [TIP-20 Token Standard](/protocol/tip20/overview): TIP-20 is Tempo's native token standard for stablecoins and payment tokens. TIP-20 is designed for stablecoin payments, and is the foundation for many token-related functions on Tempo including transaction fees, payment lanes, DEX quote tokens, and optimized routing for DEX liquidity on Tempo. - [TIP20](/protocol/tip20/spec): TIP20 is a suite of precompiles that provide a built-in optimized token implementation in the core protocol. It extends the ERC-20 token standard with built-in functionality like memo fields and reward distribution. - [Transaction Fees](/protocol/fees): Tempo has no native token. Instead, transaction fees—including both gas fees and priority fees—can be paid directly in stablecoins. When you send a transaction, you can choose which supported stablecoin to use for fees. - [Fee AMM Specification](/protocol/fees/spec-fee-amm): This specification defines a system of one-way Automated Market Makers (AMMs) designed to facilitate gas fee payments from a user using one stablecoin (the `userToken`) to a validator who prefers a different stablecoin (the `validatorToken`). Each AMM handles fee swaps from a `userToken` to a `validatorToken` at one price (0.9970 `validatorToken` per `userToken`), and allows rebalancing in the other direction at another fixed price (0.9985 `validatorToken` per `userToken`). - [Fees](/protocol/fees/spec-fee): This spec lays out how fees work on Tempo, including how fees are calculated, who pays them, and how the default fee token for a transaction is determined. - [Fee AMM Overview](/protocol/fees/fee-amm): The Fee AMM (Automated Market Maker) is a dedicated system for converting transaction fees between different stablecoins. It enables users to pay fees in any supported stablecoin while allowing validators to receive fees in their preferred token. - [DEX Balance](/protocol/exchange/exchange-balance): The Stablecoin DEX allows you to hold token balances directly using the DEX contract. This eliminates the need for token transfers on every trade, significantly reducing gas costs for active traders and liquidity providers. - [Executing Swaps](/protocol/exchange/executing-swaps): The exchange provides two primary swap functions: - [Exchanging Stablecoins](/protocol/exchange): Tempo features an enshrined decentralized exchange (DEX) designed specifically for trading between stablecoins of the same underlying asset (e.g., USDC to USDT). The exchange provides optimal pricing for cross-stablecoin payments while minimizing chain load from excessive market activity. - [pathUSD](/protocol/exchange/pathUSD): pathUSD is a USD-denominated stablecoin that can be used as a quote token on Tempo's decentralized exchange. It is the first stablecoin deployed to the chain, and is used as a fallback gas token when the user or validator does not specify a gas token. Use of pathUSD is optional. - [Providing Liquidity](/protocol/exchange/providing-liquidity): Provide liquidity to the DEX by placing limit orders or flip orders in the onchain orderbook. - [Stablecoin DEX](/protocol/exchange/spec): This specification defines an enshrined decentralized exchange for trading between TIP-20 stablecoins. The exchange currently only supports trading between TIP-20 stablecoins with USD as their currency. By only allowing each stablecoin to be paired against its designated "quote token" the exchange enforces that there is only one route for trading between any two tokens. - [Blockspace Overview](/protocol/blockspace/overview): This specification defines the structure of valid blocks in the Tempo blockchain. - [Payment Lane Specification](/protocol/blockspace/payment-lane-specification): This specification introduces a second consensus gas constraint for **non-payment** transactions. Transactions are classified as either payments or non-payments based solely on their transaction data, without requiring any access to blockchain state. For a block to be valid, total `gas_used` by the block must be less than the `gas_limit`. Non-payment transactions executed in the proposer's lane (i.e. before the gas incentive section) must consume at most `general_gas_limit`, a new field added to the header. Once that budget is exhausted, any additional inclusion must come via the gas incentive lane defined in the [sub-blocks specification](/protocol/blockspace/sub-block-specification). - [Sub-block Specification](/protocol/blockspace/sub-block-specification): This proposal allows non-proposing validators to propose a limited set of transactions in each block through signed **sub-blocks**. Sub-blocks are sent directly to the main proposer and their transactions are included in the block as described below. Consensus does not enforce inclusion. The proposer is incentivized to include sub-blocks by provisioning additional gas upon sub-block inclusion, which permits them to include additional transactions at the bottom of the block as described below. - [Learn](/learn): Notes on stablecoin use cases and Tempo's architecture - [Stablecoins](/learn/stablecoins): Room-temperature superconductors for financial services. - [Power AI agents with programmable money](/learn/use-cases/agentic-commerce): Enable autonomous agents to purchase goods, services, and digital resources with real-time, programmable stablecoin payments. - [Bring embedded finance to life with stablecoins](/learn/use-cases/embedded-finance): Enable platforms and marketplaces to streamline partner payouts, lower payment costs, and launch more rewarding loyalty programs. - [Pay your global workforce instantly](/learn/use-cases/global-payouts): Deliver faster, cheaper, and more predictable cross-border payouts to employees and contractors around the world with stablecoins. - [Enable true pay-per-use pricing](/learn/use-cases/microtransactions): Build usage-based billing, pay-per-use APIs, and machine-to-machine services with real-time, sub-cent stablecoin payments. - [Send money home faster and cheaper](/learn/use-cases/remittances): Deliver instant cross-border payments to your customers around the world with stablecoins on Tempo. - [Move treasury liquidity instantly across borders](/learn/use-cases/tokenized-deposits): Enable corporate treasury teams to improve liquidity management across banks, currencies, and regions with tokenized deposits. - [Onchain FX](/learn/tempo/fx): An overwhelming majority of cross-border payments facilitated by stablecoins use what is known as the stablecoin sandwich: the onchain leg is conducted in stablecoins, typically USD-denominated, with on- and off-ramps converting from/to a local currency. - [Tempo](/learn/tempo): The payments-first blockchain - [Tempo Transactions](/learn/tempo/modern-transactions): Modern, optimized, and highly scalable blockchain transactions - [TIP-20 Tokens](/learn/tempo/native-stablecoins): Tempo's native stablecoin token standard - [Performance](/learn/tempo/performance): Tempo's performant blockchain architecture - [Privacy](/learn/tempo/privacy): Tempo is also developing opt-in privacy features designed to coexist with issuer compliance requirements. This functionality will enable private balances and transfers while maintaining the auditability and reporting capabilities that regulated issuers need. - [!Replace Me!](/guide/_template): Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam elementum odio ante, sit amet tincidunt leo scelerisque vitae. Donec placerat imperdiet nibh in efficitur. Nam pharetra euismod tortor ac suscipit. Quisque nec ultrices nisl. Sed in magna sapien. Duis vel risus sed leo gravida volutpat a id libero. Pellentesque ut nunc vel turpis tristique bibendum ut eu mauris. Aliquam aliquet nunc orci, eu mattis nisi hendrerit sed. Donec volutpat dolor lectus, sit amet facilisis arcu pretium nec. - [Add Funds to Your Balance](/guide/use-accounts/add-funds): Get test tokens to start building on Tempo testnet. - [Batch Transactions](/guide/use-accounts/batch-transactions): One of the most powerful features of the [Tempo Transaction](/protocol/transactions/spec-tempo-transaction) type is batching multiple operations into a single transaction. This allows you to execute several actions atomically (i.e., they all succeed or all fail together). This helps reduce gas costs, prevents partial failures, and creates better user experiences by combining multiple steps into one transaction. - [Connect to Wallets](/guide/use-accounts/connect-to-wallets): It is possible to use Tempo with EVM-compatible wallets that support the Tempo network, or support adding custom networks (like MetaMask). - [Embed Passkey Accounts](/guide/use-accounts/embed-passkeys): Create a domain-bound passkey account on Tempo using WebAuthn signatures for secure, passwordless authentication with [Tempo transactions](/protocol/transactions/spec-tempo-transaction). - [Fee Sponsorship](/guide/use-accounts/fee-sponsorship): Fee sponsorship enables gasless transactions where applications can subsidize user costs. Users can interact with the blockchain without holding fee tokens. - [Create & Use Accounts](/guide/use-accounts): Create and integrate Tempo accounts into your product with domain-bound passkeys or connecting your app to EVM-compatible wallets. - [Scheduled Transactions](/guide/use-accounts/scheduled-transactions): Execute transactions only within a specific time window using `validAfter` and `validBefore` timestamps. - [WebAuthn & P256 Signatures](/guide/use-accounts/webauthn-p256-signatures): Tempo EOA addresses can be derived from multiple signature types. Allowing you to sign transactions with standard Ethereum wallets, hardware security keys, biometric authentication like Face ID and Touch ID, or even using [passkeys](https://passkeys.dev/). - [Executing Swaps](/guide/stablecoin-exchange/executing-swaps): Execute swaps between stablecoins on the exchange. Swaps execute immediately against existing orders in the orderbook, providing instant liquidity for cross-stablecoin payments. - [Exchange Stablecoins](/guide/stablecoin-exchange): Trade between stablecoins on Tempo's enshrined decentralized exchange (DEX). The DEX enables optimal pricing for cross-stablecoin payments while minimizing chain load. - [Managing Fee Liquidity](/guide/stablecoin-exchange/managing-fee-liquidity): The Fee AMM converts transaction fees between stablecoins when users pay in a different token than the validator prefers. This guide shows you how to add and remove liquidity to enable fee conversions. - [Providing Liquidity](/guide/stablecoin-exchange/providing-liquidity): Add liquidity for a token pair by placing orders on the Stablecoin DEX. You can provide liquidity on the `buy` or `sell` side of the orderbook, with `limit` or `flip` orders. To learn more about order types see the [documentation on order types](/protocol/exchange/providing-liquidity#order-types). - [View the Orderbook](/guide/stablecoin-exchange/view-the-orderbook): Query and inspect the orderbook to see available liquidity, price levels, and individual orders on Tempo's Stablecoin DEX. - [Accept a Payment](/guide/payments/accept-a-payment): Accept stablecoin payments in your application. Learn how to receive payments, verify transactions, and reconcile payments using memos. - [Stablecoin Payments](/guide/payments): Send and receive payments using stablecoins on Tempo. Learn how to integrate payments into your application with flexible fee options and sponsorship capabilities. - [Pay Fees in Any Stablecoin](/guide/payments/pay-fees-in-any-stablecoin): Configure users to pay transaction fees in any supported stablecoin. Tempo's flexible fee system allows users to pay fees with the same token they're using, eliminating the need to hold a separate gas token. - [Recipes](/guide/payments/pay-fees-in-any-stablecoin): [Embed Passkey accounts](/guide/use-accounts/embed-passkeys) - [Send a Payment](/guide/payments/send-a-payment): Send stablecoin payments between accounts on Tempo. Payments can include optional memos for reconciliation and tracking. - [Send Parallel Transactions](/guide/payments/send-parallel-transactions): Submit multiple transactions in parallel using Tempo's [2D nonces](/protocol/transactions/spec-tempo-transaction). The `nonceKey` property allow you to send concurrent transactions without waiting for each one to confirm sequentially. - [Sponsor User Fees](/guide/payments/sponsor-user-fees): Enable gasless transactions by sponsoring transaction fees for your users. Tempo's native fee sponsorship allows applications to pay fees on behalf of users, improving UX and removing friction from payment flows. - [Tempo Node](/guide/node): Running a Tempo node allows you to interact with the network directly, providing your own RPC access or contributing to network infrastructure. Nodes provide JSON-RPC API access for applications, explorers, and wallets but do not participate in consensus. - [Installation](/guide/node/installation): We provide three different installation paths - installing a pre-built binary, building from source or using our provided Docker image. - [System Requirements](/guide/node/system-requirements): These are the minimum and recommended system requirements for running a validator/RPC node. It is likely, that the nodes will not require as much resources at the beginning of the chain, but we still highly recommend to follow the recommended specifications. This will allow for future growth and scalability. - [Running an RPC Node](/guide/node/usage): RPC nodes provide API access to the Tempo network without participating in consensus. These nodes currently observe and sync with the network's latest state. - [Create a Stablecoin](/guide/issuance/create-a-stablecoin): Create your own stablecoin on Tempo using the [TIP-20 token standard](/protocol/tip20/overview). TIP-20 tokens are designed specifically for payments with built-in compliance features, role-based permissions, and integration with Tempo's payment infrastructure. - [Distribute Rewards](/guide/issuance/distribute-rewards): Distribute rewards to token holders using TIP-20's built-in reward distribution mechanism. Rewards allow parties to incentivize holders of a token by distributing tokens proportionally based on their balance. - [Stablecoin Issuance](/guide/issuance): Create and manage your own stablecoin on Tempo. Learn how to issue tokens, manage supply, and integrate with Tempo's payment infrastructure. - [Manage Your Stablecoin](/guide/issuance/manage-stablecoin): Configure your stablecoin's permissions, supply limits, and compliance policies after deployment. This guide covers granting roles to manage token operations, setting supply caps, configuring transfer policies, and controlling token transfers through pause/unpause functionality. - [Mint Stablecoins](/guide/issuance/mint-stablecoins): Create new tokens by minting them to a specified address. Minting increases the total supply of your stablecoin. - [Use Your Stablecoin for Fees](/guide/issuance/use-for-fees): Enable users to pay transaction fees using your stablecoin. Tempo supports flexible fee payment options, allowing users to pay fees in any stablecoin they hold.