Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

IOST项目技术分析

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

本版积分规则

成为第一个吐槽的人

深圳林妙可 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33