為什么在以太坊上構(gòu)建項(xiàng)目注定會(huì)失敗?!區(qū)塊鏈
CameronWall認(rèn)為,幾乎所有由以太坊區(qū)塊鏈支持的項(xiàng)目都會(huì)失敗,原因如下。
很多人問我,為什么我們在 Stellar 協(xié)議上構(gòu)建我們的 Token(代幣)項(xiàng)目,而我的回答很簡單。如果,我們在 ERC-20 標(biāo)準(zhǔn)(以太坊)上構(gòu)建我們的項(xiàng)目,那么它就會(huì)失敗。事實(shí)上,我認(rèn)為,幾乎所有由以太坊區(qū)塊鏈支持的項(xiàng)目都會(huì)失敗,原因如下。
2017 年 6 月,我和聯(lián)合創(chuàng)始人 Will 在討論用 Blockchain 還是 DLT(Distributed Ledger Technology,簡稱 DLT,分布式賬本技術(shù)),來解決在零售品牌空間的忠誠度這個(gè)大問題。答案是顯而易見的,我們可以擴(kuò)展我們現(xiàn)有的 online-to-offline(簡稱 O2O,線上對線下)平臺以獲取忠誠度,并利用分布式賬本技術(shù)完成了很多工作。
我們接下來的任務(wù)是評估現(xiàn)有的區(qū)塊鏈,看看哪個(gè)是我們可以用來構(gòu)建項(xiàng)目或解決方案的。顯而易見的選擇是以太坊,因?yàn)楫?dāng)時(shí)很多項(xiàng)目在廣泛地使用它,圍繞著它有很多炒作,因?yàn)樗麄冇兄С种悄芎霞s的 ERC-20 標(biāo)準(zhǔn)。最終,我們決定采用 Stellar 協(xié)議,并且我們?yōu)榇烁械礁吲d,下面是整個(gè)過程的總結(jié)以及我們?nèi)绾芜_(dá)到今天的成就。
當(dāng)時(shí),以太坊對于 Blockchain 世界來說仍然是新鮮事物,它基本上是一個(gè)分布式編程平臺(用于自治組織和無主應(yīng)用軟件的腳本軟件)。Vitalik Buterin(以太坊的聯(lián)合創(chuàng)始人)他自己也說:
“以太坊是個(gè)模塊化、具有狀態(tài)、圖靈完備的合約腳本編寫系統(tǒng)……我們的目標(biāo)是為去中心化的應(yīng)用程序提供平臺。”
現(xiàn)在,如果您打算構(gòu)建一個(gè)真正的去中心化項(xiàng)目,其不具有中央決策制定功能,那么以太坊是個(gè)很好的選擇。但是,大多數(shù)區(qū)塊鏈公司不需要智能合約來執(zhí)行他們的核心業(yè)務(wù)邏輯或希望規(guī)避法律或管轄權(quán)問題。他們只想發(fā)行數(shù)字資產(chǎn)和處理交易。這正是以太坊讓您失望的地方。
如果您在構(gòu)建一個(gè)項(xiàng)目,要發(fā)行代幣同時(shí)需要快速又低成本地進(jìn)行交易,那么,以太坊總是會(huì)失敗的。我們的項(xiàng)目涉及發(fā)行代幣,這些代幣在交易近乎于實(shí)時(shí)發(fā)生的零售環(huán)境中使用,這是個(gè)問題。
通過所有從用戶體驗(yàn)開始的技術(shù)項(xiàng)目,并從那里開始工作,如果使用以太坊區(qū)塊鏈,那么從一開始,我們就會(huì)有大麻煩。為了確認(rèn)這個(gè)問題,我們觀察了今年(2018 年)4 月到 5 月間進(jìn)行的測試。所有的結(jié)果和方法都可以在 GitHub 上找到。
第一個(gè)問題:您最熱心的用戶將會(huì)有最糟糕的體驗(yàn)。
以太坊按每個(gè)賬戶排隊(duì)交易,而礦工不會(huì)按等待時(shí)間對交易進(jìn)行優(yōu)先排序。事實(shí)上,鑒于交易擁有相等的 gas 價(jià)格,礦工隨機(jī)分配它們。因此,一個(gè)活躍賬戶構(gòu)建了一個(gè)交易隊(duì)列,而以太坊沒有解決它的機(jī)制。對高容量的賬戶,結(jié)果就是不斷增加的交易滯后。
以太坊用兩個(gè)數(shù)字處理交易,一個(gè)是交易隨機(jī)數(shù)(我們稱之為“nonce”)和一個(gè)賬戶隨機(jī)數(shù),為了清楚起見,我們有時(shí)稱之為“計(jì)數(shù)(count)”。交易隨機(jī)數(shù)按順序排列賬戶交易;賬戶隨機(jī)數(shù)在它們中的任意一個(gè)被挖出時(shí)進(jìn)行計(jì)數(shù)。當(dāng)提交一個(gè)帶著其 nonce 的新交易時(shí),以太坊把這個(gè) nonce 與當(dāng)前的計(jì)數(shù)值進(jìn)行比較,以決定該做什么。如果該交易的 nonce 的值比計(jì)數(shù)值低,則該交易被忽略。如果 nonce 值更高些,那么交易延遲。只有 nonce 值匹配計(jì)數(shù)值時(shí),該交易才被移入?yún)^(qū)塊中。下圖是其工作原理的簡化示意圖:
這實(shí)際上與您在速食店或像 DMW 這樣的政府辦公室看到的“取號”系統(tǒng)類似,同時(shí),這也是防止重放攻擊的相當(dāng)普遍的做法。
很多其他的區(qū)塊鏈也在做類似的事。但是,以太坊的交易到區(qū)塊(transaction-to-block)算法(或者,真的,沒有這個(gè))給在您的 DMV 窗口中工作的人們出了一條妙計(jì),也即,這些礦工沒有必要對隊(duì)列中的下一個(gè)數(shù)字負(fù)責(zé)。正如您在下圖中所見的,以太坊挖礦是由少數(shù)精選采礦池控制的,四個(gè)最大的礦工占有 70% 的以太坊哈希率。
礦工通常對將要接受的交易有自己的標(biāo)準(zhǔn)。很多礦工只接受具有高 gas 價(jià)格(high-gas-price)的交易。有些只接受自己的交易。像這樣的礦工在從您的隊(duì)列中取得某些東西之前讓區(qū)塊空間不被使用。因此,現(xiàn)在想象一下一個(gè) DMW,其中的某些窗口在告訴人們“抱歉,我無法幫忙”,而每秒有更多的人進(jìn)入等候空間,并且,甚至在您可以和某人交談之前,所有需要幫助的人們都在您的面前。瞧,您對以太坊如何處理交易就有了一些了解。
我們不曾料到它是這樣工作的,直到我們嘗試實(shí)施 Kik 的負(fù)載規(guī)范:480 個(gè)賬戶,平均每個(gè)提交 1 txn/ 分鐘,持續(xù) 3 小時(shí)。總共是 86400 個(gè)交易,平均每秒 8 個(gè)。
我們利用 ETH 的 gas 加氣站的標(biāo)準(zhǔn)對 gas 進(jìn)行了測試,預(yù)計(jì)確認(rèn)時(shí)間的中位數(shù)大約是 30 秒,但是,13 個(gè)小時(shí)之后,一半以上的交易沒有進(jìn)入?yún)^(qū)塊。我們在 13 小時(shí) 50 分鐘時(shí)停止了測試,50.1% 的交易丟失了。(注意:如果您希望查看我們的工作,可以在我們的 GitHub 中找到原始數(shù)據(jù)。)我們認(rèn)為,我們已經(jīng)搞砸了,但是,事情不是這樣的。我們剛創(chuàng)建了很多長隊(duì)列,一些傻子一樣的交易已經(jīng)在那里無所事事地等了一天。
當(dāng)您讀到有關(guān)“以太坊交易時(shí)間”的內(nèi)容時(shí),公布的數(shù)字幾乎總是單一的、一次性事務(wù)。它們不屬于應(yīng)用程序級別的環(huán)境。我們再次進(jìn)行了 Kik 測試,以真正確保我們所做的一切都正確,又用了 6.9 個(gè)以太幣,但是,我們得到了幾乎一樣的結(jié)果。
這是從這次試驗(yàn)中獲得的典型經(jīng)驗(yàn),這只是剛好首先是字母數(shù)字的賬戶。您可以看到等待時(shí)間隨著交易的積壓而增加。
在摘要中討論“結(jié)算時(shí)間”是一回事。但是,從實(shí)際的用戶體驗(yàn)角度考慮一下上述數(shù)據(jù)。您的以太坊應(yīng)用軟件被用得越多,它就越慢。僅僅過了 3 小時(shí),其交易就要花 8 個(gè)小時(shí)來確認(rèn)。
當(dāng)然,Kik 的測試規(guī)范表明,我們應(yīng)該提交 3 小時(shí)的交易,然后停下來,這就是我們所做的。在現(xiàn)實(shí)中,您無法建立停機(jī)時(shí)間以讓計(jì)數(shù)趕上來,因此,理論上,交易隊(duì)列只是變得越來越糟糕。當(dāng)然,在實(shí)踐中,隨著您的以太坊應(yīng)用程序變得沒響應(yīng),用戶們就會(huì)離開,這有助于它趕上來。
這是來自第二個(gè)測試的性能分布。我去掉了最慢的 5%,這樣,長尾效應(yīng)不會(huì)影響整個(gè)畫面。
作為對比,這是 Kik(在 Stellar 上)運(yùn)行同樣規(guī)范的測量值
我只是從他們的博文中抓取了這張圖,但是我沒有原始數(shù)據(jù),因此,我無法在同一張圖中顯示我的數(shù)據(jù)。但是,利用計(jì)算機(jī)的“魔力”,我至少能疊加這條曲線。
一切看起來都是可比的,直到您注意到 x 軸。我們在以太坊上測到的等待時(shí)間要長 3000 倍。簡而言之,就是個(gè)排隊(duì)問題。
這個(gè)性能問題目前是以太坊的基本組成部分。像分片或 Casper 在理論上是可行的,但是,這些將是復(fù)雜的修復(fù),分層疊加在以太坊幾乎最大的復(fù)雜性上。像閃電網(wǎng)絡(luò)(lightning)這樣的可以依靠比特幣固有的簡單性,而沒有什么基本回落。摩天大樓通常是建在巖床之上,而不是建在另一座摩天大樓之上,但是,這是很多以太坊擴(kuò)展解決方案所要做的事情。
唯一可靠的性能改進(jìn)是在 gas 上花費(fèi)更多,希望每個(gè)賬戶隊(duì)列可以更快通過。事實(shí)上,我們在那 3 個(gè)小時(shí)試驗(yàn)中這么做了,我們之所以這么做,是因?yàn)椤拔覀儜?yīng)該盡力做我們能做的來使之工作”的承諾。
之前的兩個(gè)測試使用了“標(biāo)準(zhǔn)”以太坊 Gas Station 的推薦。第三次測試我們使用了“快速”等級(當(dāng)時(shí)約為 4 Gwei),在我們的 480 個(gè)賬戶上花了 11.8 個(gè)以太幣。
性能提升了(只是 Kik 在 Stellar 上的速度的 5 百分之一),但是,還是不夠快。形成積壓,并且支付進(jìn)程在那里無所事事。
第 2 個(gè)問題:廣泛采用的成本極其高昂
對高級用戶也是這樣。但是,以太坊也不適合另一種形式的采用,您也許看到像 Etsy 的應(yīng)用程序,我不知道,不是一些人更深入,而是有很多人時(shí)不時(shí)地登入。這是因?yàn)橐蕴粦?yīng)用軟件的每個(gè)用戶成本隨著用戶數(shù)量的增加而飛速提高,并且,這是為什么當(dāng)有人嘗試進(jìn)行多用戶登錄使用以太坊,您就看到價(jià)格會(huì)飆升 70 倍之多。
我們在尋找排隊(duì)問題的解決方法時(shí),不經(jīng)意間捕捉到了這個(gè)數(shù)據(jù)。為了防止交易堆積,我們重構(gòu)了 Kik 的規(guī)范如下:不是少數(shù)賬戶提交大量交易,而是讓一大堆賬戶(28800 個(gè))的每一個(gè)只進(jìn)行一個(gè)交易。為了堅(jiān)持最初測試的指導(dǎo)方針(總共 8 個(gè) txn/x),我們在一個(gè)小時(shí)內(nèi)提交了這些交易。
奇怪的是,這實(shí)際對性能沒有多大幫助。確認(rèn)時(shí)間的中位數(shù)是 23 分鐘,事實(shí)上比上面的“快速”測試還要慢。更奇怪的是,我們提交的這第一批交易的其中一些是最后被確認(rèn)的:
我們知道賬戶隊(duì)列不應(yīng)該是問題。事實(shí)證明,我們的交易剛一上線,礦工們的費(fèi)用就飆升。因此,我們最早按測試之前的“標(biāo)準(zhǔn)”價(jià)格提交的交易很快就付不起費(fèi)用了。它們在低優(yōu)先級上徘徊了好幾個(gè)小時(shí)。
我們發(fā)現(xiàn)了以太坊的另一個(gè)負(fù)強(qiáng)化循環(huán)。添加用戶馬上就會(huì)漲價(jià)。在現(xiàn)實(shí)中,單位數(shù)的增加會(huì)降低單位價(jià)格。基本上,整個(gè)私營部門是建立在“規(guī)模經(jīng)濟(jì)”這個(gè)理念之上。但是在這里:每個(gè)增量用戶馬上提高了每個(gè)用戶的成本。這像是怪異的經(jīng)濟(jì)學(xué)。
您可以看到,在我們進(jìn)行測試的那短短一個(gè)小時(shí)中,價(jià)格爬升了約有 6 倍之多。
同樣,內(nèi)置的測試時(shí)間限制讓一切看起來比實(shí)際更可持續(xù)。將該圖外推,把指針放在中間某處。持續(xù)兩周穩(wěn)定使用后,單位用戶成本看上去會(huì)是多少?如果是兩年呢?
上述測試每小時(shí)的成本是 1445 美元。當(dāng) gas 的價(jià)格較低時(shí),標(biāo)準(zhǔn)速度大約是 1Gwei,并且它每秒只能處理 8 個(gè)交易。要進(jìn)行基本測試,那么一年的成本是 1260 萬美元。
如果在實(shí)際業(yè)務(wù)上應(yīng)用這個(gè)成本結(jié)構(gòu),那么可以看到,以太坊的費(fèi)用已經(jīng)是不可持續(xù)的高。例如,Paypal 每秒大約處理 240 個(gè)交易。拋開為了能實(shí)現(xiàn)這個(gè)目標(biāo)要進(jìn)行的性能修復(fù),并將我剛才提到的動(dòng)態(tài)提升的價(jià)格放一邊。如果 PayPal 構(gòu)建于以太坊上并支付我們觀察到的價(jià)格,那么去年他們將在網(wǎng)絡(luò)上花費(fèi) 3 億 8 千萬美元。那將是他們 21% 的凈收入,而且,那是在假設(shè)可以維持價(jià)格不變的情況下。
以太坊的理想版本不適合這個(gè)世界上最有利潤的交易業(yè)務(wù)。那么實(shí)際版本又如何為我們工作呢?
現(xiàn)在怎么辦?
Vitalik Buterin 說過:
“如果你想在不能擴(kuò)展的以太坊上構(gòu)建去中心化的 Uber 和 Lyft,那是會(huì)搞砸的。不可以。”
我建議您看看所引用的這句話的整體情況,它表明,以太坊團(tuán)隊(duì)的 4 個(gè)最重要的成員說了我在這里已經(jīng)說過的話。當(dāng)今天高利潤的 ICO 變成明天的警示故事時(shí),對于處于該生態(tài)系統(tǒng)中的每個(gè)人都沒好處,大家都知道這一點(diǎn)。
毫無疑問,以太坊社區(qū)是區(qū)塊鏈中最強(qiáng)大的,沒有 Vitalik 的愿景,很有可能就完全沒有代幣經(jīng)濟(jì)。這不是以太坊的錯(cuò),開發(fā)人員在問技術(shù)人員從來沒有交付的東西。是人們在追逐去年的 ICO 熱錢,不管什么是正確的工具。
以太坊的問題始于誤入歧途的企業(yè)家。不要成為他們中的另一個(gè)。
如果您在構(gòu)建交易應(yīng)用程序,該協(xié)議將不支持您的用戶所期望的行為。我對以太坊的雄心壯志和復(fù)雜性懷有深深的敬意,但是,我把它看作區(qū)塊鏈的高級時(shí)裝。美麗、錯(cuò)綜復(fù)雜、高大上的概念、高尚。但是,不應(yīng)該是您拿來用的。
如果您想要無信任、分布式的計(jì)算(如果這真是您要構(gòu)建的),那么絕對要用它。如果您從未打算實(shí)際發(fā)布什么東西,那么用以太坊就太對了,另外,如果您能找得到他們的話,問問那些 50% 多的 ICO 項(xiàng)目,他們賣掉代幣后就消失得無影無蹤 。他們已經(jīng)擊中了費(fèi)米悖論中的大過濾器(Great Filter)。像是波多黎各的熒光海灘,就亮了那么一下。
但是,如果您想建立一個(gè)像我們一樣的業(yè)務(wù):如果您計(jì)劃一個(gè)典型的用戶到用戶的服務(wù),不需要把您的業(yè)務(wù)邏輯綁定在智能合約上;如果您計(jì)劃發(fā)行數(shù)字資產(chǎn),以及高容量的交易是您戰(zhàn)略的核心部分的話,那么選一個(gè)為之優(yōu)化的平臺。像我們所做的,在 Stellar 上進(jìn)行構(gòu)建。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。