在part4皇钞,我們提到了“雙花”問題悼泌,作為系列文章的最后一章,本文會分析Tangle是如何具體解決該問題夹界,又是如何確認(rèn)歷時(shí)交易的馆里。
為了說明該問題,我們通過圖1-1的用例來研究:
正如圖1-1的用例所示,Alice 有 5i鸠踪,并且同時(shí)向Charlie 和 Bob轉(zhuǎn)賬5i以舒。這就導(dǎo)致了一個(gè)問題,我們不能同時(shí)認(rèn)為這兩筆轉(zhuǎn)賬交易時(shí)有效的慢哈,并且,根據(jù)Tangle 現(xiàn)有的技術(shù)方案永票,我們無法使用新交易來同時(shí)認(rèn)證這【Alice gives Bob 5i】和 【Alice gives Charlie 5i】兩筆交易卵贱,因?yàn)檫@會導(dǎo)致Alice的余額變成負(fù)數(shù)。
在學(xué)些the weighted random walk 的tip 選擇算法過程中侣集,我們知道會有一條分支其權(quán)重越來越大键俱,而權(quán)重較小的分支則會被拋棄。因此世分,iota 中的共識則是圍繞著 交易的有效性展開编振。然而,還是有一個(gè)問題臭埋,對于Bob 或Charlie來說踪央,他們怎么知道Alice 究竟將錢轉(zhuǎn)給了誰。在解決完“雙花”問題后瓢阴,最后需要解決的交易確認(rèn)問題畅蹂。
我們結(jié)合生活場景來舉一個(gè)例子。我們假設(shè) Bob 和 Charlie 都是一個(gè)恐龍模型販賣商荣恐,而Alice需要向他們其中一個(gè)人購買一個(gè)霸王龍液斜。如果Bob 和 Charlie看見tangle 中的轉(zhuǎn)賬交易后,立馬都將霸王龍模型發(fā)給Alice叠穆,可最后他們倆當(dāng)中只有一個(gè)人收到Alice的真實(shí)轉(zhuǎn)賬少漆。這可以是一個(gè)嚴(yán)重的問題,事實(shí)上硼被,比特幣是第一個(gè)解決該問題的區(qū)塊鏈技術(shù)示损。而Tangle通過引入 confirmation confidence 來解決該問題。confirmation confidence是衡量一筆交易在tangle 中的可信度嚷硫。
具體confirmation confidence的計(jì)算流程如下:
1.對需要確認(rèn)的交易X進(jìn)行100次 tip 選擇運(yùn)算屎媳。
2.計(jì)算在這100tips中,有多少個(gè)tip 選擇認(rèn)證的交易X论巍,假設(shè)這個(gè)數(shù)量為A烛谊。
3、confirmation confidence的值為 “A%”嘉汰。
換言之丹禀,一筆交易的信任值 則等價(jià)于認(rèn)證該交易數(shù)的百分比。但在實(shí)際計(jì)算中,并非所有的tip 交易都會被同等對待双泪,一些被認(rèn)為更重要的tip會持有更高的占比權(quán)重持搜。這是什么意思?我們通過圖1-2 的用例來詳細(xì)說明焙矛。
在圖1-2 的用例中葫盼,被黑色的后邊所包圍的交易其confidence的值超過95%,而交易[9] 則被四個(gè)tip 交易([7]村斟、[13]贫导、[11]、[12])中的兩個(gè)([13]蟆盹、[12])進(jìn)行選擇認(rèn)證孩灯。如果簡單按照百分比來計(jì)算,交易[9] 的confidence 值為50%逾滥。但正如我們剛剛提到峰档,并非所有的tip 交易都會被同等對待。在該用例中交易[7] 為lazy tip寨昙,而根據(jù)之前的章節(jié)較少,lazy tip 是不被鼓勵(lì)的讥巡,所以,它所占的百分比會稍微少些舔哪。因此尚卫,交易[9]的實(shí)際confidence值會更高些,在圖1-2 的用例被設(shè)定為0.54尸红。
現(xiàn)在吱涉,我們可以明確的告訴Bob 和 Charlie應(yīng)該什么時(shí)候?qū)酝觚埬P桶l(fā)送給Alice。當(dāng) Alice’s的其中一筆交易的 confidence 值到達(dá)一定閾值時(shí)外里,我們設(shè)定為95%怎爵,則可以認(rèn)為該筆交易所在分支基本不會被拋棄了。細(xì)心的讀者會注意盅蝗,我們用詞為“基本不會”鳖链,而不是“不可能”。因?yàn)槎漳绻鸄lice’s想刻意欺騙芙委,并且有足夠大算力的情況下,她可以 強(qiáng)行切換分支或者讓“雙花”支付成功狂秦。
我們接著圖1-1 的用例灌侣,舉一個(gè)Alice刻意欺騙的例子。假設(shè)這筆交易最后是支付給Charlie裂问,換言之侧啼,交易【Alice gives Charlie 5i】是被確認(rèn)的牛柒。Alice為了達(dá)到欺騙的目的,她將盡可能發(fā)起更多的交易痊乾,不斷嘗試提高她所提新分支得累積權(quán)重皮壁。如果她有足夠大的算力,她可以讓整個(gè)tangle網(wǎng)絡(luò)按照她提出的新分支演進(jìn)哪审,這樣一來蛾魄,她則可以輕松重寫歷史 。而原本交易【Alice gives Bob 5i】的confidence 值則可以從95% 下降為0湿滓。
圖1-3 則展示了整個(gè)欺騙流程:
在上述例子中滴须,只有當(dāng)Alice發(fā)送的交易數(shù)量超過其他所有人的總和或接近時(shí),才會出現(xiàn)這種問題茉稠。雖然在成熟和活躍的IOTA網(wǎng)絡(luò)中,算力攻擊不是主要風(fēng)險(xiǎn)把夸,但對于早期的IOTA來說而线,由于整個(gè)網(wǎng)絡(luò)都沒有足夠的交易量來避免系統(tǒng)免受算力攻擊。
因此恋日,出于安全考慮膀篮,我們采用了自愿和臨時(shí)不同的共識機(jī)制:協(xié)調(diào)者(the coordinator)。協(xié)調(diào)者的工作機(jī)制如下岂膳,每隔兩分鐘誓竿,協(xié)調(diào)者會發(fā)起一筆 里程碑交易( milestone transaction),而被 里程碑交易選定并認(rèn)證成功的交易,其confirmation confidence 值會設(shè)為100%谈截,即馬上確認(rèn)筷屡。在使協(xié)調(diào)者機(jī)制的情況下, Alice的第二筆交易將永遠(yuǎn)不會被選定確認(rèn)簸喂。雖然這回導(dǎo)致一定的中心化現(xiàn)象毙死,但該機(jī)制卻能在IOTA 網(wǎng)絡(luò)初期起到一個(gè)保護(hù)作用。直到IOTA自身足夠成熟喻鳄、活躍并且能夠抵御算力攻擊的情況下扼倘,我們將會去掉協(xié)調(diào)者機(jī)制,同時(shí)除呵,IOTA網(wǎng)絡(luò)也會變得更加高效再菊。
到這里,系列文章完畢颜曾,IOTA的源碼分析后續(xù)會逐步給出纠拔。