IoT Chain测试网络已经发布,根据官方roadmap,主网也会在12月底左右发布。笔者主要从产品和代码两部分来对Iot Chain进行测试。所有测试资料都来自IoT Chain 已经公开的github地址。
区块链功能完整性测评
我们根据安装文档在 MacOS 编译运行Iot Chain 测试网络,可以体验IoT Chain桌面版钱包(目前做成了网页的产品形式),比较方便测试。
我们发现Iot Chain测试网络完整度比较高。具体来看:
支持账户新建和查询。说明关于私钥管理相关等功能已经比较完善。
支持资产转账。看来加密模块和交易模块都已经完整实现。
可以查询区块和交易的详情。这相当于IoT Chain团队已经在桌面版钱包中加入了浏览器相关的功能。
可以选择节点。这表明背后的多节点共识达成模块应该已经比较完整。很多项目在发布测试网络的时候,往往还不能选择节点,即只能满足以上前3点。这里来看IoT Chain的测试网络已经不是单机版的区块链,已经具备了多节点共识达成的功能,区块链完成度还是比较高的,要好评。
支持合约部署。智能合约是区块链技术最重要的功能之一,也是DAPP部署必不可少的部分。
支持合约调用。这表明开发者除了可以部署合约,还可以方便的在IoT Chain桌面版钱包对DAPP合约进行测试。
支持合约阅读。这表明钱包增加了ABI解析功能。我们知道很多项目对智能合约的支持往往会在测试网络发布以后才会支持,在测试网络2.0甚至3.0版本才会支持。我们发现 IoT Chain 测试网络不但支持了智能合约,而且对智能合约对支持度很完整。可以在桌面版钱包完成智能合约对部署、调用、阅读、解析。
目前没有看到单独的浏览器入口,不过我们已经可以在桌面版钱包中完成浏览器相关功能,浏览器只是把这些功能拆出来而已,猜想团队在忙着其他更重要的工作。
功能完整性测试结论: IoT Chain 测试网络对区块链功能的完成度是非常高的。除了常规的交易账户相关功能已经完整支持,对智能合约对支持也很完整,桌面版钱包还支持节点选择。
实现代码测评
1 概貌
发现IoT Chain主要的开发语言是scala 和 javascript。在开发语言的选择上,选择scala很是别致。我们知道scala这种函数式的语言往往用在人工智能领域对大数据的处理,这可能跟团队在AI方面的背景有关。不过将scala语言用在区块链开发中,理论上函数式的编程方法可以在开发时提前规避很多风险,对于区块链的安全性有好处。
简单统计下,可以发现已经有301个scala文件,scala代码有3万多行。当然还有其他js文件,但是主要逻辑应该是用scala编写的。
再来看代码活跃度,IoT Chain项目的commit数量不是特别多,但是代码活跃度非常高。这表示团队每次commit的内容都非常多,不存在刻意刷commit的情况,团队应该是定期把完成度已经比较高的代码做commit。(笔者确实发现有些项目的commit存在故意刷数量的嫌疑,每次commit只有几行的改动,而IoT Chain每次commit的代码改动都在几千行左右)
2 代码架构
我们看到IoT Chain 项目架构比较清晰,可以看到如下几个模块
App 桌面版钱包模块,还有不少api实现
Benchmark 网络测试模块,看来团队对区块链的网络性能有一贯的关注和测试
Common 通用组件模块
Core 核心模块
Cryoto 基础加密模块,区块链最重要的模块之一
Network 网络层通信协议实现模块
Persistent 持久化模块,负责区块链的存储
Examples 实验模块,看起来可能是团队对新功能新协议的一些尝试对模块
发现IoT Chain的代码架构比较清晰,把区块链项目各种功能模块化,实现逻辑清晰,看来团队对区块链的设计抽象很优秀。
实现代码测评结论:IoT Chain项目实现原创性高,区别与市场上百分之九十的copycat 项目,IoT Chain项目使用scala语言,独立开发区块链各个功能。IoT Chain代码架构清晰,对区块链各种功能抽象合理且实现优雅。相信IoT Chain会在2019年给我们带来惊喜。