矿池测试 ckb 2021 hardfork

ckb 将会迎来上线后的第一次 hardfork, 我们称之为 2021 edition (具体的激活时间还未确定), 这篇文章介绍一下矿池如果要升级到这个版本, 可能需要提前做的一些测试.

首先提一下本次 hardfork 的内容都是以改进 ckb 的扩展性和性能为主, 不涉及任何经济模型的改变, 所以和矿池/矿工相关的收入计算都不会改变, 如果想了解这次 hardfork 的改动细节, 可以参考: https://github.com/nervosnetwork/rfcs/pulls?q=is%3Apr+label%3Ackb2021

矿池软件的测试更新

  1. 下载或者从源代码编译 0.101 系列的最新版本: https://github.com/nervosnetwork/ckb/releases/tag/v0.101.1

  2. 本地初始化一条测试链

传入 genesis-message 和 ba-arg

ckb init -c dev --genesis-message ckb-2021-local-test --ba-arg your-args-hex-string
  1. 修改初始化后目录下的 specs/dev.toml 文件

将最后一行从

func = "Dummy"

改成

func = "Eaglesong"
  1. 升级矿池程序用到的 ckb package version

以 btcpool 开源的那个矿池项目为例子, 修改这2行版本号 tag 到 “0.101”,

ckb-jsonrpc-types = ">=0.101.0"
ckb-types  = ">=0.101.0"
  1. 启动 ckb 节点和更新好的矿池程序, 接入一台矿机进行挖矿测试, 能正常出块说明测试升级完成.

在 ckb 2021 正式发布之后 (版本号将会是 0.102), 按照上面的步骤1 和 4 (2和3不需要), 升级正式环境即可.

矿工分账计算的更新

  1. 如果在用 0.42 之前的版本, 使用 get_cellbase_output_capacity_details 这个 RPC 在计算矿工奖励的话, 我们在 0.42 之后的版本以及 hardfork 版本, 已经废弃掉了这个 rpc, 请改用 get_block_economic_state

由于 ckb 是延迟11个块发放奖励, 请注意这里传入的 block hash 参数和之前的 get_cellbase_output_capacity_details 不一样: 之前是传入第 100 个块, 拿到的是第 89 个块的矿工奖励, 现在这个 rpc 传入第 100 个块的 block hash, 拿到的就是第 100 块的矿工奖励

  1. 给矿工发交易相关的代码

如果是使用 ckb-cli 发送交易, 那么只用升级到 ckb-cli 到 0.101 版本即可. 如果是通过其他方式, 比如用 sdk + ckb-indexer, 那么也只需要升级到对应的版本即可.

1 Like