IOTA有什么技術(shù)創(chuàng)新?是什么鏈,什么共識(shí)機(jī)制刽射,有什么獨(dú)特的技術(shù)上的創(chuàng)新?
?IOTA是為物聯(lián)網(wǎng)(IoT)而設(shè)計(jì)的一個(gè)革命性的新型交易結(jié)算和數(shù)據(jù)轉(zhuǎn)移層剃执。它基于新型的分布式賬本——Tangle(纏結(jié))誓禁。Tangle能夠克服現(xiàn)有區(qū)塊鏈設(shè)計(jì)中的低效性,并為去中心化P2P系統(tǒng)共識(shí)的達(dá)成創(chuàng)造了一種新方法肾档。
IOTA的技術(shù)細(xì)節(jié)
Tangle(纏結(jié))是基于有向無(wú)環(huán)圖結(jié)構(gòu)(DAG)摹恰,而不是一種連續(xù)的鏈?zhǔn)郊軜?gòu),定期添加區(qū)塊怒见。通過(guò)DAG俗慈,IOTA能夠?qū)崿F(xiàn)較高的交易吞吐量(通過(guò)平行驗(yàn)證),并且不收取交易手續(xù)費(fèi)遣耍。在Tangle中闺阱,每個(gè)節(jié)點(diǎn)都是代表著一個(gè)交易。隨著Tangle的不斷發(fā)展舵变,越來(lái)越多的參與者都將發(fā)起交易酣溃,整個(gè)系統(tǒng)也會(huì)變得越來(lái)越安全和快速,確認(rèn)時(shí)間會(huì)縮短纪隙,交易也完成的越來(lái)越快赊豌。
在Tangle這個(gè)由交易組成的有向無(wú)環(huán)圖里,一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)要發(fā)起一筆新的交易時(shí)绵咱,需要在Tangle中找2筆其他交易去驗(yàn)證碘饼,并且將自己新發(fā)起的交易指向這兩筆交易,整個(gè)Tangle就是這樣一點(diǎn)一點(diǎn)擴(kuò)大出去的。正因?yàn)檫@樣的設(shè)計(jì)艾恼,整個(gè)網(wǎng)絡(luò)中驗(yàn)證交易的責(zé)任從傳統(tǒng)的礦工轉(zhuǎn)移到了每個(gè)網(wǎng)絡(luò)的使用者身上——你想要發(fā)起一筆交易住涉,就必須幫著一起驗(yàn)證網(wǎng)絡(luò)中的其他交易。
上圖這個(gè)例子是截取了Tangle中的一部分(Tangle擴(kuò)展的方向是從左到右钠绍,越往右的交易越新)秆吵,交易A指向交易B和D,那么A就是直接驗(yàn)證了B和D(A directly verified B and D)五慈;A雖然沒有直接指向F纳寂,但是A到F之間有一條通路(path),那么我們可以說(shuō)A間接驗(yàn)證了F(A indirectly verified F)泻拦。上圖中A和C稱為2個(gè)tip毙芜,tip是指還沒有任何其他交易直接或者間接指向他們。
一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)起一筆新的交易時(shí)争拐,除了需要找Tangle里2筆其他交易去驗(yàn)證之外腋粥,還需要做一個(gè)POW計(jì)算。這個(gè)POW計(jì)算比比特幣的POW計(jì)算要簡(jiǎn)單很多架曹,一臺(tái)普通電腦可能只需要5-10分鐘就能完成計(jì)算隘冲。IOTA設(shè)計(jì)POW這一步是為了防止有人惡意發(fā)很多transaction從而阻塞整個(gè)網(wǎng)絡(luò),或者更進(jìn)一步通過(guò)更改整個(gè)DAG的形狀而達(dá)成一些攻擊绑雄。上圖中展辞,每個(gè)表示交易的小方塊里右下角的數(shù)字被稱為權(quán)重(weight),這個(gè)weight是和POW所付出的計(jì)算量相關(guān)的万牺,舉個(gè)例子罗珍,假如有2筆交易,他們通過(guò)POW算出來(lái)的二進(jìn)制值分別為x和y脚粟,x的開頭是2個(gè)0覆旱,y的開頭是4個(gè)0,那得到y(tǒng)所需要的計(jì)算量一定是大于x的核无,所以交易y的weight會(huì)比交易x的weight大扣唱。在IOTA里,weight的取值范圍是3^n团南,也就是weight的取值只可能是1噪沙,3,9已慢,27…
方塊里左上角的數(shù)字被稱為累積權(quán)重(cumulative weight)曲聂,這個(gè)cumulative weight等于這個(gè)交易自己的weight 加上所有直接或間接指向它的交易的weight的總和霹购。比如交易F佑惠,直接或間接指向F的有A,B,C膜楷,E旭咽,所以F的Cumulative Weight = 1+3+1+1+3=9.
除了weight和cumulative weight,每個(gè)交易還有一個(gè)分?jǐn)?shù)(score)赌厅,這個(gè)score等于這個(gè)交易自己的weight加上所有這個(gè)交易直接或者間接驗(yàn)證了的交易的weight的總和穷绵,舉個(gè)例子,假如只看上圖的話特愿,E直接或間接的指向了除了A仲墨,B,C揍障,D之外的所有交易目养,所以E的score=1+3+1+1+1=7。
這里可以看出cumulative weight是一個(gè)可變值毒嫡,從發(fā)出交易之后這個(gè)值會(huì)一直增加癌蚁,score是一個(gè)不可變的值,交易發(fā)出之后兜畸,它的score就定了努释。這個(gè)cumulative weight和score能用來(lái)干什么呢?且看下面繼續(xù)分析咬摇。
假如我要發(fā)起一個(gè)交易伐蒂,我要怎么選2個(gè)交易去驗(yàn)證呢?理論上你可以隨便選肛鹏。你可以隨機(jī)選擇網(wǎng)絡(luò)中的2個(gè)交易饿自,或者你也可以永遠(yuǎn)只選幾個(gè)很老的交易(在Tangle中處于很左邊的位置的交易)。但是一個(gè)健康的Tangle應(yīng)該是不斷有人發(fā)起新的交易形成新的tips龄坪,這些tips也應(yīng)該盡快被之后來(lái)的交易所驗(yàn)證昭雌。所以選擇2個(gè)交易時(shí),我們更應(yīng)該傾向選擇tips健田。
那一筆交易要怎么才能算成功確認(rèn)呢烛卧?這里要介紹一個(gè)非常重要的概念,叫做Finality(最終確認(rèn)性)妓局。如果我們說(shuō)某一個(gè)交易或者轉(zhuǎn)賬在某一個(gè)分布式的賬本上被“最終確認(rèn)”总放,那么這個(gè)交易無(wú)論發(fā)生什么,也無(wú)法被回滾和撤銷好爬。
大家可能覺得局雄,不對(duì)啊,區(qū)塊鏈的一個(gè)基本特性不就是“歷史不可更改”么存炮?
如果我們假設(shè)比特幣不會(huì)出現(xiàn)51%攻擊炬搭,那么隨著區(qū)塊鏈的增長(zhǎng)蜈漓,你的交易被逆轉(zhuǎn)的可能性是越來(lái)越低。你對(duì)這個(gè)交易被確認(rèn)的“信心”也越來(lái)越高宫盔。IOTA里呢融虽,這個(gè)“信心”是可能變高也可能變低的。IOTA里交易的確認(rèn)是這樣一個(gè)“信心值”灼芭,這個(gè)信心值=當(dāng)前所有tips中有额,有多少tips存在一條能連通到你的交易的路徑,或者換句話說(shuō)彼绷,當(dāng)前有多少tips間接確認(rèn)了你的交易巍佑。假設(shè)當(dāng)前一共有100個(gè)tips,其中有90個(gè)tips間接確認(rèn)了你的交易寄悯,那你的這條交易就是90%確認(rèn)句狼。如果我能造出100個(gè)新的tips使得這100個(gè)tips都不間接確認(rèn)你的交易,那么現(xiàn)在你的交易就變成只有45%確認(rèn)了热某。相信你看到這兒不難看出腻菇,一個(gè)交易要想得到一個(gè)足夠高的確認(rèn)信心,那需要等待的時(shí)間也不短昔馋。如果每個(gè)交易都想要超過(guò)50%的確認(rèn)信心的話筹吐,那網(wǎng)絡(luò)中交易的吞吐量并沒有實(shí)質(zhì)性比比特幣這些傳統(tǒng)的區(qū)塊鏈提高到哪里去。IOTA更靈活的地方是體現(xiàn)在交易的延遲上秘遏,因?yàn)槿绻氵x擇只要10%的確認(rèn)信心的話丘薛,一筆交易被對(duì)方接受的速度會(huì)快很多。
IOTA共識(shí)機(jī)制創(chuàng)新
區(qū)塊鏈共識(shí)是通過(guò)一個(gè)非常嚴(yán)格的機(jī)制完成的邦危,區(qū)塊鏈中添加下一個(gè)區(qū)塊需要多方進(jìn)行競(jìng)爭(zhēng)洋侨,并獲取區(qū)塊獎(jiǎng)勵(lì)或交易手續(xù)費(fèi)。正因如此倦蚪,共識(shí)和交易生成是分離開的希坚,并且由網(wǎng)絡(luò)的一小部分人來(lái)完成,通常會(huì)設(shè)置較高門檻(就像比特幣一樣)陵且,這樣會(huì)導(dǎo)致進(jìn)一步的中心化裁僧。
在IOTA系統(tǒng)中,網(wǎng)絡(luò)中的每位參與者都能進(jìn)行交易并且積極參與共識(shí)慕购。更具體點(diǎn)說(shuō)聊疲,你直接定位了兩筆交易(主交易和分支交易),且間接在子tangle中定位其它交易沪悲。通過(guò)這種方式获洲,驗(yàn)證就能同步進(jìn)行,網(wǎng)絡(luò)能夠保持完全去中心化殿如,不需要礦工傳遞信任贡珊,也不需要支付交易手續(xù)費(fèi)最爬。
每個(gè)點(diǎn)都是一個(gè)交易。IOTA 中不再有區(qū)塊的概念飞崖,共識(shí)的最小單位是交易。不像比特幣只有一條鏈谨胞,這是一個(gè)網(wǎng)狀結(jié)構(gòu)固歪,會(huì)不斷往外擴(kuò)散。
DAG 結(jié)構(gòu)非常適合高并發(fā)且小數(shù)據(jù)交易的 IoT 場(chǎng)景胯努。
在 IOTA 里發(fā)起一筆交易牢裳,是怎么樣的流程呢?答:你需要先找到網(wǎng)絡(luò)里的兩筆交易叶沛,驗(yàn)證它們的合法性蒲讯,然后做一點(diǎn)小小的 PoW(就是付出一些計(jì)算),把自己的交易與它們綁定灰署,再?gòu)V播到網(wǎng)絡(luò)判帮。
你的交易會(huì)被后來(lái)的交易以相同的方式驗(yàn)證。如果驗(yàn)證你交易的其他交易越多溉箕,則你的交易的確定性越高晦墙。當(dāng)達(dá)到一個(gè)閾值時(shí),就認(rèn)為這個(gè)交易被確定了(這和比特幣 6 個(gè)區(qū)塊確定交易狀態(tài)的思想一致)
IOTA 把算力作為交易的一部分肴茄。只要你想加入這個(gè)網(wǎng)絡(luò)晌畅,那必須先成為礦工,做出一點(diǎn) PoW 貢獻(xiàn)寡痰。如果想不做貢獻(xiàn)吃白食抗楔,不好意思,我們不認(rèn)可你廣播的交易拦坠。由于人人都做了 PoW连躏,因此才能做到零交易費(fèi)。
那壞人故意讓非法交易通過(guò)驗(yàn)證怎么辦贞滨?網(wǎng)絡(luò)里會(huì)充滿著大量非法交易嗎反粥?IOTA 的思想是這樣的,節(jié)點(diǎn)會(huì)計(jì)算每個(gè)交易的權(quán)重值疲迂,選擇權(quán)重高的交易來(lái)進(jìn)行驗(yàn)證才顿,這會(huì)有助于增加自己的交易被后來(lái)交易驗(yàn)證的可能性。如果你綁定非法交易尤蒿,那后來(lái)的交易則不會(huì)選擇你的交易來(lái)驗(yàn)證郑气。時(shí)間一長(zhǎng),這個(gè)交易就被網(wǎng)絡(luò)拋棄了腰池,不再是網(wǎng)絡(luò)的一部分尾组。
其他創(chuàng)新:
三元邏輯
IOTA 整個(gè)網(wǎng)絡(luò)都用三進(jìn)制來(lái)描述
Trit:類比 bit忙芒,可能的值有 1 0 -1
Tryte:類比 byte,1 個(gè) tryte 由 3 個(gè) trit 組成讳侨,能表示 27 個(gè)值呵萨,用 ‘a(chǎn), A-Z’ 來(lái)表示這些值。
比如 IOTA 的 Seed 是 81 Tryte跨跨,Address 是 90 Tryte潮峦,都以三進(jìn)制來(lái)描述。
IOTA 使用的哈希函數(shù)名為 Curl勇婴,是一個(gè)三進(jìn)制算法忱嘹,由 Keccak (SHA-3) 的發(fā)明者設(shè)計(jì)。Curl 被設(shè)計(jì)用于 IoT 設(shè)備耕渴,是世界上第一個(gè)三進(jìn)制哈希算法拘悦。
IOTA 團(tuán)隊(duì)認(rèn)為,三進(jìn)制架構(gòu)的電路功耗低橱脸,適合 IoT 設(shè)備础米,但他們似乎忽視了傳統(tǒng)計(jì)算機(jī)都是基于二進(jìn)制電路的。如果傳統(tǒng)計(jì)算機(jī)要運(yùn)行三進(jìn)制算法添诉,得怎么做椭盏?需要先模擬一個(gè)三進(jìn)制電路,然后進(jìn)行相應(yīng)的計(jì)算吻商。中間加了一層掏颊,這效率肯定下降,屬于吃力不討好艾帐。
IOTA 基金正在研發(fā) IoT 異步三態(tài)處理器 JINN乌叶,用于集成到 IoT 設(shè)備里∑獍郑可能這也是團(tuán)隊(duì)的商業(yè)規(guī)劃之一(處理器+網(wǎng)絡(luò)僅此一家准浴,IoT 行業(yè)就盡在我等手中了)
抗量子
IOTA 使用的簽名算法是 Winternitz one-time signature (W-OTS) ,這是一種后量子簽名算法捎稚,可以抵御量子攻擊乐横。
就如同其名,W-OTS 算法是 one-time 的今野,即簽過(guò)一次名后就不能重復(fù)使用葡公,否則會(huì)有丟錢的風(fēng)險(xiǎn)。你可以一個(gè)地址多次打錢条霜,但取一次錢(取錢需要簽名)后就不能用了催什,得換新地址。
W-OTS 的一個(gè)缺點(diǎn)是簽名長(zhǎng)度特別大宰睡,這也是抗量子簽名普遍的缺點(diǎn)蒲凶。IOTA 的單個(gè)交易編碼后有 2673 trytes(大約為 281.96 bytes)气筋,但簽名占了 81%(2187 trytes)。對(duì)于 IoT 設(shè)備旋圆,這可能是一個(gè)很大的挑戰(zhàn)宠默。
中心化爭(zhēng)議?
交易確認(rèn)的信心值居然可以那么簡(jiǎn)單就改變灵巧,這種情況很恐怖吧搀矫?IOTA現(xiàn)在是怎么處理這個(gè)問(wèn)題的呢?很簡(jiǎn)單孩等,他們?cè)诳蛻舳死飳懰懒艘粋€(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的地址艾君,這個(gè)節(jié)點(diǎn)叫coordinator采够,coordinator是IOTA團(tuán)隊(duì)維護(hù)的一個(gè)閉源的component肄方,coordinator每分鐘會(huì)發(fā)一條交易,為了區(qū)別這個(gè)特殊交易和別的交易蹬癌,coordinator發(fā)出的交易稱為milestone权她。IOTA現(xiàn)在默認(rèn)所有被milestone間接確認(rèn)的交易都是100%確認(rèn)的狀態(tài)。因?yàn)闆]有人可以偽造coordinator的交易逝薪,所以這個(gè)辦法是最直接隅要,最簡(jiǎn)單的解決辦法。那么問(wèn)題來(lái)了董济,這樣整個(gè)IOTA網(wǎng)絡(luò)不就成了coordinator一個(gè)人說(shuō)的算了嗎步清?是的。虏肾。廓啊。很多幣圈大佬和學(xué)者都有指出過(guò)這個(gè)問(wèn)題,稱IOTA完全就是一個(gè)中心化的系統(tǒng)封豪。IOTA團(tuán)隊(duì)也反擊稱coordinator只是在IOTA還沒有被大規(guī)模應(yīng)用前的一個(gè)臨時(shí)方案谴轮。他只是初期出來(lái)帶一下節(jié)奏,等IOTA整體網(wǎng)絡(luò)的負(fù)載上去之后吹埠,會(huì)移除coordinator第步。但關(guān)鍵的問(wèn)題在于,如何移除coordinator缘琅?或者如何建立一個(gè)具有良性激勵(lì)機(jī)制的“coordinator集團(tuán)”粘都, IOTA團(tuán)隊(duì)并沒有給出完美的答案,社區(qū)的一種觀點(diǎn)是刷袍, IOTA用復(fù)雜的參數(shù)和ledger維護(hù)的方法驯杜,包裹了從根本上沒有解決的類似“權(quán)益證明”(POS)的問(wèn)題。
IOTA對(duì)于上面的觀點(diǎn)也做出了一些反駁做个,他們認(rèn)為IOTA因?yàn)闆]有礦工和區(qū)塊的概念鸽心,所以整個(gè)網(wǎng)絡(luò)的算力可以大致等同于整個(gè)網(wǎng)絡(luò)的交易吞吐量(Throughput)滚局,理想狀態(tài)下,如果吞吐量大了顽频,上面說(shuō)的那種把交易確認(rèn)信心值降低的攻擊方式不會(huì)很簡(jiǎn)單藤肢,因?yàn)槿绻蟛糠纸灰琢髁慷际莵?lái)自誠(chéng)實(shí)的好節(jié)點(diǎn),都跟著規(guī)則走糯景,那么一個(gè)attacker通過(guò)添加沒用的tips來(lái)降低一個(gè)交易的確認(rèn)信心會(huì)變得杯水車薪嘁圈。IOTA的白皮書里提到,只要attacker不掌握1/3以上的算力蟀淮,那么attack成功的概率會(huì)很低最住。我們來(lái)計(jì)算一下,現(xiàn)在IOTA整個(gè)網(wǎng)絡(luò)的交易吞吐量還很低怠惶,大約每小時(shí)1500個(gè)交易涨缚。attacker如果能發(fā)每小時(shí)500個(gè)交易就足以可以改變Tangle的形狀,attacker如果能每小時(shí)發(fā)750個(gè)交易(每5秒一個(gè)交易)策治,那么基本上整個(gè)網(wǎng)絡(luò)他一個(gè)人就能說(shuō)的算了脓魏。5秒一個(gè)交易并不是很難達(dá)到的一個(gè)目標(biāo),所以現(xiàn)在IOTA放了coordinator這么一個(gè)網(wǎng)絡(luò)秩序的維護(hù)者在里面通惫。