共識本文檔的目的: 解釋Chia共識算法的1.1版本
目標受眾:熟悉區塊鏈但不了解空間證明(PoS),時間證明/可驗證延遲函數(VDF)和Chia的技術受眾。
如果您不熟悉比特幣/區塊鏈,請先閱讀此教科書: 比特幣和 Chia 網絡共識解釋 wwCryptocurrency Technologies.
請 問 有關密鑰庫的問題,因此我們可以改進此文檔!
動機
這 Chia Consensus算法旨在創建一種環境友好,安全且分散的工作證明和權益證明的替代方案。
工作證明(PoW) 加密貨幣會消耗大量電力。 此外,由於硬件製造和所有權的集中以及廉價產品的集中,它們傾向於集中化。 活力,使普通用戶無法訪問PoW,並且容易受到各種攻擊。
權益證明有多種形式,每種形式各有優缺點。 一些常見的缺點是:通過交易所集中控制資金; 代表團的集中; 依賴檢查站和主觀性(要求定期在線); 普通用戶無法訪問; 降低風險; 時鐘同步假設,網絡假設,以及其他安全性假設。
介紹
去中心化的共識算法需要具有密碼可驗證且稀缺(不是無限)資源的女巫抵抗力。 在以前的區塊鏈系統中,稀缺資源是計算能力和權益。 空間證明是一種替代方案,通過使用存儲容量作為稀缺資源,它更接近比特幣最初的“一個 CPU 一票”的理想。 前任amp樂, 存儲500GiB的人有5個“票”,存儲100GiB的人有1個“票””,其中有個投票e 指贏得併驗證方塊的機會,而不是鏈上的實際投票。 僅使用s但是,舉足輕重的能力並不安全。 另一個 密碼拼圖 用於保護該系統的安全: 即可驗證的延遲函數,這是一個 密碼學的 證明實時已經過去。 可以通過結合空間和時間的證明來創建一個公平的系統。 在這樣的系統中,用戶隨機存儲–在一段時間內查看其硬盤上的數據,贏得Chia的機會與分配的空間成正比。 此外,這種系統以與工作證明彩票類似的方式擴展到數十億參與者。 不需要資金,特殊硬件,註冊或許可即可加入,僅需一個硬盤即可。 而且該系統是完全透明和確定性的,任何人都可以高效,客觀地驗證哪條鍊是規範的鏈。
空間證明
一種空間協議證明是:
- 驗證者可以向證明者發送挑戰,並且
- 證明者可以向驗證者證明證明者正在那個精確的時間保留特定數量的存儲空間。
空間協議的證明包含三個部分:繪圖,證明/種田和驗證。 詳細資訊在這裡.

