區塊鏈-Casper機制

數字貨幣 比特幣 經濟 Pink 雲象區塊鏈 2017-06-09

區塊鏈-Casper機制

Casper協議是以太坊的一項核心設計,相關資料特別少,這幾篇譯文特別難的,感謝翻譯人的辛苦付出,使我們可以一窺設計者的思想拓展知識面,原文可以看文末原文鏈接,本文作者Vlad Zamfir是以太坊社區的傑出會員,對於DAO事件的風險有重要貢獻,文章是其本人博客,這是第一篇

以下是全部譯文

這篇文章是在史蒂夫D麥凱的要求下,從以太坊博客中找出的再版

前言:我是如何開始我在以太坊的研究工作的

2013年3月-2014年4月

在2013年3月,當比特幣網絡(真的)引起我的注意的時候,我就立馬被區塊鏈技術深深的吸引住了。這個期間“塞浦路斯危機”爆發比特幣價格急劇抬高。我學習了加密哈希,數字簽名和公鑰加密技術。我也瞭解了比特幣挖礦和激勵機制,那就是礦工們必須聯合起來保護這個網絡。在我人生中的第一次,我對計算科學和安全產生了濃厚的興趣。這感覺非常的好。

與反烏托邦自由主義經濟學的敘述相對比,這就像在一個史詩級的全球戰役中,為了把世界從部分儲蓄銀行系統中拯救出來,地下開發者(如Amir Taaki)對戰中央集權的銀行家們。區塊鏈技術革命真的是比科幻小說還要精彩。

我瀏覽了Reddit新聞網上很多的相關內容,聽了Lets Talk Bitcoin(讓我們談談比特幣)的講座以及很多關於Peter Todd(彼得託德)的事情。我在BTC-e上損失過錢(因為我聽取了Trollbox上的意見)。我和我的朋友Ethan Buchman 還有Zach Ramsay 探討過比特幣網絡這個技術。我們瞭解了MasterCoin以及在比特幣網絡上構建其他系統的可能性,以充分利用工作量證明網絡的成果。當我第一次在alt-coin場景(感謝PPCoin)中聽說到權益證明(PoS),我感覺這聽上去就像一個異想天開的巫毒魔法。用代幣來代替礦工,看上去就像一個非常奇怪的事情。我最終決定,遠程攻擊問題是最致命的,並且任何解決方案都會涉及到開發者一個形式或者另一種形式的檢查點(我從Peter Todd身上學到的一個觀點)。在2013年成為比特幣網絡中的一員是我人生中最有智慧,最為刺激的經歷之一。

在2014年一二月份的時候,我第一次讀到關於以太坊的消息。我看了Vitalik的Youtube上的視頻,並在多倫多去中心化比特幣網絡線下見面會上見到了他本人。很顯然,他知道的技術相關的故事比我要多的多,很快,這次我被以太坊深深的吸引住了。以太坊的去中心化對一個像我這樣,沒有特別背景的人能夠更好的進入並使用。它通過智能合約來做任何事情,破壞任意的一箇中心化的系統。它能做的事情太多了,以至於我還是不是非常清楚以太坊在區塊鏈生態系統中到底扮演的什麼樣的角色。這個區塊鏈技術故事(我所看到的)在與以太坊結合後進行了一個華麗的轉身,使我能夠更近距離的參與區塊鏈網絡。

受到Russel Verbeeten的邀請參與一些線下的會面,我和Ethan在參與多倫多2014年比特幣博覽會(Vitalik在這次活動中教會我如使用Merkle樹)之前,去了黑客馬拉松大會。我當時幾個星期一直在思考正確的激勵和去中心化的同行評估系統,在當時也有一篇論文被學術期刊給拒絕掉。我和Ethan盡力想在黑客馬拉松大會上把這種系統給拼在一起。Ethan使用pyethereum做了大量的工作,而我在非常緩慢的把我做出來的GUI給拼湊在一起。我們獲得了黑客馬拉松大會上的第二名(僅次於Amir的“黑色市場”,也就是現在的Open Bazaar)。這使得我們有機會再博覽會上和整個以太坊的團隊會面,通過自己的努力得到了公共Skype頻道的邀請!Charles Hoskinson 對我們發出了工作邀請:也就是那時候,在2014年4月,我們開始了以太坊的志願者工作。我們甚至得到了後綴為@ethereum.org的郵箱地址。噢耶!

