banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

Vitalik Buterin的網站博客解讀

2016 年 12 月 29 日這是《郵報》的一面鏡子https://medium.com/@ VitalikButerin/a-proof-stage-design-philosophy-506585978 d51

以太坊(以及比特幣、NXT 和 Bitshares 等)等系統是一種全新的加密經濟有機體 —— 完全存在於網絡空間的去中心化、無管轄權的實體,由密碼學、經濟學和社會共識的結合來維持。它們有點像 BitTorrent,但它們也不像 BitTorrent,因為 BitTorrent 沒有狀態的概念 —— 這區別變得至關重要。他們有時被描述為分權自治公司,但是他們也不完全是公司 —— 你不能硬把微軟叉開。它們有點像開源軟件項目,但也不完全是這樣 —— 你可以派生一個區塊鏈,但不像你派生 OpenOffice 那麼容易。

這些加密經濟網絡有多種風格 —— 基於 ASIC 的 PoW、基於 GPU 的 PoW、naive PoS、delegated PoS,有望很快成為 Casper PoS—— 每種風格都不可避免地有自己的基本理念。一個眾所周知的例子是工作證明的最大主義觀點,其中 “正確的” 區塊鏈,單數,被定義為礦工燃燒最大量的經濟資本創造的鏈條。這個機制最初只是一個協議內的分支選擇規則,在很多情況下已經被提升到一個神聖的原則 —— 參見我和克里斯・德羅斯在推特上的討論舉個例子,有人認真地試圖以一種純粹的形式捍衛這個想法,即使面對哈希算法改變協議的硬分叉。' Bitshares '委託股權證明提出了另一種連貫的哲學,在這種哲學中,一切都源於一個單一的原則,但這個原則可以更簡單地描述:股東投票

每一種哲學;中本聰共識、社會共識、股東投票共識,會得出自己的一套結論,並形成一套價值體系,從自身角度來看,這套價值體系頗有道理 —— 儘管在相互比較時,它們肯定會受到批評。卡斯帕共識也有一個哲學基礎,儘管到目前為止還沒有簡潔地表達出來。

我自己、Vlad、Dominic、Jae 和其他人都有自己的觀點,關於為什麼存在 stake 協議證明以及如何設計它們,但是在這裡我打算解釋一下我個人的觀點。

我將直接列出觀察結果和結論。

  • 密碼學在 21 世紀確實很特別,因為密碼學是極少數敵對衝突繼續嚴重有利於防禦者的領域之一。城堡遠比建造容易摧毀,島嶼可以防禦,但仍然可以被攻擊,但一個普通人的 ECC 密鑰足夠安全,甚至可以抵禦國家級的行為者。Cypherpunk 哲學從根本上講是利用這種寶貴的不對稱來創造一個更好地保護個人自主權的世界,而密碼經濟學在某種程度上是這種哲學的延伸,只是這次保護的是複雜的協調和合作系統的安全性和活性,而不僅僅是私人信息的完整性和保密性。認為自己是賽博朋克精神的意識形態繼承者的系統應該保持這一基本屬性,摧毀或破壞它們比使用和維護它們要昂貴得多。

  • “賽博朋克精神” 不僅僅是關於理想主義;製造防禦比攻擊更容易的系統也是簡單的合理工程。

  • 在中長期尺度上,人類非常擅長一致。即使對手擁有無限的哈希能力,並對任何主要的區塊鏈發動了 51% 的攻擊,甚至恢復了上個月的歷史,說服社區這個鏈是合法的也比僅僅超越主鏈的哈希能力要困難得多。他們需要顛覆 block explorers、社區中每個受信任的成員、紐約時報、archive.org 和互聯網上的許多其他來源;總而言之,讓世界相信新的攻擊鏈是在信息技術密集的 21 世紀首先出現的,就像讓世界相信美國登月從未發生一樣困難。從長遠來看,這些社會因素最終會保護任何區塊鏈,不管區塊鏈社區是否承認這一點(注意到比特幣核心確實承認社會層的這種首要地位)。

  • 然而,僅靠社會共識保護的區塊鏈效率太低,速度太慢,而且很容易讓分歧無休止地持續下去(儘管困難重重,它已經發生了);因此,經濟共識在短期內保護活性和安全屬性方面起著極其重要的作用。

  • 因為工作保障的證明只能來自集體獎勵(用多米尼克・威廉姆斯的話來說,它缺少三個 e 中的兩個),而對礦工的激勵只能來自他們失去未來大宗獎勵的風險,工作的證明必然基於一種邏輯,即在巨額報酬的激勵下,巨大的權力得以存在。從 PoW 攻擊中恢復是非常困難的:第一次發生時,你可以硬分叉來改變 PoW,從而使攻擊者的 ASICs 無用,但第二次你就不再有這種選擇,因此攻擊者可以一次又一次地攻擊。因此,採礦網絡的規模必須非常大,以至於攻擊是不可想像的。通過讓網絡每天持續花費 X 來阻止規模小於 X 的攻擊者出現。我拒絕這種邏輯,因為它殺死樹木,以及 (ii) 它未能實現賽博朋克精神 —— 攻擊成本和防禦成本是 1:1 的比率,因此沒有防守方的優勢

  • 利害關係的證明打破了這種對稱,因為它不依賴於安全獎勵,而是依賴於懲罰。驗證者將資金(“存款”)置於危險之中,並因鎖定他們的資本和維護節點以及採取額外的預防措施以確保他們的私鑰安全而獲得輕微的回報,但恢復交易的大部分成本來自於比他們同時獲得的回報大幾百倍或幾千倍的罰款。因此,證明利害關係的 “一句話哲學” 不是 “安全來自燃燒的能源”,而是 “安全來自提出經濟損失價值”。如果您可以證明,除非惡意節點共謀試圖使交換機支付價值 $X 的協議內損失,否則無法實現任何衝突塊或狀態的同等終結級別,則給定塊或狀態具有 $X 安全性。

  • 理論上,多數驗證者的共謀可能接管一個利益鏈的證明,並開始惡意地行動。然而,(I)通過巧妙的協議設計,他們通過這種操縱賺取額外利潤的能力可以被盡可能地限制,更重要的是(ii)如果他們試圖阻止新的驗證者加入,或者執行 51% 攻擊,那麼社區可以簡單地協調一個硬分叉,刪除違規驗證者的存款。一次成功的攻擊可能會花費 5000 萬美元,但清理後果的過程不會更繁重的比2016.11.25 的 geth/parity 共識失敗。兩天後,區塊鏈和社區又回到了正軌,攻擊者損失了 5000 萬美元,而社區的其他人可能會更富有,因為攻擊會導致令牌的價值下降向上由於隨之而來的供應短缺。那是對你來說攻擊 / 防禦不對稱。

  • 上述內容不應被理解為計劃外的硬分叉將成為經常發生的事情;如果需要,一個單一的51% 的攻擊對股權證明肯定可以設置為高達成本的一永久的51% 的攻擊,並且攻擊的純粹成本和無效性應該確保它在實踐中幾乎從未被嘗試過。

  • 經濟學不是一切。個別演員可能會受到協議外動機的激勵,他們可能會被黑客攻擊,他們可能會被綁架,或者他們可能只是喝醉了,決定有一天破壞區塊鏈,讓成本見鬼去吧。此外,從好的方面來看,個人的道德克制和溝通效率低下通常會將攻擊的成本提高到比協議規定的名義損失值高得多的水平。這是一個我們不能依賴的優勢,但同時也是一個我們不應該不必要地拋棄的優勢。

  • 因此,最好的協議是在各種模型和假設下工作良好的協議—— 協調選擇的經濟合理性、個人選擇的經濟合理性、簡單容錯、拜占庭容錯(理想情況下,適應性和非適應性對手變體),受 Ariely/Kahneman 啟發的行為經濟學模型(“我們都有一點欺騙”)理想情況下,任何其他模型都是現實可行的。重要的是要有兩層防禦:經濟激勵阻止集中的卡特爾採取反社會的行動,反集中激勵從一開始就阻止卡特爾的形成。

  • 盡可能快地工作的共識協議有風險,如果要處理的話,應該非常小心,因為如果可能性非常快與… 有關激勵要做到這一點,這種組合將獎勵非常高的、引發系統性風險的水平網絡級集中化(例如,所有驗證器都從同一個主機提供商運行)。共識協議不太關心驗證器發送消息的速度,只要它們在某個可接受的長時間間隔內(例如 4-8 秒,因為我們憑經驗知道以太坊中的延遲通常為~500 毫秒 - 1 秒)發送消息,就沒有這些顧慮。一個可能的中間立場是創建可以非常快速工作的協議,但類似於以太坊的叔叔機制的機制確保節點增加其網絡連接度超過某個容易達到的點的邊際回報相當低。

