记录局域网下,多个私有节点连接为联盟链的坑
保存为json格式
{
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
difficulty:设置为0x400,设置过大,miner.start()会经常卡住。
初始化创世区块
geth --datadir "/home/ubt/mychain/" init ./CustomGenesis.json
geth --identity "mychain" --datadir "/home/ubt/mychain/" --rpc --rpcapi "db,eth,net,web3,admin,miner,personal,rpc" --rpccorsdomain "*"--nodiscover --networkid 100 console
坑:--nodiscover 使用这个参数,在连接多个私有节点时候一定要用,这样你的节点就不会被其他人发现,除非手动添加你的节点。否则,就只有一个被无意添加到一个陌生区块链上的机会,那就是跟你有相同的genesis文件和networkID,然后同步到他的节点区块高度,而不是原来自己节点的高度,造成联盟链转账不成功。
miner.start(1)
用虚拟机开启另一个节点,要求虚拟机为2G内存、2个cpu,同步联盟链节点高度需要。
通过addPeer添加第一个节点
admin.addPeer('enode://b4a4e74ded2c2ee0a5a6c8251036e098dd7e76594656708fdc6015d8de52b2631f197c4c7ab241ed9dfd5a429d582890c9a29299d7fc2f3ef8a35914faab8901@192.168.1.105:30303')
@[::]:30303 改为第一个节点的IP地址
添加完后会同步节点区块高度,注意对比第一个节点与第二个节点高度是否一致,通过eth.blockNumber查询
发起转账
personal.unlockAccount(eth.coinbase) //先解锁账户
eth.sendTransaction({from: eth.coinbase, to: '目标地址', value: 1000000000000000000}) //value单位wei
开启挖矿可看到目标地址的余额增加。
-------------------------------------------------------------------------------------
rpcapi常用操作
解锁账户(转账时)