区块链项目技术代码审查报告-ONT(本体)
区块链项目技术测评报告-Ontology
前言
分析仅从项目方已经开源的代码进行解读,不一定是项目方全部的功能代码,因为有些代码可能暂时还在内部开发不方便公布,GeekSight会定时跟踪代码发布的进度给出客观的评测。
分数测评
目录索引
一、项目概述
二、基本信息
三、代码评审
3.0 结果总述
3.1 可用性
3.2 安全性
3.3 架构清晰度
3.4 挖矿公平性
3.5 选举公平性
3.6 代码原创程度
3.7 其他维度测评
四、总结
一、项目概述
本体信任网络架构了一个分布式融合的信任体系,将信任的多样性在一体化的协议体系下进行协同,整合分布式多维实体认证体系及各类不同区块链体系与信息系统,纳入多源身份认证和多源信息交换协议,并提供不同分布式应用场景的开放基础模块,实现分布式点对点的信任体系,构建跨链、跨系统、跨行业和跨终端的分布式信任基础体系。
本体信任网络在分布式实体与数据信任基础上,提出进一步拓展的生态与应用,将信任的应用扩展到很多的维度,从实体认证到数据交换,从分布式流程到分布式社区,从分布式交易到分布式声誉,结合底层的区块链分布式账本体系,联合各类服务伙伴在不同地域、不同领域提供多样化的信任服务,形成新一代的全球信任网络基础设施的一部分。
本体信任网络是一个多链、多系统融合的协议网络,来自不同的链和系统可以支持不同业务体系,并通过本体的各类协议进行协作。架构体系进行模块化、可插拔、灵活扩展的松耦合设计,以支持不同业务领域的需求,可以灵活扩展到各类业务应用支持。
二、基本信息
三、代码评审
3-1 可用性
可用性是指本体区块链能否达到和满足其白皮书中对实体上链、多链结合、跨链通信和共识算法可拔插的要求。
通过阅读本体代码并未发现本体区块链如何将现实实体映射至区块链账本中,目前唯一能得知的于此相关的是本体在智能合约中提供了身份验证功能,该身份应该是本体网络中特有的身份,与现实世界中特有的实体身份结合度较低。
根据本体白皮书中的说明,其多链结合和通信功能正在开发中,在目前公开的本体代码中确实没有找到相关代码,审查该功能的实现需要保持跟进。
目前本体项目实现的共识算法有dBFT、VBFT和Solo,从代码设计上考虑了共识算法的选择和切换,共识算法可拔插应该能满足白皮书上设定的要求。本体在签名算法上也做了可拔插处理,提供了诸如ECDSA、SM2和EDDSA等公钥算法并可组合多种哈希算法,如SHA224、SHA256、SHA384、SM3等。默认采用SHA256配合ECDSA公钥签名算法。
可用性测评:
目前本体区块链项目实现了基本的区块链框架,包括账本、RPC、P2P、智能合约、账户管理、共识算法和虚拟机,对于模块的可插拔性在架构设计上做了一定程度的考虑,这点与现存的诸多区块链项目相比是个优势,对于日后本体区块链的扩展和升级会显得更加便捷,尤其是在多链结合上会提供更多的自由度。
但就目前的代码实现情况来说,抛开模块的可插拔性,本体区块链还只能完成一个2.0区块链最基本的功能要求,对于是否能达到其白皮书中所说渗透至社会基层的程度还需要持续跟进。
依据:
打分:65
模块可插拔的设计会以后项目的扩展提供了更多自由度,目前本体项目还在开发阶段,该阶段只达到了一个固有区块链项目(2.0)的最低要求,要达到其白皮书中所描述的可用性需要等其多链功能开发完毕后才能正式评估。
3-2 安全性
根据白皮书的描述,本体区块链项目定位为渗透至社会底层的社会价值驱动型公链,并结合多链通信技术使本体区块链网络成为日后多种既有区块链价值中转区块链,其对安全性的要求比其他区块链项目要高出不少。
目前本体项目并未对项目的安全性做过多的阐述和验证,并且当前本体项目正处于测试阶段,对于项目的安全性结合本体项目的代码来看目前只能评估为达到固有区块链项目安全性的基本要求。
在钱包安全性和共识算法安全性方面还需持续跟进本体项目的主网测试情况。在共识算法安全性上,本体网络主推VBFT共识协议(目前单元测试最密集的共识模块),采用POS+VRF+PBFT的设计方式,在正常情况下由于PBFT协议的网络中,完成共识的节点不会太多,采用POS结合VRF的共识算法对于抗女巫攻击的能力还有待检验,但区块链网络的整体抗分叉能力较强,具有最终性。
安全性测评:
充足的单元测试保证了项目的运行稳定性和避免尽可能多的BUG。项目方对于代码质量的态度保证了日后项目迭代的效率。VBFT共识算法的安全性还有待实际运作的检验。
依据:
针对数据交换协议,ONT提供了系列数据与隐私保护的密码学组件支持,把数据的隐私保护和数据的泄露防范作为关注重点,并在本体建立的信任生态中设计了授权机制。
打分:75
能够满足基本需求,可在一定程度上确保主网、钱包、合约及共识算法的安全,但部分功能尚未实现,还有待进一步的检验。
3-3 架构清晰度
项目模块化程度较高,耦合度较低,在扩展性方面具有较高的自由度。与现有的大多数区块链项目相比,本体区块链项目的架构清晰度较为明朗。
本体项目在架构设计上模块划分清晰,每个模块在一级目录中就已清晰的罗列出来,每个模块的内部实现也具有清晰的目录划分,结构简单明了。在代码清晰度上项目方提供的注释极为稀少,但代码自注释能力较高,对于有一定区块链研发经验的开发者来说其代码的可读性能达到要求,但对于入门级的开发者来说会显得较难上手,需要充分结合文档才能逐步理解。
架构测评:
项目整体的架构设计较为清晰,在分工开发上难度较小,项目迭代效率有保证。该项目适合接纳有一定区块链研发经验的开发者,对于入门级开发者来说要上手本体项目有一定难度。
依据:
该项目提出了一种共享数据合约模型,这种模型可以解耦数据存储和业务逻辑,通过不同的智能合约来实现不同的业务逻辑,从而使框架具有了较好的伸缩性和灵活性。同时,在智能合约部分的实现代码中,也看到了必要的状态可数据存储实现代码。合约内存储和合约外存储两种方式相结合,应可满足大部分业务场景,在兼顾伸缩性的同时也较好的考虑了便捷性。
项目架构自底向上依次分为本体底层、核心协议层及应用框架层。本体底层支持完整的分布式账本体系,其中包括分布式账本、智能合约体系及安全体系,并从架构上对上层屏蔽了底层技术细节,采用解耦设计,可支持多种区块链作为底层的支撑;核心协议层提供了多重安全保护、数据存储及智能合约支持,通过分布式ID互联;应用框架层则面向用户提供了完整的应用协议及组件支持,从架构层面而言侵入性低,用户在遵循本体协议的基础上可以较为自由的定制应用。
打分:80
整体架构明了,层级清晰,设计较为合理,特别注重整个框架的可扩展性。在整个架构设计中处处可见模块的解耦设计,便于后续开发或吸收其他用户参与开发,而且从架构层面也考虑了安全性等方面的问题。
但这种架构也有不足之处:由于过分追求可扩展性和灵活性,势必导致难以避免的冗余设计,同时也在一定程度上影响向下兼容性。
3-4 挖矿公平性
本体项目采用的dBFT和VBFT共识算法均与权益(Stake)有关,都混合了POS共识算法。本体项目共识算法通过冻结权益选择记账人集合,不存在挖矿功能,故对该部分不做评价。
备注:
1. VRF具有快速共识、抗攻击能力、极低算力需求等优点。投票人集合默认通过改进的拜占庭容错算法—DBFT投票选取记账人,最终决定区块生成者。这种方式加入了随机函数,使ONT能更随机地选取投票人,在一定程度上也提升了系统安全性。
2. 支持较多共识算法,并使用基于VRF随机函数的DBFT共识机制决定投票人,并由投票人投票决定记账人,这种方式在满足需求的同时又克服了普通DBFT机制的弊端。
3-5 选举公平性
本体项目采用dBFT和VBFT共识算法,dBFT算法锁定节点权益,通过锁定的权益选择记账人,在记账人中运行BFT协议完成共识。VBFT算是dBFT共识算法的改良版,仍会节点锁定权益并创建PoS表,所有节点在根据当前PoS表运用VRF算法随机选择每一轮参与节点,在这些节点中运行BFT协议完成共识。
VBFT共识算法相较于dBFT共识算法和传统的POS公式算法在记账人选举上由于引入了随机性所以理论上显得更为公平,但实际运行效果有待进一步跟进测试。
选举测评:
官方资料显示ONT支持VBFT、DBFT、SBFT、PoW及SOLO等共识算法,但从开源的源码中发现目前仅支持DBFT、SOLO和VBFT三种共识算法,SBFT虽有源文件,但尚未完整实现,而PoW算法源码未发现。
VBFT算法在VRF随机算法的保证下,理论上记账人的选举更为公平,但实际运作效果有待测试。
打分:80
POS和VRF的引入在一定程度上保证了记账人的随机性和区块链网络的抗分叉性,BFT算法的引入加快了区块链网络的共识速度。实际运作情况有待跟进测试。
3-6 代码原创程度
本体项目代码原创程度较高。
原创度测评:
1. ONT整个项目代码开源,从代码中可以看出该项目原创程度较高,是一个具备自己技术底蕴的质量相对较高的区块链项目。
2. 核心账本使用GO语言版的NeoVM虚拟机作为智能合约的执行环境,NeoVM虚拟机是NEO区块链的核心技术,但资料显示NEO与ONT是同属分布科技旗下的区块链项目,两者之间签署了“技术战略备忘录”,成立了联合工作组。
打分:81
ONT属于一个较为用心且整体投入量比较大、完成度比较高、具有自己特色的区块链项目,能够支持传统的共识算法和共识机制,但与NEO项目也有一定重合度(比如智能合约的NeoVM)
3-7 代码其他维度测评
四、建议和说明
在此次代码走查过程中,共有14位区块链相关技术人员参与。多数参与者对ONT的代码一致认可,表现出很大的兴趣,会持续跟进项目的更新,也会加入到其开发者社区!