我先被比特幣網絡的技術故事深深的吸引住了,然後又被以太坊的技術故事所折服,因此我入了區塊鏈空間。接著,我又被權益證明的技術故事給深深吸引住,這個權益證明在現在是非常引人注意的。我會盡可能的在時間軸和做事方法上實事求是的和大家分享權益證明機制,來充分幫助大家理解,以此來加快我們自己的努力。這可能會需要花好幾篇講清楚,故事時間只有在故事結束後才會結束。

區塊鏈-Casper機制

第一章:劍手(Slasher)協議+安全保證金:從簡單的權益證明到現代的權益證明

2014年5月-2014年9月12日

當Vitalik在2014年9月通過Skype第一次表達了對PoS權益證明機制的興趣,緊接著是在維也納的比特幣峰會上,我其實都是保持著懷疑的態度的。然後有一天,他告訴我劍手(Slasher)協議,我認為劍手(Slasher)協議其實是他在2014年2月份就有提到過。劍手(Slasher)協議想法是這樣的:如果你在同一個層級的分叉上同時簽署了兩份協議,那麼你就會失去你所能得到的區塊獎勵

這使得Vitalik能夠直接處理(和解決)無利害關係(nothing at stake)的問題。(對於不瞭解他的人來說,“無利害關係”問題指的是,權益證明機制中的礦工最佳的策略是在所有的叉上進行挖礦,因為簽名的製造非常的便宜)。它也打開了我們的想象力到一個全新的交互協議空間,來抑制不良行為。

但是,我到現在為止,並沒有對這個時間段的權益證明感到非常滿意(儘管Vitalik告訴我很多次,說他認為權益證明(POS)是未來的趨勢),因為我真的非常喜歡工作量證明(POW)。於是,在夏天,我主要忙著處理工作量證明的問題(ASIC 硬 PoW,PoW工作量證明中鏈條之間的安全共享通過工作量證明的證據傳播,還沒有完成解決這些問題)。但是我確實建議了幾個合同開發者在幾個不同的場景裡使用安全儲蓄金。這給2014年9月11日的以太坊聚會之夜種下了一個種子(感謝Stephan Tual 組織了這一次聚會,並且邀請我來參加)。

Ethan Buckman 和我聊天聊到很晚,我們一直在談論著在“黑客大會”上的權益證明而不是Amir Taaki在倫敦地方的“派對”。我將這些零散的點連接起來,在權益證明上內化了保證金安全的能力。也就是在這一晚,我堅信PoS(權益證明機制)是能行得通的,如果能使他運行起來,這將會非常的有趣。在經過了長久的討論攻擊和可能的協議相應後,我第一次體驗了PoS(權益證明機制)設計空間那驚人的大小。

自2014年9月12日的清晨以來,我堅定的提倡(給那些願意聽的人),應該把區塊鏈網絡往權益機制轉變,因為這樣的區塊鏈更加安全。我對權益證明的熱情並沒有打動Amir Taaki。但至少我和Ethan度過了非常好的時光。

安全保證金的使用總是顯著地利用了劍手(Slasher)協議的有效性。與砍掉一部分的獎勵X不同的是,一個錯誤的節點會失去一個安全保證金(假定為大小X / r的量級),區塊獎勵X將作為利息(以r的利率)。

你將你的保證金放於其中,如果你使用得當,你就會賺取一部分“利息”,但是如果你使用的不得當,你就會失去你的保證金。在經濟學上這是理想的,在編程上它是可以實現的。

將保證金加入劍手(Slasher)協議意味著無利害關係問題被正式解決。

至少,我已經確定,在這個點上,無利害關係問題被解決了,我無法理解,既然害怕無利害關係問題的產生,為什麼有人想建立一個權益證明系統同時還不設保證金。

另外,在2014年9月12日,在Stephan Tual的引薦下,我第一次遇到Pink Penguin。我一口氣地講述了前一天晚上我對於PoS(權益證明機制)的見解和體悟。就在我禮貌的拒絕了來自Eric工業(現在的Monax)的職位邀請橄欖枝,Pink Penguin 開始贊助我的這個研究。(非常感謝麼麼噠!)在這一點上,我不知道還有多少其他建立在Jae Kwon,Dominic Williams 和Nick Williamson權益證明系統上的其他的探索發現。

第二章:賄賂型攻擊者、經濟安全和遠程攻擊問題。

早在Vitalik和我我們見面之前,我們分別對激勵機制進行了論證,所以 “使得激勵機制合理化”對於權益證明是至關重要的。我們從來就不願意將“有一半的持幣者是可靠的”這個命題作為經濟安全的假設。(因為它很重要,所以這樣假設就顯得很大膽。)另外,我們知道我們需要在驗證節點(譯者注:繳納保證金存款的節點才能成為驗證節點。bonded nodes)激勵和協議安全保障之間達到某種“激勵相容”。

