Puppeth:快速搭建以太坊私链的实用工具及配置说明
tokenpocket钱包官网下载 2024年11月16日 20:19:42 tokenpocket钱包官网下载 4
mkdir ethereum
cd ethereum
mkdir node1
mkdir node2
mkdir node3
以太坊的世界中,私链的搭建与账户管理涉及诸多细节。若稍有不慎,便可能引发问题。这正是我们今天要着重讨论的核心内容。
geth --datadir ./node1/data account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {117b88219433dcbe8d24e961283bf57a800b0e91}
创建账号所需密码设置
geth --datadir ./node2/data account new
geth --datadir ./node3/data account new
建立节点账号时,系统会要求输入密码以保障以太坊账号的私钥安全。但您可以选择直接按回车键跳过密码设置,操作十分简便。完成账号创建后,系统会显示账号地址,这个地址至关重要,务必牢记,因为测试私链等操作时需要用到。若不幸遗忘,不必过于紧张,后续可通过gethconsole查询。
puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
| |
| This tool lets you create a new Ethereum network down to |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail. |
| |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset. |
+-----------------------------------------------------------+
Please specify a network name to administer (no spaces, please)
>frank-private-chain
Sweet, you can set this via --network=frank-private-chain next time!
许多新手或许不明白,这个密码设置究竟有多么关键。实际上,它直接关系到账号私钥的安全性。若是在一个具备充足安全措施的环境中,比如个人搭建的测试环境且设备未联网,那么选择直接回车跳过密码设置,无疑是一种快捷的操作方式。
What would you like to do? (default = stats)
1. Show network stats
2. Configure new genesis
3. Track new remote server
4. Deploy network components
创世块相关操作
Which consensus engine to use? (default = clique)
1. Ethash - proof-of-work
2. Clique - proof-of-authority
> 1
创世块在区块链中占据着特殊地位,它是首个区块。使用puppeth生成创世块时,首先要运行puppeth,并输入私链名称。输入完成后,会出现一个选择菜单。在这个菜单中,选择2项可以进行新创世块的配置。在此过程中,一个关键点是能够选择PoW的认证方式,这与以太坊主链的认证方式相同。若想选择PoA配置方式,目前来看可能需要绕过这一步骤,但文中并未详细说明PoA在此步骤中的具体操作细节。
在这过程中,还需注意一点,那就是关于是否为指定账号初始化ether的选择。只需输入之前创建账号的地址,按下回车键即可完成输入。当系统提示输入创世块配置文件的位置时,直接回车即可,系统会默认在当前目录下生成。虽然这些步骤看起来很简单,但它们完全依赖于用户操作的准确性。
Which accounts should be pre-funded? (advisable at least one)
> 0x
私链节点连接
Specify your chain/network ID if you want an explicit one (default = random)
>
Anything fun to embed into the genesis block? (max 32 bytes)
>This is Frank's private chain.
私链节点与以太坊主链节点在连接方式上存在差异。私链节点默认情况下无法相互发现并连接,而以太坊主链的节点则能自动探测其他节点,需手动添加。若在本机操作添加节点,可把IP地址替换为127.0.0.1;若节点安装在不同电脑上,则需替换为当前电脑的IP地址。这要求操作者对网络环境和节点分布有清晰了解。
What would you like to do? (default = stats)
1. Show network stats
2. Manage existing genesis
3. Track new remote server
4. Deploy network components
>
私链挖矿操作
1. Modify existing fork rules
2. Export genesis configuration
>2
挖矿在node3节点上也有其特定的步骤。在开始挖矿之前,你会发现account3账户的余额为零。启动挖矿可以通过调用miner.start()来实现。需要注意的是,geth使用的是CPU算力进行挖矿。大约等待10到20秒后,你可以使用miner.stop()来停止挖矿。挖矿过程对计算资源消耗较大,尽管目前只是针对私链进行测试,但仍然要关注对设备的潜在影响,尤其是在进行长时间或多次挖矿测试时。
账号间转账操作
Which file to save the genesis into? (default = frank-private-chain.json)
>
登录node3控制台后,首要任务是解锁account3账户。解锁后,即可将指定数量的ether转账至其他账户。例如,若需转账至account1账户,而之前未记录其地址,可利用“eth.accounts”获取账户地址信息。执行转账命令后,系统将返回交易ID。通过该交易ID,可以查询交易详情。这对于涉及资金往来或数据测试的情况极为重要,确保每笔交易都有明确记录。
采用PoA方式的共识算法
geth --datadir node1/data init frank-private-chain.json
geth --datadir node2/data init frank-private-chain.json
geth --datadir node3/data init frank-private-chain.json
在构建创世块时,可以选择使用PoA共识算法,这种算法的一大优势是无需消耗计算资源,非常适合用于私链的测试和开发。选择PoA后,系统会提示设置出块间隔。鉴于这是用于内部测试的私链,将出块时间设定得较短,比如5秒,是个不错的选择。这样的设置可以加速测试流程。然而,在实际应用中,这种设置需谨慎考虑,因为它会影响到客户或用户的体验,以及其他多种实际因素。
geth --datadir ./node1/data --port 2001
geth --datadir ./node2/data --port 2002
geth --datadir ./node3/data --port 2003
最后有个问题想和大家探讨,大家觉得在私链操作过程中,哪个环节最容易出错?欢迎点赞、转发这篇文章,并在评论区留言告诉我你们的看法。
geth attach ipc:node1/data/geth.ipc
instance: Geth/v1.7.2-stable-1db4ecdc/darwin-amd64/go1.9.1
coinbase: 0x117b88219433dcbe8d24e961283bf57a800b0e91
at block: 12 (Tue, 07 Nov 2017 22:59:42 CST)
datadir: /Users/liuhao/Downloads/ethereum/node1/data
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
> admin.nodeInfo.enode
"enode://8168f0ffc7b29680c3afaaf5e88c63bf5f89d147fa8a84ca11e5205fc27886bafb6bfc6a1bde78ed2f1c02fd9eea8b53120bc548276d3f7de58e3bf4a02dd643@[::]:2001"