今天讓我們聊聊 Nervos CKB 上最靚的仔 —— 礦工,礦工在 CKB 上出了一個塊究竟能獲得多少種獎勵呢,本文就帶大家來一探究竟!

Nervos CKB 挖礦獎勵一覽

這邊我們截取了目前正在運行的 V0.17 版本的 CKB 測試網,區塊高度爲 888 的區塊的區塊獎勵發放數據圖。

我們來仔細研究一下吶,最上面的是一段 0x 開頭的數字,這是這筆轉賬交易的哈希值,然後左邊我們可以看到“Cellbase for Block 877”,這說明這筆交易是由系統的 cellbase 發出的區塊獎勵,而不是一筆用戶之間的轉賬交易。“for Block 877”說明這筆系統的區塊獎勵是發給區塊高度爲 877 的區塊的。

看到這裏你是不是覺得有點奇怪,明明我們查看的是區塊高度 888 的區塊,怎麼其中發的獎勵是發給區塊 877
的,這個怎麼和比特幣不太一樣,彆着急我們先繼續看右邊的內容。右邊最上面的是區塊獎勵發送的地址,地址尾號是“jpn”,讓我們分佈看一下區塊 888 和區塊 877 的具體出塊信息圖,我們可以看到區塊 888 的出塊者的地址尾號是“cve”,而區塊 877 的出塊者的地址尾號是“jpn”,這也驗證了前面的“Cellbase for Block 877”,區塊 888 發的區塊獎勵的確是給到了挖出區塊 877 的礦工。

Nervos CKB 挖礦獎勵一覽區塊高度 888

Nervos CKB 挖礦獎勵一覽區塊高度 877

造成這個現象的原因是因爲 Nervos CKB 採用了新型的共識機制 —— NC Max,關於 NC Max
的詳細信息可以參考:讓中本聰共識再次偉大 (上)、(下)。

這裏就不再贅述了,簡單來說,根據目前暫定的參數,一個區塊高度爲 N 的區塊的出塊獎勵會在區塊 N+11 通過 Cellbase 發放。所以在 CKB 的網絡裏面挖出區塊了不要着急哦,區塊獎勵可能需要飛一會兒。

接下來讓我們繼續分析上面的第一張圖,我們看到地址“jpn”一共收到了 1,004.01927818 個 CKB,目前 CKB
網絡暫定的小數位數爲小數點後八位,最小單位爲 shannon。而這麼多的 CKB 是包含多個部分的獎勵的,如圖所示包含了:BaseReward,Secondary Reward,Proposal Reward,Commit Reward,依次可以翻譯爲基礎發行、二級發行、提案獎勵、提交獎勵。接下來我們會對這幾個部分進行逐一分析解答。

Base Reward

首先我們來說的是 Base Reward (基礎發行), 我們提到 CKB 的基礎發行也就是一級發行的時候通常會把它和比特幣的發行進行類比,根據 CKB 目前暫定的規則,CKB 的基礎發行和比特幣一樣是有固定上限的,而且也是每四年產量減半

但是不同於比特幣每個區塊固定的出塊獎勵和固定的每 2016 個區塊進行一次難度調整。目前的 CKB 採用的是 NC Max 共識協議即一箇中本聰共識的改良版的共識協議,在難度調整時會計算上一個週期內的孤塊率然後根據一系列參數的調節計算,進行難度調整努力確保整個網絡維持一個較爲恆定的孤塊率水平。每次難度調整時,會計算出下一個週期的區塊數量,因此每個週期內出塊的數量是會發生變化的,因此如果還是採用比特幣的每個區塊固定的出塊獎勵,將無法保證 CKB 按照確定的每四年產量減半的設定。

因此 CKB 目前暫定的是一個週期,每個週期內的總出塊獎勵是一個固定值,目前暫定一個週期的時間爲 4
小時,也就是說當該週期的出塊間隔時間變長,出塊數量減少的時候,每個區塊的出塊獎勵會隨之增多,反之依然。通過這種方式可以使得 CKB 網絡按照每 4 小時的整數週期計算時,始終發放的是一個確定的固定數量的區塊總獎勵,這樣就可以確保每四年產量減半的系統設定。

Secondary Reward

接下來我們要說的是 Secondary Reward (二級發行)。

二級發行是 CKB 的發行中比較不同於比特幣的地方。因爲同比特幣一樣,如果網絡只有基礎發行的話,隨着減半次數的增多,礦工挖礦獲得的出塊獎勵將會越來越少,礦工只能寄希望於獲取更多的手續費來維持收支平衡,而在一個比較固定 TPS 的網絡中,不斷增長的手續費是會抑制用戶轉賬的,當礦工無法獲得足夠多的獎勵的時候,可能會使得整個網絡的算力下降,影響整個網絡的安全性,因此爲了在多次減半後仍能激勵礦工持續地維護網絡安全,CKB 的發行中設置了二級發行。

