IOTA分析报告——物联网的血液系统

一:项目简介

IOTA全称MIOTA, 它是一个开源的分布式账户,IOTA的初衷是一个给物联网(IoT, Internet-of-Things)设计的加密货币,这个目的反映在了这个货币的名字里。在IOTA对物联网的世界观展望里,智能硬件终端之间将会根据用户设定的规则进行大量频繁的小额交易。(注:物联网是所有的电气设备,例如冰箱,电视机,收音机,面包机,计算机,巴士车,卡车,小轿车等等设备都将自动连接到互联网上。)

想象有这么一天,你在你的智能自动驾驶汽车里,觉得有点累,小睡了一会,然后停在路边走进一家咖啡店,路边的智能表每分钟自动向你智能汽车里的钱包扣停车费,拿好咖啡就回家,有点累,快到家的时候热水已经自动计算好你的距离和到家的速度自动放好了热水,冰箱里的牛奶没有了,冰箱已经在网上定好了牛奶,并且还没有花钱,因为冰箱自己帮你接了一个业务,帮助一家云存储公司提供了存储服务。这些都是IoT终端之间交易的例子。

二 区块链行业痛点:

区块链是一个去中心化历史记录不可篡改的大账本,这个账本上记录了交易的和各种信息,而要激励记账,就有了记账员——旷工,旷工每次计算清算形成一个区块,同时为了网络不受大量的DDOS攻击,就给旷工一定新币奖励和手续费奖励,这个比特币的逻辑,后的各种竞争币,以太坊,也是后来的区块链公链的逻辑。由于这样的模型,比特币如果用于大额支付,手续费可以忽略不计,如用于小额支付,可能手续费都不够,毕竟买5元的饮料,你不愿意支付1元的手续费。所以比特币和以太坊等不适合小额支付和高频物联网微支付。

IOTA与许多区块链项目有着相似之处,但它的设计里却不包括区块或单线性链。相反,它基于有向无环图(DAG)的概念。尽管IOTA不是区块链,但DAG是公共的、限制甚少的分布式账本。由于其独特的结构,它具有一些传统区块链所没有的优势。

图片来自官网https://iota.org/

IOTA的主要功能(目前)是无需手续费的微支付和安全的数据转移以及数据锚定。有了这两个功能,再加上IOTA的延展性和分区容错,能够提炼出大量的只能通过IOTA来实现的用例。

三 产品分析

IOTA可以说是超越了区块链技术,是区块链技术的延展。他们创造了一种全新的“Tangle(缠结)”,Tangle(缠绕)是分类帐结构的名称,Tangle就像区块链一样,但它使用网络结构而不是链状结构,这使它更具拓展性和稳定性。创始人DavidSonstebo认为“Tangle(缠结)”会是比以太坊和比特币更好的替代品。

来自白皮书

3.1 、IOTA技术创新

IOTA的Tangle和现有区块链技术有什么不同?要说对比IOTA(或者更具体的来说是Tangle)和区块链,这两者之前存在很大区别,因为他们是两个完全独立的架构,但是却建立在同一种规则之上。

缠结数据结构示意图

3.2、 IOTA数据结构

Tangle(缠结)是基于定向非循环图的(DAG),而不是一种连续的链式架构,定期添加区块。通过DAG,IOTA能够实现较高的交易吞吐量(平行验证),并且不收取交易手续费。随着Tangle的不断发展,越来越多的参与者都将发起交易,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。

3.3 、IOTA共识机制创新

区块链共识是通过一个非常严格的机制完成的,区块链中添加下一个区块需要多方进行竞争,并获取区块奖励或交易手续费。正因如此,共识和交易(使用者)生成是分离开的,并且由网络的一小部分人(旷工)来完成,通常会设置较高门槛(就像比特币一样),这样会导致进一步的中心化。

3.4 IOTA技术细节(3.4这段技术推理分析来自老钱文章的摘要)

在Tangle这个由交易组成的有向无环图里,一个网络节点要发起一笔新的交易时,需要在Tangle中找2笔其他交易去验证,并且将自己新发起的交易指向这两笔交易,整个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是指还没有任何其他交易直接或者间接指向他们。

