Skip to main content
Sei is EVM-compatible, so standard deployment tooling works without modification. This page shows how to deploy a contract and verify its source on the Sei block explorer. For a deeper look at verification options (Remix, the Sourcify UI, and batch verification), see the Verify Contracts page.

Try it: deploy from your browser

You do not need a local toolchain. Compile and deploy a contract to Sei Testnet directly from the browser. The Remix sandbox below preloads a minimal Counter.sol. First, add Sei Testnet to your wallet: Then, in Remix:
  1. Compile the contract on the Solidity Compiler tab.
  2. Open the Deploy & Run tab.
  3. Set Environment to Injected Provider - MetaMask.
  4. Click Deploy.
Sei has instant finality, so the deployment confirms in well under a second.

Deploying with viem or ethers

Deploying with Foundry

Foundry works against Sei with the standard --rpc-url flag.
For Sei Testnet:

Deploying with Hardhat

Add the Sei networks to your hardhat.config.ts (Hardhat 3). Keep the toolbox in the plugins array. It comes with projects that npx hardhat --init creates, and it includes Hardhat Ignition for deployments:
Store your private key in the encrypted Hardhat keystore so that the key is never stored in a plaintext file:
Describe the deployment in a minimal Ignition module at ignition/modules/MyContract.ts:
Then deploy it:

Verifying contracts

The Sei block explorer is Seiscan. The recommended verification method is Sourcify. It does not require an API key.

Foundry

Verify the contract after you deploy it:
Or deploy and verify in one step:
For Sei Testnet, use --chain-id 1328 and --rpc-url https://evm-rpc-testnet.sei-apis.com.

Hardhat

If you use a Hardhat toolbox (as in the config above), hardhat-verify is already bundled and active. Skip ahead to the verify command. Without a toolbox, install the plugin:
Then add it to the plugins array in hardhat.config.ts. Sourcify verification is enabled by default in hardhat-verify and does not need an API key:
Verify a deployed contract on Sourcify:
If your contract has constructor arguments:
Without the sourcify subtask, npx hardhat verify tries to verify the contract on all enabled providers (Etherscan, Blockscout, and Sourcify) in a single run.

Network reference