「保持更新」如何成为 like coin 验证人 (一)

最近加入了 like coin 的验证人,节点叫 「guanyun」,目前佣金最低佣金 40%,欢迎大家 delegate。

建立完后想将过程写下来,一方面是普及验证人知识,帮助大众更理解 likecoin-chain 本身,另一方面也为希望越来越多的人加入来做验证人,给项目带来更多的活力。

准备工作

硬件设备

  • 一台主机 ( 1 core machine with 2 GB RAM, running Linux or Mac )

    关于主机,最省心的办法是向云厂商租赁例如 aws / google cloud,但如果你有足够财力和知识也可以在家里布置一台实体主机,因为即便是云厂商也会有倒闭的风险,也不够去中心化。

    如果是云主机,要保证自己的主机可以随时升级或者自动扩容,因为随着节点数据的增加,所需同步的 block 只会越来越多,当然你的成本也就越高。所以一般可以选择 Elastic Compute Service (ECS)或者其他可以增加 block storage 的机器。

知识准备

  • 了解一些主流 linux 发行版如 ubuntu / centos 的使用,比如如何创建文件,如何在两台机器之间同步文件。
  • 了解 docker 基本的使用和操作。
  • 了解 cosmos sdk 以及 liked & likecli 的一些基本概念(因为 like-chain 是基于 cosmos,所以一起看会容易理解)。

以上就是准备工作,其中 docker 的知识和 cosmos sdk 的知识我也是一边操作一边学习,但其实整体难度并不太高,如果有一些动手能力,可以很快自己搭建起来自己的节点。

同时要先感谢下 @Chung Wu @leafwind @Nicholas Yau 的帮助,避免我走了很多歪路。


搭建节点

选择 server

因为我的节点已经上线,为了稳定性,所以改用 vultr 新建节点来演示整个过程。

注意生产环境不建议使用 vultr,不支持动态挂载 block storage,有一定操作风险 !!!

测试节点的搭建我选了东京的一台 server,实测东亚的 server 同步节点会快很多,但是还是希望大家可以选择不同的国家来提高去中心化程度。

image alt >

linux 发行版我则选择 Ubuntu 20.04,如果你有喜好的发行版也可以随意选择,至于配置方面,我选择了 2 vcore 4096MB Memory 和 80GB SSD 的 size,其实大家一般选择 1 vcore 2048MB Memory 至少 50GB 存储的 server 即可,本身同步 block 其实并不会耗费多少性能。

至于价格方面,一方面现在云服务的价格都很透明,所以价格相差不大,但随着后期存储量的增加,成本也会不断增加,按照上面的配置,现在的成本大概一个月 20 美金左右,当前如果选择一些较小的云服务厂商成本也会降低,这部分还是主要看自己是否愿意去尝试。

image alt >

server 创建完毕,接下来要开始创建节点了。

image alt >

安装 docker 及依赖

首先要安装 docker ,docker 提供一种标准化的方式来运行软件,它无视操作系统本身带来的一些差异,所以也更稳定。

首先去 docker linux 引导页,选择 docker 版本为 「 docker-ce-server-ubuntu 」,同时也有其他发行版的 docker 按需选择。

Docker Hub

image alt >

选择到适合自己的 docker 发行版之后,点击进入到安装页面。

https://docs.docker.com/engine/install/ubuntu/

首先运行 sudo apt-get update 更新软件库。

sudo apt-get update

运行下面的指令允许 apt 通过 https 来获取项目。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

运行下面的指令来验证 docker 版本。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

image alt >

如果你不知道自己的 server 是基于什么架构,直接选择 x86_64 / amd64 即可。

image alt >

然后运行下面的指令来安装 docker-ce docker-ce-cli containerd.io

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装完成的截图

image alt >

安装完毕后可以用下面的指令来验证 docker 是否安装到 server 上。

sudo docker run hello-world

安装完 docker 之后还需要安装 docker-compose,当你有多个 docker 容器时,docker-compose 可以帮你方便的管理。

https://docs.docker.com/compose/install/

首先选择到 linux 的 tab ,运行下面的指令

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

然后给 docker-compose 的可执行文件赋予权限

sudo chmod +x /usr/local/bin/docker-compose