從這裡開始,當然有許多細節和許多方法可以在細節上產生分歧,但以上是至少我的 Casper 版本所基於的核心原則。從這裡,我們當然可以討論相互競爭的價值觀之間的權衡。我們是給 ETH 1% 的年發行利率,並獲得 5000 萬美元的強制補救硬分叉成本,還是給 ETH 零年發行利率,並獲得 500 萬美元的強制補救硬分叉成本?在經濟模型下,我們什麼時候增加一個協議的安全性來換取在容錯模型下降低它的安全性?我們更關心可預測的安全級別還是可預測的發行級別?這些都是另一個帖子的問題,以及執行這些價值之間的不同權衡是更多帖子的問題。不過我們會說到。

硬分叉、軟分叉、默認和強制#

中文翻譯如下:

當新共識規則發布後,沒有升級的節點會因為不知道新共識規則下,而生產不合法的區塊,從而產生的臨時性分叉。

所以,簡單的理解就是軟分叉其實是臨時性的,它有可能恢復到最新鏈的狀態,只要未升級的節點重新升級最新狀態,那就能回到已更新的鏈道來。 軟分叉發生的鏈中,未升級的節點可以驗證已經升級的節點產生的區塊,而已升級的節點也可以驗證未升級節點產生的區塊。我們那個圖片來說明。

image

軟分叉的特點:

1. 較好的兼容性,可以不升級用之前版本的功能。

2. 區塊鏈中沒分叉的鏈條,如上圖中的那樣一條鏈,只有新区塊和就區塊之分。

3. 長時間允許不升級,新舊區塊並存。

2)硬分叉

這裡同樣引用比特幣官網的英文描述:

A permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.

中文翻譯如下:

區塊鏈發生永久性分歧,在新共識規則發布後,部分沒有升級的節點無法驗證已經升級的節點生產的區塊,通常硬分叉就會發生。

就是說硬分叉是永久的分叉,一旦分叉了就回不去原來的分叉。區塊鏈版本更新,未升級的節點拒絕驗證已經升級的節點生成的區塊,已經升級的節點可以驗證未升級節點產生區塊,新舊節點各自延續生成自己版本的區塊,從而形成了兩條不同的鏈。正所謂:道不同不相為謀。咱倆既然意見不合,我舊結點不接受你新節點,那我們各自為政,誰犯不著誰。同樣我們再用圖片。

的特點:

1. 無兼容性,不兼容之前版本,強調升級。

2. 區塊鏈中分了兩條鏈,如上圖所示。

3. 需在一定時間全部同意升級,不同意的進入舊鏈。

二、為什麼會產生硬分叉
產生軟分叉或硬分叉的原因個人的理解是主要是因為某些問題而提出各種各樣的方案,但因為各自覺得自己的方案好而產生的意見不一,大家都互不相讓,導致各自幹自己的方案,這分叉就來了。例如針對擴容問題,提供了各種的方案。

在原始的比特幣系統中規定了一個區塊的容量為 1M,一個區塊確認的時間是 10 分鐘,即每個區塊每秒能處理大概 7 個的交易數。這樣的處理能力實在有點低下,很容易造成堵塞,最後就崩潰了。所以有人就提出了區塊的擴容。說改成 2M 的,說改成 20M 的,說改成無限容量的。這聽誰的呢,沒人決定得了,那就只能自己幹自己的版本啰。