一个网络节点发起一笔新的交易时,除了需要找Tangle里2笔其他交易去验证之外,还需要做一个POW计算。这个POW计算比比特币的POW计算要简单很多,一台普通电脑可能只需要5-10分钟就能完成计算。IOTA设计POW这一步是为了防止有人恶意发很多transaction从而阻塞整个网络,或者更进一步通过更改整个DAG的形状而达成一些攻击。上图中,每个表示交易的小方块里右下角的数字被称为权重(weight),这个weight是和POW所付出的计算量相关的,举个例子,假如有2笔交易,他们通过POW算出来的二进制值分别为x和y,x的开头是2个0,y的开头是4个0,那得到y所需要的计算量一定是大于x的,所以交易y的weight会比交易x的weight大。在IOTA里,weight的取值范围是3^n,也就是weight的取值只可能是1,3,9,27…

方块里左上角的数字被称为累积权重(cumulative weight),这个cumulative weight等于这个交易自己的weight 加上所有直接或间接指向它的交易的weight的总和。比如交易F,直接或间接指向F的有A,B,C,E,所以F的Cumulative Weight = 1+3+1+1+3=9.

除了weight和cumulative weight,每个交易还有一个分数(score),这个score等于这个交易自己的weight加上所有这个交易直接或者间接验证了的交易的weight的总和,举个例子,假如只看上图的话,E直接或间接的指向了除了A,B,C,D之外的所有交易,所以E的score=1+3+1+1+1=7。

这里可以看出cumulative weight是一个可变值,从发出交易之后这个值会一直增加,score是一个不可变的值,交易发出之后,它的score就定了。这个cumulative weight和score能用来干什么呢?且看下面继续分析。

假如我要发起一个交易,我要怎么选2个交易去验证呢?理论上你可以随便选。你可以随机选择网络中的2个交易,或者你也可以永远只选几个很老的交易(在Tangle中处于很左边的位置的交易)。但是一个健康的Tangle应该是不断有人发起新的交易形成新的tips,这些tips也应该尽快被之后来的交易所验证。所以选择2个交易时,我们更应该倾向选择tips。

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

挑选一个cumulative weight区间,比如270-300之间。

挑选Tangle中N个cumulative weight在这个区间内的交易节点(particles)。这些cumulative weight落在区间内的节点在有向无环图里可以想象成纵向上的一条slice,你可以想象这些particles都处于一个差不多的垂直面上,理论上他们距离整个Tangle最右边边缘的距离也差不多相当。

这N个节点往右随机游走,两个相邻节点A和B之间的cumulative weight相差越小,那么A游走到B的机率也越大。

这N个particles中最先完成游走并到达的2个tips,这2个tips就是你的交易需要去验证的2个交易。

但是这只是推荐的做法,怎么防止有人只验证一些很老的交易呢?这里就要用到前面说的score了。IOTA客户端在发起交易时,只会选择那些score大于某个特定值的交易去验证。这个特定值与当前tips的数量正相关。也就是说如果一个交易指向的是2个非常老的交易,那么它的score就很可能不满足这个特定值的条件,这样他们被新的交易选到的可能性就很小。

那一笔交易要怎么才能算成功确认呢?这里要介绍一个非常重要的概念,叫做Finality(最终确认性)。如果我们说某一个交易或者转账在某一个分布式的账本上被“最终确认”,那么这个交易无论发生什么,也无法被回滚和撤销。

大家可能觉得,不对啊,区块链的一个基本特性不就是“历史不可更改”么?

这里要指出一个认知上普遍的误解,大部分区块链中的交易不存在“最终确认”这种说法。拿比特币来说,你的交易打包进区块,并得到6个确认之后,并不是指这笔交易100%确认了,如果有人发起了51%攻击,你的交易在攻击之后的最长链里就不一定是被确认的状态。但是如果我们假设比特币不会出现51%攻击,那么随着区块链的增长,你的交易被逆转的可能性是越来越低。你对这个交易被确认的“信心”也越来越高。IOTA里呢,这个“信心”是可能变高也可能变低的。IOTA里交易的确认是这样一个“信心值”,这个信心值=当前所有tips中,有多少tips存在一条能连通到你的交易的路径,或者换句话说,当前有多少tips间接确认了你的交易。假设当前一共有100个tips,其中有90个tips间接确认了你的交易,那你的这条交易就是90%确认。如果我能造出100个新的tips使得这100个tips都不间接确认你的交易,那么现在你的交易就变成只有45%确认了。相信你看到这儿不难看出,一个交易要想得到一个足够高的确认信心,那需要等待的时间也不短。如果每个交易都想要超过50%的确认信心的话,那网络中交易的吞吐量并没有实质性比比特币这些传统的区块链提高到哪里去。IOTA更灵活的地方是体现在交易的延迟上,因为如果你选择只要10%的确认信心的话,一笔交易被对方接受的速度会快很多。

