IOTA與Tangle:區塊鏈的下一個里程碑


  
  對有在關注區塊鏈技術與數位貨幣發展的讀者來說,“IOTA”這個名字必然如雷貫耳-做為繼比特幣(Bitcoin)、乙太幣(Ethereum)、萊特幣(Litecoin)、瑞波幣(Ripple)後另一個竄紅的幣種,IOTA標榜零手續費、高度安全性、可擴展性、及與物聯網應用的結合,而其與微軟、三星等國際級企業的「數據市集」(data marketplace)合作案,更帶給市場廣大的想像空間、促成其幣值在一日內飛漲70%,並受到各國主流媒體的矚目。
IOTA及其背後的技術究竟有何獨特之處,讓它在居於市場主流的區塊鏈應用中獨樹一幟,而獲得企業與投資者垂青?它具有何等潛力,能使你我未來的生活更加美好?且待筆者一一為大家解說。

纏結網絡(Tangle):一切的起點、IOTA的基石
  首先,我們必須先認知到,纏結網絡(Tangle)是一種有別於區塊鏈的技術。它的本質是一種有向無環圖(Directed Cyclic Graph, DCG),意即這個網絡中的所有交易紀錄具有持續前進、永不後退、非閉環的特性,使交易的認證與紀錄的串接富於彈性,賦與這個網絡高度的處理效率。



        
接著,讓我們來看看纏結網絡、及基於其所發展的IOTA特點:

1.  免交易成本:以出力取代付費
做為纏結網絡的參與者,當你發起交易時,你或服務你的完整結點(Host)便必須投入算力、協助驗證網絡中其他兩筆隨機的交易,從而將自身發起的交易接到纏結網絡上。如此一來,雖然仍是使用者付費,但改採「以役代金」方式,防止付不出高昂手續費的用戶被歧視,更有利於IOTA應用於小額交易。

2.  可擴展性:交易速度隨參與者增加而加快,交易封包大小無上限
承上所述,由於參與者必須負擔驗證交易的義務,當纏結網絡的社群擴張、交易需求增加時,驗證算力也會一同成長,加以目前纏結網絡並未限制整體擴展速度,驗證交易所需的算力不會如比特幣般高速成長,交易塞車的可能性大幅降低,使IOTA具有高度可擴展性(scalability),可望滿足高頻率的大量交易需求。
此外,由於纏結網絡上的交易在被驗證時無須講求順序、交易也可以被散布儲存在多樣設施中而仍被有效率的處理,每個交易封包可包含的交易筆數可以不設上限,進一步強化了IOTA發展的潛力。

3.  量子安全性:三進位加密法配合一次性簽署方案,減少量子電腦算力優勢
暴力推解,亦即通過一連串的試誤過程來嘗試破解經加密的內容。過去我們所仰賴的加密演算法,多是基於對電腦運算極限的了解,以令暴力推解趨於無效為目標而發展的。然而,這些傳統的加密演算法,在算力可達專用積體電路(ASIC)170億倍以上的量子電腦面前,以往長達數十億年的破解時間可能只在頃刻。有鑑於此,IOTA採用了一種特殊的三進位雜湊法Curl進行加密、並以Winternitz一次性簽署方案來產生私鑰,使量子電腦無法用巨量算力取得太多優勢,藉以確保網絡能被多數正直用戶所保護。

4.  發行量有限性:一次發行完畢,省去挖礦造成的算力浪費
IOTA的發行總量為()/2、約2,779.53萬億個(約當2,779.53百萬MIOTA),全部儲存在一個初始地址中,並經由創世交易(genesis transaction)傳送到其他創始開發者的帳戶中,終而開始在網絡上流通。纏結網絡的參與者驗證交易並不會產出額外的IOTA,故其只會付出能使其自身交易連結到網絡上的算力,不會花費無謂的心力與能源在推算一系列無意義的數值上。

