技术与协议Bitcoin Optech08:00
比特币 Optech 通讯 #423
Bitcoin Optech Newsletter #423
比特币矿池Vardiff遇矿工降速易卡高难度,Eric Price主张加超时降档
判断
要改的是矿池与本地代理运维者的一件事:把「无分片就超时降档」放在哪一跳。Price 主张它只能落在仍看得见每个矿工分片的最后一跳,代价是每台本地代理都得各自实现并维护定时器,矿池不再统一兜底。
依据
Eric Price 在 Delving Bitcoin 上分析:矿池给每个矿工设一个分片难度(share difficulty,指区块头候选要凑到、但比全网难度更易的目标),由可变难度控制器(vardiff)按分片到达速度升降。矿工降速后,难度仍停在原速对应的值,分片随之变少;而只在分片到达时重算的控制器,恰恰收不到能触发它的分片,于是可以把难度无限期卡在高位。Price 认为调参数解决不了,因为从没有到达的分片估不出速率。他的方案是加定时器:固定间隔内没有该矿工的分片就降档。Anthony Towns 建议把这件事放到本地代理或网关,例如 30 秒无分片就把该连接难度减半;Price 同意,并强调逐矿工控制必须落在仍看得见每个矿工分片的最后一跳。现成对照是 Stratum v2 参考实现已带这种定时器,但长连接矿工恢复得慢,Ckpool 则只在分片到达时重算。
- 矿工降速难度不随速变
- 难度仍按原速设定分片变少
- 控制器等分片才重算无分片不触发
- 难度卡在高位加定时器兜底
- 无分片超时降档
没写清 材料没说有多少矿池在用纯分片触发的控制器,也没给矿工会被卡多久、损失多少算力,所以这个问题实际有多大规模不能替它补上。
下一步 用 Price 放出的 shaping proxy 对一家矿池按比例丢分片,核对它在 30 秒无分片后是否下调该连接的难度。