Conflux吐槽君:IOTA物聯網電磁爐-讓PoW的耗電沒有遺憾

鑑於有不少小夥伴反映,覺得區塊鏈技術圈亂象橫生,魚龍混雜,導致大家很難去辨識哪些是真正的技術。甚至有些人,打着說技術的名號,其實自己本身都沒弄懂弄明白,只是懂個皮毛,就開始拿着各種技術專有名詞去唬人。這樣的現象,導致想好好學習技術知識的小夥伴們甚至會被混淆和誤導,學到和接收到的是錯誤的信息。小編對於存在的這樣的亂象也深感痛心,作爲一支來自與清華姚班的公鏈團隊,Conflux的小夥伴們,決定來幫助真正想學習技術的大家!推出《吐槽君小C》專欄,小C會用最直接,最犀利的言語來道出區塊鏈項目技術的優勢劣勢,真正講清楚技術,講清楚技術之間的區別,讓大家對技術和整個行業有更深刻的瞭解認知,本文就是Conflux吐槽君第一期~

一個荒唐的故事

幾年前,打車平臺激烈大戰的時候,有這樣一家創業公司橫空出世,號稱實現了零打車費,從根本上解決了人們出行中的痛點。而實現的方式是,讓用戶自己買輛車,然後自己給自己當司機。讓服務需求方自己給自己提供服務,從而節省了服務費。這一想法讓投資人非常驚訝,然後將創業者打出門去。

上面這個故事是小C我編的。但在區塊鏈這個圈子裏,卻真的有這樣一個公鏈項目,憑藉着區塊鏈的技術認知門檻,編概念講故事,號稱解決了區塊鏈+物聯網的痛點。這個項目在區塊鏈泡沫最高的時候,一度登上了市值榜TOP10。這就是小C今天的要和大家講的項目:IOTA。

IOTA是個啥?

首先,IOTA是一個使用DAG賬本結構的區塊鏈系統。(注:DAG,Directed Acyclic Graph,中文全稱“有向無環圖”,所謂DAG結構,就是讓每個區塊或交易引用多個區塊或交易作爲父親。這樣所有的區塊或交易之間的父子關係構成一個有向圖。每個區塊或交易必須引用比自己早的交易,因此,這些區塊或交易的父子關係不可能出現循環。因此,這個結構被稱爲有向無環圖) 它的賬本數據結構叫做Tangle,翻譯成中文就是“糾纏,混亂”的意思。沒錯,這個名字非常貼切。因爲小C從研究IOTA的第一天開始,就被IOTA技術上各種奇葩不靠譜的方案繞暈了。

IOTA的項目願景非常美好:它通過無區塊鏈,無交易費,無限可擴展,解決了物聯網場景中各種痛點。這簡直是重新定義了區塊鏈啊。但是,如果深扒IOTA的技術原理,你會發現IOTA實現方案非常不靠譜。有多不靠譜呢?比對着excel喊“二百五,求和”還不靠譜。

IOTA到底怎麼不靠譜

小C先來說說這個無限可擴展。在IOTA原始的設定中,所有的交易構成一個 DAG。任何人(或物聯網設備)想發起交易,只需要引用其他兩個交易就可以了。沒有礦工,沒有區塊,沒有礦工賺交易費,你發交易的速度有多快,IOTA的TPS就有多高。只要好人的交易總數足夠多,它就是安全的。

這簡直太awesome了,攻擊一個區塊鏈系統從來沒有像攻擊IOTA那樣簡單。不需要屯幣,不需要買礦機,我只要搞一臺電腦不停地,每分每秒不停地發交易,讓我的交易佔據全網的50%以上,我就攻擊成功了。

IOTA 大概也意識到了這個問題(被大家抨擊到不得不意識到這個問題)。於是IOTA後面改了,說每筆交易必須算一個 PoW,來防止女巫攻擊帶來的雙花問題的。納尼?說好的無限可擴展呢?

有了PoW的IOTA真是妙不可言啊。要知道,IOTA應用場景是物聯網設備,物聯網設備跑PoW真是天才的想法啊。所謂的物聯網設備,就包括現在最火的智能家居,比如智能插座,智能音箱,智能冰箱等。那什麼樣的物聯網設備可以把PoW的優勢發揮到淋漓盡致呢?機智的小編我,馬上想到了物聯網智能電磁爐!我簡直迫不及待想買一個 IOTA 物聯網智能電磁爐,每次打開電磁爐的時候,它就開始進行PoW運算,發出的熱量也可以加熱食品。當你的晚飯做好了,一筆 IOTA交易也就發出去了。

不僅如此,這個IOTA電磁爐還能提高烹飪的安全係數。它通過佔滿你家網絡的帶寬,讓你上不了網,杜絕你在烹飪的時候因爲刷微信刷微博把房子點着。因爲在IOTA中,發送每筆交易時,需要選擇兩筆交易作爲父親。這個要求看似簡單,但你需要保證:這兩筆交易的歷史中沒有非法交易,沒有衝突的交易。這需要同步大量的歷史,驗證歷史交易的正確性,處理衝突交易,並且保持與IOTA的DAG最新狀態同步。如果你偷懶不同步,那你的交易可能就因爲違反了一些規則被無效掉了。爲了重新發起這筆交易,你只好再做一頓飯。

在比特幣中,礦工負責做PoW運算,負責同步、驗證網絡交易,並處理衝突,用戶向礦工付交易費。IOTA重新定義了區塊鏈,消滅了交易費,取而代之的是這些事情都得用戶自己來做。當比特幣的用戶坐在餐桌上吃烤鴨的時候,IOTA的用戶還蹲在後廚親自養鴨子。小C認爲,IOTA所謂的無交易費,本質上就是用從商品經濟回到自然經濟,這是倒退,不是創新。