5.  儲存容量要求低:精簡交易紀錄,減少必要儲存空間
為了避免必須的儲存空間隨著交易筆數增加而快速成長,IOTA採用了名為快照(snapshot)的技術,由開發團隊在必要時發起,將目標地址相同、業經驗證完畢的交易進行匯總,僅留下地址餘額紀錄,以釋出空間給未來的交易紀錄使用。這使運行IOTA完整節點所需要的儲存空間大幅減少,使一般家用電腦、甚至微小的物聯網裝置都能參與纏結網絡的運作。


IOTA基本交易架構:錢包類型與交易處理程序
  在了解IOTA與纏結網絡的基本特性後,就讓我們來看看IOTA的交易機制吧。

一、錢包與種子
  在創建用戶錢包時,使用者必須先在其用戶端(以離線方式)產生一組長度最多達81字元、由大寫英文字母A-Z及數字9所組成的密碼,做為存取錢包內餘額的唯一認證碼、亦即IOTA帳戶的種子(seed)。私鑰(private key)會基於種子(seed)經雜湊產生、做為簽署(signature)之用,並有專屬的對應交易用地址(address)IOTA用戶可以選擇的錢包類型包含以下兩種:

1.  完整錢包(Full Wallet):使用者兼纏結網絡的交易認證者
完整的錢包可產生供用戶收款轉帳、查詢餘額的大量私鑰及地址,並使用戶能發揮節點(node)功能、運行驗證交易必須的IOTA參照工具(IOTA Reference Implementation ,IRI)。要具備節點資格,用戶需設置公共IP、與一定數量以上的芳鄰(neighbor,其他節點)聯結、並確保自己有進行工作量驗證(proof of work, POW)的運算能力。在參與纏結網絡的運作後,一個節點的芳鄰也會定期統計該節點的工作量、從其他節點接收到的交易筆數等數據,若其過於怠惰,便會被褫奪節點資格。

2.  輕量錢包(Light Wallet):不參與認證的錢包
由於完整錢包的建立程序較複雜、需要一定程度的IT專業與對IOTA運作模式的了解,一般用戶多從輕量錢包入手。輕量錢包中同樣有產生地址功能,惟交易驗證與廣播程序必須由服務端(host),也就是一個完整節點(完整錢包的使用者)提供,故若當前服務端未積極運作,即可能導制交易被延宕,此時輕量錢包的用戶必須考慮換一個新的服務端。

二、交易處理程序
  錢包可以基於用戶的種子產生多組供交易使用的地址(address,同比特幣地址概念)及私鑰(private key,即提領地址內餘額的密碼),讓用戶可以收發IOTA。從發起交易起到交易被認證完畢,會經過以下重要歷程:

1.  確定主交易內容:分為多筆交易進行
日常生活的一個支付動作,在纏結網絡架構下須拆分成多筆交易來進行。舉例來說,從屬於我們錢包的地址A將餘額轉到他人錢包的地址B,會需要透過以下幾筆交易來共同完成:依交易金額增加B餘額、從A扣除全部餘額、向B傳送來自A的簽署,及將A地址交易後應有餘額移轉到同錢包的地址A* 。在交易處理上,這四筆交易旨在達成同一個目的(將部份餘額由A轉至B),一般會以封包(bundle)形式做認證。

2.  添附其他交易:選擇要協助認證的交易
具有完整節點的用戶可以隨機、或採用特定演算法自纏結網絡上選擇兩筆尚未被認證的交易(tip),添附到自己發起的交易上。兩筆被添附的交易分別稱為主幹交易(trunk transaction)及分枝交易(branch transaction),節點必須判斷其格式是否合規、交易內容有無衝突之處,也經由這些交易將自己發起的交易附加到纏結網絡上。若多筆交易屬於同一個封包,則索引值(index)較小的交易會自動選擇該值較大的交易為主幹交易。值得注意的是,即便某兩筆交易間存在衝突,節點仍可以將其附加到纏結網絡上,再隨著網絡向前伸展而決定要使哪一筆被遺棄(orphaned)

