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官方交流羣

相關文章
相關標籤/搜索