1、區塊鏈不可篡改?錯!
大多數關于區塊鏈技術的出版物都將區塊鏈這個賬本描述為不可篡改的。不過,這樣的描述并不完全正確。區塊鏈具有數據防替換和防篡改的功能,這也是它們深得金融交易青睞的一個原因。但這并不意味著區塊鏈是完全不可變的,因為在某些情況下區塊鏈是可以被修改的。在本節中,我們將探討不滿足區塊鏈賬本不可變性這個說法的一些操作。
我們并不能說區塊鏈是完全不修改的。對于一些區塊鏈來說,最新生成的區塊,或稱區塊鏈“尾部”的區塊可能會被替換(被一個具有不同“尾部”區塊的更長的替代區塊鏈所替換,51%算力攻擊也是這樣的原理)。眾所周知,當存在多個競爭區塊鏈時,大多數區塊鏈網絡采取的策略都是將最長的區塊鏈(即具有最多工作量的區塊鏈)作為共識鏈。如果兩條有著不同尾部區塊的區塊鏈互相競爭,更長的那一條將獲得勝利。不過,這并不意味著未能成功加入共識鏈的區塊(競爭失敗區塊鏈的尾部區塊)中交易會丟失,它們可能已被加入到后續的區塊中或者返回到礦工的交易池中。我們常說區塊鏈上的交易需要等待之后幾個區塊的確認時間就是因為區塊鏈尾部區塊的弱不可變性。
對于公有區塊鏈來說(permissionless blockchain),采用更長的替代區塊鏈上的區塊可能是51%算力攻擊的結果。為此,攻擊者只需獲取足夠的資源,在生成區塊的速度上超過區塊鏈網絡其余礦工的總和(持有區塊鏈網絡超過51%的算力資源用于生成新的區塊)。鑒于區塊鏈網絡的規模,這是一種成本十分高昂的攻擊形式,可能只有國家行為才能做到。執行此類攻擊的成本隨著攻擊者想要篡改區塊的深度(后續區塊的個數)的增加而增加,從技術層面上來說,執行這種攻擊并不困難(因為執行這種攻擊只需要以更快的速度重復正常的區塊生成過程,只是要選擇每筆交易的去留),就是成本高昂。
對于許可區塊鏈(permissioned blockchain)來說,遭受這種攻擊的可能大大降低。許可區塊鏈中通常存在區塊鏈的所有者或者是由區塊鏈網絡用戶組成的聯盟,他們擁有很大的權力,可以決定節點在區塊鏈網絡中的去留。由于他們可以輕易地刪除區塊鏈網絡中不合作的節點,因此網絡中所有節點都會聯合起來公平地挖礦,不太可能形成競爭區塊鏈。除此之外,許可區塊鏈中的用戶通常還會簽署具有法律效應的合同,在其中規定不當行為要付出的代價和他人采取法律行動的權力。雖然這種控制對于防止不當行為很有用,但這也意味著如果區塊鏈的所有者或聯盟需要,他們可以通過合法手段替換區塊鏈中的任意區塊。
2、沒有人能控制區塊鏈?錯!
區塊鏈網絡的治理需要應對一系列指導和控制區塊鏈的規則、慣例和過程,其中一個常見的誤解就是區塊鏈網絡是沒有控制權和所有權的系統,所以人們經常說“沒有人可以控制區塊鏈!”。從嚴格意義上來說這種理解是錯誤的。許可區塊鏈網絡通常是由管理區塊鏈的所有者或聯盟組織和運行。公有區塊鏈網絡通常由區塊鏈網絡用戶,挖礦節點和軟件開發人員共同管理,各方都有一定程度的控制權,都可以影響區塊鏈網絡發展的方向。
軟件開發人員構建區塊鏈網絡使用的區塊鏈軟件。由于大多數區塊鏈軟件都是開源的,用戶可以檢查源代碼,獨立編譯出一個區塊鏈網絡,甚至還可以創建一個單獨但兼容的軟件來繞過開發人員發布的預編譯軟件。但是,并不是每個用戶都有能力做到這一點,這意味著區塊鏈軟件的開發人員將在區塊鏈網絡治理中發揮重要角色。這些開發人員可能會為整個社區的利益行事,并對此負責。例如,2013年比特幣開發團隊更新了最受歡迎的比特幣客戶端,但其中引入了一個漏洞并造成了兩條區塊鏈競爭的局面。開發人員不得不面臨保留新版本(但尚未被所有人采用)還是恢復舊版本的抉擇,哪一種選擇都會導致另一條區塊鏈被丟棄,這意味著一些區塊鏈網絡用戶的交易將變得無效。最終開發人員做出了選擇,恢復了舊版本并成功控制了比特幣區塊鏈的運行。
雖說這個例子是一個無意造成的分叉,但是這也讓我們意識到,開發人員可以通過故意更新區塊鏈軟件來篡改區塊鏈協議或格式。而且只要有足夠多的用戶采用,就可以成功進行區塊鏈的分叉。通常區塊鏈軟件更新帶來的分叉會提前討論分叉時的區塊高度并與相關用戶協調。對于公有區塊鏈網絡,相關用戶通常是指挖礦節點。在軟件更新分叉之前會有很長的討論周期和采用周期,所有用戶必須在指定的區塊后切換到新區塊鏈軟件以繼續在區塊鏈上記錄交易。
對于公有區塊鏈網絡,盡管開發人員具有很大的影響力,但用戶可以通過拒絕安裝區塊鏈軟件更新來抵制開發人員的篡改。挖礦節點對區塊鏈網絡用戶擁有很大的控制權,因為他們創建和發布新的區塊。雖說沒有明令要求,但用戶通常都會接受挖礦節點發布的區塊。這樣做帶來了一個有趣的副作用,公有區塊鏈網絡基本上由挖礦節點統治,挖礦節點可能會通過強制用戶接受他們可能不同意的篡改來更新區塊鏈,而不接受篡改的另一部分用戶則會被邊緣化。
許可區塊鏈網絡由相關所有者或聯盟的成員進行控制和治理。聯盟可以規定誰能加入網絡,從網絡中刪除用戶,規范智能合同的編碼指南等等。
總之,軟件開發人員,挖礦節點和區塊鏈網絡用戶都參與了區塊鏈網絡的治理。
3、一切都能上鏈?錯!
區塊鏈網絡可以很好地處理數字化系統中存儲的數據。然而,當數據需要與現實世界交互時就會出現一些問題(通常稱為預言機問題(Oracle Problem))。區塊鏈網絡可以用來記錄用戶輸入的數據以及來自現實世界中傳感器輸入的數據,但它缺少某種方法來確定輸入數據是否正確反映了現實世界,就比如說傳感器可能會出現故障并記錄不準確的數據,用戶可能會記錄虛假的信息(故意的或無意的)。這些并不是區塊鏈網絡專有的問題,所有的數字化系統都面臨這樣的難題。但不幸的是,區塊鏈網絡是假名的,處理數字網絡之外的誤傳數據是一個很嚴重的問題。
就比如說,如果使用加密貨幣購買現實世界中的商品,區塊鏈網絡除了依靠外部傳感器輸入和用戶輸入之外沒有任何方式可以確定商品是否發貨(即現實世界中的交易是否成功)。
許多項目都試圖解決“預言機問題”并創建可靠的機制以獲得準確、可信的外部數據。例如,“Oraclize”項目提供了一種機制,即獲取Web API數據并將其轉換為區塊鏈可讀的字節碼/操作碼。但在去中心化應用中,這樣的機制被認為有中心化的傾向,將成為容易遭受攻擊的單點故障。結果是,最近出現了像“Mineable Oracle Contract”這樣受區塊鏈技術啟發,建立在現有的共識模型和經濟激勵之上,旨在找到解決預言機問題新途徑的解決方案。
4、區塊鏈無法被關閉?錯!
傳統的中心化系統會不斷地創建和關閉,去中心化的區塊鏈網絡也與之類似。但是,也正因為區塊鏈是去中心化的,所以有可能即使區塊鏈網絡“關閉”了,但它永遠不會完全的關閉,并且可能會有一些區塊鏈節點一直運行下去。
但一個廢棄了的區塊鏈不再適合做歷史記錄,因為區塊鏈網絡中已經沒有了很多挖礦節點組成的“護城河”,惡意用戶可以輕松地使用算力壓制為數不多的幾個挖礦節點重做并替換任意數量的區塊。
5、區塊鏈絕對安全?錯!
區塊鏈技術的使用并未消除那些需要精心設計并主動管理的固有網絡安全風險。這些固有風險中很多這都涉及人的因素。因此,一個強大的網絡安全程序對于保護區塊鏈網絡和網絡中各參與方免受網絡安全威脅至關重要,尤其是在區塊鏈網絡以及其中漏洞都為黑客所知的情況下。
現有的網絡安全標準和指導高度依賴于確保相關系統接口安全或依賴于區塊鏈網絡。考慮到區塊鏈技術的某些具體屬性,現有的標準和指導提供了保護區塊鏈網絡免受網絡攻擊的堅實基礎。
除了一般原則和限制之外,一些與區塊鏈技術相關的特定網絡安全標準已經存在多年并被各行各業廣泛使用。例如,美國國家標準與技術研究院網絡安全框架明確指出它“并非一刀切來管理網絡安全風險的方法”,因為”每個組織都有各自的風險,不同的威脅,不同的漏洞,不同的風險承受能力,所以他們實施框架中條例的情況會有所不同”。根據這種說法,盡管此框架并非專門針對區塊鏈技術而設計的,但其標準十分廣泛且足以涵蓋區塊鏈技術,可以幫助機構制定政策和流程來識別和控制影響區塊鏈技術的風險。
網絡攻擊
得益于防替換和防篡改設計,區塊鏈技術被吹噓為非常安全的,交易一旦被提交到區塊鏈之后通常都不能再改變。但是,只有當交易被加入到新發布的區塊中這種說法才成立。尚未包含在區塊鏈已發布區塊中的交易容易受到幾種類型的攻擊。對于那些具有交易時間戳的區塊鏈網絡,時間欺騙或調整訂購服務用戶的時間戳可能會對交易產生正面或負面的影響,使得時間和基于時間戳的通信成為黑客的攻擊向量。區塊鏈平臺中以及在區塊鏈平臺上部署的智能合約中可能會出現拒絕服務攻擊。
區塊鏈網絡及其應用程序不能免疫那些能夠執行網絡掃描和偵察,從而發現和利用漏洞執行零日漏洞攻擊(zero-day attacks)的惡意行為者。那些匆匆忙忙部署的基于區塊鏈的服務,新編寫的應用程序(如智能合約)可能包含已知的和未知的漏洞和部署缺陷,在未來某一天可能會被黑客發現并通過網絡攻擊,就像當下黑客攻擊網站或應用程序一樣。
6、惡意用戶無法搞掉區塊鏈?錯!
雖然區塊鏈網絡可以強制執行交易規則和規范,但它無法強制執行用戶行為準則。這是公有區塊鏈網絡中一個很嚴重的問題,因為用戶是假名的并且用戶在現實生活中的身份和在區塊鏈中的身份之間沒有一對一的匹配。公有區塊鏈網絡通常會提供獎勵(例如加密貨幣)以激勵用戶表現出誠實行為,但是,如果惡意行為能夠獲得更多獎勵時有些人可能會鋌而走險。對于惡意用戶來說,其面臨的最大問題是如何得到足夠多的資源(如權益證明區塊鏈中的權益,工作量證明區塊鏈中的算力等等)來執行攻擊。一旦這些惡意用戶聯合起來且擁有了足夠的資源,可能會進行很多種惡意挖礦行為,包括:
忽略來自特定用戶,節點甚至整個國家/地區的交易。
秘密創建一個篡改了的替代區塊鏈,然后在替代區塊鏈長度超過原區塊鏈時提交給區塊鏈網絡。根據區塊鏈協議,誠實節點將切換到具有更多工作量的替代區塊鏈上,從而打破區塊鏈網絡防替換和防篡改的原則。
拒絕將新生成的區塊發送給其他節點(因為這樣可以在下一個區塊的競爭中搶占先機),從根本上擾亂區塊鏈信息的分發機制(如果區塊鏈網絡足夠去中心化,這將不是問題)。
雖然惡意用戶可能會擾亂區塊鏈的秩序并在短期內造成傷害,但區塊鏈網絡可以執行硬分叉來與它們對抗。無論這些惡意用戶帶來了多大的損害,造成了多大的損失都可以恢復,具體取決于區塊鏈網絡的開發人員和用戶(The DAO事件中經社區商討回滾交易,恢復了所有被盜的以太坊)。
除了區塊鏈網絡的惡意用戶之外,許可區塊鏈網絡的基礎設施管理員也可能會有惡意行為。例如,基礎設施管理員可能會(取決于具體的情況)接管區塊的生成,去除某些用戶的交易,重寫區塊鏈歷史,雙重支付,刪除資源,重新路由網絡流量以及阻止網絡連接。
7、區塊鏈上不需要信任?錯!
區塊鏈的另一個常見誤解是,人們在聽說區塊鏈中沒有“可信任的第三方”后推斷區塊鏈網絡是“無需信任”的環境。雖說在公有區塊鏈網絡中沒有可信任的第三方來認證交易(這種無需信任在許可區塊鏈網絡中并不明顯,因為這些網絡的管理員通過準許用戶加入和授予用戶許可來管理信任問題),區塊鏈網絡的運行中仍然需要很多的信任:
要信任使用到的密碼學技術。例如,加密算法及其實現都可能會存在漏洞。
要信任智能合約準確和無錯誤的操作,而智能合約中可能會有無意留下的漏洞。
要信任軟件開發人員構建的盡可能無錯誤的軟件。
要信任區塊鏈中大多數用戶沒有秘密串通。如果某個團隊或個體擁有50%以上的區塊生成能力,那么他可以摧毀這個公有區塊鏈網絡。但是好在,獲得必要的算力要付出非常昂貴的代價。
對于那些沒有運行完整節點的區塊鏈網絡用戶,要信任所有節點都公平地接收和處理交易。
8、共識算法極其高效?錯!
區塊鏈技術帶來了一個全球性的網絡,在其中每筆交易都能得到驗證,且區塊鏈中的數據在眾多用戶之間保持同步。在那些使用工作量證明的區塊鏈網絡中,有許多挖礦節點消耗大量的處理時間,更重要的是,也消耗了大量的電力。工作量證明方法是一種“難以破解,易于驗證”的高效共識解決方案,但美中不足的是,它通常需要消耗大量的資源。由于應用和信任模型的不同,許多許可區塊鏈技術不使用資源密集型的共識解決方案,而是使用不同的方法來達成共識。
工作量證明共識模型是針對系統中用戶之間幾乎沒有信任的情況而設計的,它確保挖礦節點無法操縱系統每次都解出哈希謎題,因而無法控制區塊鏈和添加到區塊鏈中的交易。然而,圍繞工作量證明共識模型的一個主要問題就是它通過消耗資源來解決謎題,而且通常消耗的資源并不是微不足道的。例如,據估計當下比特幣區塊鏈網絡每年消耗電力比肩愛爾蘭整個國家。據推測,到2020年比特幣區塊鏈網絡每年消耗的電力將超過整個丹麥。隨著軟件和硬件的不斷改進,工作量證明解謎的過程將變得更加高效,也就是說可以減少挖礦使用的電力。然而,與此同時區塊鏈網絡的算力也會增長,解謎的難度也會增加。
每當創建新的完整節點時都會給區塊鏈網絡帶來額外的資源壓力,因為完整節點必須獲取(通常是從其他節點處下載)大部分或全部區塊鏈數據(目前比特幣區塊鏈的數據已經超過175GB并且還在不斷增加)。這個過程會占用很多網絡帶寬。
9、挖礦可以有效激勵礦工?錯!
區塊鏈一個潛在的限制是挖礦獎勵不足的風險。日益激烈的競爭,日益增長的算力需要對礦池做出有顯著意義的貢獻,而加密貨幣市場高度不穩定的幣價會產生某些加密貨幣的預期回報可能小于運行挖礦軟件所需電力成本的風險,此時,其他高預期回報的加密貨幣可能更具吸引力。
加密貨幣無法持續和充分地獎勵挖礦節點的風險將會引發加密貨幣發布區塊和處理交易的延遲,這些延遲可能會降低用戶對加密貨幣的信心,從而進一步降低其市場價值,因而加密貨幣對挖礦節點的吸引力也就越來越小,如此惡性循環,更糟糕的是,這種削弱的加密貨幣將承受更大的風險,具有大量資源的節點可能會惡意篡改區塊鏈或對嘗試提交交易的用戶進行拒絕服務攻擊。
10、區塊鏈上永遠匿名?錯!
一些人聽說區塊鏈技術中整合了公鑰基礎設施之后就立即相信它從本質上支持身份認證。事實并非如此,因為私鑰對與用戶之間并沒有一對一的匹配(用戶可以有多個私鑰),區塊鏈地址和公鑰之間也沒有一對一的匹配(可以從單個公鑰導出多個區塊鏈地址)。
網絡世界中通常使用數字簽名驗證身份,這可能導致區塊鏈在身份管理的潛在應用中產生混亂。區塊鏈上交易的簽名驗證過程將交易連接到私鑰的所有者,但并沒有提供將這些所有者與現實世界中身份相關聯的工具。在某些情況下可以將私鑰連接到現實世界中的身份,但這些連接是通過區塊鏈之外的操作進行的,而不是由區塊鏈自身執行的。例如,執法機構可以要求加密貨幣交易所提供連接交易與個人的記錄。另一個例子是個人為了獲取捐贈在其個人網站或社交媒體上發布自己的加密貨幣地址,這種操作也將地址連接到了現實世界中的身份。
雖說可以在某些需要去中心化賬本組件的身份管理框架中使用區塊鏈技術,但要記住典型的區塊鏈網絡并不是為獨立的身份管理系統而設計的,比起部署區塊鏈來還有很多保障數字身份安全的方法。
關鍵詞: 區塊鏈