比較廣為人知的硬分叉是 ETC 和 ETH。這是在 2016 年 7 月,以太坊開發團隊通過修改以太坊軟件代碼在第 192000 區塊,強行把 The DAO(分布式自治組織)及其子 DAO 所有資金全部轉到一個特定的退款合約地址從而奪回黑客所控制的 DAO 合約的以太幣。然後形成了兩條鏈,一條 ETC(原鏈),一條 ETH(分叉鏈)。

區塊鏈領域的一個重要爭論是硬分叉還是軟分叉是首選的協議升級機制。兩者之間的基本區別在於,軟分叉通過以下方式改變協議的規則嚴格還原有效的事務集,因此遵循舊規則的節點仍將進入新鏈(假設大多數挖掘器 / 驗證器實現了分叉),而硬分叉允許先前無效的事務和塊變得有效,因此客戶端必須升級它們的客戶端以便留在硬分叉鏈上。硬分叉還有兩個子類型:嚴格擴張硬分叉,它嚴格擴展了有效的交易集,因此相對於新規則,舊規則實際上是一個軟分叉,並且雙邊的硬分叉,這兩個規則集是雙向不兼容的。

這裡有一個文氏圖來說明分叉類型:

這兩者的好處通常列舉如下。

  • 硬分叉允許開發人員在進行協議升級時有更大的靈活性,因為他們不必注意確保新規則 “適合” 舊規則

  • 軟分叉對用戶來說更方便,因為用戶不需要升級就可以留在鏈上

  • 軟叉不太可能導致鏈條斷裂

  • 軟分叉實際上只需要來自挖掘器 / 驗證器的同意(因為即使用戶仍然使用舊規則,如果構成鏈的節點使用新規則,那麼在任何情況下只有在新規則下有效的東西才會進入鏈);硬叉子需要選擇加入用戶同意

除此之外,對硬分叉的一個主要批評是硬分叉是 “強制性的”。這裡隱含的那種強制不是肉體上的強制;相反,這是通過網絡效應進行強制。也就是說,如果網絡將規則從 A 更改為 B,那麼即使你個人喜歡 A,如果大多數其他用戶喜歡 B 並切換到 B,那麼你必須切換到 B,儘管你個人不贊成這種更改,以便與其他人在同一網絡上。

硬分叉的支持者經常被嘲笑為試圖 “惡意接管” 網絡,並 “強迫” 用戶跟隨他們。此外,鏈條斷裂的風險通常用於將硬貨叉視為 “不安全”。

我個人的觀點是,這些批評是錯誤的,而且在許多情況下是完全倒退的。這一觀點並不是以太坊、比特幣或任何其他區塊鏈所特有的;它產生於這些系統的一般性質,並適用於任何系統。此外,下面的論點僅適用於有爭議的變更,其中至少有一個群體(礦工 / 驗證者和用戶)的大部分不贊成這些變更;如果一個改變是無争议的,那麼不管 fork 的格式是什麼,它通常都可以安全地完成。

首先,讓我們討論強制的問題。硬分叉和軟分叉都以一些用戶可能不喜歡的方式改變協議;任何的如果協議更改不完全得到 100% 的支持,它就會這樣做。此外,幾乎不可避免的是至少一些在任何情況下,持不同意見的人都更看重堅持大群體的網絡效應,而不是他們自己對協議規則的偏好。因此,從網絡效應的角度來看,這兩種分叉都是強制性的。

但是,硬分叉和軟分叉有一個本質的區別:硬分支是選擇加入的,而軟分支不允許用戶 “選擇”。為了讓一個用戶加入一個硬分叉鏈,他們必須親自安裝實現分叉規則的軟件包,並且那些不同意規則改變甚至比他們重視網絡效應更強烈的用戶群理論上可以簡單地停留在舊鏈上 —— 並且,實際上來說,這樣一個事件已經發生了

無論是嚴格擴張硬分叉還是雙邊硬分叉都是如此。然而,在軟叉的情況下,如果 fork 成功,則不存在未偽造的鏈。因此,軟分叉顯然在制度上更傾向於強迫而不是分裂,而硬分叉則有相反的傾向。我自己的道德觀點使我更傾向於脫離而不是強迫,儘管其他人可能不同意(最常見的論點是網絡效應真的真的很重要,而且至關重要的是”一枚硬幣統治所有人”,儘管也存在更溫和的版本)。

如果我不得不猜測為什麼,儘管有這些爭論,軟分叉經常被宣傳為比硬分叉 “更不強制”,我會說,這是因為它感覺像是硬分叉 “強迫” 用戶安裝軟件更新,而使用軟分叉用戶根本不 “必須” 做任何事情。然而,這種直覺是錯誤的:重要的不是個別用戶是否必須執行點擊 “下載” 按鈕這一簡單的官僚步驟,而是用戶是否必須這樣做被迫接受協議規則的改變他們寧願不接受。根據這個標準,如上所述,兩種分叉最終都是強制性的,硬分叉在保護用戶自由方面表現得更好。


現在,讓我們看看極具爭議的分叉,特別是挖掘器 / 驗證器首選項和用戶首選項衝突的分叉。這裡有三種情況:(一)雙邊硬叉,(二)嚴格擴展硬叉,(三)所謂的 “用戶激活軟分叉”(UASF)。第四類是礦工激活軟叉未經用戶同意;我們稍後會談到這一點。

第一,雙邊硬叉。在最好的情況下,情況很簡單。這兩種硬幣在市場上交易,交易者決定兩者的相對價值。從 ETC/ETH 的案例中,我們有壓倒性的證據表明,無論他們自己的意識形態觀點如何,礦工們都極有可能簡單地根據價格比率將他們的哈希值分配給硬幣,以使他們的利潤最大化。

image

