参照:http://blog.csdn.net/koastal/article/details/78737543
实验环境中,00节点和01节点运行在同一台服务器,如果节点在不同的服务器,需要使用同样的gensis.json初始化区块,不同服务器的端口并不影响,都可以使用默认的8545和30303端口。
geth --datadir /home/blockChain/data/01 init genesis.json
geth --networkid 14 --nodiscover --datadir /home/blockChain/data/01 --port 61911 --rpcapi net,eth,web3,personal --rpc --rpcaddr ip_address --rpcport 8101 console
在节点00的控制台,查看00节点的enode
admin.nodeInfo.enode
"enode://a1e18dd40fbce856d8.......2eabd24e29a@[::]:30303?discport=0"
在节点01的控制台,添加节点00
admin.addPeer("enode://a1e18dd40fbce856d84b8c6872d4158ab152812a081d1608643fd8a9c7d650ad161b5ef0b0a2a94357d2d6f3a044b380445f9033550233f8ded232eabd24e29a@ip_address:30303")
连接成功之后,节点01会自动快速同步节点00的区块。
可以在节点00和01控制台中,查看连接的节点数量和连接的节点列表
net.peerCount
admin.peers
节点01和节点00都可以进行挖矿,并且只要有一个节点在进行挖矿,其他节点的交易也都能正常进行。在节点01可以查询节点00中账户的余额,也可以在不同节点之间进行转账。
使用mist连接节点00,部署智能合约,并让节点01进行挖矿。
mist --rpc http://ip_address:port
部署一个简单的智能合约
pragma solidity ^0.4.18;
contract MyContract {
/* Constructor */
string name;
int num;
function MyContract() public{
name = "default";
num = 1;
}
function setName(string v) public{
name = v;
}
function getName() public view returns(string){
return name;
}
function setNum(int n) public{
num = n;
}
function addNum(int m) public view returns(int res){
res = m + num;
}
}
部署智能合约需要手续费,选择一个有充足余额的账户部署智能合约。
合约部署完成之后,可以进行操作,读取合约不需要手续费,写入合约需要手续费。
智能合约相关文档(中文翻译的不全,建议还是看英文文档):
http://book.8btc.com/books/6/solidity-zh/_book/
https://solidity.readthedocs.io/en/develop/