IOTA

IOTA

IOTA是一个开源的分布式账户,专注于在物联网上的机器之间提供安全的通信和支付。使用有向无环图(DAG)技术代替传统的区块链,无论交易规模大小,确认时间快,系统可以同时处理的交易数量无限,系统可以轻松扩展,IOTA的交易都是免费的。

IOTA背后的分布式账本结构并不是传统区块链中“链式”的结构,而是一个有向无环图(DAG),IOTA称之为Tangle,中文翻译为“缠结”。在这个Tangle中,每一个节点代表的是一个交易。IOTA里没有区块的概念,也没有挖矿和矿工的概念。这可能是IOTA的最吸引人的亮点了,没有挖矿和矿工就代表没有交易费,币量也是恒定的,而且整个网络的吞吐量(Throughput)也能很高。

IOTA_第1张图片
image

IOTA的优点

  • 无手续费
    IOTA使用了基于DAG(directed acyclic graph有向无环图)的Tangle(缠结)作为基本的数据结构。IOTA在并没有挖矿和矿工的概念,交易的可靠性是通过交易之间的互相验证而达成的:每一笔后发起的交易,都必须随机直接验证两笔主网的交易,并间接验证有向图中可到达的其他交易,然后才能提交并验证自己的交易。任何人都可能会验证你提交的交易,而你也可能会验证任何人提交的交易,每一次交易的验证都让主网更加健壮,大家互帮互助没人需要为交易支付手续费。
  • 硬件要求低
    由于IOTA的最初目标是用于物联网,而物联网上的异构设备性能差异极大,IOTA特别强调即使在性能低下的智能设备上也能运行IOTA。
  • 无需扩容
    而IOTA则把每一笔交易都当做一个区块(其实并没有区块这个概念),反而消除了区块大小的限制。
  • 极高的交易量:平行验证
    IOTA的DAG数据结构使得多笔交易可以被多个不同的验证者平行验证,解决了BTC/ETH在高并发下网络拥堵的问题。
  • 抵抗量子
    IOTA使用基于Winternitz签名的Curl算法,而Curl是量子安全的。
  • 无需万维网,万物互联
    IOTA并不依赖于万维网,想象一下,你家的智能晾衣架需要上网么?除了万维网,IOTA可以在蓝牙、zwave、ZigBee或者Lora的环境下运行。
  • 区块链的入口
    IOTA甚至算不上是区块链,而只能算作区块链的一个扩展。IOTA的也并不立志于取代BTC/ETH的地位,而是采取合作的态度,希望作为其他电子货币的一个扩展而存在。

IOTA技术细节

在Tangle这个由交易组成的有向无环图里,一个网络节点要发起一笔新的交易时,需要在Tangle中找2笔其他交易去验证,并且将自己新发起的交易指向这两笔交易,整个Tangle就是这样一点一点扩大出去的。正因为这样的设计,整个网络中验证交易的责任从传统的矿工转移到了每个网络的使用者身上——你想要发起一笔交易,就必须帮着一起验证网络中的其他交易。

IOTA_第2张图片
image

上图这个例子是截取了Tangle中的一部分(Tangle扩展的方向是从左到右,越往右的交易越新),交易A指向交易B和D,那么A就是直接验证了B和D(A directly verified B and D);A虽然没有直接指向F,但是A到F之间有一条通路(path),那么我们可以说A间接验证了F(A indirectly verified F)。上图中A和C称为2个tip,tip是指还没有任何其他交易直接或者间接指向他们。

一个很明显的目标是,要尽量让新出生的tip能尽快被未来出生的tip确认。

那么整个Trangle可能被攻击的点在于:恶意节点发起很多transaction阻塞网络,或者进一步通过更改整个DAG的形状而达成一些攻击。

上图中,方块右下角的数字被称为权重(weight),这个weight跟PoW所付出的计算量相关。IOTA在验证出块的时候需要做一个PoW计算。方块左上角的数字被称为累计权重(cumulative weight)。