即使一些礦商承認在意識形態上傾向於某一方,也極有可能會有足夠多的礦商願意對價格比率和購買力比率之間的任何不匹配進行套利,並使兩者保持一致。如果一個礦工卡特爾試圖形成不在一個鏈上開採,就有過度的動機叛逃。

這裡有兩種極端情況。第一種可能性是,由於低效率的難度調整算法,開採硬幣的價值下降,因為價格下降,但難度沒有下降來補償,使得採礦非常無利可圖,沒有礦工願意虧本開採,以繼續推動鏈條前進,直到難度恢復平衡。以太坊不是這樣的,但是很可能比特幣就是如此。因此,少數民族鏈很可能永遠不會起飛,因此它會死亡。請注意,規範性問題這到底是不是一件好事取決於你對強制和分裂的看法;正如你從我上面寫的可以想像的,我個人認為這種少數民族鏈敵對難度調整算法是不好的。

第二種邊緣情況是,如果差距非常大,大鏈可以 51% 攻擊較小的鏈。即使在 ETH/ETC 以 10:1 的比例拆分的情況下,這種情況也沒有發生;所以這肯定不是必然的。然而,如果主導鏈上的礦工更喜歡強迫而不是允許分離,並按照這些價值觀行事,這總是有可能的。


接下來,我們來看看嚴格擴展的硬分叉。在 SEHF 中,有一個屬性,即在分叉規則下,非分叉鏈是有效的,因此,如果分叉鏈的價格低於非分叉鏈,那麼它的哈希功率將低於非分叉鏈,因此,非分叉鏈最終將被接受為最長的鏈通過原始客戶端和分叉客戶端規則—— 所以分叉的鏈條”會被殲滅".

有一種觀點認為,這樣的分叉成功存在一種強烈的內在偏見,因為分叉鏈被湮滅的可能性將被納入價格,推低價格,使其更有可能被湮滅... 這個論點對我來說似乎很有力,所以這是一個很好的理由任何的有爭議的硬分叉雙邊而不是嚴格擴大。

比特幣無限開發者建議通過以下方式解決這個問題手動製作雙側硬叉但更好的選擇是將雙邊性內化;例如,在比特幣的情況下,可以添加一個規則來禁止一些未使用的操作碼,然後在非分叉鏈上進行包含該操作碼的事務,這樣在分叉規則下,非分叉鏈將從此被視為永遠無效。在以太坊的例子中,由於關於狀態計算如何工作的各種細節,幾乎所有的硬分叉幾乎都是自動雙向的。其他鏈根據其結構可能具有不同的屬性。


上面提到的最後一種分叉是用戶激活的軟分叉。在 UASF,用戶打開軟叉規則,而不用費心從礦工那裡獲得共識;出於經濟利益的考慮,礦商們可能會加入進來。如果許多用戶不同意 UASF,那麼將會有一個硬幣分裂,這將導致一個與嚴格擴展硬分叉相同的場景,除了 —— 這是這個概念真正聰明和迂迴的部分 ——同樣的 “毀滅的風險” 壓力強烈地不利於嚴格擴展的硬分叉中的分叉鏈,而強烈地有利於 UASF 中的分叉鏈。即使 UASF 選擇加入,它也利用經濟不對稱來偏向成功(雖然這種偏向不是絕對的;如果 UASF 絕對不受歡迎,那麼它將不會成功,只會導致連鎖分裂)。

然而,UASFs 是一個危險的遊戲。例如,讓我們假設一個項目的開發人員想要製作一個 UASF 補丁,將一個以前接受所有事務的未使用的操作碼轉換成一個只接受符合一些很酷的新功能的規則的事務的操作碼,儘管這在政治上或技術上是有爭議的,並且是礦工不喜歡的。礦工們有一個聰明而狡猾的反擊方式:他們可以單方面實現一個 miner 激活的軟 fork,使得所有使用該軟 fork 創建的特性的事務總是失敗

現在,我們有三個規則集:

  1. 操作碼 X 總是有效的原始規則。

  2. 操作碼 X 僅在事務的其餘部分符合新規則時有效的規則

  3. 操作碼 X 總是無效的規則。

注意

(2)是相對於(1)的軟分叉,而(3)是相對於(2)的軟分叉。

現在,有強大的經濟壓力支持(3),因此軟分叉未能實現其目標。

結論是這樣的。軟叉子是一個危險的遊戲,如果它們有爭議,礦商開始反擊,它們會變得更加危險。嚴格擴張硬叉也是一個危險的遊戲。礦工激活的軟叉是強制性的;用戶激活的軟叉不那麼強制,儘管由於經濟壓力仍然相當強制,並且它們也有它們的危險。如果你真的想做一個有爭議的改變,並且已經決定這樣做的高昂社會成本是值得的,那麼就做一個乾淨的雙邊硬分叉,花一些時間添加一些適當的重放保護,讓市場來解決它。

2017 年 3 月 14 日

確定問題

所以好的代幣銷售機制是怎樣的呢?一種開始的方法是觀察目前銷售模式遭到的批評,找到受歡迎的特徵列表。

讓我們一起來做這個。一些固有特性包括:

image

1、** 估值的確定性:** 如果你參加了一個銷售項目,你至少必須確定估值的上限是多少(或者說,你可以獲得的代幣的最高比例)。

2、** 參與度的確定性:** 如果你想要參加此類銷售項目,你必須有獲得成功的打算。

3、** 融資額上限:** 為了避免貪婪的批評(或者為了消除監管關注的風險),銷售必須限制融資額。

4、沒有央行:代幣銷售的發起者不能持有數量過大的代幣,避免控制市場。

5、** 效率:** 銷售不能導致經濟低效益或者無謂損失。

聽起來是合理的?

好吧,以下是不那麼有趣的內容。

1、(1)和(2)不能同時滿足。

2、至少如果不能採取任何巧計,(3)、(4)和(5)是不可以同時滿足的。

這些可以稱為 “第一個代幣銷售兩難困境” 和 “第二個代幣銷售三難困境”。

