合约部署⚡️
apiKey Site
https://sepolia-optimism.etherscan.io/
https://optimism.blockscout.com/account/api-key
目标

env
MNEMONIC="your mnemonic"
INITIAL_OWNER=0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c
ETHERSCAN_API_KEY="your etherscan api key"
BASE_ETHERSCAN_API_KEY="your etherscan api key"
OP_ETHERSCAN_API_KEY="your etherscan api key"
AR_ETHERSCAN_API_KEY="your etherscan api key"
ETHERSCAN_API_KEY

hardhat.config.ts
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import * as dotenv from "dotenv";
dotenv.config();
const config: HardhatUserConfig = {
solidity: {
version: "0.8.20",
settings: {
optimizer: {
enabled: true,
},
},
},
networks: {
sepolia: {
url: 'https://ethereum-sepolia-rpc.publicnode.com',
accounts: { "mnemonic": process.env.MNEMONIC }
}
},
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY || "" // 使用环境变量
}
};
export default config;
部署合约
npx hardhat run scripts/deploy.ts --network sepolia
验证合约
验证后就可以在 https://sepolia.etherscan.io/address/0xf0E90c998e1A4240cb48732C621E193fCF68875D 调用了

cli
npx hardhat verify --network sepolia 0xf0E90c998e1A4240cb48732C621E193fCF68875D "0x473D1cC3547B905Ab81c7CE21bA9f1168a62CE5C"

多链配置
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import * as dotenv from "dotenv";
dotenv.config();
const config: HardhatUserConfig = {
solidity: {
version: "0.8.20",
settings: {
optimizer: {
enabled: true,
},
},
},
networks: {
sepolia: {
url: 'https://ethereum-sepolia-rpc.publicnode.com',
accounts: { "mnemonic": process.env.MNEMONIC }
},
baseSepolia: {
url: 'https://base-sepolia-rpc.publicnode.com',
accounts: { "mnemonic": process.env.MNEMONIC }
},
optimismSepolia: {
url: 'https://optimism-sepolia-rpc.publicnode.com',
accounts: { "mnemonic": process.env.MNEMONIC }
},
arbitrumSepolia: {
url: 'https://arbitrum-sepolia-rpc.publicnode.com',
accounts: { "mnemonic": process.env.MNEMONIC }
}
},
// etherscan: {
// apiKey: process.env.ETHERSCAN_API_KEY || "" // 使用环境变量
// },
etherscan: {
apiKey: {
sepolia: process.env.ETHERSCAN_API_KEY || "", // 使用环境变量
baseSepolia: process.env.BASE_ETHERSCAN_API_KEY || "",
optimismSepolia: process.env.OP_ETHERSCAN_API_KEY || "",
arbitrumSepolia: process.env.AR_ETHERSCAN_API_KEY || ""
},
customChains: [
{
network: "base",
chainId: 8453, // Base 主网的链 ID
urls: {
apiURL: "https://api.basescan.org/api", // Base Etherscan API URL
browserURL: "https://basescan.org" // Base Etherscan 浏览器 URL
}
},
{
network: "baseSepolia",
chainId: 84531, // Base Sepolia 测试网的链 ID
urls: {
apiURL: "https://api-sepolia.basescan.org/api", // Base Sepolia Etherscan API URL
browserURL: "https://sepolia.basescan.org" // Base Sepolia Etherscan 浏览器 URL
}
},
{
network: "optimismSepolia",
chainId: 11155420,
urls: {
apiURL: "https://optimism-sepolia.blockscout.com/api",
browserURL: "https://optimism-sepolia.blockscout.com/",
}
},
{
network: "arbitrumSepolia",
chainId: 421614, // Arbitrum Sepolia 测试网的链 ID
urls: {
apiURL: "https://api-sepolia.arbiscan.io/api", // NOTE: 这个地址不是rpc地址
browserURL: "https://sepolia.arbiscan.io" // Arbitrum Sepolia Etherscan 浏览器 URL
}
}
]
}
};
export default config;
Deploying the contract
You can target any network from your Hardhat config using:
npx hardhat run --network <network-name> scripts/deploy.ts
sepolia
npx hardhat run scripts/deploy.ts --network sepolia
npx hardhat verify --network sepolia DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!"
npx hardhat verify --network sepolia 0xf0E90c998e1A4240cb48732C621E193fCF68875D
npx hardhat run scripts/deploy.ts --network sepolia
0xbbaca69f378760837b5428833db97457ee4cb4be
baseSepolia
$ ~/Downloads/contract/world git:(main) ✗ npx hardhat run scripts/deploy.ts --network baseSepolia Contract deployed to 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB
npx hardhat verify --network baseSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'
$ ~/Downloads/contract/world git:(main) ✗ npx hardhat run scripts/deploy.ts --network optimismSepolia Contract deployed to 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB npx hardhat verify --network optimismSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'

