六、今晚上线——人品、人品和水军

  开发过程看似持续了两周,其实最后几天都在集中测试。最难测试的就是挖到区块之后的提交功能。当时我们所有参与的人都开着机器跑挖矿程序,就算这样,也要一整天时间才能挖到一个块,获得一次珍贵的提交机会。在修复了若干 bug 之后,终于迎来了“今晚上线”的这一天。

  其实这里“上线”更确切地说应该是公开矿池的地址,吸引矿工来挖矿。毕竟要真的说上线的话,矿池已经在线跑了好几天了,还在我们这么多“矿工”的努力下,正常出了两个块。

  对于这次“上线”,大家心里都没底,毕竟我们这帮技术宅完全没有搞营销的经验,在矿工圈里也没有什么熟人。看来只能硬着头皮小心翼翼地贴小广告了。

  首先拟了个发布稿,贴在当时最“官方”的 bitcointalk 论坛(山寨币的发布,都在这个论坛),开头是“我做了个新的 DTC 矿池,欢迎大家来测试……”。其实第一版稿件里用的全是“我们”,后来一方面为了装 B,另一方面为了给矿工一种好说话的感觉,把稿子里所有的“我们”都改成了“我”。这个规矩一直严格执行,直到矿池倒闭。

  等论坛帖子发布 10 多分钟后,我那个潜伏在数据币矿工群的小号终于发挥用处了,发出了这条关键信息。

小白水晶 2013-12-14 22:13:18
好像有新的矿池了?不知道靠谱不,论坛里贴的 https://bitcointalk.org/index.php?topic=370920.0

  这种弱弱的语气也是我们一群人讨论了很久之后的产物。这条消息之后,原本活跃的群突然就安静了……诡异的安静让人有些不安。要知道那时候的矿池,还没网页,只有帖子里的这几句话。要是就这么被认作黑池而没人上钩,我们就要白干一场了。五分钟后,群又恢复到之前热闹的状态了,好几个矿工表示准备试试。

  看后台数据,连上矿池的人在缓慢地增长,发布之初,还是我们自己人的 10 台机器,慢慢就变成了 20、50……大概经过了一小时,已经有 100 台机器连上了矿池。突然,出块了!一阵兴奋之余,我们赶紧分头检查发放的工资、数据库、日志,看看有没有异常现象。一切都好,这才舒了一口气。

  矿工收到了工资,就开始在群里帮我们宣传“一小时挖两个币可以哦,大家快上”。我们其实每个人都已经加了群,虽然看着很激动,但也不敢乱说话,要是被认出来就不好了。这时候就只能靠群里“自干五”们的支持了。分析后台数据,排名第一的矿工用了 14 台 8 核电脑在挖矿,比起他来,我们自己的算力加起来也只是他的零头啊。

  又出块了!这次不是我们看后台数据发现的,而是矿工率先在群里说的。这下群里炸了锅“趁池子还没黑,快去挖”。看了真是哭笑不得啊。连接数 200、300 涨的飞快,远超我们的预期。又一个块!这短短的一个小时,出了三个块,小心脏受不了了……心跳正常之后,仔细算了算,按照期望,这时应该能出一到两个块,出了三个块纯属人品爆发。


blocks

挖矿出块页面插图

  接下来的一小时,我们感受到了什么是人品守恒。出来混,总是要还的。矿工的数量还在增长,但是却一直不出块了。有矿工开始破口大骂,我们只能仔细地排查错误,但是最终的结论是,运气太差。连接数开始缓慢下降,难道矿池才开业两小时就要准备关门了?

  为了缓和紧张的氛围,我们手动统计了所有矿工的欠款,跟帖贴在了发布稿的后面。这一招似乎非常有效,矿工看到池主说还欠自己钱,就暂时相信矿池还没跑路,愿意继续挖着试试了。群里有个矿工看到了这个帖子,猜测是不是池主在手动发钱才这么慢的。潜伏在矿工群里的众神瞬间化身为水军,顺势把舆论导向了这个有趣的中性话题上。

  终于在这个难熬的一小时快要结束的时候,一下子出了两个块,终于可以安心了。这时,R 神也写完了一个显示欠款页面,放出来大家一起检查。所有人同时发现了一个奇怪的现象,怎么有些人的欠款是负数,也就是说,给这些人多发了钱……这是要把自己弄倒闭的节奏啊……

  由于打印了大量的日志,排查起来非常方便。20 分钟之后,终于发现是数据同步的问题:我们最初设计的时候,为了图方便,把“不需要这么实时”的 share 统计数据,通过数据库来传递,反正最后也要入库。没想到在连续出块的时候,数据库还没来得及写入新数据,就接到了读取请求,这就导致矿池用旧的分钱方案又多分了一次钱。还好这个错误只会在连续出块的时候遇到,应该不严重,这真是个幸福的烦恼啊。此时已是凌晨两点,然而大家都非常兴奋,丝毫没有睡意,于是继续讨论怎么修复这个 bug。

  凌晨三点,方案落定,最佳解决方法应该是把关键数据都放到内存里,但是这得明天才能修完了。鉴于矿池运行稳定,大家都准备洗洗睡了。突然,矿池挂了……日志说,是同时打开文件数太多导致的。原来 Ubuntu 默认只能同时打开 1024 个文件(网络连接也算在内),现在已经有 400 多个矿工,再加上一些没释放的资源,已经达到了这个上限。问题倒是很好解决,改一下系统参数就好了。能在醒着的时候遇到这个错误真是幸运。

  到凌晨4点,终于能真的平静下来洗洗睡了。