Unichain Docs

Deploy a Smart Contract

Learn how to deploy a smart contract on Unichain

This guide will walk you through the process of deploying a smart contract on the Unichain network.

Requirements

ETH on Unichain is required, see Funding a Wallet

  1. The guide uses foundry for deployments. Install it by running:

    curl -L https://foundry.paradigm.xyz | bash

    To verify the installation:

    forge --version
  2. Add Unichain to your foundry.toml

    [rpc_endpoints]
    unichain = "https://sepolia.unichain.org"

Steps to Deploy

Due to the EVM-equivalence of Unichain, foundry commands should work as expected. The major difference is the network URL. In most cases, using --rpc-url unichain is sufficient

1. Navigate to your smart contract project

cd path/to/your/project

2. Deploying a smart contract

Your private key should have ETH on the Unichain network. A transaction will be created, and requires a gas fee.

forge create src/{YourContract}.sol:{ContractName} --rpc-url unichain --private-key {YourPrivateKey}

3. Contract Verification

Obtain an API key from https://sepolia.uniscan.xyz

There are two options to verify your contract:

  • During deployment
  • After deployment

During deployment provide additional flags:

--etherscan-api-key {API_KEY} --verify

After deployment:

forge verify-contract \
    --chain-id 1301 \
    --num-of-optimizations 200 \
    --watch \
    --constructor-args $(cast abi-encode "constructor(string,string,uint256,uint256)" "ForgeUSD" "FUSD" 18 1000000000000000000000) \
    --etherscan-api-key {your_etherscan_api_key} \
    --compiler-version {v0.8.20+commit.a1b79de}
    {the_contract_address} \
    src/{YourContract}.sol:{ContractName}

forge verify-contract

Additional information here or other deployment options

Example Deployment

See deploying an ERC-20 contract

Best Practices

  • Verification

    Verifying during deployment is recommended, as compilation parameters are known during execution

  • Scripting

    For complex deployments, such as deploying multiple related contracts, complex constructor arguments, or create & call patterns, it is recommended to use foundry's solidity scripting

Last updated on

On this page