区块链(1)开发环境搭建及Hello World合约展示
区块链(2)以太坊开发框架Truffle教程(Windows)
区块链(3):在以太坊私有链建立节点集群并发生交易
第一篇中介绍了如何建立以太坊私有节点,并部署了HelloWorld
智能合约,本章记录一下建立多个节点并产生集群的方法。
概述
为了在本地网络(一台机器上)运行多个以太坊节点的实例,必须确保以下几点:
1. 每个实例都有独立的数据目录(–datadir)
2. 每个实例运行都有独立的端口.(eth和rpc两者都是)(–port 和 –rpcprot)
3. 在集群的情况下, 实例之间都必须要知道彼此.(networkid 一致)
4. 唯一的ipc通信端点或者禁用ipc.(只能有一个节点启用ipc,其他节点禁用)
建立两个私有节点
进入geth.exe 目录下,运行下面两个命令,建立两个私有节点,具体请看区块链(1)开发环境搭建及Hello World合约展示
geth --datadir "%cd%\chain1" init genesis.json
geth --datadir "%cd%\chain2" init genesis.json
启动要建立集群的节点
启动第一节点
geth --identity "shusheng007eth1" --rpc --rpccorsdomain "*"
--datadir "%cd%\chain1" --port "30303" --rpcapi "db,eth,net,web3" --rpcaddr "192.168.10.34" --rpcport "8545" --networkid 95518 console
启动第二个节点
geth --identity "shusheng007eth2" --datadir "%cd%\chain2"
建立集群
在第一个节点shusheng007eth1的cmd窗口中输入admin.peers
查看其所属的集群,可以看到当前没有加入任何集群
[]
我们准备将第二个节点shusheng007eth2加入第一节点中:
在节点shusheng007eth2所属cmd窗口中输入admin.nodeInfo.enode
命令来查看其节点信息
"enode://1b4237f05270ddc54fd2bc64fa67fbe7e3c48f1390328eec323cd4d6655ef27c7672cf7
508d55510f3eac79f01acb6a0d5d531e357718473916f4e9fc3f91848@0.0.0.0:30304"
在第一个节点shusheng007eth1所属cmd窗口中输入命令
admin.addPeer("enode://1b4237f05270ddc54fd2bc64fa67fbe7e3c48f1390328eec323cd4d
6655ef27c7672cf7508d55510f3eac79f01acb6a0d5d531e357718473916f4e9fc3f91848@0.0.0.
0:30304")
如果返回值为true
则说明添加成功了。
接着输入admin.peers
查看集群信息
[{
caps: ["eth/63"],
id: "1b4237f05270ddc54fd2bc64fa67fbe7e3c48f1390328eec323cd4d6655ef27c7672cf7
508d55510f3eac79f01acb6a0d5d531e357718473916f4e9fc3f91848",
name: "Geth/shusheng007eth2/v1.7.3-stable-4bb3c89d/windows-amd64/go1.9",
network: {
localAddress: "127.0.0.1:55300",
remoteAddress: "127.0.0.1:30304"
},
protocols: {
eth: {
difficulty: 16384,
head: "0x6e92f8b23bcdfdf34dc813cfaf1d84b71beac80530506b5d63a2df10fe23a66
0",
version: 63
}
}
}, {
caps: ["eth/63"],
id: "9aad661fcfefe032299c42f9e6a403d8dfadc4490d7a3ad58abedf82d93ecbb01234b75
6edad3631752b30927661e2a644e73e9fa0c116dbbbc45187d640ee5c",
name: "Geth/v1.8.1-stable-1e67410e/linux-amd64/go1.9.4",
network: {
localAddress: "192.168.10.34:55371",
remoteAddress: "212.92.127.8:30303"
},
protocols: {
eth: "handshake"
}
}]
可见已经添加成功了
在第二个节点所属cmd窗口中输入admin.peers
查看结果
[{
caps: ["eth/62", "eth/63"],
id: "ebaf9d1817e7e6ceab10f1e046ef2ffc771bd8b08c50af59943df189c9a88233de24890
6b2ae040e6388b80036b3dce0baf78c0838841ae8a6998b889b309abf",
name: "Geth/shusheng007eth/v1.7.3-stable-4bb3c89d/windows-amd64/go1.9",
network: {
localAddress: "127.0.0.1:30304",
remoteAddress: "127.0.0.1:55300"
},
protocols: {
eth: {
difficulty: 48885005,
head: "0xc4da03de3a2ceb7c0bd2ae3845e0cce71af4eec488560a750f062f1e9499c84
4",
version: 63
}
}
}]
交易
- 从第一个节点的账户向第二个节点转以太坊 如果两个节点都是新建的则需要创建新的账户,使用命名
eth.accounts[]
说明没有账户,使用命令personal.newAccount()
来创建账户。输入命令后需要两次输入密码,则可以创建账户。如果账户里面没有钱则可以通过命令miner.start()
来挖矿,通过miner.stop()
来停止挖矿。 - 在第一个节点窗口输入
eth.getBalance(eth.accounts[1])
查看庄户余额
10456923480000000000
- 解锁账户
personal.unlockAccount(eth.accounts[1],"wangben123")
-
向第二个节点中账户
0x8cd913aa13f1f0e885b5cd0d3909c08ff7e08765"
发送0.5个以太坊eth.sendTransaction({from:"0x82d1889786711ac0efe8de112f32a7c66fb8b256",to:"0x8 cd913aa13f1f0e885b5cd0d3909c08ff7e08765",value: web3.toWei(0.5,"ether")})
出现如下信息,说明交易提交成功,等待确认
INFO [02-27|16:30:36] Submitted transaction
fullhash=0x6bf586
5d83c16fdb793c0d26f8dc12eb17eed7491cab2f19d6dd2b22bc330278
recipient=0x8cD913aA1 3f1F0e885b5cD0d3909c08FF7e08765
查看即将确认的交易` eth.pendingTransactions`
[{
blockHash: null,
blockNumber: null,
from: "0x82d1889786711ac0efe8de112f32a7c66fb8b256",
gas: 90000,
gasPrice: 36000000000,
hash: "0x6bf5865d83c16fdb793c0d26f8dc12eb17eed7491cab2f19d6dd2b22bc330278",
input: "0x",
nonce: 5,
r: "0xde67435a15f794b29660f90c9fc0ca0cb2d2080e5f1c267c9fb42890163bd688",
s: "0xb0f9c2e6ab0ec029e51333f374786fd6e6082c4843ef868d4b427282f478a98",
to: "0x8cd913aa13f1f0e885b5cd0d3909c08ff7e08765",
transactionIndex: 0,
v: "0x1b",
- 挖矿确认
miner.start(3); admin.sleepBlocks(1); iner.stop();
- 在第二条节点窗口查看账户余额
eth.getBalance(eth.accounts[0])
结果:500000000000000000
确实成功接收了0.5个以太坊,不过单位是wei
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14798.html