3.  進行工作量驗證:求解符合特定條件的亂數
與比特幣的工作量驗證(Proof of Work,POW)原理類似,IOTA節點必須嘗試求解一個亂數(nonce),使該亂數的雜湊數(hash)符合一定規則。經由這個過程,節點投入自己的算力來幫助其他用戶驗證交易,形同以勞務代替了發起交易的手續費。此外,一個節點投入越多算力,其本身的交易也會被賦予越大的權重(weight)、更容易被優先認證,以鼓勵用戶積極參與。

4.  交易簽署:適用於涉及價值移轉的交易
IOTA
的交易類型主要有兩種:向其它地址進行餘額移轉、及單純發送訊息。若為前者,用戶必須在求出合規的亂數(nonce)後,以與轉出地址相應的私鑰(private key)進行簽署(signature),以表彰自己對轉出地址內IOTA餘額的所有權。簽署的動作會在客戶端完成,以減少種子或私鑰被第三者盜取的風險。然而,由於IOTA採用Winternitz一次性簽署方案(Winternitz one-time signature scheme),當這份簽署隨著交易內容被廣播出去時,部分私鑰將可被第三者窺見,故同一份私鑰只能用於簽署一筆交易。

5.  發送交易封包:等待其他節點認證
將自己發起的交易內容、簽署(若有涉及餘額移轉的話)、解得的某個亂數(nonce)、協助驗證的兩筆交易等資訊打包後,即可向其他節點進行廣播(broadcast),等待其他節點協助認證。已存在纏結網絡上的未認證交易可能被後來的交易直接或間接認證,認證的次數越多,安全性越高。各節點在收到封包後,僅會就封包內的交易全部給與認可、或全部否決。

6.  地址作廢:同一地址可無限轉入、但僅能轉出一次
用戶錢包轄下的地址,在接收IOTA時可以無限次數的重複使用、但只要將地址內的餘額轉出,該地址就必須作廢、並將交易後餘額移轉給屬於同錢包的另一地址。這是因為,當用戶對外發送交易時,簽署用的私鑰會有部分可被窺見,若重複使用,私鑰被破解的風險將大幅增加、使有心人可能藉此偽造簽署欄位、從而盜取對應地址中的餘額。


  最後,當纏結網絡上已經認證的交易累計達一定程度後,開發者團隊會進行快照(snapshot),將歸屬到同一地址的交易進行匯總、清除多餘的交易資料而僅留下餘額紀錄,以避免節點需要的儲存空間擴增太快。

  


應用領域:小額支付、物聯網與數據交易
  那麼,IOTA能夠如何服務於我們的生活呢?
以下是目前市場普遍期待的潛在應用領域:

1.  小額交易:快速簡便、無手續費
承前所述,只要使用者願意付出算力、幫助其他人認證交易,IOTA本身是沒有交易手續費的。此外,基於纏結網絡的設計,其目前交易速度已達每秒38筆、相較基於區塊鏈技術的比特幣(每秒3~4)與以太坊(每秒15)快上許多、未來更可望隨用戶群擴大、認證參與者增加而進一步加速。因此,IOTA特別適用於日常的小額支付。

2. 物聯網:裝置間數據交換
IOTA
利用快照(snapshot)技術來不定期清除累積的交易紀錄,將運行完整結點所需要的儲存空間控制在5GB左右,使一般物聯網裝置都能輕易藉由纏結網絡來交換數據、甚或結合交易功能,應用於多種支付場景。舉例來說,日前在保時捷創新大賽中奪得亞軍的FAPSY項目,即藉由導入IOTA來使車輛加油時能自動進行付費。福斯汽車也與IOTA合作,利用纏結網絡來為聯網車輛的行駛數據進行加密傳輸。


3.  數據交易:安全的數據傳輸與儲存
在這個「數據為王」的時代,任何一絲微小的數據都是一種資產,富於價值、可供交易且必須被妥善保護。IOTA的開發團隊已宣布與包含微軟、三星、思科、戴姆勒在內的20餘家國際級企業共同實驗數據市集(data marketplace)專案,嘗試利用纏結網絡來儲存並傳輸來自世界各地、橫跨產業、環境、醫療等各領域數據,並建立一個開放的市場,讓廠商、個人、甚至是聯網設備本身都能在市集中買賣數據,預期可達到優化產品設計、增加作業效率、促進人工智慧發展等目標。



