Деплой смарт-контрактов в Base
Base — L2 от Coinbase на стеке OP Stack. EVM-совместима полностью: тот же Solidity, тот же ABI, те же инструменты. Деплой контракта с Ethereum на Base — это смена --network флага и RPC URL. Но есть нюансы с верификацией, gas estimation и bridge для тестирования.
Конфигурация Hardhat
// hardhat.config.ts
import { HardhatUserConfig } from 'hardhat/config'
import '@nomicfoundation/hardhat-toolbox'
import '@nomicfoundation/hardhat-verify'
const config: HardhatUserConfig = {
solidity: {
version: '0.8.24',
settings: { optimizer: { enabled: true, runs: 200 } }
},
networks: {
base: {
url: 'https://mainnet.base.org',
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
chainId: 8453,
},
'base-sepolia': {
url: 'https://sepolia.base.org',
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
chainId: 84532,
},
},
etherscan: {
apiKey: {
base: process.env.BASESCAN_API_KEY!,
'base-sepolia': process.env.BASESCAN_API_KEY!,
},
customChains: [
{
network: 'base',
chainId: 8453,
urls: {
apiURL: 'https://api.basescan.org/api',
browserURL: 'https://basescan.org',
},
},
{
network: 'base-sepolia',
chainId: 84532,
urls: {
apiURL: 'https://api-sepolia.basescan.org/api',
browserURL: 'https://sepolia.basescan.org',
},
},
],
},
}
export default config
Деплой и верификация
# Деплой на Base Sepolia (тестнет)
npx hardhat run scripts/deploy.ts --network base-sepolia
# Верификация исходного кода
npx hardhat verify --network base-sepolia <CONTRACT_ADDRESS> <constructor_arg1> <constructor_arg2>
Для контрактов с constructor arguments в формате ABI encoded — файл с arguments:
npx hardhat verify --network base --constructor-args scripts/args.ts <CONTRACT_ADDRESS>
Foundry вариант
forge create --rpc-url https://mainnet.base.org \
--private-key $DEPLOYER_PRIVATE_KEY \
--etherscan-api-key $BASESCAN_API_KEY \
--verify \
src/MyContract.sol:MyContract \
--constructor-args <arg1> <arg2>
--verify верифицирует сразу после деплоя. Foundry быстрее Hardhat для простых деплоев.
Gas на Base
Base газ оплачивается в ETH. Gas price обычно 0.001-0.01 gwei — на порядки дешевле mainnet. Типичные стоимости:
| Операция | Gas | Примерная стоимость (при ETH $3000) |
|---|---|---|
| Деплой простого контракта | ~500k gas | ~$0.01-0.05 |
| ERC-20 transfer | 21k-65k gas | < $0.001 |
| Uniswap V3 swap | ~180k gas | ~$0.003 |
Для получения тестовых ETH на Base Sepolia — Coinbase faucet (coinbase.com/faucets) или bridge из Ethereum Sepolia через Base bridge.
Deterministic deployment с CREATE2
Если нужен одинаковый адрес контракта на Base и других сетях — CREATE2 через deterministic deployer:
// Используем стандартный Nick's factory (0x4e59b44847b379578588920cA78FbF26c0B4956C)
bytes32 salt = keccak256("my-project-v1");
cast create2 --starts-with 0x1234 --init-code-hash <hash>
# Найдёт соль для vanity адреса начинающегося с 0x1234
Адрес контракта на Base, Optimism, Arbitrum и Ethereum будет идентичен при одинаковом bytecode и salt.