第一個兩難困境的證明很簡單:假設你在銷售中向用戶提供確定的 1 億美元估值。現在假設用戶想要投入 1.01 億美元。至少部分人會失敗。簡單的供求關係就可以證明第二個三難困境。如果你滿足條目(4),你就必須出售所有或者固定份額的总代幣,因此你出售的估值與你出售的價格成正比。如你你滿足條目(3),你就給價格設置一個上限。然而可能你所售出的數量對應的均衡價格超出了你設置的價格上限,那麼你就會出現供不應求的情形,從而無法避免:(i)在生意火爆的餐廳排隊 4 小時的數字化對等物;(ii)倒票的數字化對等物,大量的無謂損失,並且與(5)衝突。

第一個兩難困境不可能克服;估值和參與度確定性是不可以避免的,儘管在可能的情況下,選擇參與度確定性要好過選擇估值確定性。我們可以得出的最接近的結果是,犧牲全面參與,保證部分參與。這可以通過按比例退款來實現(比如以 1 億美元的估值買進 1.01 億美元的代幣,每個人獲得 1% 退款)。我們還可以認為這個機制是沒有上限的銷售,其中部分支付呈現鎖定資金的形式,而不是消費它;然而從這個角度看,可以確定鎖定資金的要求是損失效率的,因此該機制無法滿足(5)。如果以太幣股份沒有分配好,那麼可能會偏向有錢的持股人,而損害公正性。

第二個兩難困境很難克服。很多克服它的嘗試可能導致失敗或者難以預料的壞結果。比如 Bancor 代幣銷售考慮將購買交易的汽油價格限制在 50 個熵值(大約常規汽油價的 12 倍)。然而這意味著買家的最優戰略是設置大量賬戶,從每個賬戶發送一筆交易,觸發合約,然後買進(迂回地防止買家意外地高出自己預期的買進,減少資金要求)。買家設置的賬戶越多,他們買進的可能越高。因此,在均衡狀態下,這可能加重以太坊區塊鏈的擁堵,甚至高出 BAT 類型的銷售;此類銷售的單筆交易費用至少是 6600 美元,而不是網絡受到的拒絕服務攻擊。而且,任何類型的鏈上交易競爭都嚴重傷害公平性,因為參與競爭的成本是不變的,而獎勵卻與你的資金量有關,因此結果將不成比例的有利於有錢的持股人。

下一步

有三件明智的事是你可以做的。首先,你可以像 Gnosis 一樣進行逆向荷蘭式拍賣,但是要進行一個調整:不持有未出售的代幣,而是用於公共利益。簡單的例子有:(i)空投(重新分配給以太幣持有者);(ii)捐給以太坊基金會(Ethereum Foundation);(iii)捐給 Parity、Brainbot、Smartpool 或其他為以太坊領域獨立搭建基礎設施的公司和個人;(iv)結合前三者,可能按照代幣買家票選的比率。

第二,你可以保留未出售的代幣,但是通過全自動決定代幣花費方式,來解決 “央行” 問題。這裡的推理類似於大量經濟學家對基於規則的貨幣政策感興趣的原因:即使中心化機構可以大幅度控制強大資源,並且可以通過該機構遵循一定的使用規則來消除由此而生的政治不確定性。比如,未出售的代幣可以給做市商,讓他維持代幣價格的穩定性。

第三,你可以進行有上限的銷售。限制每個人可以買入的金額。有效地這樣做需要 KYC 流程,但是好在 KYC 機構可以一次性完成這個任務,在確認地址代表特定個人之後,可以制定用戶地址白名單,並且這個名單可以重複應用於每次代幣銷售,以及其他可能受益於該模式的應用,比如 Akasha 遊戲的投票。這裡還是有無謂損失(效率),這會導致對代幣不感興趣的個人參與銷售,因為他們知道他們很快可以以此在市場上獲利。然而這可能不是那麼糟糕:它創造了一種加密貨幣全民基本收入,並且如果 “禀賦效應” 這樣的行為經濟學假設有哪怕一點點準確性,它都將實現保證代幣分配普及性的目標。

image

單輪銷售好嗎?

回到 “貪婪” 的話題。我想說,原則上並沒有很多人反對可以花費 5 億美元的開發團隊去創建獲得 5 億美元的偉大項目。人們反對的是:(i)全新的未經測試的開發團隊一次性獲得 5000 萬美元;(ii)更重要的是,開發者獎勵和代幣買家利息之間的時間差。在單輪銷售中,開發者只有獲得項目創建資金的一次機會,也就是接近開發流程開始的時間段。這裡沒有這種反饋機制:團隊首先獲得少量資金來證明自己,然後在證明自己可靠,並能獲得成功之後,隨著時間推移,獲得更多資金。在銷售期間,用於購率優秀與糟糕開發團隊的信息相對較少,一旦銷售完成,開發者繼續工作的積極性相對於傳統公司要低。“貪婪” 不是指獲得很多錢,而是沒有努力證明自己可以明智的花費這筆錢,就想獲得大筆資金。

image

如你你想直擊問題要害,我們又該如何解決呢?我會說,答案很簡單:專注於機制,而不是單輪銷售。

我可以提出幾個例子以供參考:

Angelshares,這個項目銷售在 2014 年,每天出售固定比例的 AGS,為期數月。每天人們可以向眾籌項目提供不限量的資金,當日 AGS 分配將在幾個出資人之間劃分。基本上,這就像維持將近一年時間的數百筆不設銷售上限的 “小輪交易”;我會說,這個銷售的持續時間還可以拉的更長。

Mysterium,在大規模銷售前進行了六個月的小額銷售,幾乎沒人注意到。

Bancor,最近同意將所有融資額交給做市商,由他們維持幣價穩定,同時將最底下限制在 0.01 個以太幣。兩年內不可以將這些資金提取出來。

