【译】Engineering Security Through Coordination Problems
最近,在比特幣社區的核心和無限派別之間出現了一個小小的爭執,這個爭論可能代表了第五十次同一主題的爭論,但這仍然很有趣,因為它突出了一個非常微妙的關于區塊鏈的哲學觀點工作。
ViaBTC是一個支持Unlimited的采礦池, 推文稱 “hashpower is law”,這是Unlimited這個常見的談話要點,它認為礦工在比特幣治理中有著非常重要的作用,因為礦工是比特幣成功的一大類非流動性金融激勵用戶。 格雷格麥克斯韋(來自核心方面) 回答說 :“比特幣的安全性恰恰是因為哈希權力不是法律”。
核心觀點是礦工在比特幣系統中的作用有限,為了確保交易的順序,他們不應該有權決定其他任何事情,包括塊大小限制和其他塊有效性規則。 這些約束由用戶運行的完整節點實施 - 如果礦工根據不同于用戶節點執行的規則的一組規則開始生產塊,則用戶的節點將簡單地拒絕塊,而不管10%或60 %或99%的哈希功率在他們后面。 對此,無限通常會回復一些類似于“如果90%的哈希功率落后于增加阻塞限制的新鏈條,并且具有10%哈希功率的舊鏈現在在五個月內減慢10倍,直到重新調整困難,您是否真的不更新你的客戶來接受新的連鎖?“
許多人經常反對將公共區塊鏈用于涉及真實世界資產或具有交易對手風險的任何應用程序。 批評不是全面的,就是說在公共區塊鏈上實施這樣的用例沒有意義,或者說部分地說,雖然在公共鏈上存儲數據可能有優勢,但業務邏輯應該在鏈中執行。
通常使用的觀點是,在這些應用程序中,信任點已經存在 - 有人擁有支持上鏈許可資產的物理資產,并且某人總是可以選擇逃離資產或被迫凍結他們通過政府或銀行進行管理,因此在區塊鏈上管理這些資產的數字化表示就像是在窗戶打開時為自己的房子支付鋼筋門。 相反,這些系統應該使用私有鏈,甚至是傳統的基于服務器的解決方案,可能會增加一些密碼技術來提高可審計性,從而節省將所有內容放在區塊鏈上的低效率和成本。
上述論點都以純粹的形式存在缺陷,并且以類似的方式存在缺陷。 盡管從理論上講 ,礦工們可以將99%的哈希權轉換為新規則的鏈條(舉例來說,這是一個沒有爭議的不好的例子,假設他們正在增加區塊獎勵),甚至可以產生一個舊鏈,使其永久無用,并且從理論上講,資產支持貨幣的集中管理者可以停止兌現一個數字代幣,制作一個與舊代幣具有相同余額的新數字代幣,除非一個特定賬戶的余額減少到零,并開始尊重新的令牌,實際上這些事情都很難做到 。
在第一種情況下,用戶必須意識到現有鏈條出了問題,同意他們應該去礦工現在挖掘的新鏈條,并下載接受新規則的軟件。 在第二種情況下,依賴于原始數字令牌的所有客戶端和應用程序都將中斷,用戶將需要更新其客戶端以切換到新的數字令牌,以及無法查看外部世界并看到他們的智能合約需要更新將完全打破。 在這一切的中間,交換機的對手可以創造一個恐懼 - 不確定性 - 懷疑運動,試圖說服人們,他們可能不應該更新他們的客戶,或者更新他們的客戶到第三套規則(例如改變工作證明),這使得執行交換更加困難。
因此,我們可以說,在這兩種情況下,即使理論上存在集權或準中央集權的當事人,可能會迫使從A州過渡到B州,但B州對用戶不利,但優于集中的當事人,這樣做需要突破了一個嚴峻的協調問題 。 協調問題在社會中無處不在,而且往往是一件壞事 - 如果英語擺脫了高度復雜和不規則的拼寫系統并且做了拼音系統,或者如果美國改用公制,或者如果我們能夠在發生經濟衰退的情況下立即降低所有價格和工資百分之十 ,實際上這需要所有人同時同意轉換,而這通常非常困難。
然而,在區塊鏈應用中,我們正在做一些不同的事情: 我們利用協調問題來利用協調問題 ,利用協調問題產生的摩擦作為防止集中行動者瀆職的壁壘。 我們可以構建具有屬性X的系統,并且我們可以保證他們將高度保留屬性X,因為將規則從X更改為非X需要大量的人同意更新他們的軟件。 。 即使有演員可以推動變革,但這樣做會很難。 這是您從客戶端驗證區塊鏈共識規則中獲得的安全性。
請注意,這種安全性主要依賴于用戶的分散。 即使世界上只有一個礦工,礦工開采的加密貨幣與PayPal類似的中央系統仍然存在差異。 在后一種情況下,運營商可以選擇任意改變規則,凍結人們的錢,提供不良服務,抬高費用或做大量其他事情,協調問題對運營商有利,因為這樣的系統具有大量的網絡效應,所以很多用戶必須同時同意切換到更好的系統。 在前一種情況下,客戶端驗證意味著礦工可能希望參與的許多惡作劇嘗試被默認拒絕,并且協調問題現在對用戶有利。
請注意,上述論點本身并不意味著礦工成為協調和決定區塊大小的主要參與者(或以太坊的情況下,氣體限制)是一個壞主意。 很可能出現這樣的情況: 在區塊規模/天然氣限制的具體情況下 ,“協調一致的礦工采取統一激勵措施的政府”是決定這一特定政策參數的最佳方法,可能是因為礦工濫用權力的風險低于任何具體選擇的硬限制在限制設定十年后對市場條件極不適當的風險。 然而,說礦政府是決定一個政策參數的最佳方法并且毫無道理地說, 對于其他參數 (例如,區塊獎勵),我們希望依靠客戶端驗證來確保礦工受到限制。 這是工程分散式指令的本質:它是關于策略性地使用協調問題來確保系統繼續滿足某些期望的特性。
上面的論點也并不意味著即使對于需要信任的服務,也盡量將所有內容放在區塊鏈上總是最優的。 通過在區塊鏈上運行更多業務邏輯,通常至少可以獲得一些收益,但它們往往遠小于效率或隱私的損失。 這很好, 區塊鏈不是每個任務的最佳工具。 但是,上面的論點暗示,如果你正在構建一個基于區塊鏈的應用程序,其中包含許多不必要的集中式組件,那么你可以通過給予用戶一種通過訪問你的應用程序的方式在信任最小化方面取得更多的進步一個普通的區塊鏈客戶端(例如在以太坊的情況下,這可能是Mist,Parity,Metamask或Status),而不是讓他們使用您親自控制的Web界面。
從理論上講,如果每個用戶運行一個獨立的“理想完整節點”,即用戶端驗證的好處得到了優化,該節點接受遵循所有人在創建系統時同意的協議規則的所有塊,并拒絕所有執行不。 然而,實際上,這涉及到要求每個用戶處理網絡中每個人運行的每一筆交易,這顯然是站不住腳的,特別是要記住智能手機用戶在發展中國家的快速增長。
這里有兩種方法。 首先,我們可以認識到,雖然從上述觀點來看,每個人都運行一個完整的節點是最佳的,但它當然不是必需的 。 可以說,任何以滿負荷運行的大型區塊鏈都已經達到了“普通人”花費1/5的硬盤空間來運行整個節點是沒有意義的地步,因此剩下的用戶就是愛好者和商家。 只要其中有相當多的人來自不同的背景,那么讓這些用戶串通起來的協調問題仍然是非常困難的。
其次,我們可以依靠強大的輕客戶端技術 。
區塊鏈系統通常有兩個級別的“輕客戶端”。 第一個較弱的輕客戶簡單地說服用戶,在一定程度的經濟保證下,他們處于大多數網絡支持的鏈條上。 這可以比驗證整個鏈更便宜,因為所有客戶需要做的就是驗證工作方案驗證隨機數或證明利益方案驗證簽署的證書,該證書聲明“狀態的根哈希值是我所說的是,或者你可以將這個證書發布到主鏈中以刪除我的大筆金錢“。 一旦輕客戶端驗證了根散列,他們就可以使用Merkle樹來驗證他們可能想要驗證的任何特定數據。
看,這是一棵梅克爾樹!
第二級是“接近完全驗證”的輕客戶端。 這種客戶不只是試圖跟隨大多數人關注的鏈條, 相反,它也試圖只遵循遵循所有規則的鏈條。 這是通過一系列策略來完成的; 最簡單的解釋是,輕客戶可以與專業節點一起工作(向Gavin Wood提供名為“漁民”的信用),其目的是尋找無效的區塊并產生“欺詐證據”,短消息基本上說“看! 這個塊在這里有一個缺陷!“。 輕客戶然后可以驗證塊的特定部分,并檢查它是否實際上是無效的。
如果一個塊被發現是無效的,它將被丟棄; 如果輕客戶在幾分鐘內沒有聽到任何給定塊的欺詐證據,則認為該塊可能是合法的。 在處理問題不是數據不好 ,而是缺少數據的情況下, 復雜性會更復雜一些 ,但總的來說,可能非常接近捕捉礦工或驗證者違反規則的所有可能方式的協議。
請注意,為了輕量級客戶端能夠高效地驗證一組應用程序規則,這些規則必須在共識內部執行 - 也就是說,它們必須是協議的一部分或協議內部執行的機制的一部分(像一個聰明的合同)。 這是支持將區塊鏈用于數據存儲和業務邏輯執行的關鍵論據,而不僅僅是數據存儲。
這些輕客戶端技術并不完美,因為他們確實依賴于網絡連接的假設以及網絡中其他輕客戶和漁民的數量。 但是,對于100%的驗證者來說,100%的工作時間并不重要。 相反,我們所需要的只是創造一種情況,即任何由敵對卡特爾礦工/驗證人在未經用戶同意的情況下推動無效塊的任何嘗試都會導致很多人頭痛,并最終要求每個人都更新他們的軟件想要繼續與無效鏈同步。 只要滿足這一點,我們就通過協調摩擦達到了安全的目標。
https://vitalik.ca/general/2017/05/08/coordination_problems.html
總結
以上是生活随笔為你收集整理的【译】Engineering Security Through Coordination Problems的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】Analyzing Token S
- 下一篇: 【译】A Practical Intro