以太坊有多种网络类型,包括主网、测试网和私有网络。不同的网络适用于不同的场景,了解各种网络的特点和使用方法对于以太坊开发至关重要。本文详细介绍各种,帮助开发者选择合适的网络进行开发和部署。

一、网络类型概述

1. 主网(Mainnet)

定义

  • 以太坊的正式生产网络
  • 使用真实的ETH代币
  • 所有交易都是真实且不可逆的
  • 网络ID:1

特点

  • 最稳定和安全的网络
  • 需要真实的ETH支付Gas费用
  • 交易一旦确认无法撤销
  • 适合生产环境部署

2. 测试网(Testnet)

定义

  • 用于开发和测试的网络
  • 使用测试代币,无实际价值
  • 可以免费获取测试币
  • 模拟主网环境

特点

  • 免费使用,无需真实ETH
  • 可以随意测试和实验
  • 网络可能不稳定
  • 定期重置状态

3. 私有网络(Private Network)

定义

  • 本地或组织内部搭建的网络
  • 完全独立的区块链
  • 可以自定义参数
  • 适合开发和演示

特点

  • 完全控制网络
  • 快速出块和确认
  • 无需支付Gas费用
  • 适合本地开发

二、主网(Mainnet)

1. 网络信息

1
2
3
网络ID:1
链ID:1
RPC端点:

区块浏览器

2. 连接到主网

使用Geth

1
geth --mainnet

使用Web3.js

1
2
const Web3 = require('web3');
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_PROJECT_ID');

使用ethers.js

1
2
const { ethers } = require('ethers');
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_PROJECT_ID');

3. 注意事项

安全要求

  • 使用真实ETH,务必谨慎
  • 仔细检查所有交易
  • 使用硬件钱包存储大额资金
  • 定期备份私钥

成本考虑

  • 需要支付Gas费用
  • 网络拥堵时费用较高
  • 部署合约成本可能很高

三、测试网

1. Goerli测试网

网络信息

  • 网络ID:5
  • 链ID:5
  • 状态:已弃用(2023年)

特点

  • 曾经最流行的测试网
  • 使用PoA共识机制
  • 已停止维护

2. Sepolia测试网

网络信息

  • 网络ID:11155111
  • 链ID:11155111
  • 状态:活跃

特点

  • 当前推荐的测试网
  • 使用PoS共识机制
  • 快速同步
  • 稳定的网络

获取测试币

连接到Sepolia

1
2
3
geth --sepolia

const web3 = new Web3('https://sepolia.infura.io/v3/YOUR_PROJECT_ID');

3. Holesky测试网

网络信息

  • 网络ID:17000
  • 链ID:17000
  • 状态:活跃

特点

  • 新的长期测试网
  • 替代Goerli
  • 用于长期测试和开发

4. 本地测试网

使用Hardhat

1
2
3
4
5
6
7
8
// hardhat.config.js
module.exports = {
networks: {
hardhat: {
chainId: 1337
}
}
};

使用Ganache

1
ganache-cli

四、私有网络

1. 创建私有网络

