小白也能自学挖矿|2021年最后一个月我也加入了 likecoin 验证人行列
注册马特市时,我是连以太坊都没听说过的小白。然而命运是神奇的,马特市不但带我入币圈,还让我在币圈折腾得越来越深入。
当初折腾liker land 发奖金实验时,@碼農日常大小事-裏 给了我一段代码。看了一眼又是node又是服务器,还cosmoJS。
反正都研究到一半了,不如顺便看看cosmos SDK??研究cosmos SDK目前对我来说就是开启新世界大门,和当初注册马特市知道以太坊一样。基于以上原理,我觉得还是先折腾likecoin验证人节点好了,毕竟折腾验证人不需要会编程,照着文档敲命令就行。连验证人逻辑都走不顺,还想研究cosmos SDK??!!
今年11月和同学聊天说起最近的币价,同学冒一句:你为什么不去搞个服务器挖矿?
基于以上背景烘托,我决定也去研究研究当PoS验证人的事。
目前市面上基于PoS机制的币那么多,我要选哪种币来当自己的验证人试水热身?第一个进入脑海的当然是likecoin。选择likecoin作为第一个挖坑币的原因也是经过深思熟虑的:
- likecoin是我真正实际接触过的第一个加密货币,对likecoin了解最深。据我观察,在马特市发文吐槽一年多时间里,likecoin币价有上涨但是基本属于健康上涨。另外likecoin有实用价值,likecoin的推广可以切实解决文字创意工作者收益问题。既然要架节点挖矿,我当然不想挖一堆一文不值的破币出来,所以要选一个自己了解并认为有前景的币挖,不然就是浪费时间浪费精力浪费租服务器的钱。
- 对比了2-3种PoS机制的币,likecoin是对硬件要求最低的,很明显作为第一次架节点的小白如我,选likecoin作为起步是比较稳妥和保险的。
- likecoin不但对硬件要求低,还有docker image。比较了包括likecoin在内的几种币,明显搭建likecoin是最简单的。按照likecoin文档说明,好像随便跑两下docker-compose就完事。所以小白如我,当然选likecoin起步。
当然了,现实和官方文档总是有点差距。在小白第一次摸石头过河的过程中,我大小问题还是遇上了一些。所以实战才是王道。
以下是我这些天折腾likecoin验证人的心得体会,还有踩坑步骤:
花大约一天时间阅读likecoin文档后,对成为likecoin验证人的几大基本步骤和逻辑心中大致有数后,开始琢磨上手开动。
按照官方指示,小白要成为likecoin验证人,需要经历的主要步骤如下:
1 。 Setup local test node:在本地跑顺测试代码
https://docs.like.co/developer/likecoin-chain-api/setup-local-test-node
这一步基本就是把代码在本地跑跑体验体验流程,为后续热身。如果你具备基本linux操作系统和docker基础,完成这一步很容易。照着官方文档做,1~2小时后就会看到height在终端+1+1往上跳了。
如果你在折腾likecoin之前已经折腾过其他基于cosmos SDK开发的币种,想节省时间跳过这一步也没问题。
而摸石头过河的小白如我,当然是花了1~2小时在本地小心翼翼折腾过的。
2 。 买服务器准备加入testnet链
本地折腾顺后,准备加入测试链。
加入public testnet和加入mainnet,步骤差不多,所以官方文档都写在一页上。
https://docs.like.co/validator/likecoin-chain-node/setup-a-node
目前我的服务器选在digital ocean上,选digital ocean的原因当然是因为便宜。
我按官方文档要求去digital ocean上搞了个1核 2G RAM的droplet,感觉跑得挺顺畅的。
因为 likecoin 需要 docker-compose,所以安装前可以要求 digital ocean 在 ubuntu 上预装docker。
droplet 跑起来后,可以检查一下 docker 有没有安装。
docker version docker-compose version
很遗憾,目前 digital ocean 预装的 docker-compose 版本貌似只有 1.27,不符合 likecoin 要求的 >= 1.28,所以还需要自己升升级。
如何升级docker compose,参考官方文档。
3 。 加入节点
docker 版本环境检查无误后,开始照着官方文档加入 testnet。likecoin 的节点步骤真的算简单的:如果 Setup local test node 这一步热身训练开展得比较好的话,这里可以直接加入 mainnet 了。
这里我就直接偷懒了,跳过 testnet 直接搞 mainnet。所以磨刀不误砍柴工,玩玩 local test node 没错。
官方的步骤写得真的超简单,照着敲就好。然而过于简单的文档难免有疏漏,在 init 那一步我就遇上麻烦了。
按照官方文档跑 docker-compose run --rm init
时,死活弹出没有权限不能在项目文件夹下创建.liked……
看到没有权限,我立马反应是用户权限问题。
这一点我百思不得其解,到处上网搜“为什么root用户没权限”。当然了遇到问题可以去discord,但是我又不好意思去问一个linux权限问题(显得自己太小白,怕被 discord 大佬们鄙视)。
于是我在这个问题上思考了两天两夜,但还是没想明白……服务器是很贵的,不容许我这样没有效率地思考下去,所以最后还是厚起脸皮去 discord 群咨询了这个问题。然后 @JohnShao 大神冒出来告诉我配置 .env 文件还需要修改 uid。
官方文档教你如何配置 .env 时,貌似忘了写 uid 的问题(貌似另一个文档页面有提,但此乃后话)。
被大神提醒后,我赶紧跑去看 .env——果然人家白纸黑字写着 root 用户权限问题,都怪自己不仔细,白白浪费 2 天时间折腾 root 权限,解决方向都弄错了。
把 uid 设为 0 后,我的节点瞬间跑起来了。有了 uid 权限瞎折腾的经验教训后,我意识到配置文件没有一行代码是白写了。所以趁着节点跑起来间隙,感紧研究研究 config 的各种配置都在说啥。
4 。 同步节点
节点跑起来后,需要等待节点和 likecoin chain 的最新节点同步。同步完成后,才可以创建validator,加入验证人行列。
当然同步节点是需要时间的。按照官方说法,貌似通过设置 [state-sync] 可以快速跟上大部队。我又照着 [state-sync] 指示做了一次,貌似不好用,这时 William C 大神又跳出来告诉我另一个比较简单的办法:抄近道把已有节点数据下载下来,快速同步。
按照 William C 提供的教程,只要把最新数据下载并解压到 .liked 就可以了。然鹅我去查了一眼最新数据,貌似要下载几十G呢。
看了一眼最新数据有 79G,下载估计也要不少时间。万一我的节点就差一点就同步好了,这时再去折腾下载解压不是劳民伤财嘛。所以对于这个解决方案我持比较被动接受态度。
但是 William C 大神告诉我如果不这样做,等节点自己 catch up 要很久。不听老人言吃亏在眼前,既然大神都说了,就照做吧。
于是我开始下载数据,按照教程 readme 步骤解压到 .liked,然后继续 sync,果然我的节点瞬间从 9 月跳到了 11 月,整整前进了 2 个月。
下载 79G 数据大约耗时 2~3 小时,比节点自己 catch up 快了很多很多很多倍。睡一觉起来后,用 curl localhost:26657/status 查状态,万年不变的true终于变成false了。
所以大神说啥就是啥,早点听大神的话我应该2天前就可以完成同步了。
5 。 创建validator
当 catching_up 状态变成美妙的 false 后,终于可以创建validator,加入验证人行列了。
按照官方说法,再来一次 create-validator 就大功告成啦。然鹅实际情况总是比理论要困难些。这时我又遇上了gas 费不足的问题:
那个 delegator 钱包,我明明有钱啊,为什么????
刚刚状态变 false 的好心情瞬间跌入谷底,继续看文档是不是又忘了什么。看完 likecoin 又去看 github,怎么看我都觉得自己这次操作无误。
郁闷 1 小时后,思考:是不是官方文档又像忘了补充 uid 一样,忘了什么……这种小白问题 discord 群多半讨论过,于是上 discord 搜搜聊天记录。
还果然被我搜到了:貌似加入--fees 即可。
--fees 200000nanolike
指定 fees 后,gas 不足问题貌似解决了,然鹅我又得到了另一个错误——timed out。
既然timed out,不然过两分钟撞撞运气再来一次,然鹅依旧error,这次 error 说 validator 已创建:
看到validator已创建错误,赶紧把 txhash 值拿到 big dipper上去查:
哈哈,原来已经创建成功了,“potato”大名也出现在了验证人行列。虽然还是 inactive 状态,但还是超级开心。赶紧 stake 几个币给自己:
弄到这一步,特别感谢 @JohnShao 给予我很多提示,我才走到这一步。
在这个时候加入 likecoin 验证人可能不是明智的决定,inactive 的验证人名单有四十多个,要挤进前 50 竞争激烈。但不排除未来会增加验证人数量,到时候我说不定有机会呢。
作为从 pwd 开始自学的野路子业余程序员,我不会忽悠大家把币投给我。这个问题比别人凭什么给你拍手一样(就因为抱团抱得好??!!),所以别人凭什么要把币投给我——因为我是一个野路子出身的业余程序员??
目前 50 个 active 验证人里面,很大一部分应该都是做技术出身的专业人士。我不知道他们是怎么 pick 技能的,我的大部分 IT 技能都是通过自学看 视频 / 文档 / 教材 / 问大神 自学的。如果我能成为一个 active 的验证人,我希望我的实际经历可以鼓励更多没有 CS 背景的同学投入到自学大军中——只要肯自学,人人都能当验证人。
有了第一次折腾 likecoin 节点,未来我可能还会去玩玩其他币种的验证人,或者折腾折腾Cosmos SDK,或者忽悠那个叫我去挖坑的同学也来了解 likecoin,会把这些经历也写成技术笔记,帮助更多的和我一样的小白了解技术。
近期我会写一个小白自学 linux + docker 的大方向教学文。折腾 PoS 机制挖矿,基本默认矿工是一个具备 linux 基础的人士,不然连文档方向都找不到。希望我的野路子自学经历可以让更多小白不再对技术望而却步,同时也能 pick 一些技术。
当然了,之前我写的教学文基本以失败告终,如果这次继续失败,就当自己记笔记了。