争议

中心化?

交易确认的信心值居然可以那么简单就改变,这种情况很恐怖吧?IOTA现在是怎么处理这个问题的呢?很简单,他们在客户端里写死了一个网络节点的地址,这个节点叫coordinator(协调员),coordinator是IOTA团队维护的一个闭源的component,coordinator每分钟会发一条交易,为了区别这个特殊交易和别的交易,coordinator发出的交易称为milestone。IOTA现在默认所有被milestone间接确认的交易都是100%确认的状态。因为没有人可以伪造coordinator的交易,所以这个办法是最直接,最简单的解决办法。那么问题来了,这样整个IOTA网络不就成了coordinator一个人说的算了吗?是的。。。很多币圈大佬和学者都有指出过这个问题,称IOTA完全就是一个中心化的系统。IOTA团队也反击称coordinator只是在IOTA还没有被大规模应用前的一个临时方案。他只是初期出来带一下节奏,等IOTA整体网络的负载上去之后,会移除coordinator。但关键的问题在于,如何移除coordinator?或者如何建立一个具有良性激励机制的“coordinator集团”, IOTA团队并没有给出完美的答案,社区的一种观点是, IOTA用复杂的参数和ledger维护的方法,包裹了从根本上没有解决的类似“权益证明”(POS)的问题。

IOTA对于上面的观点也做出了一些反驳,他们认为IOTA因为没有矿工和区块的概念,所以整个网络的算力可以大致等同于整个网络的交易吞吐量(Throughput),理想状态下,如果吞吐量大了,上面说的那种把交易确认信心值降低的攻击方式不会很简单,因为如果大部分交易流量都是来自诚实的好节点,都跟着规则走,那么一个attacker通过添加没用的tips来降低一个交易的确认信心会变得杯水车薪。IOTA的白皮书里提到,只要attacker不掌握1/3以上的算力,那么attack成功的概率会很低。我们来计算一下,现在IOTA整个网络的交易吞吐量还很低,大约每小时1500个交易。attacker如果能发每小时500个交易就足以可以改变Tangle的形状,attacker如果能每小时发750个交易(每5秒一个交易),那么基本上整个网络他一个人就能说的算了。5秒一个交易并不是很难达到的一个目标,所以现在IOTA放了coordinator这么一个网络秩序的维护者在里面。

Curl哈希函数与三进制

年中的时候,MIT的密码学教授Neha Narula发表了一篇报告,称IOTA内部自己实现的Curl哈希函数有严重的漏洞。Narula教授称Curl哈希函数有碰撞漏洞,她的团队用普通计算机几分钟内就能找出哈希碰撞,attacker可以利用这个漏洞来伪造别的用户的签名,从根本上瓦解IOTA的安全性。Narula教授将这个发现告诉了IOTA团队,IOTA团队很快就把这个漏洞修复了。但是对外呢,IOTA声称这个漏洞是他们故意放在那里的,因为这样如果有人把IOTA开源的代码复制出去做了一个新的Tangle,他们就有办法去整这些抄袭的人。。。我听到这句话的时候,内心是崩溃的。这可能是我听到过的最荒唐的狡辩了。

密码学界有一句话:“永远不要自己写加密函数(never roll your own crypto)” 但我认为IOTA自己写哈希函数还是有他的原因的,IOTA里对数据的编码采用了一种特殊的三进制编码,主要原因是IOTA的团队相信三进制CPU理论上具有比二进制CPU更好的能效。IOTA团队在创造IOTA之前,自己也在研发一款叫JINN的三进制CPU,他们的理想中,JINN如果成功普及开,IOTA的三进制模式就非常适合在JINN上跑了。这个想法是挺超前的,但是,目前三进制CPU仅仅是在科研阶段。JINN后续也没有什么进展。我猜IOTA自己写哈希函数一开始也是为了适配内部三进制的编码不得已为之的。IOTA目前所谓的三进制其实也只是一个模拟,IOTA的代码全都是二进制形式,在程序里需要将三进制转化成二进制,处理完后再转回三进制。

