研究生如何做区块链实验,例如共识算法?

关注者
142
被浏览
121,075

10 个回答

谢谢阅读。

我们在知乎组了一个区块链的社群,群里现在有八十多位硕士、博士研究生,群里一部分来自中国高校,武大、中大、北邮、清北浙交、香港四大高校,另一部分是国外的高校,帝国理工、悉尼大学、纽约大学、多伦多大学、莫斯科国立、新加坡国立等,研究的领域也是各个方面,从区块链应用到跨链,从存储到联邦学习,从零知识证明到可搜索区块链,从TEE到共识,从金融科技到分布式金融等等。

作为区块链的研究生,我写区块链论文时也遇到过这个问题:

区块链方面的实验怎么做?

总是在想:是不是要找很多电脑设置节点呢?怎么计算吞吐量跟各种效率的指标呢?是不是要自己去搭一条区块链来跑呢?等等问题。前段时间社群刚好在讨论这个问题,很多师兄给出自己的思考,在这里做个记录,希望可以让大家有启发。

1.共识实验怎么做?

这个提问有多个师兄做出回答,在此我分为几个点做总结

A:如果做出防公链的共识实验,之前有看到过用64个节点,通过租云服务器,架设在全球各地从而做实验,这样网络传输就可以模拟。

B:如果实验设备经费有限,可以用一台电脑,树莓派也是可以做实验的,具体要看代码怎么写,有一些代码可以模拟出几千个节点,但是这个过程 CPU bound 会导致实验数据特别失真。

C:我们团队是在aws上做的,大概是模仿4-150个节点,但是aws的报销会是问题,费用很高。仿真可以尝试在aws上同一个region跑,然后人为控制延迟和带宽,这样会便宜非常多。

(该段在港大博士师兄 @叶之秋 的指导下做了修改,感谢)

2.实验的图像怎么画?

做完实验之后,如何画数据图(比如折线图,柱状图展示数据的图)以及画架构图的图标库?

数据图:

A:学术画图可以用matlab,工业可以用tableau(收费)

B:简单的可以用matplotlib,但是有一些高校不让用matplotlib,认为它画出的图例不好看;我们画实验图一律用gnuplot

C:我们团队用这个会比较多:Example gallery - seaborn 0.11.2 documentation

架构图:

A:画架构图可以用visio(我博士师兄也推荐我用这个)

B:我用processon ,导师用omnigraffle

C:我画system model 用的是免费的在线画图draw.io(这个很赞),可以加入latex数学公式,这个可以转成pdf;如果用latex写论文的,也可以尝试一下tikz,这个学习过程比较难,一旦学会之后画图十分精美;以下图片就是用tikz画的,tikz主要使用指令画图,所以会非常整齐。

(展示图经过师兄授权同意)

下面这个也是拿tikz画的,好处是图中文字字体与全文一致;加上电脑会根据指令自动算出对应位置,tikz里面有循环逻辑,所以用来画树状结构会非常好看。


D:刚跟团队成员要了一个在线画数据图的文件,直接往里面填数据就行,Examples - Apache ECharts


此前区块链社群邀请了三个做共识算法的博士做了fireside chat活动,分别是来自中科院的路老师、CMU的博后项师兄,UBC的博士盖师兄,活动交流了共识相关的学习资料跟整个世界共识领域进程的讨论,分享给各大科研人员学习,包含code、入门课程、书籍、论文等

最后关于学术群,如果您是区块链方向的硕士或者博士研究生,实验室整体是在做区块链方向的,国内外高校都可以,研究生二年级起步确定了开题方向,博士最少也有一年的接触,邀请你加入我们,跟我们一起交流讨论,互通有无,我们进群的要求是大家共同讨论而出。

(留言区不做回复,加群请私信交流)

首先用mininet来实现区块链网络的仿真。然后就可以在此基础上进行各种共识算法的实验了。