每个交易还有一个分数(score),等于这个交易自己的weight加上所有这个交易直接或者间接验证了的交易的weight的综合。

cumulative weight是一个可变值,从发出交易之后这个值会一直增加,score是一个不可变的值,交易发出之后,它的score就定了。

如何选择2个tips

IOTA官方推荐用一种马尔可夫蒙特卡洛(MCMC)随机游走的方法去选择2个tips,这样能保证整个Tangle良好的发展。这个MCMC的过程是这样的:

  • 1.挑选yieldcumulative weight区间,比如270-300之间
  • 2.挑选Tangle中N个cumulative weight在这个区间内的交易节点(particles)。这些cumulative weight落在区间内的节点在有向无环图里可以想象成纵向上的一条slice,你可以想象这些particles都处于一个差不多的垂直面上,理论上他们距离整个Tangle最右边边缘的距离也差不多相当。
  • 3.这N个节点往右随机游走,两个相邻节点A和B之间的cumulative weight相差越小,那么A游走到B的机率也越大。
  • 这N个particles中最先完成游走并到达的2个tips,这2个tips就是你的交易需要去验证的2个交易。

整个系统当然希望新的交易能验证那些tips,而不是去验证那些老的交易。IOTA客户端发起交易的时候,只会选择那些score大于某个特定值的交易去验证,这个特定值与当前tips的数量正相关。tips数量多,这个特定值就大,就越能防止节点去验证老的交易,把注意力放在验证新的交易上。

新的交易如何才算成功确认呢?Finality(最终确认性)。如果我们说某一个交易或者转账在某一个分布式的账本上被“最终确认”,那么这个交易无论发生什么,也无法被回滚和撤销。

其实并不存在“最终确认”这种说法,比如比特币,未来比特币再次分叉了,你的交易可能就不在最长链里。只是一个概率问题,通俗来讲就是被确认的“信心”,在IOTA里,这个“信心”值是可能变高也可能变低的。

信心值 = 当前所有tips中,有多少tips存在一条能联通到你的交易的路径 = 当前有多少tips确认了你的交易

这里可以看出,交易确认时间的长短完全跟确认信心挂钩,只要10%的确认信心的话,一笔交易被对方接受的速度会块很多。比如比特币,只要一个交易确认的话,速度就快很多。

暂时的困境:中心化

交易确认的信心值可以被攻击者改变,比如攻击者创造新的tips就不确认你的交易,那么你的信心值就越来越低,这结果就类似于区块链分叉了。当然IOTA没有区块链这个说法。

为了防止这种恐怖的事情发生,IOTA团队目前的解决办法是在客户端里写死一个网络节点的地址,这个节点叫coordinator,这个节点每分钟发一次交易,这个交易叫做milestone,直接武断说这个milestone间接确认的交易都是100%的状态。其实就是在所有节点向前走的时候,一个中心组织带路,不要被作恶者带歪了。这个非常好理解,但是问题是中心化的组织在不断带路,跟有一个中央银行一样,本质上没有区别。

IOTA站出来说,这个coordinator协调者的角色只是暂时的,初期出来带带路,等IOTA整体网络的负载上去之后,就会移除coordinator。但如何在去掉coordinator之后,让这个队伍不被作恶者带沟里去,有些交易确认信心降低到类似分叉的程度,那些作恶的交易被确认非常高的信心,IOTA需要在共识机制上解决这个根本问题。

IOTA目前有的一些解释:IOTA整个网络的算力大致等于整个网络的交易吞吐量(Throughput),也就是说加入节点越多,形成新的tips就会越多,主要诚实节点足够多,大家都好好干好自己的事情,不去作恶,那么整个系统是很稳定的。白皮书说,只要作恶节点不掌握1/3以上的算力,那么attack成功的概率会很低。这个说法真的不行啊,才1/3,真的只能寄希望整个网络庞大到任何一个组织都没有能力集合起作恶节点超过整个网络1/3算力。

你可能感兴趣的:(IOTA)