似乎很難看出 Bancor 戰略與解決這個時間差之間的關聯,但是這裡有該解決方案的一個元素。為了理解,需要考慮兩個場景。第一個案例,假設一次銷售籌集了 3000 萬美元,其上限是 1000 萬美元,但是一年後每個人同意該項目是失敗的。那么幣價可能會跌到 0.01 個以太幣以下,做市商可能因為要維持最低價而損失所有資金,因此該團隊將只剩下 1000 萬美元的運營資金。第二個案例中,假設銷售籌集了 3000 萬美元,上限是 1000 萬美元,兩年後每個人對項目滿意。這個案例中,做市商就不會被觸發,該團隊也可以獲得全部 3000 萬美元資金。

一個相關提議來自 Vlad Zamfir 的 “安全代幣銷售機制”。這個概念很寬泛,可以用多種方法來參數化,但是其中一個方式是以最高價出售代幣,然後獲得稍低於最高價的最低價,然後讓兩個價格隨著時間慢慢拉大距離,如果價格可以自行維持,就逐漸釋放開發資金。

以上三個可能都不充分。我們想要延續時間更長的銷售項目,讓我們在提供大量資金前,有更多的時間了解哪個開發團隊是最可信的。然而這似乎是可以探究的最具成效的方向。

走出兩難困境

總結以上分析,可以清晰得出,儘管無法直接克服以上兩難困境和三難困境,卻可以通過創新思維和克服不那麼嚴重相似問題,來一點點從邊緣突破。我們可以就參與度達成一致,以時間為第三維,來消除影響:如果你沒有參與第 N 輪銷售,你可以等到一周之後的第 N+1 輪,那時的價格也許沒有什麼大不同。

我們可以進行沒有上限的銷售,但是必須包含不同的周期,沒給周期內的銷售設置上限;這樣在沒有證明可以駕馭小金額銷售的情況下,該團隊不會要求大量資金。我們可以一次性出售小部分代幣,通過合同約定剩餘供應量並按照預先設定的公式自動出售,來消除它帶來的政治不確定性。

image

以下是遵循這些構思的一些可行機制:

進行類似 Gnosis 的逆向荷蘭式拍賣,設定較低的上限(比如一百萬美元)。如果拍賣出售的代幣不足總供應量的 100%,兩個月後自動將剩餘資金轉入另一場拍賣,設定高出 30% 的上限。重複該流程,直到發行的全部代幣出售完。

以 X 美元價格不限量出售代幣,將 90% 的收益存入智能合約,五年內保證其最低價為 X 的 0.9 倍,最高價則無限增大,最低價可以無限接近零。

模仿 AngelShares 做法,不過要把時間延長到五年,而不是數月。

進行類似 Gnosis 的逆向荷蘭式拍賣,如果拍賣售出代幣不到總供應量的 100%,把剩餘資金轉入自動的做市商,讓他們維持幣價的穩定性(如果價格繼續上漲,做市商可以出售代幣,其中部分收益給開發團隊)。

立即把所有代幣轉移給做市商,設置參數及 X 變量(X 為最低價)、s(以售出的代幣的份額)、t(銷售已經進行的時間)、T(預計銷售持續時間,比如五年),以 k / (t/T - s) 價格出售代幣(這有點怪,也許需要經濟分析)。

注意,解決代幣銷售問題的其他機制也必須進行嘗試,比如收益交給多個托管人,只有達到某個閾值,才交出資金,這個構思很有意思,可以深入嘗試。然而設計領域是多維的,可以嘗試的方式還有很多。

翻譯:Annie_Xu

儘管兩年來,當前以太坊協議背後的思想基本上是穩定的,但以太坊並沒有以其當前的概念突然出現並完全成型。在區塊鏈推出之前,該協議經歷了許多重大的發展和設計決策。本文的目的將是介紹該協議從開始到發布所經歷的各種演變;在協議實現方面所做的無數工作,例如 Geth、cppethereum、pyethereum 和 EthereumJ,以及以太坊生態系統中應用程序和業務的歷史,都故意超出了範圍。

卡斯帕和分片研究的歷史也不在範圍之內。雖然我們當然可以發表更多的博客文章,討論弗拉德、加文、我自己和其他人提出並放棄的各種想法,包括 “工作證明”、軸輻式鏈等超立方體","陰影鏈(可以說是……血漿),鏈狀纖維,以及Casper 的各種迭代,以及 Vlad 關於共識協議中行動者的激勵及其屬性的推理的快速發展的思想,這也將是個過於複雜的故事,無法在一篇文章中講述,所以我們現在將省略它。

讓我們首先從最早版本的以太坊開始,那時它甚至還不叫以太坊。當我在 2013 年 10 月訪問以色列時,我花了相當多的時間與 Mastercoin 團隊在一起,甚至為他們建議了一些功能。在花了幾次時間思考他們正在做的事情之後,我向團隊提交了一份提案,讓他們的協議更加通用,支持更多類型的合同,而不增加同樣龐大和複雜的功能集:

https://web . archive . org/web/20150627031414/http://vbuterin . com/ultimate scripting . html

image

請注意,這與後來更廣泛的以太坊願景相去甚遠:它純粹專注於 Mastercoin 已經試圖專注的領域,即雙方合同,其中 A 方和 B 方都將投入資金,然後他們將根據合同中指定的一些公式獲得資金(例如,打賭會說 “如果 X 發生,則將所有資金交給 A,否則將所有資金交給 B”)。腳本語言不是圖靈完全的。

Mastercoin 團隊印象深刻,但他們沒有興趣放棄他們正在做的一切,朝著這個方向前進,我越來越相信這是正確的選擇。第二版出現了,大約在 12 月:

https://web . archive . org/web/20131219030753/http://vitalik . ca/ether eum . html

image

在這裡,你可以看到一次大規模重組的結果,這主要是我在 11 月份去舊金山徒步旅行的結果,當時我意識到智能合約有可能被完全推廣。腳本語言不僅僅是描述雙方關係條款的一種方式,合同本身是完全成熟的賬戶,能夠持有、發送和接收資產,甚至維護永久存儲(當時,永久存儲被稱為 “內存”,唯一的臨時 “內存” 是 256 個寄存器)。這種語言根據我自己的意願從基於堆棧的機器轉變為基於寄存器的機器;我對此沒有什麼異議,只是覺得這似乎更複雜。

