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

一、网络类型概述

一、1 主网(Mainnet)

1
定义:
  • 以太坊的正式生产网络
  • 使用真实的ETH代币
  • 所有交易都是真实且不可逆的
  • 网络ID:1
1
特点:
  • 最稳定和安全的网络
  • 需要真实的ETH支付Gas费用
  • 交易一旦确认无法撤销
  • 适合生产环境部署

二、2 测试网(Testnet)

1
定义:
  • 用于开发和测试的网络
  • 使用测试代币,无实际价值
  • 可以免费获取测试币
  • 模拟主网环境
1
特点:
  • 免费使用,无需真实ETH
  • 可以随意测试和实验
  • 网络可能不稳定
  • 定期重置状态

三、3 私有网络(Private Network)

1
定义:
  • 本地或组织内部搭建的网络
  • 完全独立的区块链
  • 可以自定义参数
  • 适合开发和演示
1
特点:
  • 完全控制网络
  • 快速出块和确认
  • 无需支付Gas费用
  • 适合本地开发

二、主网(Mainnet)

四、1 网络信息

1
2
3
网络ID:1
链ID:1
RPC端点:
1
区块浏览器:

五、2 连接到主网

1
使用Geth:
1
geth --mainnet
1
使用Web3.js:
1
2
const Web3 = require('web3');
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_PROJECT_ID');
1
使用ethers.js:
1
2
const { ethers } = require('ethers');
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_PROJECT_ID');

六、3 注意事项

1
安全要求:
  • 使用真实ETH,务必谨慎
  • 仔细检查所有交易
  • 使用硬件钱包存储大额资金
  • 定期备份私钥
1
成本考虑:
  • 需要支付Gas费用
  • 网络拥堵时费用较高
  • 部署合约成本可能很高

三、测试网

七、1 Goerli测试网

1
网络信息:
  • 网络ID:5
  • 链ID:5
  • 状态:已弃用(2023年)
1
特点:
  • 曾经最流行的测试网
  • 使用PoA共识机制
  • 已停止维护

八、2 Sepolia测试网

1
网络信息:
  • 网络ID:11155111
  • 链ID:11155111
  • 状态:活跃
1
特点:
  • 当前推荐的测试网
  • 使用PoS共识机制
  • 快速同步
  • 稳定的网络
1
获取测试币:
1
连接到Sepolia:
1
geth --sepolia
1
const web3 = new Web3('https://sepolia.infura.io/v3/YOUR_PROJECT_ID');

九、3 Holesky测试网

1
网络信息:
  • 网络ID:17000
  • 链ID:17000
  • 状态:活跃
1
特点:
  • 新的长期测试网
  • 替代Goerli
  • 用于长期测试和开发

十、4 本地测试网

1
使用Hardhat:
1
2
3
4
5
6
7
8
// hardhat.config.js
module.exports = {
networks: {
hardhat: {
chainId: 1337
}
}
};
1
使用Ganache:
1
ganache-cli

四、私有网络

十一、1 创建私有网络

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
初始化网络:
1
geth --datadir ./private-net init genesis.json
1
启动节点:
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:
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
1
节点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
连接节点:
1
2
// 在节点控制台
admin.addPeer("enode://...")

五、网络选择指南

十三、1 开发阶段

1
本地开发:
  • 使用Hardhat或Ganache
  • 快速迭代
  • 无需网络连接
1
功能测试:
  • 使用Sepolia测试网
  • 模拟真实环境
  • 免费测试币

十四、2 部署阶段

1
测试部署:
  • 先在测试网部署
  • 充分测试功能
  • 验证Gas消耗
1
生产部署:
  • 主网部署
  • 充分测试后上线
  • 准备足够的ETH

十五、3 不同场景

1
学习开发:
  • 私有网络或测试网
  • 无需成本
  • 可以随意实验
1
项目开发:
  • 本地网络开发
  • 测试网部署测试
  • 主网最终部署
1
企业应用:
  • 考虑私有链或联盟链
  • 更高的控制权
  • 定制化需求

六、网络切换

十六、1 在代码中切换

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]
}
}
};
1
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
添加网络:
  1. 打开MetaMask
  2. 点击网络选择器
  3. 选择”添加网络”
  4. 输入网络信息
1
Sepolia网络信息:

七、网络监控

十八、1 区块浏览器

1
主网:
1
测试网:

十九、2 网络状态

1
检查连接:
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);
1
监控工具:
  • Etherscan API
  • The Graph
  • Alchemy Monitor
  • Infura Dashboard

八、最佳实践

二十、1 开发流程

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

二十一、2 安全建议

1
测试网:
  • 不要使用真实私钥
  • 使用专门的测试账户
  • 定期清理测试数据
1
主网:
  • 使用硬件钱包
  • 多重签名保护
  • 充分测试后再部署
  • 准备应急方案

二十二、3 成本优化

1
测试阶段:
  • 使用测试网节省成本
  • 优化Gas使用
  • 批量测试
1
生产部署:
  • 选择Gas价格较低时部署
  • 优化合约代码
  • 使用Layer 2解决方案

九、常见问题

二十三、1 如何获取测试币?

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

二十四、2 测试网数据会丢失吗?

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

二十五、3 如何切换网络?

1
在代码中:
  • 修改RPC端点
  • 更新网络配置
  • 重新连接
1
在MetaMask中:
  • 选择网络下拉菜单
  • 切换网络

十、总结

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

1
网络选择:
  • 开发:使用本地网络或测试网
  • 测试:使用Sepolia测试网
  • 生产:使用主网
1
关键要点:
  • 主网使用真实ETH,务必谨慎
  • 测试网免费但可能不稳定
  • 私有网络完全控制,适合开发
  • 根据需求选择合适的网络

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

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

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

最后更新: 2025年12月30日 08:54

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

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

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