我們總是把協議看做一種博弈,如果協議的激勵機制鼓勵壞的行為,就很容易導致“壞的結果”。我們認為這是一個潛在的安全性問題。保證金存款機制給了我們一個明確的方式來懲罰這種不良行為; 懲罰條件是基礎的程序,它來決定是否沒收保證金。

通過長期的觀察,我們發現,當比特幣價格更高的時候,它的安全性就更高;反之當它價格更低的時候,它的安全性就更低。我們現在還發現,保證金存款給那些持有它的slasher(劍手)提供了比那些只獲得區塊獎勵的劍手還要更高的經濟效率。從這裡我們清楚地看到經濟安全(economic security)的存在,並且將它奉為一個高度優先考慮的事項。

賄賂型攻擊者

我不能確定Vitalik對博弈論的到底瞭解多少(但是很明顯,他知道的肯定比我知道的多)。在剛開始敘述這個故事的時候,我自己瞭解的博弈論知識甚至是微乎其微的--比在故事結束時的我知道的還少。但是好在知道如何去判斷和計算納什均衡。如果各位讀者還沒有學習過任何關於納什均衡的知識的話,那麼下一段便是為你們精心準備的。

一個納什均衡是一個策略組合(參與者的策略選擇)和相應的收益(損失以太幣或者獲得以太幣),達到納什均衡時,參與者個體沒有激勵偏離此均衡。“有動機去做出偏離規則的行為”意味著“如果這些參與者以某種方法去改變他們正在做的行動,那麼他們就會得到更多的$ETH”。如果你們記得這條,並且每當你們聽到“納什均衡”的時候能夠想到“個人的策略改變是毫無意義的”,那麼你就懂得了納什均衡。

在2014年夏末的某天,當Vitalik通過Skype電話問我一個有關經濟安全性的問題時,我在我立刻對他進行迴應,並在迴應中第一次提到了“賄賂型攻擊者模型”(我可以收買他們(驗證者節點)讓他們去這麼做)。我並不知道我這個想法是從哪兒來的。 之後大概過了一兩週,Vitalik再一次問了我類似的相關問題,從而促使我向更深的方向去思考。

通過收買、賄賂博弈參與者,我們能夠改變博弈的收益(payoffs),並且還能通過這個行為改變這場博弈的納什均衡。下面便是相關的圖解:

區塊鏈-Casper機制

賄賂式攻擊將經“囚徒困境”的納什均衡從(圖的左上)改變到(右下)。如果受賄賂式攻擊的博弈開始了,那麼在這個例子中的賄賂型攻擊者需要投入6個單位的成本(右下)。

賄賂型攻擊者模型是我們有關經濟安全的第一個有用的模型。

在我們想到賄賂式攻擊模型以前,我們把經濟攻擊(economic attacks)想做惡意收購,協議外的賣家收購代幣或者挖礦算力。一系列的外來資本將不得不進入系統,攻擊區塊鏈。在賄賂式攻擊模型出現後,問題將變成“收買現有節點以達到預期結果的成本是什麼?”

我們希望對我們的尚未定義的權益證明協議進行賄賂攻擊需要支付一大筆錢,以補償損失的保證金。

撇開關於“合理性”的討論不說,這是我們學著論證經濟安全性的第一步。引入賄賂式攻擊是簡單而又有趣的。我們只需要計算需要付出多少代價就能讓博弈參與者去做那些攻擊者想要的事情。如果一個攻擊者想要逆轉區塊,實現雙花,他必須支付與保證金存款同級別的賄賂資金,對此我們非常確信。我們知道我們可以識別出“雙花簽名”。所以我們非常確定,在面臨賄賂式攻擊者時,相對於工作量證明,它能夠給予權益證明以可量化的經濟安全的優勢。

遠程攻擊的賄賂經濟學

Vitalik和我將賄賂型攻擊者引入了我們有關權益證明的研究之中。我們發現沒有保證金存款的權益證明(PoS)協議會很脆弱地被一些小小的賄賂給擊敗。你簡單地給那些持幣驗證者一些賄賂,讓他們將他們的幣轉移到一個新的地址,並且提供給原來地址(現在餘額為零)的私鑰給你。(我不確定誰第一個想到的這一個想法。)我們使用賄賂型攻擊模型驗證所有其它我們已知的權益證明協議,它們都不能解決賄賂型攻擊,所以我們把它們都排除了。我個人很中意。(那時我們並沒有聽說過Jae Kwon的Tendermint,Dominic William的現已結業的Pebble,以及Nick Williamson的Credits)

