# Set Token Pool Rate Limits Using Foundry
Source: https://docs.chain.link/ccip/evm/tutorials/cross-chain-tokens/update-rate-limiters-foundry
Last Updated: 2026-04-27

> For the complete documentation index, see [llms.txt](/llms.txt).

## Guide Versions

- [Foundry](/ccip/evm/tutorials/cross-chain-tokens/update-rate-limiters-foundry)

- [Hardhat](/ccip/evm/tutorials/cross-chain-tokens/update-rate-limiters-hardhat)

In this tutorial you will:

1. Review current standard rate limiter configurations for your deployed token pool.
2. Update outbound and inbound standard rate limiter configurations.
3. Verify the updated configurations.
4. Test standard rate limiter enforcement with a cross-chain token transfer.
5. Optionally configure and test rate limits for faster than finality transfers.

## Before You Begin

## Tutorial

> **TIP: Prerequisites**
>
> This tutorial assumes you have already deployed tokens and token pools on both chains. If not, complete one of the
> registration tutorials first:
>
> [Burn & Mint](/ccip/evm/tutorials/cross-chain-tokens/register-from-eoa-burn-mint-foundry)
>
> [Lock & Mint](/ccip/evm/tutorials/cross-chain-tokens/register-from-eoa-lock-mint-foundry)
>
> Make sure your token and token pool addresses are exported as environment variables:
>
> ```bash
> export ETHEREUM_SEPOLIA_TOKEN=0x...
> export ETHEREUM_TESTNET_SEPOLIA_ARBITRUM_1_TOKEN=0x...
>
> export ETHEREUM_SEPOLIA_TOKEN_POOL=0x...
> export ETHEREUM_TESTNET_SEPOLIA_ARBITRUM_1_TOKEN_POOL=0x...
> ```
>
> This tutorial supports both CCT registration models:
>
> In the Burn & Mint model, rate limiters are configured on the `BurnMintTokenPool` on each chain.
>
> In the Lock & Mint model, rate limiters are configured on the token pools: the source-chain&#x20;
> `LockReleaseTokenPool` and the destination-chain `BurnMintTokenPool`. The&#x20;
> `ERC20LockBox` is not rate-limited and is not updated by the scripts in this tutorial.

> **CAUTION: Educational Example Disclaimer**
>
> Please note, this page contains community examples only — these are not Chainlink products or services and are not
> supported or maintained by Chainlink. This code represents an example of using a Chainlink product or service, and is
> intended for demonstration and educational purposes only. It is provided "AS IS" and "AS AVAILABLE" without warranties
> of any kind, may not have been audited, and may omit checks or error handling. Each party intending to use this
> example code does so entirely at their own risk and must perform its own audits, security and code review, key
> management, and testing before any production deployment and ensure the operation and performance of such code matches
> expectations. Neither Chainlink Labs nor the Chainlink Foundation deploys, operates, monitors, maintains or endorses
> any deployment of this code. Note that this is not a Chainlink product, feature or service, and there are no
> commitments made with respect to the code, including compatibility with future Chainlink releases. You should not rely
> on this code without first conducting your own technical, engineering, and security review. This code is also outside
> the scope of any Chainlink bug bounty programs. Neither Chainlink Labs, the Chainlink Foundation, nor Chainlink node
> operators are responsible for outcomes due to errors in this example or how it is deployed or operated, or liable for
> any resulting claims or damages. Use of the Chainlink Network is subject to the Chainlink Foundation [Terms of
> Service](https://chain.link/terms), which provides important information and disclosures. By using this code, you
> acknowledge and agree to these terms.