改进方案

IOTA白皮书里提到了几种可能发生的attack,这里我就不一一描述了。综合看来,白皮书里提到的attack的方式归根结底都是attacker能够改变整个DAG的形状而造成的。那么如果我们设计一种机制让attacker没那么容易自由的改变DAG的形状,是不是就可以防止很多attack,或者大大降低这些attack的成功机率了呢?换句话说,如果发起交易选择tip不是一个不确定性(undeterministic)的过程,而是一个确定性(deterministic)的过程呢?这样你的交易指向哪两个tips就不是任你选择的,而是能预先判断出来的。比如你发起的交易所需要指向的2个tips是确定的,而不是通过MCMC这种随机游走的方式得到的,会怎么样?我还没有想好这么一个deterministic tip selection的方法,但是我有几个idea。比如挑选的tips是通过交易的hash值来决定的,这样是不是确定性就会比MCMC要高。这样要想改变整个DAG的形状,是不是难度就变得更大了?欢迎大家留言一起讨论这种deterministic tip selection的可行性以及对安全性的帮助。

3.5 特征

IOTA的非区块链架构为其带来了四个特征:

1.可扩展性:随着更多节点加入网络,IOTA的网络结构让它的吞吐量增加。

2.零费用:IOTA网络上的转账不收取交易费;发送1个MIOTA,也正好收到1个MIOTA。

3.去中心化:在IOTA中,用户就是验证者。在用户之外,没有单独的矿工或验证者。理论上,这导致验证更去中心化。

4.量子免疫:IOTA的设计从根本上抵御量子计算机的威胁。

3.6 用例

IOTA的目标是成为物联网金融体系的支柱。此外,它还集成了加密信息传递和数据市场功能。这些功能都是IOTA设想的未来机器经济的一部分,包含数百万台机器实时交换数据和支付,包括电动汽车支付费用给充电站,全球天气传感器数据出售给天气预测站的科学家等。

IOTA适用于物联网因为它无需支付交易费。虽然它有许多理论用例,但IOTA还没有找到真正适合的产品市场。IOTA的文档说明中“使用案例”部分介绍的内容非常少而且不明确,只提到了“主要重点领域是物联网,特别是智能城市、基础设施、智能网络、供应链、运输等领域”。并不清楚这些用例是否真的需要稳定的支付流,而不是单一的预付款或定期结算。

某些情况下,相互不信任的两方不希望提前或延后付款,发送支付流允许任何一方在任何时候退出交易且不用损失一大笔钱。但目前看来,需要支付流的低价值交易市场相当小,且用户的转换成本高。

3.7 重点关注

我们对IOTA的实施主要有如下几点顾虑,这些顾虑让我们对其美好愿景非常怀疑:

1、IOTA协调员(Coordinator)是中心化的

o  IOTA网络目前依靠中心化的、闭源的“协调员”来保护其免受攻击。

o    IOTA项目组尚未给出明确的路线,说明何时以及如何移除协调员。

2、IOTA需要对物联网设备硬件进行更改

o  为了使IOTA达到其真正的潜力,必须在IOT设备中实施硬件更改,以使它们能够在IOTA网络上进行交易。

o  除非进行这些硬件更改,否则IOTA无法发挥其全部潜力,除非IOTA成为物联网支付和数据共享的标准,否则硬件公司不会被激励添加此新硬件。这很容易成为鸡和鸡蛋的问题。

o  IOTA的上市策略取决于其自身的成功,而且没有备份计划。

3、IOTA网络经历过崩溃

o  IOTA网络多次无法使用,并且还经历了崩溃。

o  由于bug或攻击,IOTA团队不得不关闭协调员,导致其网络无法使用。

o  Github和Reddit的评论表明,这个问题一直伴随着IOTA。

o  频繁故障加剧了IOTA对协调员的依赖,也使得IOTA备受关注,因为分布式网络的设计永远不会崩溃,也不会出现单点故障。