潛在問題:可能的攻擊類型與使用限制
  看完了IOTA的基本運作原理與應用領域後,想必還有一個問題在許多人心中懸而未解它安全嗎?

遺憾的是,目前我們無法太快做出肯定的結論。

IOTA的開發團隊已針對重覆花費(double-spending,亦即就同一塊錢花兩次)類型的攻擊進行多種樣態分析[註一]、並研擬應對方針。然而,纏結網絡還有一些原生性的風險與問題存在,是我們必須注意的:

1.  算力壟斷風險
相較於比特幣可能面對的51%攻擊,纏結網絡由於缺乏礦工維護,預估僅需約34%的算力即可能達成壟斷目的、使網絡中交易的不可逆性備受威脅。鑒於目前纏結網絡的節點算力仍低、交易撿選及驗證規則未有定論,IOTA暫時採用了協調單位(coordinator)的設計,由這個特殊的節點每分鐘定時簽署並發送名為里程碑(milestone)的特殊交易,以便提示各節點纏結網絡的發展路徑、防止其不小心認證到惡意交易、標註已完成的交易,並方便一般用戶查詢其交易認證進度。未來,在網絡成長達一定規模後,協調單位的功能預計將由蒙地卡羅隨機漫步過程(MCRW,屬於馬可夫鏈蒙地卡羅(MCMC)的一種態樣)取代,藉由隨機發送的大量交易來降低惡意交易被選取的機會,從而降低此項風險。

2.  服務阻斷攻擊
零交易手續費是一把雙面刃對一般用戶而言,它可以降低交易門檻;對惡意用戶而言,它卻等同為其敞開了服務阻斷攻擊(denial of service, DOS)的大門-只要有足夠算力執行工作量證明(POW),任何人都可以向纏結網絡灌輸大量垃圾交易(或垃圾訊息)、造成節點所需的儲存容量高速成長,進而癱瘓其運作、或迫使驗證機制朝集中化發展。當IOTA節點被部屬於物聯網裝置上時,這尤其是個隱憂,因為此類裝置一般缺乏完整的資安防護機制,容易淪為惡意人士操縱的傀儡。

3.  一次性簽署問題
基於安全理由,IOTA採用Winternitz一次性簽署方案(Winternitz one-time signature scheme),使由種子產生的每組私鑰與地址都只能使用一次(除非該地址僅用於收款、從未轉出餘額)。然而,這個機制在交易實務上會對使用者造成極大的困擾-你必須等待一筆交易被認證完成、餘額被轉出到你錢包的下一組地址、且該地址也被連接到纏結網絡上時,你才能查詢到錢包餘額、並進行下一筆交易。這對頻繁進行小額交易的使用者而言,不啻是一場噩夢。

4.  快照技術問題
快照(snapshot),讓纏結網絡能彙整已被驗證的交易,節省運行節點所需的儲存空間。然而,在大部分商務場景中,代表流量的交易紀錄與代表存量的餘額同等重要、也是審計勾稽不可或缺的資料。目前,快照只由開發團隊在有重大版本更新時主動進行,加以社群仍在成長階段、交易筆數有限,還不致構成太大的困擾。然而,當交易增加、應用場景拓寬後,快照進行的時機、方式、區域、與程度,都將嚴重影響整個網絡的發展。

總結:IOTA是美好的願景、但短期內難以取代區塊鏈地位
所以,我們能否就此論定,IOTA將是區塊鏈的未來式、而目前檯面上所有基於區塊鏈的數位貨幣終將沒落?

筆者認為,難以如此論定。理由有二:

首先,IOTA可謂專為物聯網應用而設計,盡量壓低帳本大小、減少節點運作所需算力,都是為了讓聯網裝置也能輕鬆參與網絡,以促進數據的交流與儲存。在涉及的交易規模較大、內容較複雜、涉及的單位較多、安全性要求較高的領域(:跨境支付、證券交割結算、保險理賠等),基於傳統區塊鏈技術的以太坊、瑞波幣仍有較亮眼的表現。

