基于Docker的Nervos CKB测试链挖矿

Nervos CKB测试链挖矿(2) — 基于Docker

本教程用于Nervos CKB测试链挖矿(2) — 基于Docker

参考:https://github.com/nervosnetwork/ckb/blob/develop/docs/run-ckb-with-docker.md

挖矿的步骤:

  • 1/ 修改配置文件
  • 2/ 启动节点
  • 3/ 执行挖矿命令

1:CKB镜像获取

启动一个最新发布的CKB版本使用默认的配置:

docker pull nervos/ckb:latest

------或者 docker run --rm -it nervos/ckb:latest run

  • 注:执行以上的命令会下载最新的CKB的Docker镜像文件

2:配置文件挂载

参考: https://www.jianshu.com/p/8c22cdfc0ffd

  • 注: 配置文件指定挖矿所用的账号(实际为args)

推荐使用挂载一个volume,在容器中的/var/lib/ckb 位置,下边的例子实现了一个挂载,并在volume生成了配置文件,可以通过它启动CKB。

2.1 创建一个volume

docker volume create ckb-testnet

2.2 使用testnet chain spec 初始化目录

docker run --rm -it
-v ckb-testnet:/var/lib/ckb
nervos/ckb:latest init --spec testnet --force

2.3 创建一个容器ckb-testnet-node 并运行一个node

docker create -it
-v ckb-testnet:/var/lib/ckb
–name ckb-testnet-node
nervos/ckb:latest run

2.4 从容器中复制创建的配置文件

docker cp ckb-testnet-node:/var/lib/ckb/ckb.toml .
docker cp ckb-testnet-node:/var/lib/ckb/ckb-miner.toml .

  • 注: 此命令会将容器内部的配置文件复制到当前的根(.)文件夹中 [根是相对路径]

编辑配置文件,修改ckb.toml文件中的args为你的地址对应的args。
如下:

[block_assembler]
code_hash = “0x94334bdda40b69bae067d84937aa6bbccf8acd0df6626d4b9ac70d4612a11933”
args = [ “0x<LOCK_ARG>” ]

复制编辑完的配置文件到容器中:

docker cp ckb-testnet-node:/var/lib/ckb/ckb.toml .
docker cp ckb-testnet-node:/var/lib/ckb/ckb-miner.toml .

2.5 启动节点

docker start -i ckb-testnet-node

2.6 在容器中挖矿

docker exec ckb-testnet-node ckb miner

挖矿成功
main INFO miner found seal: Seal { nonce: 5161788930261012022, proof: 0x34140000522000003b270000cb280000972c0000d82f000001420000444b0000b7520000c7600000f867000022780000 }
后,等几分钟可以在浏览器地址https://explorer.nervos.org/中通过地址查看挖矿记录。

block_assembler 中的 args 怎么通过地址或者私钥获取,哪位可以回答一下,多谢:grinning:

pubkey经过blake2b哈希之后取前20字节
对应的ruby sdk代码如下

    def self.blake160(pubkey)
      pubkey_bin = [pubkey[2..-1]].pack("H*")
      hash_bin = CKB::Blake2b.digest(pubkey_bin)
      Utils.bin_to_hex(hash_bin[0...20])
    end

多谢:grinning:

老哥,用 docker pull nervos/ckb:latest 会不会更好点:wink:

厉害:grinning:

为啥我按教程来,确定一步都没错,docker exec ckb-testnet-node ckb mine 后一直报client ERROR miner rpc call get_block_template error: Fail(Error { code: MethodNotFound, message: “Method not found”, data: None })

你看这个教程吧 ckb有点更新了https://talk.nervos.org/t/nervos-mac-docker/2634

这个问题主要是因为 ckb.toml中的 [block_assembler] 这部分没有修改/

我发现是需要修改ckb-miner.toml的rpc url,教程里没有提到。需要获取ckb-test-node的ip:
docker inspect --format='{{.NetworkSettings.IPAddress}}' ckb-testnet-node ,然后ckb-miner.toml那改成获取到的ip

没有做过这部分的修改,ckb-miner.toml的文件没有修改过

如果修改之后可以了,那应该就是问题了:grinning:

也遇到这个问题,一样不行

你看看这个,Nervos 挖矿第二季(教程)— Mac+Docker --- command 教程,上边的教程文件复制有点问题,,,:joy:

手工解决了,顺便问下什么机器挖矿给力。

测试网和正式网算法分别是什么