您當前的位置:首頁 > 舞蹈

BCH升級鬧劇,以及BSV的路線優勢

作者:由 區塊鏈旺仔 發表于 舞蹈時間:2019-05-19

15日晚間bch如約進行升級,區塊鏈的升級是公開的,人人都可以見證,bch也就在眾目睽睽之下,搞出一個又一個的笑話,這些行為充分體現了什麼叫做POW聯盟鏈,也充分體現了abc的開發團隊是如何將區塊鏈這個網路系統當做玩具來玩耍。也為所有人上了一堂生動的實踐課,對於價值系統,協議穩定,限制底層開發者權力的bsv路線才是終極解決方案。

當晚本人從頭至尾見證了這一鬧劇,從升級開始,然後由於特殊交易觸發了bug,導致所有礦池打包的交易都無法廣播,整個網路卡住近一小時,然後大陸系的算力連出十幾個空快爭取補丁,就在補丁還沒有安裝好的時候,bch被一個修復了bug的匿名礦池fake unknown打出了塊,這個塊搜刮了大量sw地址裡的幣,然後這個塊被大陸系算力重組並回滾了部分交易。之後補丁上線,記憶體池中所有特殊交易都被清除,bch逃過一劫。

我們就詳細解析一下這次升級,分析為何每次bch升級都像一次緊急作戰一樣,以後是否還會出現類似的攻擊,bch存在哪些隱患,以及為什麼bsv穩定協議如此重要。另外,針對很多朋友一直困惑的sw地址恢復這個問題,進行一下說明。

經過詳解

bug觸發

就在看似風平浪靜的升級背後,一個陰謀正在醞釀,就在bcher彈冠相慶,準備慶祝安全升級的時候,bch卻久久無法出塊。高度卡在582681,持續近1小時沒有出塊。起初大家以為是運氣值的問題,直到骷髏群友yqh發訊息說bch的客戶端出現大量異常日誌,日誌只顯示一個資訊,too many sign ops。

我們知道,在去年11月的bch分叉之爭中,雙方爭論的兩個重點,一個是交易的排序方式ctor(這個東西限制了並行交易驗證,同時也很難實現unwriter的新型資料庫,新紀元。這個問題以後專門寫文章討論),另一個就是新操作碼dsv。dsv與其他的操作不同的一點是,它是一個運算量非常大的操作碼,雖然和一些簡單操作碼佔據相同的體積,收取相同的費用,卻包含了大量的簽名校驗操作,要校驗這個操作碼,所有的客戶端都要去投入大量的運算力去計算這個。如果有礦工打包了具備大量這種操作碼的區塊,那直接的後果就是癱瘓所有網路節點。

abc開發者當然考慮到這個問題,因此在程式碼裡硬編碼了一個機制,就是一筆交易的sigop(簽名操作指令碼)上限是20000。

這裡我們看一下abc的路線的一個矛盾點,由於bch什麼都想向程式碼裡抄,所以引進dsv這樣的特殊操作碼,但是為了引進這個,又需要引入一個硬編碼的上限20000。我們深受其害的擴容之爭就來自一個硬編碼的區塊大小上限,而現在bch又添加了一個這樣的操作碼上限,帶來的直接後果就是,如果真的像bch希望的那樣,有很多應用來使用這個操作,然後有些複雜應用就無法突破這個操作上限,到那時又需要寄希望於abc的開發團隊來“擴容”,如果跟位元大陸關係好,那好辦,按照這次打補丁的效率,2小時給你全網升級,如果關係不好,就是不給你開放這個上限,那就必然又會重蹈當年擴容之爭的覆轍,而這次abc和當年的core是一副嘴臉。bch是不屈服core的霸權而產生的,結果內部卻滋生了另一個core,真是嘲諷。所以abc的矛盾點就在於,想快速迭代,就必須開發者集權,而使用者就必須屈從於開發者,也就是必須屈從於位元大陸及其聯盟,bch也就必然演化成一個聯盟鏈,我這裡大膽預測,bch未來必然會滑向pos以及變種的pos,因為這是最適合聯盟鏈的工作方式。

回到我們的這次bug,abc的開發者為了炫技增加的dsv,不料留下了技術負債。有攻擊者發現了一個0day(未公開)的bug,簡單來說就是礦池在計算sigops的個數時,會將sigops錯誤地計算為0,而客戶端在校驗區塊的時候會正確計算。因此攻擊的交易中有大量Check Data Sig這樣的操作碼,剛好超過客戶端接受的上限,這個bug的影響就是執行abc節點的礦池在打包交易時認為那些超過操作碼個數的交易是合法的,而abc的客戶端卻認為這些交易不合法,因此客戶端接收到礦池發來的新區塊之後,校驗交易時就會出現開頭說的too many sigops的問題,也就會拒絕礦池的區塊。而礦池不知道發生了什麼,還在打包這樣的交易,也就出現了後面abc礦池和abc客戶端相互掣肘,互相鎖死對方的搞笑場面。

而這個bug產生之後,abc方面集體沉默,就輕描淡寫的寫道有人攻擊bch,卻沒有一篇像樣的分析來反思一下這個bug。反倒是bsv的技術群對這個問題很是重視,第一時間開始討論和排查問題,然後很快一位不願意透露姓名的劉先生就寫出了一份完整而專業的bug分析和報告。說明了一點,bsv社群才是真正關心技術發展,真正關心比特幣應用落地的社群,和一些只會操盤,只會寫一些入門讀物來忽悠韭菜炒作的專案有天壤之別。這裡貼上鍊接,向大神致敬。

BCH升級攻擊分析

注:剩下更多重點內容(約全文的三分之二)請點選下面的bsv鏈上完全版。

鏈上版需要註冊和使用money button,這裡理財師給了一個簡美做的影片教程,放在這裡參考

這裡我解釋一下,為什麼使用這種paywall的方式,來隱藏部分內容,並使用付費閱讀的模式。有很多方面的考慮。希望大家理解。

首先因為這篇文章是分享給amy的bsv學習群使用的,因此需要保證學習群可以獲得獨家一手且完整的內容,這樣可以激勵更多希望瞭解bsv的新人加入學習群。

其次,編寫這些文章需要消耗我大量的休息時間來收集資料,組織文章,設定1塊錢的門檻雖然不多,但是也算是對作者辛勤勞動的一點點鼓勵(如果按照時薪算的話,我投入在這些文章裡的成本非常的巨大)。

再次,我更加希望那些真正願意瞭解和嘗試bsv優勢的朋友來閱讀,如果你真的對bsv有強烈的興趣,那我真誠地推薦你去註冊一個money button,向裡面匯一點bsv,然後親身體驗一下bsv帶來的優質的使用者體驗,和上面可以實現的應用。我相信,真正對bsv感興趣的朋友會去體驗一下這個優秀的專案的。我也不希望一些無腦黑和噴子來獲得這些資訊,如果你不理解bsv,不支援bsv,i have no time to convince you。

最後我希望大家更多地把bsv當成現金用起來,只有bsv真正投入使用才能創造更大的價值,1塊錢的小額支付其實對我無關痛癢,流動起來的錢才是錢,我希望用自己的努力,去給bsv創造更多的交易量,同時創造更多的價值,只有大家都嘗試使用bsv的應用,才能讓這些應用更好地發展下去,謝謝大家的支援。

這裡有朋友發了另一個money button 的小白使用指南,提供給大家參考,英文好的朋友可以直接註冊使用,介面簡潔,邏輯清晰

標簽: bsv  bch  ABC  操作碼  bug