创世区块配置(genesis.json)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"config": {
"chainId": 12345,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {
"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb": {
"balance": "1000000000000000000000"
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x400",
"extraData": "",
"gasLimit": "0x8000000",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}

初始化网络

1
geth --datadir ./private-net init genesis.json

启动节点

1
geth --datadir ./private-net --networkid 12345 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpcapi "eth,net,web3,personal,admin" console

2. 多节点私有网络

节点1

1
geth --datadir ./node1 --networkid 12345 --port 30303 --rpcport 8545 --rpcaddr "0.0.0.0" --nodiscover --rpcapi "eth,net,web3,admin,personal" --bootnodes "enode://..." console

节点2

1
geth --datadir ./node2 --networkid 12345 --port 30304 --rpcport 8546 --rpcaddr "0.0.0.0" --nodiscover --rpcapi "eth,net,web3,admin,personal" --bootnodes "enode://..." console

连接节点

1
2
// 在节点控制台
admin.addPeer("enode://...")

五、网络选择指南

1. 开发阶段

本地开发

  • 使用Hardhat或Ganache
  • 快速迭代
  • 无需网络连接

功能测试

  • 使用Sepolia测试网
  • 模拟真实环境
  • 免费测试币

2. 部署阶段

测试部署

  • 先在测试网部署
  • 充分测试功能
  • 验证Gas消耗

生产部署

  • 主网部署
  • 充分测试后上线
  • 准备足够的ETH

3. 不同场景

学习开发

  • 私有网络或测试网
  • 无需成本
  • 可以随意实验

项目开发

  • 本地网络开发
  • 测试网部署测试
  • 主网最终部署

企业应用

  • 考虑私有链或联盟链
  • 更高的控制权
  • 定制化需求

六、网络切换

1. 在代码中切换

Hardhat配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module.exports = {
networks: {
localhost: {
url: "http://127.0.0.1:8545"
},
sepolia: {
url: `https://sepolia.infura.io/v3/${process.env.INFURA_API_KEY}`,
accounts: [process.env.PRIVATE_KEY]
},
mainnet: {
url: `https://mainnet.infura.io/v3/${process.env.INFURA_API_KEY}`,
accounts: [process.env.PRIVATE_KEY]
}
}
};

Truffle配置

1
2
3
4
5
6
7
8
9
10
11
12
13
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
},
sepolia: {
provider: () => new HDWalletProvider(process.env.MNEMONIC, `https://sepolia.infura.io/v3/${process.env.INFURA_API_KEY}`),
network_id: 11155111
}
}
};

2. MetaMask切换

添加网络

  1. 打开MetaMask
  2. 点击网络选择器
  3. 选择”添加网络”
  4. 输入网络信息

Sepolia网络信息

七、网络监控

1. 区块浏览器

主网

测试网

2. 网络状态

检查连接

1
2
3
4
5
6
7
8
9
10
11
// 检查网络ID
const networkId = await web3.eth.net.getId();
console.log('Network ID:', networkId);

// 检查链ID
const chainId = await web3.eth.getChainId();
console.log('Chain ID:', chainId);

// 检查区块号
const blockNumber = await web3.eth.getBlockNumber();
console.log('Block Number:', blockNumber);

监控工具

  • Etherscan API
  • The Graph
  • Alchemy Monitor
  • Infura Dashboard

八、最佳实践

1. 开发流程

1
本地开发 → 测试网部署 → 主网部署
  1. 在本地网络快速开发
  2. 在测试网充分测试
  3. 确认无误后部署主网

2. 安全建议

测试网

  • 不要使用真实私钥
  • 使用专门的测试账户
  • 定期清理测试数据

主网

  • 使用硬件钱包
  • 多重签名保护
  • 充分测试后再部署
  • 准备应急方案

3. 成本优化

测试阶段

  • 使用测试网节省成本
  • 优化Gas使用
  • 批量测试

生产部署

  • 选择Gas价格较低时部署
  • 优化合约代码
  • 使用Layer 2解决方案

九、常见问题

1. 如何获取测试币?

Sepolia测试币

  • 访问测试币水龙头网站
  • 输入钱包地址
  • 等待测试币到账

2. 测试网数据会丢失吗?

答案:可能会

  • 测试网可能定期重置
  • 重要数据应备份
  • 生产应用必须使用主网

3. 如何切换网络?

在代码中

  • 修改RPC端点
  • 更新网络配置
  • 重新连接

在MetaMask中

  • 选择网络下拉菜单
  • 切换网络

十、总结

选择合适的以太坊网络对于开发和部署至关重要:

网络选择

  • 开发:使用本地网络或测试网
  • 测试:使用Sepolia测试网
  • 生产:使用主网

关键要点

  • 主网使用真实ETH,务必谨慎
  • 测试网免费但可能不稳定
  • 私有网络完全控制,适合开发
  • 根据需求选择合适的网络

通过正确理解和使用不同的网络类型,可以高效地进行以太坊开发,在保证安全的前提下降低成本和提高效率。

本文标题: 以太坊网络类型

发布时间: 2024年02月26日 00:00

最后更新: 2026年09月16日 05:40

原始链接: https://haoxiang.eu.org/8c314d9a/

版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

× 喜欢就赞赏一下呗!
打赏二维码