一、介绍
如果一个局域网有多台物理机,并不需要每台都安装quarkchain进行同步。
二、External_miner解析
External_miner.py 是挖矿入口,ExternalMiner类的get_work函数,其实是执行了RPC(远程过程调用),具体如下:
work = get_work_rpc(shard_id, host=cluster_host)
success = submit_work_rpc(shard_id, res, host=cluster_host)
从这两个函数可以看出,挖矿的具体任务是通过RPC向cluster_host询问,也就是集群的master节点。成功之后也是通过RPC向master节点进行报告。
从External_miner可以看出,如果我们在一个局域网内有多个节点,并不需要每个节点都运行一个完成的cluster, 只需要运行有一个cluster,其余作为矿工节点,向这个节点询问任务。
三、具体过程
由于目前测试网络只有8个分片,我们可以在一个节点中运行一个cluster,也可以进行分布式部署,具体可以看TPS比赛时的配置。
配置各个节点的docker跨主机访问,可以使用--network host,高级设置查看其他教程。
一个cluster启动后,master的IP地址为IP_master, 可以在其他节点通过运行
pypy3 quarkchain/tools/external_miner.py --config /code/pyquarkchain/testnet/2/cluster_config_template.json --worker 1 --shard<shard ID> --host IP_master
注:以上为原理分析,暂未实践。