此外,請注意,現在有一個內置收費機制:

image

在這一點上,以太實際上是氣體;在每一個計算步驟之後,交易調用的合同餘額會下降一點,如果合同資金用完,執行就會停止。注意,這種 “接收者付費” 機制意味著合同本身必須要求發送者向合同支付一筆費用,如果這筆費用不存在,則立即退出;該協議規定了 16 個自由執行步驟,允許合同拒絕非付費交易。

image


這是以太坊協議完全是我自己創造的時候。然而,從這裡開始,新的參與者開始加入這個圈子。到目前為止,禮儀方面最突出的是加文・伍德,他在 2013 年 12 月的一條關於我的消息中聯繫了我

image

“嘿傑里米,很高興看到你對以太坊感興趣……”

加文最初的貢獻是雙重的。首先,您可能會注意到,最初設計中的契約調用模型是異步的:儘管契約 A 可以創建一個 “內部事務” 給契約 B(“內部事務” 是 Etherscan 的行話;最初它們只是被稱為 “事務”,後來被稱為 “消息調用” 或 “調用”),直到第一個事務完全執行完,內部事務才會開始執行。這意味著交易不能使用內部交易作為從其他合同獲取信息的方式;做到這一點的唯一方法是 EXTRO 操作碼(有點像 SLOAD,可以用來讀取其他契約的存儲),後來在 Gavin 和其他人的支持下也刪除了這個操作。

當實現我的初始規範時,Gavin 自然地同步實現了內部事務,甚至沒有意識到意圖是不同的 —— 也就是說,在 Gavin 的實現中,當一個契約調用另一個契約時,內部事務立即得到執行,一旦執行完成,VM 返回到創建內部事務的契約,並繼續下一個操作碼。這種方法對我們雙方來說似乎都更優越,所以我們決定把它作為規範的一部分。

第二,我和他之間的一次討論(在舊金山散步期間,因此確切的細節將永遠消失在歷史的風中,可能會在 NSA 的深層檔案中有一兩份副本)導致了交易費模型的重新分解,從 “合同支付” 方法轉移到 “發送者支付” 方法,並切換到 “gas” 架構。不是每個單獨的交易步驟立即帶走一點乙醚,而是交易發送者支付並被分配一些 “汽油”(粗略地說,計算步驟的計數器),並且計算步驟從該汽油的允許量中提取。如果一個事務用完了 gas,gas 仍然會被沒收,但是整個執行會被恢復;這似乎是最安全的做法,因為它消除了合同以前必須擔心的一整類 “部分執行” 攻擊。當交易執行完成時,任何未使用的氣體的費用被退還。

加文也可以在很大程度上歸功於願景的微妙變化,從將以太坊視為一個構建可編程貨幣的平台,其總部位於區塊鏈的合同可以持有數字資產,並根據預先設定的規則轉移它們,到一個通用計算平台。這開始於重點和術語的微妙變化,後來這種影響隨著對 “Web 3” 整體的日益重視而變得更強,這種整體將以太坊視為一套去中心化技術中的一部分,另外兩個是 Whisper 和 Swarm。

image

在 2014 年初,也有一些由其他人建議的變化。在 Andrew Miller 和其他人提出這個想法後,我們最終回到了基於堆棧的架構

image

查爾斯・霍金森建議從比特幣的 SHA256 轉換到更新的 SHA3(或者更準確地說,keccak256)。雖然有一段時間有一些爭議,但與 Gavin、Andrew 和其他人的討論導致建立了堆棧上的值的大小應該被限制在 32 個字節;另一個正在考慮的選擇,無限大小的整數,有一個問題,那就是很難計算出加法、乘法和其他運算要花多少錢。


早在 2014 年 1 月,我們腦海中最初的挖掘算法是一個名為 Dagger 的裝置:

https://github.com/ethereum/wiki/blob/master/Dagger.md

image

Dagger 是以算法中使用的數學結構 “有向無環圖”(DAG)命名的。其思想是,每 N 個塊,一個新的 DAG 將從種子中偽隨機生成,並且 DAG 的底層將是需要幾千兆字節來存儲的節點的集合。然而,在 DAG 中生成任何單個值只需要計算幾千個條目。“匕首計算” 包括在底層數據集中的隨機位置獲取一些值,並將它們散列在一起。這意味著有一種快速的方法來進行 DAG 計算 —— 內存中已經有數據,還有一種緩慢但不佔用內存的方法 —— 從 DAG 中重新生成您需要從頭開始獲取的每個值。

這種算法的目的是與當時流行的算法(如 Scrypt)具有相同的 “內存硬度” 屬性,但仍然是輕量級客戶端友好的。礦工將使用快速方式,因此他們的採礦將受到內存帶寬的限制(理論上,消費級 RAM 已經進行了大量優化,因此很難用 ASICs 進一步優化),但輕型客戶端可以使用無內存但較慢的版本進行驗證。快速的方法可能需要幾微秒,而緩慢但無內存的方法可能需要幾毫秒,所以對於輕量級客戶機來說,這仍然是非常可行的。

從這裡開始,在以太坊的發展過程中,算法會改變幾次。我們經歷的下一個想法是 “工作的適應性證明”;在這裡,工作證明將涉及執行隨機選擇的以太坊合同,並且有一個聰明的理由來解釋為什麼這將是抗 ASIC 的:如果 ASIC 被開發出來,競爭的礦工將有動機創建和發布許多 ASIC 不擅長執行的合同。故事是這樣的,沒有用於一般計算的 ASIC,因為它只是 CPU,所以我們可以使用這種對立的激勵機制來證明本質上是執行一般計算的工作。

失敗的原因很簡單:遠程攻擊。攻擊者可以從塊 1 開始一個鏈,用他們可以為其創建專用硬件的簡單合同來填充它,並迅速超越主鏈。因此... 回到繪圖板。

