区块广播:

IOST项目技术分析

秋水不是诗人水手发布在 技术文档
 15878  12

先前有一段时间在关注IOST,这条链被称为现在的第四大公链,虽说在dapp数量上和前三大的公链差的不少,但是看起来也有一定的潜力可以挖掘。这条公链的主打点包括POB 共识,微型块,原子协议,动态分片等。在宣传上强调的高tps,稳定性,安全性也是大多数公链的宣传点,没有特别的地方。在区块链浏览器上我们看到,投票率为24%左右,tps目前保持在30以下,和tron状况差不多。下面具体从技术角度来进行一个分析。
download.png
设计模型
1.账户权限系统
这个权限系统和EOS的非常相近。即IOST账户由账户名和权限组成,包括owner和active权限(EOS的朋友是不是很熟悉)。每个权限有一个阈值,要拥有这个权限,在一笔交易中包含的权重之和必须大于这个权限。系统通过验证交易的签名,计算签名中的权重来进行验证。
2.投票
在投票过程中,它这里有候选人、合伙人节点和出块节点。候选人需要得票超过210万并且通过审核才能成为合伙人或者出块节点。目前每个块的奖励大约为3.3 iost。节点获得奖励后50%给合伙人和出块节点,50%给投票者的奖励池。
3.经济模型
官方说他们的经济模型继承了ETH和EOS的优点。普通节点通过质押Token来获得Gas。一个Token每天获得10万Gas。交易的执行会消耗Gas。在IOST中同样有RAM,这个RAM初始上限为128G,每年新增64G。调用系统合约的时候可能会使用用户的RAM。

智能合约/虚拟机模型
IOST的智能合约采用JS来编写,这也符合现在的发展趋势,相比于solidity的确给大多数开发者带来了便利。同时合约支持更新功能。在Token方面,他这里是Token20,跟ERC-20差不多,都是在合约里面定义了一些接口。至于虚拟机,采用的是v8。最近看到几条链都采用的v8,这和v8的安全性和高性能离不开关系。

主打创新点分析
白皮书重点讲的是分片技术,并介绍了保证随机性、安全性的支持。但是这其中的大部分技术并没有被实现,在github上提问后得到回应为仍在开发当中。这里我选择几个比较重要的技术进行分析学习。

1.Distributed Randomness Protocol(github 代码未实现)
DRP 在恶意节点数目在一个特定比例之下的时候可以去保证一个公平性。DRP产生的随机数用于划分切片、将节点放到不同的切片并且选举切片中的leader。为了实现这种随机值,这里主要采用的是通过client和server来产生,具体的技术包括non-interactive zero-knowledge proof(NIZK,了解zcash的可能知道这个,零知识证明)以及public verifiable secret sharing(PVSS)。这个DRP协议包括两阶段,第一阶段client会给所有的server广播一条消息,包括一个随机产生的平衡分组。在这个阶段,每个server产生一个随机输入的值并且使用PVSS分享给同组的其他成员。当client通过NIZK来获取到了这些加密的分享值后,它会从中随机取出一个子集。这让client可以确定每个分组的secret和协议的输出值。在第二个阶段,servers 会加密并且发送他们所有的shares给client。这之后,client会结合所有的这些group secrets去获取到那个最终的随机输出。(这段我基本按照原文翻译,总的来看的话,感觉他们说的并不清楚,我也不理解)

2.Leader选择算法(github代码未实现)
简单总结下白皮书中的这个算法,这个算法重点就是用来划分shard的。在每个出块的时期,每个validator算出一个lottery。在过一个特定的时间段后,这些validators会互相交流自己生成的lottery。每个validator选择3个最小的lottery,并共同确定出这三个最小,其中最小的那个被选为leader而剩下的两个则会作为备选的leader。这个leader会通过DRP来生成一个rnd值,这个值将被validator们来利用起来把所有的节点分成shard。如果这个leader在产生rnd值的过程中失败了,就选择备用的leader。

3.Inter-shard transactions跨分片交易(github代码未实现)
大致流程如下。如果分片A中的a要发送一笔交易给分片B中的b。首先A中的所有节点会验证这笔交易,同时锁定这笔财产。接下来,这笔交易会发送给B中的节点,当这笔交易被B中的所有节点验证后,这笔财产才会被发送给b。

4.POB共识算法(已实现)
这个共识算法的话是想消除POS中的中心化问题。通过一个servi的积分体系来决定出块。具体介绍看第三个链接,那个已经说的比较好了,我就不费口舌了。

5.Micro State Blocks(github 未实现)
MSB目的就是解决存储问题,缩小存储区块需要占用的资源。要如何计算一个header,具体在白皮书中没描述。这里的关键点就是每个切片都只存储上一个MSB header,整个链的state被均匀分布在多个切片中。

总结
IOST总的来说,白皮书给出的技术还是有一定的创新。但是由于代码中没有实现其中的很多技术,所以对于整体的发展无法给出评论。如果能够踏实地去实现这些技术,并且后期在dapp上能够着力发展一下,那还是可以的。毕竟波场的例子摆在那里。

作者:
秋水 微信:samohyes
区块链安全研究员 区块链爱好者
不炒币,只聊技术

  1. 开发者文档 https://developers.iost.io/docs/zh-CN/1-getting-started/doc1.html
  2. 白皮书 https://iost.io/iost-whitepaper/
  3. POB 共识机制 https://zhuanlan.zhihu.com/p/52328752
打赏信息
打赏者(1
打赏数量(+50
打赏理由
打赏时间
Linkea
+50
感谢分享
2019-06-01 21:53:04
本主题由 Linkea 于 2019-06-01 21:54:13 加入精华
  • 正序
  • 最新
只看帖主楼层直达
登录 账号发表你的看法,还没有账号?立即免费 注册