當然,由於這個實在太不合理,於是IOTA的社區就有了彌補的方案。有一個叫 IOTA PoWer的服務,它允許用戶付一筆錢,將自己的交易PoW計算等任務外包。可是小C我仔細一想,這不就是用戶發出一筆交易,然後付錢讓礦工給我打包進區塊嗎?這個區塊很特別,只能放一筆交易而已。由此可見,IOTA所謂的無區塊鏈,不過是自欺欺人的宣傳點罷了。

對於上面荒誕的故事,IOTA的擁護者可能會不服,他們認爲IOTA的PoW與比特幣的PoW目的是不一樣的,IOTA的PoW只是爲了減少網絡中的垃圾交易,不會給用戶造成負擔。那就讓小C來帶着大家,具體算一算IOTA 中PoW 的難度怎麼設比較合理。

首先,我們要算一下IOTA網絡最高能跑到多少個TPS?如果IOTA每秒產生10000筆交易,網絡帶寬的侷限性導致IOTA無法保證DAG賬本在全網的同步。如果賬本始終無法及時同步,那麼不同的節點就可能在不同的分叉上越走越遠,從此分道揚鑣,共識不再。所以 IOTA的網絡中,每秒 10000 筆交易,不能再多了。

然後,我們要算一下IOTA的全網算力達到多少 TH/s 纔算安全?全網算力達到多少 TH/s,一個普通的家用電腦,才能在一頓飯的時間裏(1小時)發出一筆交易?一個Intel Core 2 Duo的算力大概是2.5MHash/s, 1小時內可以嘗試9G次Hash嘗試。9G次Hash嘗試發出一筆交易,目前 IOTA主網的吞吐率只有5TPS,如果壞人有>45GHash/s的算力,那麼他們就可以每秒產生>5筆交易,就可以在交易數量上佔據主導,從而進行51%算力攻擊。即使達到了10000 TPS,90THash/s依然可以進行51%算力攻擊。 90THash/s是個什麼概念呢?一個螞蟻S9礦機的算力是13.5THash/s,七臺螞蟻礦機的算力就可以超過 90THash/s。

哪怕普通用戶算1小時才能發起一筆交易,七臺S9螞蟻礦機就能完成對IOTA的雙花攻擊。IOTA面臨着一個選擇:去讓用戶忍受更長的等待時間,還是讓攻破IOTA的門檻更低?

IOTA選哪個?IOTA哪個都不選,IOTA選擇中心化!

爲了解決上述矛盾,IOTA網絡中要額外使用一箇中心化的Coordinator來定期的驗證DAG和交易。這使得IOTA實際上變成了一箇中心化的系統。IOTA聲稱,未來會取消這個中心化的 Coordinator。然而,基於上面的計算,即使網絡帶寬增加100倍,即使用戶願意忍受1小時才能發一筆交易,700臺S9礦機依然能對IOTA發起雙花攻擊。與之相對應的是,比特幣的全網算力大約是(50 EHash/s),相當於4000000臺S9礦機。

給IOTA的建議

小C認爲,擺在IOTA面前兩條路,要麼在中心化的道路上繼續走下去,要麼積極推廣PoW外包方案。讓專門的礦工來處理交易打包、PoW挖礦等事宜,讓用戶爲礦工付費。摒棄“無交易費、無區塊鏈、無限擴展”等這些不負責任的言辭

但是即使IOTA“改過自新”,接受了小C的建議,IOTA本質上還是一個1個區塊只能包1筆交易的區塊DAG。它違背了系統設計中最最通用的一個常識性的優化思想--batching,就是批量處理。這意味着元數據帶來的開銷會顯著增加,同時會帶來很多系統實現上的性能挑戰。比如,當區塊鏈系統的吞吐率達到每秒幾千筆交易的時候,網絡帶寬通常會成爲瓶頸。而交易就是區塊鏈網絡中主要需要傳輸的數據。如果每筆交易都附帶許多DAG相關的元數據(例如對其它DAG結點的引用),那麼對網絡帶寬的壓力就會大大增加。另外,維護交易粒度的DAG也會大大增加本地計算的複雜度。IOTA的DAG中需要對每個交易結點維護一個累計權重,也就是所有直接或間接引用了該交易的交易個數。當一個新的交易被加入到DAG的尾部,所有它能夠直接或間接引用到的交易的累計權重都要需要更新,這個複雜度是和交易的個數成正比的 。假設系統的吞吐率是1000TPS,那麼系統從剛開始運行到1小時後,DAG中的交易個數就會達到360萬。一天之後就會達到8600萬。之後每筆新加入的交易都會帶來接近1億次的權重更新,而且這個複雜度會越來越大。

小C有話說

我們需要認清幾個事實。吞吐率有限,是因爲網絡帶寬有限。PoW的難度高,是爲了避免輕而易舉地被 51% 攻擊。交易費的存在,讓專職礦工來解決普通用戶的需求。一個區塊容納多個交易的設計,提高了運行的效率。如果看不到這些背後的原理,卻盲目地去掉限速,去掉交易費,去掉區塊,然後用一個漏洞百出的底層技術,去設計產品方案,去講一個所謂天方夜譚的故事,這樣只會斷送這個項目的未來。

(注:如果代幣是增發的,通脹本質上就是持幣者向礦工付服務費。)


歡迎關注我們的微信公衆號:Conflux中文社區(Conflux-Chain)

添加微信羣管理員 Confluxgroup 回覆“加羣”加入 Conflux官方交流羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章