Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

IOST项目技术分析

深圳林妙可
187 0 0
先前有一段时间在关注IOST,这条链被称为现在的第四大公链,虽说在dapp数量上和前三大的公链差的不少,但是看起来也有一定的潜力可以挖掘。这条公链的主打点包括POB 共识,微型块,原子协议,动态分片等。在宣传上强调的高tps,稳定性,安全性也是大多数公链的宣传点,没有特别的地方。在区块链浏览器上我们看到,投票率为24%左右,tps目前保持在30以下,和tron状况差不多。下面具体从技术角度来进行一个分析。+ C& `. Z) O6 r% X7 ^9 C2 `& p4 e
2 \8 |4 K/ l: w* U: c0 |( j: o
设计模型
' t6 F4 u; E! y1.账户权限系统! w( P  |* F: q
这个权限系统和EOS的非常相近。即IOST账户由账户名和权限组成,包括owner和active权限(EOS的朋友是不是很熟悉)。每个权限有一个阈值,要拥有这个权限,在一笔交易中包含的权重之和必须大于这个权限。系统通过验证交易的签名,计算签名中的权重来进行验证。
' D3 \8 a. G8 p* d2.投票
" |/ v  m2 y& |3 s. c6 ~在投票过程中,它这里有候选人、合伙人节点和出块节点。候选人需要得票超过210万并且通过审核才能成为合伙人或者出块节点。目前每个块的奖励大约为3.3 iost。节点获得奖励后50%给合伙人和出块节点,50%给投票者的奖励池。/ k' l+ y# m- y- J# o. L
3.经济模型
( M' Y& M4 q  a5 ~官方说他们的经济模型继承了ETH和EOS的优点。普通节点通过质押Token来获得Gas。一个Token每天获得10万Gas。交易的执行会消耗Gas。在IOST中同样有RAM,这个RAM初始上限为128G,每年新增64G。调用系统合约的时候可能会使用用户的RAM。
- o9 G! H5 m' m; @! }智能合约/虚拟机模型5 I. d8 N) |7 o% O/ _
IOST的智能合约采用JS来编写,这也符合现在的发展趋势,相比于solidity的确给大多数开发者带来了便利。同时合约支持更新功能。在Token方面,他这里是Token20,跟ERC-20差不多,都是在合约里面定义了一些接口。至于虚拟机,采用的是v8。最近看到几条链都采用的v8,这和v8的安全性和高性能离不开关系。
6 [4 b0 L  G: M# C主打创新点分析
# X  `# G: ]5 T8 A2 B  f- ^( d" A白皮书重点讲的是分片技术,并介绍了保证随机性、安全性的支持。但是这其中的大部分技术并没有被实现,在github上提问后得到回应为仍在开发当中。这里我选择几个比较重要的技术进行分析学习。
- f$ H, l  j) V: H1.Distributed Randomness Protocol(github 代码未实现)
7 i5 y% _) Y0 |9 d% _# vDRP 在恶意节点数目在一个特定比例之下的时候可以去保证一个公平性。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去获取到那个最终的随机输出。(这段我基本按照原文翻译,总的来看的话,感觉他们说的并不清楚,我也不理解)9 q3 m" v) Y  t7 y& `% h
2.Leader选择算法(github代码未实现)
5 e( x+ O  o3 D  I1 X$ N/ j1 ]+ _+ r8 s简单总结下白皮书中的这个算法,这个算法重点就是用来划分shard的。在每个出块的时期,每个validator算出一个lottery。在过一个特定的时间段后,这些validators会互相交流自己生成的lottery。每个validator选择3个最小的lottery,并共同确定出这三个最小,其中最小的那个被选为leader而剩下的两个则会作为备选的leader。这个leader会通过DRP来生成一个rnd值,这个值将被validator们来利用起来把所有的节点分成shard。如果这个leader在产生rnd值的过程中失败了,就选择备用的leader。
8 E; B1 O( [, ]% k# F! s3.Inter-shard transactions跨分片交易(github代码未实现)
- g$ l5 p) G; I( P: Y+ P  ^1 `  d大致流程如下。如果分片A中的a要发送一笔交易给分片B中的b。首先A中的所有节点会验证这笔交易,同时锁定这笔财产。接下来,这笔交易会发送给B中的节点,当这笔交易被B中的所有节点验证后,这笔财产才会被发送给b。
+ X* [# b. G" u. b" }& `4.POB共识算法(已实现)
8 C2 R: Q) e2 m9 p3 l  F% |7 J这个共识算法的话是想消除POS中的中心化问题。通过一个servi的积分体系来决定出块。具体介绍看第三个链接,那个已经说的比较好了,我就不费口舌了。3 q- {/ C7 N) H5 g% ?4 j
5.Micro State Blocks(github 未实现)) H5 X6 L( S* e& x, ~' w
MSB目的就是解决存储问题,缩小存储区块需要占用的资源。要如何计算一个header,具体在白皮书中没描述。这里的关键点就是每个切片都只存储上一个MSB header,整个链的state被均匀分布在多个切片中。
% L0 n" R6 ~; x. c" P- F$ A2 z8 m总结
# f3 t7 C, B$ D& Q$ \IOST总的来说,白皮书给出的技术还是有一定的创新。但是由于代码中没有实现其中的很多技术,所以对于整体的发展无法给出评论。如果能够踏实地去实现这些技术,并且后期在dapp上能够着力发展一下,那还是可以的。毕竟波场的例子摆在那里。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

深圳林妙可 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33