Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

IOST项目技术分析

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

本版积分规则

成为第一个吐槽的人

深圳林妙可 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33