# sophon-miner
# 简介
sophon-miner
是 Venus
矿池中的链服务组件之一,是矿工出块的调度器。与 PL
实现的 lotus-miner
不同的是:
支持多个矿工出块,
lotus-miner
的一个实例负责单个矿工的出块;与
Venus
矿池中其他组件配合完成矿工的出块流程:- 调用
venus-wallet
进行签名及签名验证; - 调用
venus-sealer
(将弃用) 或venus-cluster
计算获胜证明。
- 调用
多个矿工合作出块,保证收益最大化。如:一个周期有多个出块时,打包不重复的消息,获得更多的小费,也可以保证消息及时上链,提升网络的TPS。
# 功能模块
sophon-miner
的主要模块有:矿工管理,出块管理。
# 矿工管理
Venus
矿池中的用户(或称为矿工)是由 sophon-auth
组件管理的,其记录了每个矿工的基础信息及身份验证信息。sophon-miner
从 sophon-auth
拉取最新的矿工列表,并周期性地进行区块生产流程。
sophon-miner
可以暂停矿工列表中任意矿工的出块,比如某个矿工的签名节点失联时,可以手动暂停该矿工的出块流程,等待签名正常后再开启出块。
sophon-miner
执行 update
更新矿工列表,通常在某些矿工退出矿池或有新的矿工加入矿池时进行。
# 出块管理
sophon-miner
的一轮出块流程如下:
请求同步节点获取
Base
,即parent Tipset
(通常是最近一次有出块周期的Block
集)及空轮数(空轮表示该周期没有任何矿工出块);统计本周期获得出块权的矿工及出块必要数据,如随机数,选中扇区信息等;
为每个获得出块权的矿工计算获胜证明,选择消息,创建区块;
验证本周期生产的区块合法性(是否存在共识错误,因为广播具有共识错误的区块会受到一定的
Fil
惩罚),广播区块。
← 本地2k开发网络 messager 设计 →