$ ~/Downloads/contract/world git:(main) ✗ npx hardhat verify --network baseSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'
[INFO] Sourcify Verification Skipped: Sourcify verification is currently disabled. To enable it, add the following entry to your Hardhat configuration:
sourcify: {
enabled: true
}
Or set 'enabled' to false to hide this message.
For more information, visit https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify#verifying-on-sourcify
Successfully submitted source code for contract
contracts/World.sol:World at 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB
for verification on the block explorer. Waiting for verification result...
Successfully verified contract World on the block explorer.
https://sepolia.basescan.org/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#code
optimismSepolia
$ ~/Downloads/contract/world git:(main) ✗ npx hardhat verify --network optimismSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'
[INFO] Sourcify Verification Skipped: Sourcify verification is currently disabled. To enable it, add the following entry to your Hardhat configuration:
sourcify: {
enabled: true
}
Or set 'enabled' to false to hide this message.
For more information, visit https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify#verifying-on-sourcify
Successfully submitted source code for contract
contracts/World.sol:World at 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB
for verification on the block explorer. Waiting for verification result...
Successfully verified contract World on the block explorer.
https://optimism-sepolia.blockscout.com/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#code

arbitrumSepolia
$ ~/Downloads/contract/world git:(main) ✗ npx hardhat run scripts/deploy.ts --network arbitrumSepolia
Contract deployed to 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB
$ ~/Downloads/contract/world git:(main) ✗
npx hardhat verify --network arbitrumSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'
$ ~/Downloads/contract/world git:(main) ✗ npx hardhat verify --network arbitrumSepolia 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB '0x473d1cc3547b905ab81c7ce21ba9f1168a62ce5c'
[INFO] Sourcify Verification Skipped: Sourcify verification is currently disabled. To enable it, add the following entry to your Hardhat configuration:
sourcify: {
enabled: true
}
Or set 'enabled' to false to hide this message.
For more information, visit https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify#verifying-on-sourcify
Successfully submitted source code for contract
contracts/World.sol:World at 0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB
for verification on the block explorer. Waiting for verification result...
Successfully verified contract World on the block explorer.
https://sepolia.arbiscan.io/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#code
遇到问题

有用的地址
- https://sepolia.etherscan.io/token/0xf0e90c998e1a4240cb48732c621e193fcf68875d#readContract
- https://sepolia-optimism.etherscan.io/
- https://optimism.blockscout.com/account/api-key
- https://sepolia.arbiscan.io/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#readContract
- https://arbiscan.io/myaccount
- https://sepolia.arbiscan.io/
- https://sepolia.basescan.org/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#readContract
- https://basescan.org/myapikey
- https://base-sepolia.blockscout.com/account/api-key
- https://ethereum-sepolia-rpc.publicnode.com/
- https://superbridge.app/
- https://superbridge.app/op-sepolia
- https://www.superchain.tools/
- https://app.optimism.io/bridge/deposit
- https://bridge.arbitrum.io/?destinationChain=arbitrum-sepolia&sourceChain=sepolia
- https://docs.optimism.io/builders/tools/build/faucets