二級發行是和基礎發行同步進行的,二級發行每年發行的數量是固定的,二級發行的 CKB 和基礎發行的 CKB 是完全一樣的 Nervos Layer1 原生 Token。當然在 CKB 的經濟模型提案的設計中,二級發行並不是全部給到礦工的,而是會根據 CKB 實際處於的不同狀態進行劃分的。因爲 CKB 不僅僅是一種原生的 Token,擁有 1 CKB 還代表着擁有 1 Byte 的全球狀態的存儲空間。因爲礦工會爲不斷增長的全球狀態數據付出了持續的硬件成本,因此存儲了數據的正在使用中的 CKB 部分對應的二級發行會補償給礦工。而對於那些未存儲數據佔用全球狀態的始終處於流動狀態的 CKB 或者鎖定在 NervosDAO 中無法存儲數據的 CKB,礦工已經收取了交易轉賬的手續費,而且並沒有付出額外的持續的硬件存儲成本,因此這一部分對應的二級發行將不會給到礦工,而是按照別的分配方式。

我們可以通過以下兩張圖瞭解 CKB 的三種不同的狀態和二級發行的具體分配規則:

Nervos CKB 挖礦獎勵一覽CKB 的三種不同狀態

Nervos CKB 挖礦獎勵一覽二級發行的具體分配方案

在這裏我們主要關注的是二級發行中補貼給礦工的這一部分,我們目前並不清楚二級發行的具體發行規則,但是我們可以有大致以下幾個比較籠統的概念。

  • 首先根據 CKB 經濟模型提案可以明確二級發行每年發行的總量是一個定值。
  • 二級發行中分配到礦工的部分受 CKB 的使用率影響,CKB 使用率越高,礦工可獲得二級發行中 CKB 的比例越高。

Proposal Reward 和 Commit Reward

最後我們要說的是 Proposal Reward (提案獎勵)和 Commit Reward (提交獎勵)。

這兩部分的獎勵都是來自於交易轉賬的手續費。至於爲什麼交易轉賬費會分成兩個部分:Proposal Reward 和 Commit Reward,這也和 CKB 網絡採用的 NC Max 共識算法息息相關。NC Max 中爲了消除區塊傳播延遲的瓶頸採用了兩步交易確認的方案。簡單來說在 CKB 網絡中,一筆交易需要經歷的週期是:

  1. 用戶發送交易;
  2. 交易進入交易池;
  3. 交易進入區塊結構的提案區(Proposal zone);
  4. 交易進入區塊結構的提交區(Commitment zone)(既一般意義的交易打包進入區塊)。

因此一筆交易會被放入區塊結構兩次,一次是 Proposal,一次是 Commit,根據目前暫定的規則,針對一筆非 Cellbase 交易,最早將交易放置入提案區的礦工將獲得該交易的交易費的 40%,而將交易放置入提交區的礦工將獲得該交易的交易費的 60%

而在當前發佈的版本中,區塊高度爲 N 的區塊提案的交易只能在之後的 2 到 10 個區塊之間進入提交區並最終在區塊鏈中確定。

因此,挖出區塊 N 的礦工可以獲得的 Proposal Reward 只有在區塊 N+11 才能夠真正算清:在區塊 N+2 至區塊 N+10 所 Commit 的交易中,找到區塊 N 首次 Proposal 的交易,挖出區塊 N 的礦工可以獲得這些交易的手續費的 40%。這解釋了爲什麼區塊 N 的挖礦收入最終要在區塊 N+11 發放,因爲之前是無法計算出 Proposal Reward 的。

當然同樣的,區塊 N 的礦工也只能打包區塊 N-10 至區塊 N-2 的提案區內的交易,當然前提是需要確認這些交易並沒有被前面的區塊打包過。

Nervos CKB 挖礦獎勵一覽

按照上面的圖去理解的話,挖出區塊高度 N 的礦工可以獲得:

  • Commit Reward:Block N-10 ~ Block N-2 中被 Proposal 但是沒有被 Commit 並最終在 Block N 中完成 Commit 的所有交易的交易手續費的 60%;
  • Proposal Reward:在 Block N 中被 Proposal,並在 Block N+2 ~ Block N+10 中完成 Commit 的所有交易的交易手續費的 40%;
  • 另外,挖出區塊高度 N 的礦工,最終會在 Block N+11 中獲得所有收益。

說了這麼多,相信你對 Nervos CKB 的礦工出一個區塊,能夠獲得哪些收益有了一個基礎的瞭解。最後就問你要不要來 CKB 網絡當這個最靚的仔呢?