快速搭建私有单节点 Bitshares Testnet(一)
前因
有时候想搞点事情的时候,最终都是由于 BTS 目前的公共测试网络里你要用代币只能找别人要。
我是很不喜欢麻烦别人的,所以就放弃想搞点东西的想法了。
很好奇,BTS 作为一个好几年的老项目了,居然没有一个类似 ETH 那样的可以自行申请代币的测试网络,
真是神奇!
所以我打算自己部署一整套类似 ETH 那边 kovan 一样的测试网络。
测试网络每个季度重置数据,Dapp 开发人员可以通过机器人申请代币。
同时,部署方案我也会公开出来,如果你不想用我搭建的服务,也可以自建。
这第一篇是讲节点部署的,在我完成发币机器人和水龙头后,会再发布第二篇,介绍机器人和水龙头部署方法。
准备工作
由于考虑到部署尽量傻瓜化,所以我选择用 Docker 来作为部署底层支持。
这样,我们能够屏蔽掉很多环节,只需要很少量的工作,就可以完成目标。
开始部署
1.拉取测试网镜像
目前我已经把测试网的程序封装好了,如果你希望自己封装,可以参考的 Dockerfile 文件,
文件地址是:https://github.com/ety001/dockerfile/blob/master/bitshares-core-builder/Dockerfile.test 。
如果你想直接用现成的,那么直接执行下面的命令拉取我的镜像即可
1 | docker pull ety001/bts-core-testnet:latest |
latest 版本指向最新的测试网程序,如果你想用其他的版本,可以去这里看下我之前编译的版本 https://hub.docker.com/r/ety001/bts-core-testnet/tags
2.下载 docker-compose.yml 文件
1 | wget https://raw.githubusercontent.com/ety001/dockerfile/master/btfdd/docker-compose.yml |
3.创建数据目录
在 docker-compose.yml 文件的同目录下,创建数据目录,用于存放区块数据。
1 | mkdir bts_data |
4.创建 my-genesis.json 文件
在 bts_data 目录下,创建 genesis 目录,
并创建 my-genesis.json 文件用于配置创世块。
1 | mkdir bts_data/genesis |
my-genesis.json文件可以参考模板配置文件genesis-dev.json,地址在这里:https://raw.githubusercontent.com/bitshares/bitshares-core/master/libraries/egenesis/genesis-dev.json
接下来我们需要修改 my-genesis.json 文件,以上面提到的 genesis-dev.json 模板为例。
我们需要修改默认11个见证人的 owner_key、active_key 和 block_signing_key 这三种值。
另外里面还有个 nathan 的用户,我们一并修改这个用户的 owner_key 和 active_key。
当然你也可以把
nathan这个名字换成自己的,比如ety001。这个账号,我们之后会拿来给机器人用。
这样这里就需要很多组公私钥对,我们可以使用下面的命令即可快速生成
1 | docker run \ |
get_dev_key 是 BTS 自带的生成公私钥对的小工具,使用语法是:
第一个参数是公钥的前置,之后的参数都是生成私钥时所需要的 seed。
上面的示例中,可以生成四组公私钥对,并且公钥是以 TEST 开头。
这里需要注意,测试网公钥必须要以
TEST开头。
除了修改上面提到的 owner_key、active_key 和 block_signing_key 之外,
还需要修改 initial_balances 中的 owner 和 asset_symbol。
owner使用的是address而不是public_key。asset_symbol设置为TEST。initial_balances申领需要在节点启动后,在cli里使用import_balance ety001 [5JLxxx] true命令获取,其中5JLxxx是ety001的owner权限的私钥。
5.创建 config.json 文件
接下需要启动一次容器,以创建 config.json 文件
1 | docker-compose up |
执行后,由于还没有配置见证人,所以会一直卡住。这个时候,我们 ctrl + c 结束,
在 bts_data 目录下就能看到 config.json 文件了。
6.配置见证人
我们需要把我们的11个见证人配置进 config.json 里。
我们把 config.json 里原有的 private-key 删掉,加入新的配置,示例如下:
1 | witness-id = "1.6.1" |
- 其中
private-key要与my-genesis.json中的block_signing_key一致。- 注意
checkpoint设置为[]
7.启动
至此,所有的配置都已完成,执行下面的命令启动即可
1 | docker-compose up -d |
结语
部署的主要工作就是配置 my-genesis.json 和 config.json。
如果有疑问,请到这里提 issue: https://github.com/ety001/bitshares-testnet-for-dapp-developers/issues 。
参考文档
- https://dev.bitshares.works/en/master/development/testnets/private_testnet-v2.html#creating-another-directory-for-the-bitshares-private-testnet-project
- https://dev.bitshares.works/en/master/bts_guide/tutorials/how_to_get_key_pairs.html#suggest-brain-key
感谢
@abit @Necklace