我花费了接近三个多月的时间, 终于将一篇关于区块链共识算法的论文从开头到结尾完整地运行了一遍, 在这期间, 开发环境崩溃的次数至少有十次之多, 我的精神状态崩溃的频率甚至比开发环境的崩溃还要频繁。

我现在写下这篇内容,旨在将我在过程中遇到的所有困难和陷阱毫无保留地记录下来, 从而为那些同样被困在“代码始终无法顺利运行”这一环节中的读者节省一些宝贵时间。

区块链论文复现跑不通 一个研二学生的三个月踩坑经验

区块链论文复现难在哪

论文里面的那些公式, 乍看上去也就占了那么几行文字。但是在实际的源代码开源工作里, 关键参数缺失或者是依赖包的具体版本号不对应不上这样的情况, 简直就变成了非常普遍的一种常态现象。我当时想要去复现那篇使用了基于Gossip协议来搭建网络层的技术文章。

原作者这边仅仅提供了一小块看起来像是伪代码那样的内容片段。我就不得不去翻阅三个不同版本的Geth项目源码。最终才总算把这个关于消息扩散的过程里面, 具体的时序逻辑到底应该怎样进行对齐这个问题的具体细节给彻底搞明白。

最叫人感到痛苦的是环境因素。那一年论文发表的时候所使用的Python包以及Solidity版本, 到了如今这个时间点, 已经安装不上了。光是配置这些运行环境这一件事, 就耗费掉了整整两个星期的时间, 甚至还险些导致电脑屏幕出现蓝屏状况, 情况十分的糟糕, 令人头疼不已。

区块链论文复现怎么入门

千万不要刚一开始就一头扎进核心算法的领域中去, 后来呢, 我倒是变得聪明起来了, 我是先把整条链给运行起来, 不管使用的是什么样的现成框架, 要让创世块能够顺利出块, 要让交易能够成功上链, 还要让共识机制顺利通过, 也就是先把整个骨架给搭建好, 然后再去一点点地替换里面的模块。

在成功实现骨架运行之后, 你需要面对论文实验设置这个实际情况把对照组的内容先跑出来。哪怕最终的指标差异仅仅存在零点几这样的情况, 这至少说明了你的工作流水线是没有出现中断现象的。在进行排查工作时, 这样做提供了一个锚点, 不至于让整个过程处于完全盲目的状态。

想要把这件事给重新做出来, 是压根没有走捷径这一说的好, 那得是拿着代码去和论文进行逐行的比对, 而且还需要反复地去磨练才行, 等那一下给彻底跑通的时候, 心里头确实是会感觉很爽快的。