知名区块链评测机构InCodeWeTrust对MagnaChain进行代码审查,给出高度评价区块链

任春燕  | 09月5日, 2018 2018-09-05 13:39
分享到:
导读

【译注】海外区块链评测机构InCodeWeTrust 近日在CryptoDiffer 发布了对区块链公有链MagnaChain项目的评测报告,对MagnaChain给出了高度...

【译注】海外区块链评测机构InCodeWeTrust 近日在CryptoDiffer 发布了对区块链公有链MagnaChain项目的评测报告,对MagnaChain给出了高度的评价。

报告指出:“从开发的角度来看,我们认为该项目进展顺利,并认为该产品已经处于后期测试阶段,非常接近实际发布。”

InCodeWeTrust同时对MagnaChain的代码进行了详细的检测评估,以下是代码评测报告的中文译文。

原文地址:https://cryptodiffer.com/magnachain-code-review-and-functional-test

MagnaChain希望解决目前即使是在最受欢迎的区块链平台都存在的两个问题:吞吐率过低以及数据累积过多。为解决这两个问题,他们引入了新的支链架构以及PoS(股权证明)共识算法的全新变体。

MagnaChain的最终目标是将区块链打造成为一个多场景多用途平台,尽管其最初只是用作游戏平台。

通过查看这个团队成员过去的工作履历,我们发现其成员们有足够的能力应对游戏行业的挑战——他们曾参与过包括Sony Playstation、Blizzard和The9在内的多个项目。(我们将从这里开始讨论MagnaChain的技术细节,不感兴趣的读者可以直接跳到最后看结论)

在MagnaChain的实现中,整个网络有一条唯一的主链,所有货币只在主链的区块中发行。同时可以有任意多条支链,每个支链的前一个块,可以是主链中的某个块,也可以是另一条支链中的某个块。整体数据架构是一棵树,而不是一条链。

MagnaChain的支链技术在系统中添加了多条支链。这些支链可以自由生成并且可以根据需要进行修剪,由此主链不会过度扩展。对于节点而言,只需要主链,而支链则可以根据需要下载和处理,更便于进行验证和节省磁盘空间。

矿工可以自由地选择在哪一条链上进行挖矿,或者是在多条链上进行挖矿。支链上虽然没有新代币发行,但还是会有交易费作为奖励。交易越多,则费用也会越多。当某条链的矿工(实际上是权益人,因为没有涉及PoW工作量证明)比较少时,挖矿将更有利可图,就会吸引新矿工加入。如果某条链中有许多矿工,但交易很少,那么矿工人数就会减少。

MagnaChain的代币输出机制严格遵循比特币的输出机制,即如果挖矿量达到总量的一半时,则日输出量将减少一半。

MagnaChain技术架构

MagnaChain引入了自主开发的强化型PoS共识协议VirtualHash-PoS,该协议兼具PoW / PoS协议的要素,同时还可以阻止DDoS并阻断51%的攻击途径。引入该协议的主要目的是降低委派股权证明(DPoS)模式的可预测性。在该模式下,通常只有有限数量的代表负责验证交易。在MagnaChain VH-PoS模式下,攻击者无法预先计算成功攻击的成本,因此实际上会使其无法进行攻击。

即使确定了MagnaChain的日输出量,该输出量也只是与币天数(Coindays)有关,而与哈希率无关。从这个角度来说,其与比特币PoW类似。虽然比特币挖矿取决于节点的哈希率,但MagnaChain则将比较特定时间段内持有的币数量。共识算法中Coindays的权重是有上限的,这样一来,人们就无法预测区块奖励的选择。

这种模式有一个好处,矿工必须至少将一部分新的采矿收益重新投入下一轮采矿中,否则就会在竞争中失败,而产出减少。这就降低了矿工交换挖矿收益的积极性,并且有利于维持相对稳定的代币价格。

在应用程序方面,MagnaChain选择了游戏开发中最常用的脚本语言,并将它们用于在平台上开发智能合约。这使得智能合约的开发尽可能接近传统游戏的后端编码工作。

此外,MagnaChain还提供开发者最常使用的游戏开发工具插件,使得游戏和区块链的结合更为方便。对于有经验的游戏开发者来说,这个过程就像他们已经熟悉的日常工作一样简单。

二进制(已编译)代码的下载、安装和功能测试

MagnaChain提供的可执行代码已经下载完毕,并安装在一台InCodeWeTrust服务器上。

Ubuntu 17.10虚拟机(Virtual Box)用作在Windows Server上运行的目标平台,具有典型的开发环境,包括对C 、Python、Go和其他编程语言库的支持。

代码包已部署到我们的下载文件夹,执行权限已添加到文件中,并且第一个脚本已开始运行。

./loadlib.sh

此脚本设置了文件权限,并将文件复制到了lib文件夹。在我们的测试机器和Ubuntu版本上,没有发生任何安装问题。

面向Windows和centOS部署提供的其他可执行版本的表现显示与Ubuntu版本同样可靠(在此我们需要指出,所有发行版都非常适合其各自的目标操作系统)。

我们创建了文件夹L1_1,并添加了一个名为bitcoin.conf的文件来,进一步对系统进行了配置。

主链的后台进程(守护进程)开始时没有出现问题:

随后创建了一个分支和一条分支链,也没有出现事故:

之后挖矿开始,因为我们需要资金来运行支链。由于rpcport 8201的使用效果不佳,因此需要进行资金挖矿,并且最初的挖矿失败了。在执行VM安装时8201可能会被阻止,因此需要另一个端口作为标准。

在验证可执行文件后,我们继续尝试直接从获得的源代码文件构建(编译)项目。源代码构建没有遇到任何问题,而经过验证,我们确定可执行文件与我们测试的可执行文件完全相同。

源代码审查

C 代码干净且易于理解,但缺乏代码文档。某些C 文件完全没有注释,例如./chain/branchdb.cpp(参见下面的摘录)。

该代码给人的印象是其得到了良好的开发和测试。它部分使用了比特币作为代码基,并包含多项增强功能。例如./key/pubkey.h

大多数核心功能都是完整且有效的(如上文运行时测试部分中所述)。

整体而言,代码看起来全面有序。项目的文件夹结构同样如此。我们使用了一致的编码标准,除了缺少部分代码注释之外,质量也很高。

总体来说,我们认为代码处于高级测试阶段。

总结:从开发的角度来看,我们认为该项目进展顺利,并且该产品处于后期测试阶段,非常接近实际发行(实际上,通过小幅度修改,该产品现在已经可以发行)。

MagnaChain团队已经制作了一个针对多个平台(如MS Windows和Linux)的稳定运行产品,进一步提高开发人员采用该产品的可能性。但是,我们建议团队为云服务器实施一键部署功能,以更方便地访问开发人员和验证程序节点。鉴于产品的成熟度,目前这个步骤是合理的。

作为游戏分布式应用(dApp)的开发平台,MagnaChain提供了与专业游戏开发人员日常使用的环境非常相似的环境,因此具备很强的吸引力。基于这一优势,以及团队在游戏行业的强大背景,我们相信MagnaChain有很大机会成为基于区块链的游戏平台,并且可能在其他用例中也能取得类似的成功。

1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。