
發表時間:2021年8月13日
資訊來源:bitcoinsv.io
簡介
Bitcoin SV最近遭到了攻擊,攻擊者擁有大量算力,試圖騙取價值數百萬美元的BSV,像這樣的事件總是迫使你以全新的方式重新思考位元幣的基礎和原理,
本文將概述攻擊程序和為抵御攻擊所做的動員和努力,討論為了促成最侄訓極的結果而采取的應對措施,我們還重新審視了位元幣白皮書,探尋在這樣的攻擊場景下應該如何正確的回應,
簡而言之,我完全相信礦工會按照白皮書的指引行事,我比以往任何時候都更有信心,即便面對攻擊者擁有壓倒性優勢算力的情況,位元幣也依舊牢固且有生命力,
背景
第一次攻擊
2021年6月24日,BSV主網發生了4個區塊的重組,看起來與使用Hat??hor協議聚合挖礦的新礦工“Zulupool”有關,當時,它們的節點有著大量的算力但連通性不好,所以區塊重組只是個意外,Bitcoin SV基礎架構團隊聯系了該礦工,希望提供技術支持以改善他們與其他礦工的連通性,但沒有收到回復,
7月的第一周,又發生了多次類似長度的區塊重組,我們再次聯系了Zulupool,但他們卻表示這些區塊并不是自己生產的,攻擊者通過在coinbase交易中使用“Zulupool”的名字和支付地址來冒充他們從而混淆視聽,我們認為Zulupool的說法是可信的,他們實際上并沒有挖出與重組有關的區塊,原因會在下文解釋,
Bitcoin SV基礎架構團隊立即設定了檢查雙花交易的工具,同時聯系位元幣協會和BSV礦工,建立起合適的交流反饋渠道,位元幣協會同時向各交易所發出預警,讓他們留意和識別是否有可疑的雙花交易,在第一次攻擊后,我們就部署了工具來自動檢測和通知交易雙花,沒有任何受害者聯系我們告知他們遭受了損失,(后來從Bitmart數字資產交易所公開的法庭檔案中了解到,攻擊者通過將非法雙花的BSV交易成其他幣種,讓他們受到了損失,)
在這些工具準備妥當后,攻擊者消失了數周,
第二次攻擊
8月3日和4日,在三次不同的時間段,未知的惡意攻擊者秘密挖掘了包含雙花交易的隱藏鏈,這些雙花交易涉及價值數百萬美元的BSV,之后攻擊者在BSV網路上一次性的公布了這些長度暫時超過誠實鏈的隱藏鏈,這次,攻擊者冒充了誠實礦工TAAL,
回應
繼上次攻擊后,位元幣基礎架構團隊做了充足的準備,因此這次欺詐區塊被發布后幾秒就被團隊檢測到了,我們迅速聯系了愿意用自己的算力拒絕欺詐區塊的已知的誠實礦工,最終抵御了攻擊者的分叉,并成功防止了雙花的發生,與此同時,位元幣協會聯系了諸多交易所,告知他們正在發生的事情,并建議他們采取保護性措施,讓他們與大多數礦工的做法保持一致,
在8月3日和4日三次試圖從交易所盜取資金都失敗后,攻擊者最終放棄了嘗試,他們顯然已經意識到,誠實的礦工會拒絕包含雙花交易的隱藏區塊,
注意到在此期間,位元幣協會發布了誠實礦工用來拒絕攻擊者先前隱藏的、包含了雙花交易的區塊的命令,眾所周知,誠實礦工可能需要一些時間才能超越攻擊者的鏈,這也為其它(非礦工)Bitcoin SV節點運營商(例如監聽區塊的應用)提供了一種機制,可以選擇跟隨大多數誠實礦工在期望能成為最長鏈上持續構建的鏈,第二次攻擊沒有發生雙花,攻擊者花費了大約20萬美元,希望能通過欺詐獲得更大的經濟收益,但未能如愿,最終損失了20萬美元,與此同時,網路一直暢通無阻,不僅處理的交易量破了紀錄,甚至還誕生了創紀錄的1GB區塊,
位元幣白皮書對礦工行為的闡釋
負責執行位元幣協議規則的礦工,應根據位元幣白皮書中定義的“先見原則”(first seen rule),適時采取行動拒絕無效交易和包含無效交易的區塊,
什么是“先見原則”?
“先見原則”就是以“最先被看到”為原則,
當我們想決定一系列事件的順序時,要進行直接觀察來決定誰“最先被看到”,位元幣區塊鏈提供了一種機制,可以將對一組對等節點的直接觀察,轉換為一系列事件首次出現時的準確記錄,
在討論“先見原則”時,我們需要注意區分兩種主觀視角,
一種視角是在事件發生時參與者正在網路上活動,通過觀察他們能直接掌握誰先出現的第一手資訊,當兩個相關事件發生的間隔時間很長(超過廣播延遲)時,直接觀察的結果是無可爭議的,我們稱之為“觀察視角(point-of-view)”,
另一個視角是人們事后根據歷史得出的結論,我們稱之為“歷史視角”,由于他們在事件發生時并未出現,所以無法直接觀察事件發生的順序,只能以節點通過最長區塊鏈記錄下的資訊為依據,如果這些觀察者像他們最近一樣可靠的按照先見原則來產生記錄,那么對于兩個相關事件(雙花)誰先發生的問題,“觀察視角”和“歷史視角”將給出相同的結論,這正是位元幣的主要目的,通過順序正確的記錄,新加入網路的參與者可以準確的了解所有UTXO的狀態,確保他們在之后確認位元幣交易時,這些位元幣都是存在的并且都是尚未花費的,
在加入網路時,如果網路中同時存在多個具有爭議(相互競爭的區塊包含了雙花交易)的活躍鏈,新的參與者可能會對一小段“歷史視角”產會困惑,但這種情況比較少見并且可以在短時間內解決,而且解決爭議也僅與在此期間加入網路的礦工有關,其他的區塊鏈監聽者依舊只需要進行觀察,因為他們并不參與創建記錄,與此同時,對于絕大多數沒有爭議的交易,即使在這個視窗期產生,也依舊是清晰和明確的,
有趣的問題是,位元幣白皮書是否描述了“觀察視角”或“歷史視角”, 這引出了另一個問題:是否應該接受包含明顯錯誤記錄的更長的鏈,如果白皮書描述了“觀察視角”,那么毫無疑問,節點應該拒絕不正確的記錄(區塊),只有當你無法知道事件發生的順序必須依賴節點共識時,才需要“歷史視角”,
我自己的理解是,白皮書描述了一種將“歷史視角”轉換為可信記錄的機制,從而形成十分準確的“歷史視角”資料,
試想,如果“歷史視角”是決策機制,那么白皮書中的好幾處陳述都無法自圓其說,比如下面的幾段內容,
第1節:簡介
目標:
“一個點對點的分布式時間戳服務器對交易產生的時序生成可計算的證明”
注意到在生成時序證明之前,必須先通過對事件發生時的主觀觀察來確定事件發生的先后順序,大多數節點在當時接受了這些觀測結果(以區塊的形式)就是一種確認,意味著這些觀測結果是正確的,并且被當時網路中活躍的大多數觀測節點所認同,
利用點對點現金系統欺詐的定義:
“在計算上無法逆轉的交易將保護賣家免受欺詐”
也就是說,交易在接收和接受后發生逆轉,被作者視為欺詐,
第2節:交易
當雙花交易出現時對有效交易的定義:
“我們需要一種方式讓收款人知道以前的所有者沒有簽署任何更早的交易,就我們而言,最早的交易是最重要的交易,因此我們不關心后來的嘗試雙花的交易,”
請注意,最長的區塊鏈中不可能出現同一筆交易的兩個版本,僅從區塊時間戳也不能確切的斷定兩個競爭區塊實際誰先產生或誰先公開廣播,因此,這里的“最早”一詞僅適用于當時網路上活躍節點主觀觀察到的結果,
沒有對區塊中的交易賦予特殊權重或其他考慮來改變和覆寫“最早”的概念,
公開廣播的必要性:
*“確認沒有漏掉交易的唯一方式就是知道所有交易”
“所有交易”包括已確認的和未確認的交易,
“為了在沒有可信方的情況下實作這一目標,交易必須被公開”*
這種公開廣播至關重要,它讓網路上所有的活動節點都能進行主觀觀察,這使我們回到……
回到“目標”:
“收款人需要證據,能證明當時大多數節點都認同這個交易他們是第一次收到”
從收款人的角度來看這很重要,因為他們需要確認自己收到的位元幣是有效的,
再次重申,以雙花事件發生時網路中活躍節點的主觀觀測結果為依據,才有可能達成這個目標,這正是交易必須被公開宣布的原因,
第5節:網路
網路定義的說明:
“新交易被廣播到所有節點”
這非常明確,在廣播交易的同時隱藏相同交易的沖突版本違反了這條規則,而且定義明確說明了廣播的交易是有效的,隱藏的交易是無效的雙花交易,
區塊必須被廣播:
“當節點找到了區塊的作業量證明,就廣播給所有節點”
這條規則明確了何時需要廣播區塊,就是在找到一個有效的作業量證明并生成有效的區塊頭后,立即執行,
有效區塊包含的交易(里的資金)必須尚未花費:
“只有當區塊中的所有交易都有效且尚未花費時,節點才會接受該區塊,”
正如我們之前看到的,“尚未花費”是從觀察者角度的描述,如果他們之前觀察到了跟新區塊中任一交易相沖突的交易,則該區塊無效,
區塊競爭:
“如果兩個節點同時廣播了下一個區塊的不同版本,其他節點收到這些不同版本的區塊的順序是不同的,在這種情況下,他們會基于先收到的區塊繼續構建,但同時會保存其他分支以防止它在之后變得更長,當找到下一個作業量證明并且某個分支變得更長時,這種關系就會被打破;在其他分支上構建的節點就會切換到更長的鏈上,”
中本聰在本節沒有說明隱藏競爭區塊的情況,而只討論了幾乎同時廣播的競爭區塊,在截然不同的時間點看到競爭區塊的場景,僅在白皮書中抵御網路攻擊的章節里有所討論,
第11節:計算
位元幣白皮書明確了挖掘隱藏的區塊鏈是不誠實的:
“交易發出后,不誠實的發送者會開始在包含該交易替代版本的平行鏈上秘密挖掘”
秘密挖掘區塊的礦工被認為是“攻擊者”:
“了解攻擊者現在仍然可以追趕上的概率……”
第12節:總結
我們在這里又看到了對位元幣目標的描述:
“為了解決這個問題,我們提出了一個使用作業量證明的點對點網路來記錄交易的公共歷史,從計算能力的角度考慮,當誠實節點控制了大部分CPU算力時,這些交易就無法被攻擊者逆轉,”
時間戳服務器的目的是防止“攻擊者”更改在事件實際發生時,網路中的大多數節點都主觀觀察到并已認同的 “公共”歷史記錄,這些記錄包括被觀察到的事件(交易和區塊)的出現順序,這并不意味著成功的隱藏區塊攻擊應該被視為“誠實的”記錄,尤其是在事件發生時鏈上活躍的每個人都知道它是不誠實的,
有效的區塊:
“他們用自己的CPU算力投票,通過努力延長有效區塊來表示自己接受了這些區塊,并拒絕在無效區塊上構建”
這回到了有效區塊的定義,我們已經從第5節了解到:有效的區塊只包含有效的交易,還從第2節了解到:有效的交易一定是當時誠實的參與者主觀觀察到的任意一組雙花交易中最先被看到的交易,
最后讓我們跳回到摘要的最后一句話:
“節點可以隨意離開和重新加入網路,接受最長作業量證明的鏈作為他們離開后的網路事件的證明”
當你不在場時接受最長作業量證明的鏈作為網路事件的證明,和你身處事件發生程序中明知最長鏈無效卻依然接受它,這兩者有著明顯的區別,第1節中概述的目標是生成這樣的證明,并且當時處于活躍狀態的節點有責任生成該證明,白皮書明確指出,無效的歷史應該被意識到它們無效的節點拒絕,并在其位置寫入正確的歷史,確保正確的歷史可以成為最長作業量證明鏈的一部分,
這正是攻擊發生時,那時所有誠實的礦工所做的事,
代碼不是法律也不是位元幣的定義
位元幣是一個描述預期行為的經濟系統,因此軟體和演算法不會改變和覆寫這個特性,軟體本身是演算法的一種實作,它會在幾乎所有的情況下自動執行預設的目標,但演算法從來都不是完美的,在具有對抗性的系統中,嘗試用演算法對規則編碼可能會導致該演算法被有違本意的利用,被別有用心的人用來攻擊系統,現實情況是,有些規則也很難以預防攻擊的方式編碼,
根據規則編碼來自動檢測包含雙花交易的區塊并孤掉這個區塊便是一個例子,為了這個目標,我多次嘗試定義一個可行的規則集,這對于一般場景很容易做到,也會很好的保護用戶,但這可能被攻擊者利用,用精心策劃的攻擊讓區塊鏈分叉,
即便是先見原則本身,在網路延遲下也很難可靠的編碼,雖然在大多數情況下可以通過代碼強制讓區塊競爭來解決,但涉及多組雙花的復雜情況可能會引起兩組節點的持續不一致,最終導致永久分叉,我非常確信這就是為什么最初的位元幣會按當時那樣的方式編碼,而不是在毫秒級的時間內魯莽的強制執行這個規則,
關鍵的一點是,代碼并不完美,有時候需要人為干預,這在位元幣的整個歷史中都發生過,位元幣的目標是對網路上發生的事件產生永久和可靠的記錄,為了實作這個目標,節點需要觀察、記錄并在必要時人為干預以確保記錄準確且沒有欺詐,礦工們可以獨立的執行這些操作,幾乎不需要協調,因為面對真相大家都能相對容易的達成共識,
這些記錄超越了區塊鏈中記錄的內容本身,這些記錄可以很好的作為過去事件進一步發展的證據,匹配數百臺獨立機器的日志檔案是一個更加手動的程序,但該證據同樣有用,
MinerID的作用
近期有很多問題和討論聚焦于MinerID在應對近期攻擊時起到的作用,我們看到的不尋常之處在于,攻擊者冒充了其他礦工(Zulupool和TAAL),甚至還使用了這些礦工的支付地址,TAAL被假冒是很明顯的,因為按照慣例TAAL會用自己的MinerID對他們挖掘的區塊簽名,所以大量未簽名區塊的出現就是一個危險信號,表明TAAL被冒名頂替了,這個方法正好可以更容易的識別攻擊者的區塊,
MinerID 可以為礦工積累來之不易的作業量證明聲譽,在幫助用戶與礦工建立信任方面發揮更多的作用,未來,它將確保礦工在遭受攻擊或遇到其他關鍵的網路事件時,彼此之間擁有快速可靠的通信渠道,
有關 MinerID 的更多詳細資訊請參考:https://github.com/bitcoin-sv-specs/brfc-minerid
未來如何進行回應
這次的回應雖然有效且可以復制,但還能進一步優化,可以改變Bitcoin SV節點軟體的一些默認行為,還有許多其他的緩解措施、工具以及操作流程等,
眾所周知,出于安全方面的考慮,這些措施將在部署完成后才會公開,以避免暗示出潛在的攻擊向量,位元幣基礎架構團隊中許多優秀的人一直在研究這些問題,并且會持續的做下去,直到把我們從這些事件中得到的經驗和積累,都轉化為行動和代碼回應,
這次事件反映出的主要問題之一,是我們需要主動監控網路上的事件,需要有經驗的人參與進來,需要企業用戶間保持健壯的溝通渠道,任何有價值的金融系統都配套了全天候不間斷運行的運營中心和監控系統,Bitcoin SV網路上已經有了這些設施,并且現在的系統監控能力更強也更具關聯性,
總結
位元幣白皮書從根本上描述了位元幣協議正常運行所需的一系列行為,其中大部分可以通過演算法實作自動化,并且隨著時間的推移其自動化的程度也越高,當演算法被惡意利用但未發現潛在的攻擊向量時,用演算法表達規則的做法便不總是可行的,這也是為什么偶爾需要人工判斷和人為干預,位元幣并不是代碼,它是多個獨立的參與方按照規則集行事的一個系統,在這個系統里,參與方會集體拒絕破壞規則的其他參與方,
目前,全球已有超過400個專案構建于Bitcoin SV區塊鏈之上,憑借堅如磐石的協議及超高的網路性能,Bitcoin SV生態系統迅猛發展,我們期待未來出現更多前所未有的商業應用,
- 對位元幣區塊鏈開發感興趣的朋友可以通過CSDN站內私信聯系我們,申請加入BSV開發者交流群,
- 同時,您也可以掃描下方二維碼,關注位元幣協會官方微信公眾號——BA資訊,了解更多區塊鏈領域的實時資訊,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/295468.html
標籤:區塊鏈
上一篇:Poly Network遭受 6 億美元數字貨幣損失,要求黑客成為其首席安全顧問
下一篇:加密世界的現狀和7個未來趨勢
