游戏开发论坛

 找回密码
 立即注册
搜索
查看: 88750|回复: 0

InCodeWeTrust区块链评测:对MagnaChain进行代码审查

[复制链接]

105

主题

110

帖子

654

积分

灌水组

积分
654
发表于 2018-9-6 09:58:55 | 显示全部楼层 |阅读模式

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

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

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

  原文地址:https://cryptodiffer.com/magnach ... and-functional-test

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

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

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

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

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

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

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

  MagnaChain技术架构

  第一层是底层,由基础库组成,包括加密与共识算法、P2P网络、内存管理、线程和进程管理等。

  第二层是基本功能模块。在这一层,主要是实现了基本帐户与钱包管理、区块链的生成与同步以及基本交易功能等。在这一层基本完成了传统区块链系统的所有功能。

  第三层为扩展功能,包括基于VM的智能合约以及多链管理系统。这一层主要提供智能合约以及一套通过多链实现的高TPS解决方案。

  第四层为API层,主要提供了一套供APP创新的API及系统集成式SDK。

  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有很大机会成为基于区块链的游戏平台,并且可能在其他用例中也能取得类似的成功。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-24 16:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表