其次,纏結網絡(tangle)目前的規模仍不夠大、必須仰賴協調單位(coordinator)來引領其安定成長、防範可能的34%攻擊,故目前尚未真正達到完全的分散式運作。考量認證規則、快照機制、攻擊防範措施等問題,在IOTA可以被正式應用於商務交易前,還有很長的一段路要走。

雖然如此,筆者仍樂觀看待IOTA的發展,期待不久之後會有更多的應用案例,使這種新技術能帶給我們更美好的未來。

參考資料:
1.      IOTA Foundation,“The Tangle”(ver 1.3, Oct1, 2017)
2.      Reddit,“Coordinator, explained.”
3.      The Tangler,“The tech behind IOTA explained.”
4.      IOTA Guide,“The Anatomy of a Transaction”
5.      IOTA Guide,“Bundles”
6.    IOTA China,“IOTA將會改變物聯網世界:一種沒有區塊鏈的加密貨幣"
7.       IOTA China,“IOTA科普系列:IOTA地址如何工作?
8.       Louie_lu’s blog, “IOTA輕量錢包、完整錢包與IOTA Node的關係
9.       數位時代,“IoT量身設計區塊鏈3.0 IOTA-專訪年僅23歲技術傳教士
10.       巴比特, “關於最近火爆加密貨幣市場的MIOTA風險提示

附註一已被IOTA開發團隊考慮的重覆花費攻擊態樣及因應措施:
1.  附生鏈開拓法(parasite chain attack)
攻擊者可以嘗試發展一條專屬的私鏈(parasite chain),該鏈上的交易多彼此驗證、與主鏈的關聯性低、但存在為數眾多的未認證交易,以吸引其他節點來幫助其發展、終而取代主鏈地位。這個攻擊方法的成功機率,主要取決於各節點選擇添附交易的規則-若為純粹的隨機選取,則很可能掉入攻擊者的陷阱,成為私鏈發展的幫兇。因此,IOTA開發團隊建議採用一套名為馬可夫鍊蒙地卡羅(MCMC)的演算法,減少正直節點選到支鏈上未認證交易的機率。

2.  權重放大法(large weight attack)
為了鼓勵節點幫助他人認證交易,其本身發起的交易會被賦予權重(weight),正比於其所付出的算力;權重越大的交易,一般會越早被其它節點所認證。因此,攻擊者可以傾其算力來給重覆花費的那筆交易極大的權
重,設法讓纏結網絡以這筆交易為基礎繼續發展、導致原始交易成為孤兒封包,不再是全網的共識。有鑑於此,IOTA開發團隊建議為每筆交易的權重設定上限、且各節點在面對存在衝突的兩筆交易時,可採用馬可夫鍊蒙地卡羅模擬(MCMC)來隨機選取一筆未認證交易,再以該交易認證的那筆交易為準。這些措施也是IOTA能在量子電腦的算力下保持安全的原因之一。

3.  分裂平行鏈攻擊(splitting attack)
即便節點已普遍經採用前述的MCMC演算法、且單筆交易有權重限制,攻擊者仍可以使纏結網絡產生分叉、並保持複數條分叉以相近的速度成長,藉此重覆使用其帳戶內的餘額。為了降低平行鏈形成的機率,節點在面對兩條總權重相近的發展分支時,必須能對微小權重差異產生靈敏的反應、令隨機漫步的起點盡量落在分支發生前,使選擇兩條分支上未認證交易的機率差異盡量擴大、終而使其中一條成為孤兒鏈,終結平行並進的情勢。

附註二:筆者的IOTA地址如下
IDMPJ9AKIIDZCF9DYIVZSYGVIIPIG9RXXRAHMDCQYHTLEIJXLAEDBIWXPJMPFNLIZDLAFEAUGTUAUGOMDCLPYKPKTW
若讀者覺得這篇文章對您有幫助,請不吝表達您的支持。

留言