下一個算法叫做隨機電路,在谷歌文檔中有描述這裡,由我和 Vlad Zamfir 提出,和由 Matthew Wampler-Doty 分析和其他人。這裡的想法也是模擬挖掘算法中的通用計算,這次是通過執行隨機生成的電路。沒有確鑿的證據證明基於這些原則的東西不能工作,但我們在 2014 年聯繫的計算機硬件專家對此相當悲觀。Matthew Wampler-Doty 自己提出了一個基於 SAT 解答的工作證明,但這也最終被否決了。

最後,我們帶著一種叫做 “匕首橋本” 的算法兜了一圈。人們有時簡稱它為 “Dashimoto”,它借鑒了許多橋本Thaddeus Dryja 的工作證明算法,它開創了 “I/O 綁定工作證明” 的概念,其中採礦速度的主要限制因素不是每秒哈希數,而是每秒 RAM 訪問的兆字節數。然而,它結合了 Dagger 的輕量級客戶端友好的 DAG 生成數據集的概念。經過我、馬修、蒂姆和其他人的多輪調整,這些想法最終匯聚成了我們現在所說的算法Ethash

image

到 2014 年夏天,協議已經相當穩定,主要的例外是工作證明算法直到 2015 年初才達到 Ethash 階段,半正式規範以 Gavin 的形式存在黃色紙

image

2014 年 8 月,我開發並引入了機制,這使得以太坊的區塊鏈具有更短的阻塞時間和更高的容量,同時降低了集中化風險。這是作為 PoC6 的一部分引入的。

與 Bitshares 團隊的討論讓我們考慮添加堆作為一個一流的數據結構,雖然由於時間不夠,我們最終沒有這樣做,但後來的安全審計和 DoS 攻擊將表明,安全地做到這一點實際上比我們當時想像的要困難得多。

九月,加文和我計劃了協議設計的下兩個主要變化。首先,除了狀態樹和事務樹,每個塊還包含一個 “收據樹”。收據樹將包括由事務創建的日誌的散列,以及中間狀態根。日誌將允許事務創建 “輸出”,這些輸出保存在區塊鏈中,並且可以被輕型客戶端訪問,但是不能被未來的狀態計算訪問。這可以用於允許分散的應用程序輕鬆地查詢事件,例如令牌轉移、購買、交易訂單的創建和完成、拍賣的開始等等。

還考慮了其他一些想法,比如從一個事務的整個執行跟蹤中製作一棵 Merkle 樹,以允許證明任何事情;選擇日誌是因為它們是簡單性和完整性的折衷。

第二個是 “預編譯” 的想法,解決了允許複雜的加密計算在 EVM 中可用而不必處理 EVM 開銷的問題。我們也經歷了許多更有雄心的想法本地合同“如果礦商優化了某些合同的執行,他們可以 “投票” 降低這些合同的天然氣價格,因此大多數礦商可以更快執行的合同自然會有更低的天然氣價格;然而,所有這些想法都被拒絕了,因為我們無法想出一種加密經濟安全的方法來實現這樣的事情。攻擊者總是可以創建一個執行一些陷門加密操作的合同,將陷門分發給他們自己和他們的朋友,以允許他們更快地執行該合同,然後投票否決 gasprice,並使用它來拒絕網絡。相反,我們選擇了一種不那麼雄心勃勃的方法,對於常見的操作,如哈希和簽名方案,只需在協議中指定少量的預編譜。

加文也是發展 “” 理念的主要倡導者協議抽象"- 將協議的許多部分(如以太餘額、交易簽名算法、隨機數等)作為契約移入協議本身,理論上的最終目標是達到這樣一種情況,即整個以太坊協議可以被描述為對具有某種預初始化狀態的虛擬機進行函數調用。沒有足夠的時間讓這些想法進入最初的 Frontier 版本,但這些原則有望通過君士坦丁堡的一些變化、Casper 合同和分片規範開始慢慢整合。

這都在 PoC7 中實現;在 PoC7 之後,除了通過安全審計發現的一些微小但在某些情況下很重要的細節之外,該協議實際上沒有太大變化...


2015 年初,Jutta Steiner 等人組織了預發布安全審計,其中包括軟件代碼審計和學術審計。軟件審計主要針對 C++ 和 Go 實現,分別由 Gavin Wood 和 Jeffrey Wilcke 負責,不過也有一個較小的審計針對我的 pyethereum 實現。在兩次學術審計中,一次是由伊塔伊・埃亞爾(因 “自私的採礦” 而出名)進行的,另一次是由安德魯・米勒和其他最不權威的人進行的。Eyal 審計導致了一個小的協議變化:一個鏈的總難度將不包括叔叔。這最低權限審計更側重於智能合同和天然氣經濟學,以及帕特里夏樹。該審核導致了幾項協議變更。一個小的例子是使用 sha3 (addr) 和 sha3 (key) 作為 trie 鍵,而不是直接使用地址和鍵;這使得對 trie 進行最壞情況的攻擊變得更加困難。

image

這是一個可能有點超前的警告...

我們討論的另一個重要問題是氣體限制投票機制。當時,我們已經對比特幣區塊大小辯論缺乏進展感到擔憂,並希望以太坊有一個更靈活的設計,可以根據需要隨時調整。但挑戰在於:最佳極限是什麼?我最初的想法是做一個動態的限制,鎖定目標 1.5⋅實際用氣量的長期指數移動平均值,因此從長期來看,平均數據塊為 23 滿了。然而,Andrew 表明,這在某些方面是可以利用的 —— 具體來說,想要提高限制的礦商只需在他們自己的區塊中包括消耗大量天然氣的交易,但只需很少的時間來處理,從而總是在不增加自己成本的情況下創建完整的區塊。因此,安全模型,至少在向上的方向上,相當於簡單地讓礦工投票決定氣體限制。

我們沒有想出一個不太可能突破的氣體限制策略,因此 Andrew 推薦的解決方案是簡單地讓礦工明確地對氣體限制進行投票,並將投票的默認策略設為 1.5⋅均線規則。理由是,我們還遠遠不知道設定最大氣體限制的正確方法,任何具

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。