4、加密技术和软件漏洞

o  最值得关注的是NehaNarula和她的团队在麻省理工学院媒体实验室的数字货币计划中发现的IOTA的“软件漏洞”。

o  他们发现IOTA散列算法中的致命漏洞,IOTA团队从零开始构建其算法,这违反了“加密的黄金法则”——不要自己制作加密技术。

o  IOTA团队其后声称这个漏洞是他们已知的且故意的。他们称之为“复制保护”机制,以防止对IOTA的抄袭。他们声称保护协调员免受漏洞利用,但这不可能得到证实,因为协调员是闭源的。

o  他们故意允许开源软件存在漏洞,这违反了开源软件的精神。并且该团队拒绝透露是否存在其他已知的漏洞。

四 团队概括:

IOTA的概念最初于2014年形成,后由DavidSønstebø,Sergey Ivancheglo,Dominik Schiener和Serguei Popov博士在2015年创立。当时,几位创始人正致力于物联网硬件研究,他们开始发现物联网支付现有方案的局限性,于是创造了IOTA作为解决方案。

Serguei Popov 是CS的博士,专攻可能性理论,是白皮书作者,是Tangle架构的设计者。

Tangle协议的编码执行主要由Sergey Ivancheglo和Dominik Schiener实施。其中Sergey Ivancheglo也是NXT的创始人。

9月份瑞银 ( UBS ) 前首席信息官 ( CIO ) Oliver Bussmann也正式加盟。Oliver Bussmann是一位全球公认的技术思维领军人物和在跨国组织中实行大规模改革的推动者。2013至2016年,Oliver Bussmann 担任UBS 公司的CIO。在此期间,他成功领导了一次重大的IT变革,在集团范围内制定了一个新的创新构架并且确立了UBS 在发展金融服务区块链方面的优势地位。

五 融资分析

IOTA(供应量2,779,530,283,277,761 IOTA),IOTA供应量固定,因为它既没有采矿奖励也没有通胀。目前IOTA项目由总部位于柏林的非盈利组织IOTA基金会开发和管理。 由于是非盈利组织,也得到了德国政府资助。

基金会监督

IOTA是德国首家以加密货币进行资本化的完全受监管的非盈利性基金会。IOTA基金会非盈利是指通过做项目得到的收入都会使用在继续开发项目或者投入到新的项目之中,而不是被基金会中的领导层所占有。

基金会已经与大众和Innogy建立了合作关系,开发了基于IOTA的技术CarPass,这项技术能够为汽车提供安全的审计跟踪,数字识别和收费网络。而更多优秀的技术开发将会给IOTA带来更好的发展前景。

整个基金会拥有5%的代币。

认购时间:2015.1.25

融资额度:1337BTC(当时约为584,000美元)

流通性:上线交易平台:币安、Bitfinex、okex 等

市值排名:12

六 市场竞争:

随着连接互联网的传感器开始销售数据,或者随着支持微支付网络的商业模式开始爆发,未来这种市场可能会扩大。即使在这种情况下,IOTA也必须与闪电网络、Raiden和其它可能的微支付方案,以及EOS等微交易费区块链解决方案竞争。

六域链也是其竞争对手,还没有详细研究。

七 结论:

有向无环图(DAG)架构呈现一种有趣的新颖机制来组织分布式账本。尽管我们不相信DAG会使区块链过时,但它们可能提供了更合理的功能和折衷方案。像分布式账本领域的许多技术一样,DAG正处于初级阶段,大部分未经测试。我们期待在未来这一领域能有更进一步的研究。

尽管IOTA是首个构建DAG的重大项目之一。虽然基于DAG的系统可能构成未来加密生态系统的重要组成部分,但对IOTA的DAG实施持保留意见。

文当前IOTA价格:

币安:0.000148 BTCY≈¥ 7.025  涨跌幅:-0.73%

Bitfinex:$1.12USD≈¥  7.0423  涨跌幅:-5.00%

okex:0.00014794 BTC≈¥ 7.0294  涨跌幅:-0.39%

OTA白皮书地址:IOTA白皮书

区块浏览器:https://iotasear.ch/

官网:https://iota.org/

推荐阅读更多精彩内容