Skip to main content

合约部署⚡️

apiKey Site

https://etherscan.io/myapikey

https://sepolia-optimism.etherscan.io/

https://sepolia.arbiscan.io/

https://optimism.blockscout.com/account/api-key

https://arbiscan.io/myaccount

https://basescan.org/myapikey

目标

alt text

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

alt text

hardhat.config.ts

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 调用了

alt text

cli

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

alt text

多链配置

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'

alt text

$  ~/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

alt text

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

遇到问题

alt text

有用的地址

  1. https://sepolia.etherscan.io/token/0xf0e90c998e1a4240cb48732c621e193fcf68875d#readContract
  2. https://sepolia-optimism.etherscan.io/
  3. https://optimism.blockscout.com/account/api-key
  4. https://sepolia.arbiscan.io/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#readContract
  5. https://arbiscan.io/myaccount
  6. https://sepolia.arbiscan.io/
  7. https://sepolia.basescan.org/address/0xCc319814db2C7DFc2979AbAeba3Fb52ac4ca1dbB#readContract
  8. https://basescan.org/myapikey
  9. https://base-sepolia.blockscout.com/account/api-key
  10. https://ethereum-sepolia-rpc.publicnode.com/
  11. https://superbridge.app/
  12. https://superbridge.app/op-sepolia
  13. https://www.superchain.tools/
  14. https://app.optimism.io/bridge/deposit
  15. https://bridge.arbitrum.io/?destinationChain=arbitrum-sepolia&sourceChain=sepolia
  16. https://docs.optimism.io/builders/tools/build/faucets