运行下面的命令检验 docker-compose 是否正常运行

docker-compose --version

至此,docker 相关的依赖就算安装完毕了,如果你有一些问题 docker 也提供了社群帮助解答。

Docker Community - Connect with Docker Enthusiasts | Docker

初始化 like-chain 节点

首先要运行下面的命令来克隆项目。

注意,下面这行和 setup mainnet node 的克隆项目的命令不一样,setup mainnet node 只克隆了分支 -branch sheungwan —single-branch。我自己只克隆 sheungwan 分支在初始化文件时会释出 Unable to find image ‘likechain/likechain:sheungwan’ locally docker: Error response from daemon: pull access denied for likechain/likechain, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied. See ‘docker run —help’. 这样的错误,这个问题我还没搞清楚,希望几位开发者可以不吝回复下。

Setup mainnet node

git clone https://github.com/likecoin/likecoin-chain

进入到文件夹中,目录如下图

cd likecoin-chain

image alt >

image alt >

之后运行下面的命令在 build like-chain 的 docker image,大概会持续一分钟。

./scripts/build.sh

build 完毕之后会看到 Successfully tagged likechain/likechain:latest

image alt >

然后通过下面的命令来获取 genesis.json,它主要帮助你定义区块的初始状态。

A genesis file is a JSON file which defines the initial state of your blockchain. It can be seen as height 0 of your blockchain. The first block, at height 1, will reference the genesis file as its parent.

wget https://gist.githubusercontent.com/nnkken/1d1b9d4aae4acb3d835dd3150f546d44/raw/4d97fd471b4bf3be8c5475efbc0361f4926e65e5/genesis.json

然后运行下面的指令来初始化一些区块文件,YOURNAME 可以替换成你想要的节点的名字,比如我的节点叫 guanyun。

./scripts/init.sh YOURNAME genesis.json 913bd0f4bea4ef512ffba39ab90eae84c1420862@34.82.131.35:26656

初始化过程中会让你输入一些密码,这个密码很重要,如果密码丢失了那么区块的文件也就丢失了。

所以一定切记保存在安全的地方。

执行完如下图,此节点的地址和公钥

image alt >

同样也会创建两个隐藏文件夹 .liked 和 .likecli 来存储节点的配置文件。

image alt >

之后再运行下面的指令来启动同步节点的程序

docker-compose up -d

查看是否启动成功

docker-compose logs

同时同步程序也提供了一个 web 接口来查看同步状态,不过要先开启自己 26657 允许 tcp 流量通过的端口,比如在这台 server 上就是下面的指令。

sudo ufw allow 26657/tcp

然后就可以通过 http://YOUTIP:26657/status 来访问节点的状态了。

当同步完成后 sync_info 的 catching_up 字段将会变成 false

image alt >

同步的过程大概需要两到三天,取决于 server 的位置和网络情况。

激活节点

当同步完成后还不算激活节点,必须要将自己的 likecoin 从钱包里划过去 (数量没有具体限制),当转账成功后运行下面的指令。

./scripts/staking.sh

运行完毕后节点就被激活了,可以在 big dipper 看到自己的验证人信息。

https://likecoin.bigdipper.live/validator/

总结

这只是这个系列的第一篇,文中若有不准确的、错误的操作和过程还请不吝指出,以便快速改正。

接下来也会根据遇到的一些问题来更新这个系列,比如下一篇会写如何设置佣金率、更改验证人信息以及改变节点的头像等。

纵观上面的过程,成为验证人的过程没有什么难度,也正印证了 likecoin-chain 一直想表达的 Validator is completely open, no entry requirement, anyone who can build a server can be a validator.

所以新建一个节点不困难,困难的是这个节点要对社群有用,至少你需要分出一部分精力去维护它,参与社群的治理。创建一个去中心化的内容生态里,技术只占一部分,更多的是如何建立一个让所有人都可以发声的内容体系,在这个体系里,不同的国家、地区、文化以及政治信仰都可以平等的发声。这样的局面是理想的,或许永远都实现不了,但明知不可为而为之的事情才具有挑战,也令人兴奋。


Written by Guanyun Follow me on Twitter

© 2020, Built By 观韵