IOTA初识
IOTA简介
IOTA是一种新型的数字加密货币,解决机器与机器(M2M)的交易问题。通过实现机器与机器间无交易费的支付来构建未来机器经济(machine economy)的蓝图。
IOTA 提供安全实时的微交易,不产生交易费用。开源的、去中心化,为物联网设计。
超越了blockchain技术,基于非区块链技术的加密货币。基于纠缠(tangle)而非区块链。
使用DAG(缠结)技术,交易前先验证两笔交易,POW机制。
IOTA的目标:促进机器经济的发展,且作为物联网背后的底层协议来执行。
在IOTA网络,越多的人使用网络,就会越快。
分布式账本
Tangle(缠结)是基于有向无环图结构(DAG),而不是一种连续的链式架构,定期添加区块。通过DAG,IOTA能够实现较高的交易吞吐量(通过平行验证),并且不收取交易手续费。在Tangle中,每个节点都是代表着一个交易。随着Tangle的不断发展,越来越多的参与者都将发起交易,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。
整个网络中验证交易的责任从传统的矿工转移到了每个网络的使用者身上——你想要发起一笔交易,就必须帮着一起验证网络中的其他交易。
上图这个例子是截取了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是指还没有任何其他交易直接或者间接指向他们。
有一个网络节点发起一笔新的交易时,除了找两笔交易去验证,还要做Pow运算,但比比特币的Pow计算简单得多,普通电脑5~10min可完成,这一步是为了很多人恶意分发transaction二阻塞整个网络,或更改DAG形状完成攻击,每个交易都有权重,权重(weight)和Pow的计算量。weight的取值范围是3^n,只能1、3、9、27.......
每个交易还有累积权重,累积权重(cumulative weight)等于自己的weight加上所有直接或间接指向这笔交易的weight总和。
每个交易还有分数(score)等于这个交易直接或间接验证了的交易的weight的总和
累积权重是个可变值交易发出后会一直增加,分数不变。
一个健康的tangle应公示不断有人发起新的交易形成新的tip,tips也应尽快被验证。
如果我们说某一个交易或者转账在某一个分布式的账本上被“最终确认(finality)”,那么这个交易无论发生什么,也无法被回滚和撤销。
如果我们假设比特币不会出现51%攻击,那么随着区块链的增长,你的交易被逆转的可能性是越来越低。你对这个交易被确认的“信心”也越来越高。IOTA里呢,这个“信心”是可能变高也可能变低的。IOTA里交易的确认是这样一个“信心值”,这个信心值=当前所有tips中,有多少tips存在一条能连通到你的交易的路径,或者换句话说,当前有多少tips间接确认了你的交易。假设当前一共有100个tips,其中有90个tips间接确认了你的交易,那你的这条交易就是90%确认。如果我能造出100个新的tips使得这100个tips都不间接确认你的交易,那么现在你的交易就变成只有45%确认了。相信你看到这儿不难看出,一个交易要想得到一个足够高的确认信心,那需要等待的时间也不短。如果每个交易都想要超过50%的确认信心的话,那网络中交易的吞吐量并没有实质性比比特币这些传统的区块链提高到哪里去。IOTA更灵活的地方是体现在交易的延迟上,因为如果你选择只要10%的确认信心的话,一笔交易被对方接受的速度会快很多。
IOTA共识创新
区块链共识机制严格,区块链中添加一个区块要多方竞争,并获取区块奖励或手续费。
因此,共识和交易生成是分开的,是去中心化的、有网络中一小部分人完成的、门槛较高的。
IOTA中,网络中每位成员都能交易并参与共识。每次交易直接定位两笔交易,并间接定位其他交易。验证可同步进行,完全去中心化,不需矿工传递信任,也不须支付交易手续费。
IOTA每个点都是一笔交易,不再有区块的概念,共识的最小单位是交易。网状结构,会不断的往外扩散。
DAG适合告白快发,小数据量交易的IoT场景。
简单来说,IOTA的交易流程是:先找到网络里的两笔交易,验证其合法性,做一点小小的PoW,把自己的交易与其绑定,在广播到网络。这笔交易会比后来的交易以相同方式验证,验证此交易的其他交易越多,此交易的确定性越高。当达到一个阈值时,这笔交易就被确定了。
非法交易解决办法:节点计算每个交易党的权重值,选择权重高的交易来验证,有助于增加此交易被后来交易验证的可能。如果你绑定非法交易,新交易不会选择此非法交易做验证,时间长,此非法交易就被网络遗弃了。
三元逻辑:
Trit,类似bit 分为1 0 -1
Tryte,类似Byte,3Trit为一个Tryte,表示27个值,用9和 A~Z(27个符号表示)。
IOTA的seed为81Tryte,Address为90Trytre。
IOTA的 哈希是Curl,三进制算法。
三进制电路功耗低,适合IoT设备,但现有计算机都是二进制电路的。
扛量子:
IOTA 使用的签名算法是 Winternitz one-time signature (W-OTS) ,这是一种后量子签名算法,可以抵御量子攻击。就如同其名,W-OTS 算法是 one-time 的,即签过一次名后就不能重复使用,否则会有丢钱的风险。你可以一个地址多次打钱,但取一次钱(取钱需要签名)后就不能用了,得换新地址。W-OTS 的一个缺点是签名长度特别大,这也是抗量子签名普遍的缺点。IOTA 的单个交易编码后有 2673 trytes(大约为 281.96 bytes),但签名占了 81%(2187 trytes)。对于 IoT 设备,这可能是一个很大的挑战。