圖1:首先,證明者“下注”或分配一部分磁盤空間(1)。 然後證明者通過用空間證明(2,3,4、XNUMX、XNUMX)來應對挑戰來“耕種”。 驗證者檢查證明對該挑戰有效。
繪圖 是我們稱為農民的證明者初始化一定數量空間的過程。 農民可以是在筆記本電腦上至少有 100 GiB 可用空間的任何人,也可以是準備分配大量未使用存儲空間的企業。 沒有上限。 繪圖需要幾個小時或幾天的時間,並且只執行一次。 初始化空間被一個 file 稱為情節。 繪圖大小由 ak 參數決定,其中空間 = 780 * k * 戰俘(2, k – 10), 且最小k為32(101.4 GiB)。 自嘉 1.0,可以在附近創建一個k32圖 六 數小時內使用快速的商品機器,以及 24 使用一個CPU內核和幾GB內存的速度較慢的計算機運行數小時。 有巨大的加速機會。 PosSpace的構建基於Beyond 地獄人[8下載],但嵌套了6次,並包含其他啟發式方法以使其實用。
結果是一個情節 file 可以是,例如amp樂,100 GIB。 這 file 包含七個帶有隨機數據的表。 每個表有 2^k 個條目。 我表中的每個條目都包含 表i-1的兩個指針 (上表)。 最後,每個表1條目之間包含一對整數 0和2 ^ k,稱為“ x值”。 空間證明是具有一定數學關係的64個x值的集合。
在上圖中,一旦證明者俱有 初始化100 GiB,他們已經準備好接受挑戰並創建證明。 此方案的一個吸引人的特性是它是非交互式的: 沒有註冊 或需要在線連接才能創建圖。 類似於PoW,在獲得獎勵之前,沒有任何東西能打到區塊鏈上。
農業 農民接受一系列挑戰的過程,以證明他們已經合法地擱置了一定數量的存儲。 為了應對每個挑戰,農民檢查他們的土地,生成證明並提交任何 獲勝 證明 到網絡進行驗證。
此過程的每個迭代都是一個表查找。 一種 抬頭 接受256位質詢作為輸入並輸出證明。 農民通過以下方式應對挑戰 讀取一對值 表7。 這些指向表6中的兩個條目,依此類推。最後,農夫獲得了整個x值樹。 這需要對錶7進行一次讀取,對於表6進行兩次讀取,對於表5進行四個讀取,依此類推。假設查找速度為640ms的慢速HDD,則整個過程大約需要10ms。 讀取的數據量很小,並且與繪圖大小無關。
由於此過程生成的大多數證據不夠好(如稍後討論),無法提交給網絡進行驗證,因此我們可以通過以下方式優化此過程: 只檢查樹的一個分支,這會產生兩個x值,具體取決於挑戰。 然後,我們將以此方式生成的x值散列到256位字符串中,以確定證明是否正確。 散列這些x值會為我們提供質量字符串,即256位隨機值。 結合難度和地塊大小來生成required_迭代。 如果要求_迭代 小於一定數目(我們可以進入區塊鏈),然後我們查找整個PoSpace。 查找一個分支僅需要大約7個磁盤搜索和讀取,或者在慢速硬盤驅動器上大約需要70ms。
圖2:情節的結構 file. 64 個紅色 x 值代表證明,2 個綠色 x 值代表質量。 
進一步的優化是取消一定比例的資格(例如ample 511/512)繪製每個挑戰的資格。 這稱為 情節過濾器。對於前ample,要求挑戰的哈希值和 plot_id 以 9 零點。 這對所有人均造成傷害(重新攻擊者除外),因此是公平的。 這使得耕種幾乎不需要任何資源,並且每幾分鐘很少讀取磁盤。 Chia用戶已經成功地在單個Raspberry Pi上實現了多個PiB存儲。 我們假設農民總是使用HDD,因為它們很便宜,沒有理由使用SSD,因為速度與耕種無關。 但是,可以使用SSD / RAM進行更快的繪圖。
繪圖密鑰是存儲在繪圖中的私鑰 file. 情節 id 是通過散列情節公鑰和 池公鑰。 要創建具有空間證明的塊,需要同時使用繪圖鍵和池鍵進行簽名。 因此,創建圖後可能不會更改池。 實際上,地塊密鑰是地塊中存儲的本地密鑰和農民軟件所存儲的密鑰之間的2/2 BLS聚合公共密鑰。 為了安全和高效,農民可以使用此密鑰和簽名方案來運行集中式服務器。 服務器可以連接到許多存儲地塊的收割機。 耕作需要農夫密鑰和本地密鑰,但不需要池密鑰, 因為可以將池的簽名緩存和重用於許多塊.
正在驗證: 在農夫成功創建了空間證明之後,可以通過執行一些散列並在證明中的x值之間進行比較來驗證該證明。 回想一下,證明是64個x值的列表,其中每個x值的長度均為k位。 對於k32,這是256個字節,因此非常緊湊。 驗證速度非常快,但還不夠快,無法在以太坊上進行可靠的驗證(這將使鏈之間的傳輸不受信任),因為它需要進行blake3和chacha8操作。
時間證明
時間證明或 V可證實的 Dlay F功能是證明順序函數執行了一定次數的證明。
可驗證:這意味著在執行計算(這需要時間)之後,證明者可以在很短的時間內創建非常小的證明,並且 驗證者無需重新進行整個計算即可驗證此證明。
延遲:這意味著證明者實際上花費了大量時間(儘管我們不知道確切多少)來計算函數。
功能:這意味著它是確定性的:在輸入x上計算VDF總是產生相同的結果y。
這裡的關鍵詞是“順序的”,例如多次哈希多次:hash(hash(hash(a))),等等。這意味著證明者不能僅僅購買更多的機器來提高運行速度,這與比特幣/工作證明不同。 因此,我們可以假設計算VDF需要實際(掛鐘)時間。 我們使用的構造是重複平方。 證明者必須將挑戰次數乘以X T次。 這需要時間ϴ(T)。 證明者還必須創建證明已正確執行的證明。
圖3:驗證者(區塊鏈)向證明者(時間領主)發送挑戰,證明者計算輸出和證明。 
儘管以下細節對於理解共識算法不是很重要,但是選擇要使用的VDF還是很重要的,因為如果攻擊者成功獲得了速度更快的計算機,則可能會發生某些攻擊。
Chia使用的VDF以未知順序的類組重複平方。 生成具有未知順序的大組的主要方法有兩種。 第一種是使用RSA模數,並使用整數mod N作為組。 如果您可以使用 多點控制 儀式。 一種更簡單的方法是使用具有較大主要判別式的類組,這些類組是順序未知的組。 這不需要任何復雜或受信任的設置,因此我們為Chia選擇了此選項。 要創建這些組之一,只需要一個大的隨機素數即可。 缺點是,與RSA組相比,類組代碼在現實生活中的測試較少,並且對優化的了解也較少。 我們對平方使用相同的初始元素(a = 2,b = 1類組元素),而是使用質詢為每個VDF生成一個新的隨機質數,將其用作判別式。 判別式的大小為1024位,這意味著證明大小約為1024位。 我們使用 韋索洛夫斯基方案 [下載] 分成 n (1<=n<=64) 個階段,因此創建證明的速度非常快。 由於 n-wesolowski 證明可能很大,我們在它們可用時立即用 1-wesolowski 證明替換它們,因為它們更小,但需要更多時間來製作。 證明本身並不承諾在鏈上,因此它們是可替換的。
點滴
作為回顧,VDF接受輸入(稱為挑戰),並產生輸出以及證明該功能已正確評估的證明。
將值注入VDF意味著將該值與VDF的輸出組合在一起以生成一個新值,該值將用作下一個VDF的輸入/挑戰。 因此,我們鏈接了VDF,但是在兩者之間使用了一個新值(塊)。 使用它是為了使塊具有線性級數,將空間證明與時間證明交替出現。
共識演算法
BLS簽名
每當在本文檔中引用簽名時,都假定遵循具有增強方案的IETF規範,使用確定性BLS簽名。 執行這些數字簽名的私鑰由農民控制和存儲,並且每個地塊都使用唯一的私鑰。
節點的作用
農民
農民 是通過存儲圖並檢查其空間證明來參與共識算法的節點。 他們與全節點(通常在同一台機器上)進行通信。農民還與一個或多個Harvester進行通信,這是一項服務,駐留在存儲地塊的計算機上,並代表Farmer流程查找空間證明。
時空領主
Timelord是通過創建時間證明並將塊注入其VDF來參與共識算法的節點。
完整節點
完整節點可以是領主或農民,也可以只充當完整節點的角色。 這需要廣播時空證明,創建區塊,維護未決交易的內存池,存儲歷史區塊鏈以及將區塊上傳到其他完整節點以及錢包(輕型客戶端)。
挑戰
Chia共識算法依賴於運行VDF一段稱為子時隙的時間段,該時間段會定期調整以增加大約10分鐘的時間。 週期性的挑戰被釋放,這開始了一種小型抽獎活動,在這裡農民可以檢查他們的地塊以獲取空間證明。 當農民找到符合條件的空間證明時,他們會將其廣播到網絡。 難度將更改為每個子插槽中整個網絡的目標32個獲勝證明。 這些證明在子插槽中的不同時間注入到VDF中。 農民遵循最重的鏈條,這是鏈條上累積難度最大的鏈條(通常是區塊最多的鏈條)。
圖4:三個子插槽。 x軸表示時間。 虛線表示VDF執行,其時間從左到右前進。 箭頭表示哈希相關性(指向另一個對象的對象包括第二個對象的哈希)。 
在圖 4 中,我們可以看到三個挑戰點,c1、c2 和 c3。 在 c1、c2 和 c3 點,時間領主創建挑戰(256 位哈希),這些挑戰作為 VDF 的輸入提供。 Timelords 獲取這些哈希值,並針對指定的迭代次數開始計算此挑戰的 VDF。 在這個前ample,每個槽是 100,000,000 次迭代。 VDF 完成後,時間領主會發布新的挑戰和 VDF 的證明。 時隙結束信息的注入發生在每個子時隙的末尾。
子插槽:固定數量的VDF迭代的一部分,需要進行工作難度調整,並始終調整為目標固定時間(即10分鐘)。
子時隙迭代:一個定期調整的常數,該常數確定每個子插槽必須具有多少個VDF迭代。
挑戰:sha256輸出字符串,用於證明農民地塊以及挑戰鏈VDF的空間挑戰。 這也稱為 挑戰哈希.
如您在圖4中看到的,有XNUMX個VDF同時執行,每個VDF具有不同的用途。 在以下各節中將對它們進行說明。
標牌點和輸液點
挑戰和獎勵鏈中的每個子插槽均分為64個較小的VDF,在這些小型VDF中的每個之間是一個稱為a的點。 標牌點。 計時員在到達每個標牌點時會發布VDF輸出和證明。 請注意,挑戰鍊和獎勵鏈都具有標牌點(但沒有註入的挑戰鏈)。 每個標牌點之間的迭代次數為 sp間隔迭代,等於子插槽迭代次數/ 64。
子插槽開始處的挑戰也是有效的標牌點。 到達64個標牌點中的每個標點後,它們就會通過網絡由時間軸和節點廣播。 農民收到這些標牌點,並根據標牌點,他們的地塊ID和子位挑戰來計算地塊過濾器。 如果繪圖過濾器位以9個零開頭,該圖通過該標誌點的過濾器,並且可以繼續。 這取消了所有情節的 511/512 左右的資格 files 在網絡中,對於那個標牌點。

這 空間挑戰的證明是作為情節過濾器位的哈希值計算的:

利用這一挑戰,農民可以從磁盤上通過過濾器的每個地塊獲取質量字符串。。 回想一下,此過程幾乎是即時的,並且標牌點是從空間證明的一部分派生的哈希(但尚未檢索到整個空間證明)。
農夫計算 所需的迭代 每個空間證明。 如果所需的迭代<sp間隔迭代,則空間證明有資格包含在區塊鏈中,因此農夫從磁盤獲取整個空間證明(這比僅獲取質量要花費更長的時間),創建未完成的子塊,然後廣播到網絡。 請注意,絕大多數所需的迭代都將太高,因為平均而言,每個子時隙32個將適合整個網絡。 這是一個隨機過程,因此有可能獲得大量證明,但可能性很小。 這 標牌點迭代 是從子插槽開始到標牌點的迭代次數。
這 輸液迭代 是從子槽的開始算起的迭代次數,在該子時隙中,具有以上質量的塊可以包含在區塊鏈中。 計算公式為:

因此,輸液迭代將在3到4個標牌點之間 後 標牌點。 農民必須在達到輸液點之前提交證據和標本。 如果標牌點在子槽的末端附近,則模數在那裡允許溢出到下一個子槽。 稍後將對此進行擴展。
在註入點處,將農民塊與註入點VDF輸出結合起來,以從該點開始為VDF創建新的輸入,即,將農民塊注入VDF中。 僅在達到輸液迭代且VDF證明已附加到模塊後,該模塊才完全有效。
為了使b1塊有效/完成,必須包括兩個VDF證明:一個從r1到標牌點,另一個從r1到b1。 (實際上更多,因為有三個VDF鏈,稍後將進行解釋)。 在圖5中,農民在標牌指向時創建(我們稱其為B1')。 但是,B1'尚未完成,因為它需要注入點VDF。 輸液迭代VDF釋放後,將其添加到B1'以在B1處形成成品塊。
數位 5: 時空領主 為標牌點和輸液點創建證明。 但是他們只 為後者註入(更改VDF類組)。 方形表示輸液,新的VDF在此開始。 Sp_iterval_iterrs = 3.125M。 更新到64 SP
讓我們考慮一下前任amp圖5中的le。子時隙迭代為200M,sp間隔迭代為3.125M。 假設一個農民總共有 1000 個地塊。
對於 64 個標牌點中的每一個,當它們每 9 秒或每 3.125 萬次迭代發佈到網絡時,農民計算地塊過濾器並查看有多少地塊通過。 對於通過每個標牌點過濾器的每個地塊,農民計算所需的迭代次數。 在這個前ample,農民在整個子槽中只獲得一次 < 3.125M 的 required_iterations (假設它是 2.2879M)。 在圖 5 中,這是在第 14 個標誌點。 輸液迭代計算如下:



在意識到他們的勝利後(在第14個輸液點),農民拿走了整個空間的證據,做了一個塊,並可選地包括交易,並將其廣播到網絡上。 他們有幾秒鐘的時間(直到輸液迭代為止)才到達時間領主,他們將注入該塊,從而創建輸液點VDF。 使用這些VDF,可以完成該塊並將其添加到區塊鏈中。
Sp間隔迭代: 定義為地板(子插槽迭代次數/ 64)。
標牌點: 挑戰和獎勵鏈中子插槽內的64個中間時間點,定期發布VDF。 在每個標牌點,都會創建一個VDF輸出,並通過網絡進行廣播。 子插槽中的第一個標牌點是挑戰本身。 每個塊都有一個標牌點,因此該塊中的空間證明必須符合該標牌點的條件。
所需的迭代:使用質量字符串計算的數字,用於選擇有資格構成塊的空間證明。 絕大多數的空間證明都將需要太高的迭代次數,因此不適合包含在鏈中。 該數字用於計算輸液點。
輸液點: 的時間點 輸液迭代 從挑戰的角度出發,以證明具有一定挑戰性的空間 輸液迭代。 在這一點上,農民的街區被注入到獎勵鏈VDF中。 塊的注入點始終在該塊的標牌點之後的3到4個標牌點之間。 計算為標牌點迭代+ 3 * sp間隔迭代+必需的迭代。
標牌點和輸液點之間的延遲有很多好處,包括防禦孤兒和自私的耕作,減少叉子,以及沒有VDF停頓。 給出了大約30秒的延遲,以便農民有足夠的時間進行簽名,而不會延遲插槽VDF。 行為良好的農民在每個空間證明上都只簽署一個指示標誌點,這意味著攻擊者無法輕鬆地重組鏈條。
多個塊
圖7:多個塊。 Sp1 =標牌點1
正如您在圖 7 中看到的,多個塊可以被注入到同一個子槽中。 Chia 的系統目標是每個子槽 32 個塊,這是通過工作難度算法調整的。 VDF 從前一個注入點到當前標誌點,從前一個注入點到當前註入點。 請注意,每個塊所需的 VDF 證明可以重疊。 前任amp樂, B2 包含來自的VDF證明 B1 到 SP2和 B1 到 B2. B3 包含來自的證明 B1 到 SP3,並從 B2 到 B3. B2 完全不依賴 B3, 但 B3 取決於 B2,因為其VDF來自 B2的 輸液點。 再次,在標牌點創建塊,但它們缺少輸液點VDF。 一旦添加了此VDF,該塊即完成,並成為區塊鏈的一部分。 輸液點沒有簽名。 在輸液點添加的唯一東西是VDF。
三個VDF鏈
如果我們僅使用一個VDF(用於獎勵鏈),則包含或排除區塊將允許控制下一個時隙的挑戰。 這意味著攻擊者可以嘗試許多不同的組合併選擇最適合他們的挑戰。 這些類型的攻擊稱為“嚴打”攻擊,它們是從工作證明更改為空間證明或PoStake的主要困難之一。 “攻擊和對策”部分提供了更多詳細信息。
為了減輕這種情況,挑戰將僅基於要插入插槽中的第一個塊。
圖8:三個VDF鏈。 攻擊者可以操縱獎勵鏈的結果,但這對c2沒有影響,因此對PoSpace彩票沒有影響。 cc =挑戰鏈,rc =獎勵鏈,sp =標牌點。 B =塊。
此圖中發生了很多事情。 首先,如您所見,有4個 塊: B1,B2,B3,B4,這是農民創建的塊,其中包含他們指向的所有數據。 我們假定在該子插槽中創建了5個以上的塊,但是由於空間限制,我們並未繪製所有塊。
此外,挑戰鍊和獎勵鏈均會創建64個標牌點。 塊必須包含兩個鏈的標牌點VDF。 塊還必須包括所有三個鏈的輸液點VDF。
如您所見,質詢鏈從子插槽的開始到末端執行VDF,沒有註入任何東西(圓圈是VDF證明,但它們不會中斷VDF)。 獎勵鏈會滲透其中包含的每個區塊。 中間的鏈條稱為 注入挑戰鏈,它從每個挑戰的第一個注入塊開始,一直到插槽結束。
A 投幣口 是包含至少 16 個獎勵鏈塊的子槽列表,基於第一個子槽或後面的子槽的挑戰。 前任ample,我們可能在一個子槽中只有 10 個塊,然後是 3 個,然後是 7 個,這意味著這三個子槽形成一個槽。 通常每個子時隙也是一個時隙,因為平均包含超過 16 個塊。 這 赤字 是結束該插槽仍需要的塊數:稍後將對此進行詳細說明。
在插槽的末尾,質詢鏈與註入的質詢鏈結合以生成新質詢c2,該質詢cXNUMX用於啟動下一個子插槽的質詢鏈。
影響挑戰鏈的唯一塊是第一個塊,這裡是 B1,而只是其中的確定性部分 B1, 抄送 B1,這僅取決於質詢鏈數據。 想要磨礪的攻擊者無法通過扣留來改變挑戰 B2, B3,或除第一個以外的任何其他區塊.
假設攻擊者的攔截速度最快(B1),它們有三種選擇:保留,延遲或釋放。 為了知道新挑戰是否會對他們有利,他們將需要一直執行VDF直到c2。 到那時,因為誠實的農民在每個空間證明上只簽名一個區塊,他們獲得獎勵鏈的機會就消失了。 代扣代繳 B1 不會給攻擊者帶來太多好處,因為他們必須在釋放之前將其釋放 SP2 為了使農民在他們的鏈上。 農民會選擇最重的鏈,這是最重的鏈 (最重)獎勵鏈塊。
為什麼我們要承諾挑戰鏈中的任何區塊? 好吧,如果我們不這樣做,攻擊者可以使用更快的 VDF 來展望未來,因為他們不需要誠實參與者的幫助來計算未來的挑戰鏈。 挑戰鏈將是完全確定的。 這將使一些先進的tage 通過重新繪圖。 此外,挑戰鏈可用於向輕客戶端概率證明獎勵鏈的權重,而無需共享所有獎勵鏈區塊(因為挑戰鏈取決於插槽中的“最佳”區塊,您可以計算獎勵鏈的數量鏈塊)。
挑戰鏈: VDF鏈基於每個子插槽的每個挑戰,不會在每個子插槽的中間注入任何東西。 挑戰也用於空間證明。 該鏈中的標牌點用於SP過濾器。
獎勵鏈: VDF鏈包含所有塊的注入。 該鏈拉動挑戰鏈,並在每個子插槽的末端拉入註入的挑戰鏈。
注入挑戰鏈:VDF鏈從在插槽中註入的第一個塊開始(不基於上一個插槽的質詢,這稱為質詢塊),並在插槽末尾終止。
插槽: 根據第一個子插槽或之後的子插槽的挑戰,包含至少16個獎勵鏈塊的子插槽列表。 在插槽的末尾,注入的挑戰鏈停止,挑戰鏈拉入註入的挑戰鏈的結果,赤字重置為16。
堵塞: 區塊是注入獎勵鏈的數據集合,包含:具有比插槽迭代少的迭代的挑戰哈希的空間證明,兩個鏈的sp和ip VDF,注入的挑戰鏈的可選ip VDF,以及獎勵地址。 一些區塊也是交易區塊。 每個插槽最多有128個塊。
交易區塊: 有資格創建交易的區塊,以及相關的交易清單。
挑戰區: 每個插槽中註入的第一個塊,這不是基於先前插槽的挑戰。 挑戰塊始終赤字為15,並且始終從注入的挑戰鏈開始。
P艾克: 節點看到的區塊鏈的峰值是權重最大的區塊。 重量是街區及其所有祖先的難度之和,與高度相似,但是 由於調整困難,較短的鏈條可能會具有較重的重量。
為了使一個區塊有效,它必須為挑戰鍊和獎勵鏈提供VDF,如果存在的話,還必須為註入的挑戰鏈提供VDF。 強制包括所有VDF意味著保證所有三個鏈以相同的速度前進。
溢出塊
為了使農民創建一個塊,如上所述,他們的required_iterations必須小於3.125M,或者子插槽迭代數為64。 這意味著注入迭代可能大於子時隙迭代,因此註入必須在下一個子時隙中進行。
溢出塊:一個塊,其註入點與其標牌點位於不同的子插槽中。
當前插槽挑戰:對於某個特定的區塊B,B的當前時隙挑戰包括所有從該時隙中的第一個挑戰開始,到該時隙末尾(不包括在內)的挑戰。 這是相關的,因為有時一個插槽跨越多個子插槽,從而帶來多個挑戰。

圖9: B4 由於輸液在下一個插槽中,因此該圖中的是一個溢出塊。 B4 並非基於當前插槽的挑戰,因此不會減少赤字或無法挑戰。 待辦事項:圖表應為16而非5。
溢出塊不能存在於時代的第一個子時隙中(因為子時隙迭代次數發生了變化)。
而且,除非溢出塊是基於當前時隙的質詢,否則溢出塊不會更改赤字,因為溢出塊是對先前子時隙的質詢的響應。 溢出塊不是質詢塊,除非它們基於當前時隙質詢。 請注意,溢出塊很少會減少缺陷,因為缺陷幾乎總是會減少到零,並且會在每個子插槽上啟動一個新的插槽。
最低要求
必須至少將16個當前插槽挑戰塊注入獎勵鏈中,才能完成插槽。
虧空是出現在子時隙開始處的0到16之間的一個數字。 這被定義為為了完成插槽而需要注入的獎勵鏈塊的數量。 每當我們開始一個插槽時,它就會重置為16(因此,每次挑戰鏈注入必須至少有16個總塊)。 對於基於當前位置挑戰的每次獎勵鏈注入,赤字都會減少。
虧損15的區塊是挑戰區塊。
正常情況是赤字從16開始,在子插槽內下降到零,然後在完成插槽並開始新的插槽時又重置為16。 如果我們無法在插槽末尾將其減少到0,則挑戰鍊和注入的挑戰鏈(如果存在)繼續,並且赤字不會重置為16。塊(現在包括溢出塊) ,繼續從赤字中減去,直到達到0。當我們完成赤字為零的子時隙時,注入的挑戰鏈將包含在挑戰鏈中,赤字將重置為16。
添加此要求是為了防止遠程攻擊,下面的“對策”部分中對此進行了詳細說明。 絕大多數子插槽將具有> = 5個塊, 因此對正常操作影響不大。

圖10:c2是子插槽的末尾,但不是插槽的末尾。 c2不指向ic2,因為該插槽未在該子插槽處結束。 赤字是2,而不是重置為5,並且注入的挑戰鏈仍在繼續。
重量
這 重量 一個區塊的總和是該區塊的難度加上之前所有區塊的總和 這是這個塊的祖先。 誠實的全節點必須選擇區塊鏈的峰值,使得峰值是他們知道的權重最大的塊。 這是一個至關重要的要求,與比特幣的最重鏈規則相同。 由於這個規則,一個攻擊者擁有少於 50% 的空間並且沒有 VDF advantage 將難以賺取超過他們應得的份額,因為他們必須幸運並創建比誠實鏈更多的獎勵鏈塊。 此外,農民只應對與最重鏈相對應的挑戰。
VDF速度和空間總量對於重量都很重要,而這些變化會觸發難度調整。 如果增加空間量,則每個插槽將創建32個以上的塊,因此必須增加難度。 如果網絡VDF速度增加,則每32分鐘創建10個以上的塊,因此難度(和子插槽迭代次數)必須增加。
但是,與使用普通速度VDF的農民相比,可以獨享訪問速度稍快的VDF的農民無法輕易獲得更多的獎勵。 如果攻擊者試圖孤立鏈上的一個塊,則使用更快的VDF將無濟於事,因為攻擊者的鏈上的塊將更少(因此權重也會降低)。 農民必須在自己建造的街區上簽名,他們只會在最高權重鏈的上方建造。
但是,當攻擊者希望發起51%的攻擊時,VDF速度就會發揮作用。 在這種情況下,攻擊農場主可以使用VDF創建沒有誠實障礙的完全替代鏈,並超越誠實鏈。
葉子
在上面的圖中,農民沒有地方指定他們的獎勵,因為所有塊都是規範的。 農民沒有說明他們的塊如何構造,因為他們必須使用所指定的空間,VDF和簽名的確切證明。 為了在系統中包括耕種獎勵和交易,我們必須引入一個稱為“樹葉”的塊的附加組件。 到目前為止,我們一直在討論“行李”組件。
樹幹: 區塊和區塊鏈的組成部分包括VDF,空間證明,PoS簽名,挑戰和以前的主幹區塊,完全是規範的。 樹幹從不指代樹葉鏈。
葉子: 區塊和區塊鏈的組成部分,包括獎勵應該去哪裡,應該包括哪些交易以及先前的葉子區塊是什麼的規範。 這取決於農民的決定,並且可以磨碎,因此永遠不能將其用作挑戰的投入。
重組:重組(或重組)是當一個節點的 view 峰的變化,使得舊的 view 包含一個未包含在新的塊中 view (某些塊被反轉)。 樹乾和樹葉重組都是可能的,但在實踐中應該很少見。
在下面的圖11中,我們可以看到將葉子添加到塊中以生成附加鏈。 該葉子包括先前葉子的哈希,獎勵塊哈希和簽名。 這些葉子指針與主幹鍊是分開的,不是規範的。 就是說,從理論上講,農民可以創建一個可以代替樹葉的樹葉重組,但是要使用完全相同的樹幹(空間和時間證明)。 為了防止這種情況,誠實的農民每塊只能創建一個葉子塊。 一旦一位誠實的農民添加了一個枝葉遮擋物,超出該高度的枝葉就無法重組 使用相同的PoSpace,因為該農民不會再次使用相同的PoSpace簽名。
此外,像 B3 與另一個樹葉塊平行(B2)不必在前一個葉子塊上簽名,因為它們不一定有足夠的時間看到它。 “平行到達”是指第二個區塊的指示點出現在第一個區塊的輸液點之前。 圖中的紅色箭頭表示樹葉指針,該指針由繪圖鍵簽名以證明該塊中的空間。 灰色箭頭表示未由繪圖鍵簽名的哈希指針(因此,灰色箭頭位於 B3 如果可以更換 B2 更改或保留)。 這樣可以防止攻擊 B2 修改他們的方塊和力量 B3 改組。
具有紅色指針的塊也可以創建事務,因此稱為事務塊。 區塊是交易區塊 當且僅當 它是第一個標記點出現在註入前一個交易塊之後的塊. SP3 出現在之前 B2,(一個交易區塊,以及 B3), 所以 B3 不能是交易塊。 紅色箭頭通過掩埋樹葉塊來提供安全性,而灰色箭頭則不能。 灰色箭頭的目的是在葉子中維護一個鏈接列表,並降低實現的複雜性。 但是,帶有灰色的塊 指向它們的箭頭確實埋在下一個下一個塊中。

圖11:樹葉積木和積木。 塊具有事務並具有紅色指針(指向最後一個塊的指針)。 請注意,子插槽的起點也是標牌點。
塊哈希是整個葉子和樹幹塊的哈希。 改組工作在塊哈希上。 即使我們看到的鏈具有相同的時空證明,只要葉子不同,塊也就不同。 請注意,兩位農民(B2 和 B3)可能有機會創建該塊,因此它們必須同時提供簽名的指針和事務。 但是,任何事務塊也可以作為普通塊包括在內,並且由於 B2 和 B3 都是並行的,其中只有一個可以創建交易塊。
儘管所有區塊仍然選擇其獎勵去向的難題散列,但直到下一個交易區塊,這些交易才被包含在區塊鏈中。
對於chia主網,每32秒將有600個塊,平均塊時間為18.75秒。 將有64個標牌點,因此塊之間的最短時間為3 * 600/64 = 28.125秒。 這樣一來,平均交易阻止時間為46.875秒。
時代和難度調整
子時代: 子時代N在子時代開始
結束(第0個子紀元除外),並在第一個廣告位的末尾結束
自創世以來就包括了木刻。
時代: 紀元N在紀元N-1結束(第0個紀元除外)時開始,並在第一個時隙的結尾處結束
自創世以來就包括了木刻。
困難: 一個常數,用於縮放給定空間證明的迭代次數。 迭代計算為難度/質量。
每隔4608個塊,難度調整會開始。這會修改兩個參數:slot_iterations參數和難度參數。
重置了sub_slot_iterations參數,因此一個300秒的插槽需要多次迭代接近於slot_iterations。 具體而言,使用來自最後一個時期的值來完成重置,以近似每秒的定量。
對於一個時代,讓 epoch* 表示稍微移動的時期,其中 epoch* 以在時代開始之前註入的最後一個塊開始,並以一個時代中註入的最後一個塊結束。 值 t1、i1 和 w1 表示時間amp、自基因生成以來的迭代次數和自基因生成以來的權重在 epoch* 開始時,(t2,i2,w2) 是 epoch* 結束時的值。


也就是說,從開始到結束的總迭代次數的增量除以時間的增量amps,i2,是epoch中最後一個塊的注入點的總迭代次數。 i1 是前一個 epoch 中最後一個塊的注入點的總迭代次數。 子時隙迭代次數是每個子時隙的總迭代次數。


請注意,我們並沒有在 epoch 結束時準確地獲取迭代和時間,而是在一個 epoch 中塊的最後注入點,原因很簡單,我們只有時間amp當塊被注入時可用。






可以重新排列以僅使用一個樓層分區:

子槽迭代次數經過調整,使得每個槽持續約 600 秒。難度也經過調整,使得每個挑戰平均產生 32 個區塊,且迭代次數少於槽位迭代次數。需要注意的是,每個插槽的 VDF 迭代次數與權重無關。也就是說,如果存在兩個完全相同的世界,VDF 速度和空間大小都相同,但其中一個世界的子槽迭代次數是另一個世界的兩倍,那麼子槽迭代次數更高的區塊鏈每個槽位包含的區塊數量將是另一個世界的兩倍,但每個槽位的運行時間也是另一個世界的兩倍,因此每秒添加到鏈上的權重在兩種情況下是相同的。換句話說,增加asing 子槽迭代增加了每個槽的塊數,但也延長了槽的使用壽命,因此對每秒重量沒有影響。
子時代
如前所述,挑戰鍊是完全獨立的,並不涉及獎勵鏈中的任何內容。 如果這些鏈條永遠分開,那麼擁有更快VDF的攻擊者將能夠展望未來並預測挑戰。 攻擊者可以在有限的空間內為每個插槽創建一個塊,從而創建一個完整的挑戰鏈。 這將使他們能夠創建圖並立即為這些圖創建空間證明,這些圖將來會獲勝,然後刪除圖(遠程重繪攻擊)。 這樣,他們可以填補自己的獎勵鏈並增加他們的體重。
解決方案是定期(每384個區塊,平均2個小時)將插槽的獎勵鏈末端注入挑戰鏈。 這意味著攻擊者只能在未來數小時內執行重新部署攻擊。 進行繪製本身需要花費幾個小時,但是即使攻擊者可以立即重新繪製,重新部署攻擊的成本也將超過收益。 我們注入的不是當前的獎勵鏈輸出,而是前一個子紀元(2小時前)結束時的獎勵鏈輸出。
創建地塊的成本包括計算所有表的電力,創建該地塊時所需的RAM以及固定的基礎設施成本(空間,電力,冷卻等)。 假設最壞的情況是超快速VDF和即時ASIC繪圖–收益將等同於將該圖在HDD上存儲幾個小時的收益。 顯然,這種攻擊是不值得的,並且存儲地塊要便宜得多(下面的分析)。
以上解釋了為什麼子紀元間隔應該保持相對較低。 但是為什麼我們不能進一步將其減少到 2 小時以下以進一步抑制重新策劃攻擊? 原因是每當將非規範數據注入挑戰鏈時,就會出現磨合的機會。 這意味著攻擊者可以選擇包含或排除塊來操縱未來 2 小時的挑戰。 如果這個時間太短,他們可以獲得小空間的優勢tage 更頻繁地這樣做。
子紀元的第二個目的是在下面說明的類似flyclient的協議中充當檢查點,以提高輕客戶端的效率。
輕客戶端驗證
與權益證明相比,輕量級客戶端支持是空間證明的另一個好處,因為所有證明都可以通過密碼進行客觀地驗證,並且需要在特定的時間點控制實際資源。
對於想要快速同步到鏈的輕客戶端(例如ample 移動錢包),一個完整的節點可以創建一個小規模的證明,可以讓輕客戶端相信鏈的權重接近某個值。 這被稱為一個 重量證明。 天真地,輕客戶端可以下載每個塊以及所有必需的證明並進行驗證,但是如果擁有如此多的塊,這將需要大量的帶寬和CPU。
更有效的方法依賴於類似於 Flyclient[4] 的協議。 節點(證明者)將來自分叉點的所有子紀元摘要(包括難度重置)發送到輕客戶端。 每 384 個塊只有一個,所以這只能達到幾 MB 的數據。 該節點也確定性地amp根據最後一個區塊的挑戰記錄幾個子時代。 子時代有機會被選擇與該子時代的難度成正比。 對於選定的子紀元,輕客戶端下載其中一個挑戰鏈塊(約佔所有塊的 1/32),併計算該子紀元中所有挑戰塊的平均注入迭代次數。 基於這個時間,輕客戶端可以推斷獎勵鏈包含多少個區塊。 前任ample,如果挑戰塊都以非常小的迭代(接近槽的開頭)出現,則該槽中可能有很多塊。 相反,如果迭代接近時隙的中間,則每個時隙可能只有一個塊。 這允許輕客戶端在每個時隙中只下載 1/32 的塊,但仍然可以很好地估計總重量。
此外,應為light client完整下載最後幾個子紀元。 這會添加少量數據,但會阻止攻擊者在鏈的末尾創建小分支。 該協議與flyclient之間的主要區別在於,區塊不承諾使用Merkle山脈,而是輕客戶端從創世開始下載整個子曆元哈希列表,從而確保查詢的子曆元包含在鏈中。 另一個區別是下載了整個部分,而不是單獨的塊。
關於應該下載多少個子紀元以及權重證明意味著什麼的界限,還需要做更多的分析。
池
與在比特幣/以太坊中進行池化相比,在Chia中進行池化不僅極其簡單,而且分散性更高。 在Chia中,將池公用密鑰嵌入到地塊中,以防止農民通過參與多個池來竊取池中的獎勵。 農民下載游泳池的地址及其簽名。 農夫會定期發送局部樣本以證明空間迭代少於T次,其中T由池選擇。
當農民贏得塊時,他們將提交農民簽名和池簽名。 交易費用以及XNUMX/XNUMX的整體獎勵去了農民,而XNUMX/XNUMX的整體獎勵去了游泳池。 之所以將部分獎勵提供給農民,是為了消除攻擊的誘因,即一個池通過“匯集”給池來攻擊另一池,而不是實際提交獲勝證據。 這是一種攻擊,可能使另一個池癱瘓。
這更簡單,因為池不需要做任何事情,除了在一個 web網站,收集部分,並定期進行支付。 它更加去中心化,因為區塊是由農民製造的,因此大型中心化礦池對網絡幾乎沒有控制權,這增加了對交易審查的抵抗力。
第二種更複雜的池化協議將使您可以指定用於存儲池地址的單例智能合約。 然後,這些地塊將包括智能合約的拼圖哈希,使農民可以隨時延遲切換池。 該池協議的缺點是需要進行鏈上交易才能開始耕種,因此它並不比第一個池協議嚴格更好。
Timelord算法
一位房東跟踪當前的峰值 其中包括在一定高度的注入塊,以及從山峰開始的標牌點。 一位房東可能會收到要注入的新塊,新的峰值(已註入的塊)或新的標牌點。
在可用處理器數量有限的情況下,房東如何決定創建時間證明的挑戰? 儘管將來可能會開發ASIC,但是目前看來,最快的類組VDF實現是在通用硬件上進行的,因為類組VDF似乎是FPGA的硬體。 此外,即使在開發ASIC之後,具有CPU的任何用戶都可以成為時間管理員,以在ASIC時鐘失敗或變得惡意等情況下提供備用,這一點很重要。
一般而言,領主在最重的鏈條上工作。 他們在標牌點創建時間證明,並在到達時將其廣播到網絡。 他們還盡可能多地註入積木。 當計時器接收到一個權重大於當前峰值的注入塊時,它們會立即切換到該塊。
時空領主 還可以並行運行三個VDF鏈。 因此,至少需要3個快速CPU內核才能高效地推進區塊鏈。 要以高效的速度創建證明,將需要額外的CPU內核,但不必如此之快。
如果時間霸主接受的挑戰的權重小於當前峰值,他們將忽略它。
如果時機老闆在當前鏈的後面收到挑戰點,則安全的做法是忽略它。 原因是,通過切換到將來的某個時間點,時間所有者可能會跳過塊的輸入,從而孤立有效的塊。
如果時間霸主收到的輸液區塊太晚(我們已經到達應該注入該區塊的挑戰點),我們將忽略此,因為切換到該位置將允許攻擊者保留區塊 [待辦事項擴展]。 因此,計時器的主要操作包括保留要注入的將來塊的緩存,在到達挑戰點時廣播挑戰點以及在我們到達挑戰點時注入塊。
如果計時員收到的挑戰權重等於當前峰值,則他們選擇他們首先看到的未完成塊(即尚未註入的塊),而不是選擇他們看到的注入塊(峰值)第一的。 這也不利於阻止預扣稅款。
相關攻擊及對策
51% (46%) 攻擊:
51% 攻擊涉及創建一個替代鏈,該鏈最終達到比誠實鏈更高的權重,並迫使用戶重組。 工作量證明系統中也存在的經典遠程攻擊是 51% 攻擊。 在 51% 攻擊中,擁有 51% 網絡空間的攻擊者創建了一個備用鏈並最終趕上了。 Chia 共識和工作量證明之間有兩個主要區別:第一個是攻擊者可以同時在多條鏈上擴展和耕種。 二是如果攻擊者擁有最快的VDF,他們可以獲得額外的空間優勢tag電子/升壓。
延伸許多連鎖店
如果攻擊者建立了自己的私有鏈,他們可以選擇將哪個塊注入到挑戰鏈中,從而可以嘗試進行多種不同的注入,以使他們獲得可能的最佳鏈。 由於平均32個區塊具有相同的挑戰,因此攻擊者只能嘗試大約32種不同的組合 (將其包含在挑戰鏈中),對它們進行指數級嘗試將為攻擊者提供很小的空間提升(擁有5個PiB,他們可以假裝擁有6個或7個,依此類推)。 這是因為嘗試使用的替代鏈質量較差,並且取代最長鏈的可能性較小。 在[1]中已經對此進行了分析。
執行此攻擊所需的實際空間量(攻擊者獲得比網絡其餘部分加起來更重的鏈)為 46.3%,這是由於攻擊者能夠“嘗試”不同的塊組合,例如ample 省略或不省略 第一塊。 如果每個塊都有新的空間挑戰證明,則攻擊者可以將其空間乘以e = 2.718的倍數,而在這種情況下,僅需27%的空間即可超越網絡。 將塊數設置為32,可將攻擊者所需的空間增加到46%。
不增加的原因asin如果將每 10 分鐘時段內的區塊數量增加到 200 個左右,那麼速度稍快的 VDF 更容易使其他區塊孤立。這是因為區塊之間的間隔會變得非常短。在 32 個區塊的情況下,區塊之間的間隔約為 15-25 秒,因此需要速度快得多的 VDF 才能使其他區塊孤立。
此外,史丹佛大學的論文[Tse et al., 1]表明,增加asin增加每個挑戰的區塊數量對安全性的提升速度非常緩慢,因此增加asin這個數字略微增加並不能帶來太多好處。
如果攻擊者要操縱難度,則可以更改難度,以便每個插槽獲得更少的獎勵塊。 然後,它們可以包括或排除每個塊,並同時按指數方式擴展所有鏈,並且它們將能夠以很小的倍數擴大其空間[1]。 由於攻擊者必須改變難度,這需要犧牲一些重量,因此尚不清楚這種攻擊是否會獲得很大收益。 但是,為了防止這種攻擊,要求至少要創建16個獎勵鏈塊才能包含挑戰塊。 在最壞的情況下,這會將所需的攻擊者空間從27%增加到42%。
更快的VDF和46%的空間
如果攻擊者的VDF更快,則46%的攻擊將變得更糟。 假設攻擊者的VDF快2倍。 這樣,他們的鏈條就能以網絡其餘部分2倍的速率創建挑戰和阻塞,這意味著他們可以在相同的空間量下創建“更重”的鏈條。
這個所需的空間從總網絡空間的 46% 下降到大約 30%。 0.46/0.54 = 2x/(1-x)。 x=0.30。 如果攻擊者無法訪問最快的 VDF,他們將無法獲得空間優勢tage.
正大空間/全球硬盤空間
令人擔憂的是,如果與硬盤驅動器製造商或大公司的可用空間相比,Chia系統沒有足夠的空間,它將很容易受到51%的攻擊。 因此,Chia系統佔用的空間越多,網絡越安全。 一種可能的情況是,將要佔用大量空間,從而使每TB的獎勵非常低,而且不足以證明購買驅動器或刪除業務數據是合理的。 此外,創建地塊需要固定的前期時間和金錢(根據beta17中的當前計算,k1約為32kWh,或約10美分,即每TB 1美元)。
100%攻擊
如果每X個VDF插槽觸發一次難度調整,而不是每隔X個區塊,這將允許100%的攻擊,所有農民串謀不斷降低或增加難度。 在正常操作中,每個插槽有32個塊。 在100%的攻擊下,對難度進行了處理,以使難度降低2,因此每個插槽有64個塊,然後升高4,因此每個插槽有16個塊,並永遠交替。 這將使農民每插槽平均獲得64 + 16/2 = 36塊獎勵。 這是基於塊數進行難度調整的原因。
短距離重繪攻擊
繪圖通常需要幾個小時(對於帶有一個內核的beta 8 k32,它通常要花14個小時),但是它是可並行化的,因此攻擊者可能會發現釋放挑戰後創建情節的方法,然後刪除該情節,實際上可以農場而沒有連續存儲空間。 這可能需要具有快速內存的昂貴的專用硬件,因為必須在註入的時間(少於30秒)內創建圖表。
如果我們假設最壞的情況是農民能夠立即創建地塊,那麼問題就變成了:這次襲擊的成本是多少?收益是什麼? 成本是創建該圖的電力,內存,硬件和基礎設施成本。 目前,創建1TB的成本約為1美元的電費。 好處與將該圖存儲80分鐘(指示點間隔乘以圖過濾器常數)相同。)。 這是因為攻擊者可以選擇通過情節過濾器的情節。 假設每年每TB的價值為$ 5,則1分鐘的80TB地塊的價值為$ 0.00094。 因此,使用當前的繪圖軟件和硬件,與重新創建相比,存儲繪圖要便宜得多。
繪圖過濾器常數對於減少農民必須執行的磁盤查找量非常有用。 使用512的地塊過濾器時,農民不需要每7秒每塊地進行9個磁盤讀取,而是只需要每7分鐘進行80次讀取。 繪圖過濾器常數為攻擊者提供了重繪收益的倍數,因此不得將其設置得太高。 繪圖過濾器常數為512,1 / 512繪圖對每個挑戰均有效。 然後,攻擊者只能創建通過過濾器的圖,因此無需創建其他511/512。 將其設置為512可提供512x乘法器等。
更快的VDF(但不是51%的攻擊)
使用系統中最快的VDF,攻擊者可以更有效地執行51%的攻擊:即在私有鏈中進行耕種時擴大其空間。 如果攻擊者未達到總共51%的空間(通過VDF增強並擴展了許多鏈),則更快的VDF的實用性將大大降低。 這是因為包含和排除塊並不取決於您執行VDF的速度如何,而是取決於它是否小於子插槽迭代次數。 此外,攻擊者需要網絡其餘部分的空間才能前進,因此必須向網絡釋放挑戰。
在某些情況下,塊之間的距離非常近,擁有更快的VDF可使攻擊者孤立某些塊,儘管這在短期內不會增加收益,並且從長遠來看有破壞網絡的風險。 待辦事項:展開:布拉姆
自私的農業
自私耕種是一種攻擊,攻擊者在農場進行私密封鎖,並且只有在有可能被誠實鏈超越時才釋放它們。 在Nakamoto PoW中,這提供了可觀的收益,因為在任何時候礦工都領先於網絡的其餘部分時,網絡的其餘部分都在將其哈希能力浪費在不會獲勝的鏈上。 在Chia共識中,這是不同的,這是由於30到40秒的延遲,而孤立其他農民的街區並沒有增加獎勵的事實。 (??)待辦事項:展開:布拉姆
農民賄賂幹線襲擊
[10] 探索的一個有趣的攻擊是賄賂攻擊tage 在每個插槽中當選的“領導者”的可預測性。 作者分析了一個權益證明鏈,並認為當參與者提前知道他們將獲勝時,就存在潛在的賄賂攻擊。 如果參與者事先知道哪些地塊會獲勝,每個用戶可以通知攻擊者他們願意參與攻擊,如果他們達到一定的閾值,他們可以完全重組鏈(或孤兒不參與的人,審查交易等)。 這種攻擊不需要網絡中的大部分空間參與; 只有在那短短的時間內獲勝者。 此外,它是不可檢測的,因為攻擊者可以製作一個看起來正常的鏈。
在此版本的Chia共識算法中不存在此問題。 通過降低可預測性可以解決此問題:每個農民都無法確定他們的空間證明在標牌點之前是否完全合格。 因此,攻擊者必須賄賂大部分空間才能發起此攻擊。
農民賄賂樹葉重組攻擊
由於塊是通過PoSpace密鑰簽名的,因此,理論上,農夫可以在同一高度使用同一PoSpace對多個塊進行簽名。 攻擊需要惡意方賄賂農民一定數量的資金,以便農民提供備用鏈的簽名。 如果攻擊者可以說服N個區塊中的每個農民進行簽名,則他們可以還原或重新排序這N個區塊中的任何交易。 可以使用潛在的欺詐證據,但由於可以引發其他攻擊並使行為複雜化,因此未選擇這些證據。
相反,解決方案只是等待更長的時間。 經過32個區塊(約10分鐘)後,假設至少有一個農民正在遵循該協議並且未進行雙重簽名,這是一個合理的假設。 如果54%不衝突(假設46%的攻擊彈性),則在32個區塊後發生逆轉的可能性為
。 此外,這種攻擊是可檢測的,因此不容易中斷。
每個用戶可以選擇他們自己的閾值,他們接受一個交易/塊作為最終的閾值。 前任ample,在總網絡空間突然下降的情況下,用戶可以更加小心,不要考慮最終交易,以防由於網絡分裂而存在另一個現有分叉,例如amp勒。
孤立交易塊以收取交易費用
交易b鎖與非交易塊不同,因為它們包含交易費用。 這些可能會超過塊獎勵。 在撰寫本文時(2020年2月),在高峰defi炒作中,我們看到8個以太坊獎勵,每個區塊有2 ETH費用。 在Chia中,這將更為極端,因為並非每個區塊都包含交易。 這導致了攻擊,第二名農民忽略了第一名,試圖贏得交易塊。 如果第二個塊距第一個塊不到1秒,則不會指定前一個塊,因此第二個塊不能孤立第一個塊。 第三名可能會使兩個人都成為孤兒,但沒有人會跟隨這條鏈,因為它較短。
但是,如果在第一個區塊的30秒內沒有任何區塊,則第二個區塊可以孤立第一個區塊,但他們必須說服下一個區塊在其備用鏈上進行耕種。 如果攻擊者同時控制第二個和第三個,則更容易進行攻擊,在這種情況下,他們可以忽略第一個和第二個。 這些孤立的攻擊不允許攻擊者竊取獎勵,而是允許攻擊者稍微降低難度。 由於它們的情況非常特殊,並且需要大量空間,因此嘗試進行此攻擊可能對網絡造成的損害要大於對攻擊者的潛在危害。
孤兒率
在Chia共識中,幾乎可以同時將兩個相互競爭的區塊同時包含在區塊鏈中,而無需彼此了解。 (儘管最多可以是一個塊)。 由於所有交易塊也是塊,因此它們都包含在鏈中,因此鏈的權重更高。 這意味著Chia的孤兒率 假設網絡延遲較低,則基本上為零。 如果網絡等待時間超過注入延遲(30-40秒),則幾乎可以保證孤立一個塊,因此它更像是步進功能。 這與Nakamoto-PoW相反,後者在出現網絡延遲時孤立率很高,並且隨著網絡狀況的改善而平穩降低,但從未達到零。
分析
安全
安全性類似於比特幣等其他中本聰共識算法。 沒有保證的最終性,但交易的確認越多,它就越安全。 在 <46%(* vdf advantage) 串通假設。 由於農民理論上可以在同一高度簽署多個區塊,因此在 Chia 中應該使用更多的確認 比比特幣。 但是,以每32分鐘10塊的速度,在比特幣中進行6次確認相當於在Chia中進行192次確認,這綽綽有餘,足以被認為是安全的。 只要這192位農民中的一位行為良好(不是雙重簽名),該交易就不會被撤消。
值得注意的是,沒有54%的誠實耕種空間的要求,但有54%的不串通的要求。 尋求協議的農民從協議中獲得的收益很少。
還有一個附加的假設,即至少必須有一個快速的timelord連接到網絡的非競爭部分,並且攻擊者的timelord不會明顯更快。
活力
Chia共識系統的活躍性是其最大的優勢之一。 像比特幣一樣,即使大部分空間都離線,Chia系統仍會繼續前進。 但是,與比特幣不同,由於並非所有區塊都是交易區塊,因此發生這種情況時,系統不會顯著降低速度。 因此,如果許多參與者下線,則事務吞吐量不會下降太多。 即使只有一個農民在線,它也會繼續,儘管會有很多空槽,因為只有在低於子槽迭代閾值的情況下才能創建事務塊。
當然,如果長期網絡分裂,後果是必須選擇一條鏈,因此在這種情況下可能會有大量重組。 儘管如此,網絡仍會選擇較重的鏈,類似於PoW。
與BFT的比較 共識演算法
空間證明還可以用作抗Sybil的機制,以引導Byzantine 共識(k 協議)系統。 File硬幣,許多權益證明系統使用拜占庭共識的方面。
使用Chia Nakamoto共識與拜占庭共識的優缺點,因算法而異:
- + 簡單得多
- + 無需註冊
- + 無需擴展(可擴展到數百萬農民)
- + 更耐審查。 只要一小部分耕作空間沒有經過審查,最終您就可以進入區塊鏈。
- + 沒有活動需求,可能更少的網絡假設
- + 完全客觀(一個節點可以比較鏈1和鏈2,並立即知道哪個較重)。 無需達成共識的檢查站。
- + 更好的輕客戶端支持[11]
- – 沒有確定性,只有概率。
- – 需要等待更長的時間來確認交易(與確定性無關)。
- – 更少的一致塊時間和交易吞吐量
與Nakamoto PoW的比較
- + 不同的資源。 PoSpace具有ASIC抵抗力,因此任何人都可以參加農業。 希望更多的權力下放。
- + 輕鬆合併農業。 其他加密貨幣可以使用相同的格式,每個人都可以共享空間。 由於農民可以攻擊規模較小的農民,因此最高的農民可能是唯一的農民。
- + 由於只有少數幾個節點運行VDF,並且這些節點未並行化,因此使用的能耗最低。 極低的邊際成本 到我的。
- + 更一致的交易阻止時間(每1分鐘XNUMX個)。
- + 不太容易受到自私的採礦攻擊
- + 較小的孤兒率和分叉率,因為可以並行包含塊。
- + 當空間減少時,仍然以相同的速度前進,因為只有1/16塊包含事務。 PoW中本田共識速度放慢。
- – 潛在攻擊者(大型公司)的缺點。 硬件是通用的,因此攻擊者可以在耕種,攻擊和用於數據存儲之間進行切換。
- – 加速 VDF 可以提供空間優勢tage 用於攻擊網絡的人。
- – 由於子插槽和VDF的緣故,更加複雜,可能會有更多的加密假設
與權益證明的比較
該共識算法也可用於放樣證明,其中空間農民被擁有系統中硬幣的放樣者代替。 好處是可以大幅削減(刪除人們的股份),而農民將擁有“遊戲中的皮膚”,但是如果使用股份證明,則存在一些擔憂。 (+ 意味著利用空間與權益的利益)。
- + 攻擊者可以將自己的股份轉讓給其他人,但是可以在轉讓他們的股份之前分叉鏈。 在這個備用鏈中,攻擊者仍然擁有所有股份,因此可以推進鏈。 PoStake中“無所不包”的問題有所不同 與在PoSpace中相比,創建PoSpace需要一個物理資源(硬盤空間),而在PoS中創建PoS只需要一個密鑰。
- + 由於硬幣總數有限,攻擊者可以通過兌現獎勵(有錢人會變得更富裕)來保證自己在整個餡餅中所佔的份額。
- + 那裡 在某些情況下,攻擊者可能會用多種不同的方式來轉移股權。 也許可以通過要求長期投入抵押才能緩解這種情況。
- + 需要註冊,在您註冊之前,您不能參與權益證明。 這降低了隱私和可伸縮性(可容納多少人)。
- + 更高的進入門檻:保證金和大幅削減使小用戶難以參與。 削減對於網絡參與者可能是巨大的風險。 集中的保管人導致參與者的分佈較少。
- + 一些 假設 要求[11]執行輕度客戶端同步以證明利益。
- – 遊戲中的皮膚:借助PoS因此,共識可能會削減人們的利益,並且還需要對該系統進行一些投資(暴露於價格)。 在空間證明中,硬盤驅動器可以用於其他目的,並且不能“削減”人們的硬件。
參考
- Vivek Bagaria,Amir Dembo,Sreeram Kannan,吳Sewoong,David Tse,Pramod Viswanath,Xuechao Wang,Ofer Zeitouni, 權益證明最長鏈協議,安全性與可預測性 [下載]
- Aggelos Kiayias,Alexander Russell,Bernardo David,Roman Oliynykov,Ouroboros:A 可證明安全的權益證明區塊鏈協議 [下載]
- Bram Cohen和Krzysztof Pietrzak, Chia網絡區塊鏈
- Benedikt Bunz,Lucianna Kiffer,Loi Luu和Mahdi Zamani, 2019-226 [PDF]
- Krzysztof Pietrzak, 高效的可驗證延遲函數 [下載]
- 本傑明·韋索洛夫斯基, 簡單的可驗證延遲函數 [下載]
- Stefan Dziembowski,Sebastian Faust,Vladimir Kolmogorov和Krzysztof Pietrzak, 空間證明 [下載]
- Hamza Abusalah,Joel Alwen,Bram Cohen,Danylo Khilko,Krzysztof Pietrzak和Leonid Reyzin, 2017-893 [下載]
- 正大網絡, 太空建設的Chia證明
- Soubhik Deb,Sreeram Kannan,謝天華, PoSAT 工作量證明的可用性和不可預測性,無需工作 [下載]
- 亞歷山大·斯基達諾夫(Alexander Skidanov) 權益證明系統中的輕客戶
– –
參考
- 使用者手冊manual.tools