賄賂式攻擊同時也給以保證金存款為基礎的權益證明帶來了挑戰:在一筆保證金存款退回給驗證者的個人地址以後,執行賄賂攻擊的對手就能用最低的價格買到驗證者地址的私鑰。

這種攻擊和遠程攻擊是如出一轍的。它獲取老的私鑰來控制區塊鏈。這就意味著攻擊者能夠隨意地創建“假的歷史記錄”。但是這種事情只有在所有的保證金都在同一時間到期的情況下才能發生。

在為我們的權益證明協議設置激勵機制之前,我們需要先解決長程攻擊的問題。如果我們沒有解決長程攻擊問題,那麼客戶端想要獲取可靠的信息來知道誰真正地擁有保證金存款,將是不可能的。

我們確實知道開發者的檢查點可以被用來解決長程攻擊問題。但是我們認為這一方法明顯過於集中化了。

在我研究轉向權益證明之後的幾周,當時我待在倫敦郊外Stephan Tual的房子時,我發現其實有一條自然規則能夠為客戶端論證安全保障金。只有當驗證節點繳納保證金存款的時候,它簽署的承諾才有意義。也就是說,當這筆保證金被取出之後,這些節點的簽名將不再有意義。也就是說,我為什麼要在你取出保證金之後繼續信任你?

賄賂式攻擊模型需要上述條件。因為當保證金被取出之後,賄賂型攻擊者幾乎不需要付出代價就能破壞有關承諾。

這意味著一個客戶端將持有一系列的驗證節點,並且如果這些區塊沒有通過這些節點被簽署,它們將會停止這些區塊。忽視從那些當前沒有保證金存款的節點發出的共識信息,能夠解決或規避長程攻擊問題。我們不是基於從創世塊(Genesis Block)到現在的歷史來驗證現在的狀態,而是基於一個誰當前持有保證金的列表以驗證現在的狀態。

這與工作量證明(PoW)是全然不同的。

在工作量證明(PoW)中,如果一個區塊是與創世塊鏈接的,並且這個塊哈希滿足了鏈的難度要求,那麼這一區塊便是有效的。但是在這個以保證金存款為基礎的模型中,如果一個區塊是被當前存有保證金的驗證節點創建的,那麼這個區塊便是有效的。這也就意味著我們將需要當前的信息以驗證區塊鏈。雖然這種主體性已經讓相當多人擔憂,但是對於基於保證金存款的權益證明(PoS)來說,卻是必要的,因為它能解決賄賂型攻擊問題。

這種認識使我非常清醒地看到,工作量證明安全模型和權益證明安全模型從根本上是不兼容的。於是我放棄了所有PoW/PoS混合方法。此外,在現在看來,嘗試通過創世塊來確定基於權益證明的區塊鏈是否合法,這一行為看上去顯然是錯誤的。

然而,除了改變有關的確認模型之外,我們確實也需要提供一種方法,用於管理這些驗證節點的列表。我們不得不使用來自於驗證節點的簽名去管理驗證節點列表的更改,我們不得不在驗證節點對這些更改達成共識後開展上述行動。否則,客戶端將有不同的驗證節點列表,而且它們因此也不能對以太坊的狀態達成一致意見。

保證金存款時間需要變得更長,這樣客戶端就能有時間去了解並識別新進入的一組驗證節點。只要客戶端保持足夠的在線時間,它們就能保持持續地更新。我認為我們將通過使用推特(Twitter),分享驗證點列表,或者是節點列表的哈希,以便於那些新的和休眠中的客戶端在它們的使用者輸入哈希到用戶界面後,能保持同步化。

如果你有一個錯誤的驗證節點列表,那麼你就會受到“中間人攻擊”(man-in-the-middle attack)。但事情並不是真的那麼糟糕。有關的討論曾經是(現在也是!)你只需要能夠去信任一次外部資源的相關信息,而在那一次之後,你就將有能力自己更新你的列表了,如果你的客戶端能保持定期在線,避免提取保證金存款的“長程”。

我知道這可能需要些時間來習慣,但是我們只能信賴新的保證金存款。Vitalik剛開始對這個討論還是有些不安的,甚至試著堅持以創世塊來完成鑑定。不過最終,我們都被在權益證明協議中的這種主觀性的必然存在所說服,深信不疑。Vitalik獨自提出了他的弱主觀性評分規則,在我看來,這個規則能替換我的觀點。我的觀點是,讓所有的驗證節點每N個區塊簽名一次,以更新驗證節點列表。

相關推薦

推薦中...