圖解比原鏈Tensority算法:如何讓POW做到人工智能友好

共識算法說起

區塊鏈系統首先是分佈式系統,而一致性是分佈式系統的基礎問題,要保證系統滿足不同程度的一致性,則就要用到共識算法。

現在主流的算法有POW、POS、DPOS等等,比特幣採用的POW共識算法運行9年之久,已被證明穩定可靠,然而因爲巨大的硬件和能源消耗而飽受詬病,特別是專用礦機,在被淘汰之後就變成了廢鐵。

POS和DPOS爲了避免資源的浪費,直接採取拋棄計算的方式,通過持有證明和選舉來進行共識,犧牲了一定準入性和去中心化。而比原鏈從另一個角度來切入和解決POW資源浪費的問題。

比原鏈共識算法Tensority設計思路

首先我們基於以下思路來設計共識算法:

  • 計算是一種權力,不能因爲能源消耗而拋棄計算的方式,爲了維持系統的穩定能源消耗是必要的,而且POW已經被證明穩定可靠,同時准入門檻低。(CPU、GPU、ASIC礦機皆可進入,同時也不需要持幣或者選舉)
  • 礦機功能單一是原罪,只能進行哈希運算造成礦機的極大浪費,如果能夠將礦機功能多樣化將更有利於發展。
  • 人工智能技術的迅猛發展,AI智能加速市場需求量增大。

爲此我們設計了AI友好型的共識算法Tensority。矩陣乘運算與卷積運算是人工智能常用的兩種算法,相比後者,前者的應用範圍更廣。

爲了使得比原鏈共識算法對人工智能友好,同時兼容所有主流的AI加速設備,比原鏈在算法選型上採用了矩陣乘運算。算法確定之後需要選取參與運算的數據類型,選取的標準有二:

第一,選取的數據類型需目前所有主流AI加速設備都能支持。

第二,神經網絡推理的主力數據類型均要支持。

綜合來看,int8數據類型滿足條件。

比特幣POW共識算法回顧

在說到比原鏈的POW共識算法Tensority之前,我們回顧一下比特幣的POW共識算法:

我們知道比特幣的POW共識算法是通過不停的迭代計算區塊頭的哈希值,不斷修改參數,直到哈希值匹配的過程。

比原鏈POW共識算法總覽

那麼讓我們看一下比原鏈的共識算法總體過程:

整個Tensority算法過程中,區塊頭的哈希的選取和難度值的比較仍然作爲頭尾銜接的步驟,但是中間穿插了很多涉及到矩陣的運算過程,而這些運算在AI計算中比較常見,所以支持比原挖礦的礦機就有能力提高AI加速服務。

下面我們來進一步細化每個過程:

種子生成

我們在總覽圖中可以看到Tensority有兩個輸入,一個是和比特幣相同的哈希頭,另外一個就是種子seed,那麼種子是怎麼來的? 我們可以看到論文中對於種子的描述:種子是一個由一段時間內的區塊歷史決定的32位的字節數組。種子來自於每256塊的第一個塊的區塊頭,一般來說每256個塊會更換一次seed,在256塊以內都會使用相同的seed。

Cache Calculation

這個步驟主要使用種子通過一定的變換獲得一個矩陣。我們首先通過一定次數的哈希將種子進行擴展,以滿足Scrypt的輸入要求,然後使用Scrypt函數生成一個32x1024x128的矩陣。值得注意的是,我們使用的Scrypt算法就是使用在萊特幣中的算法。

Matrix Construction

該步驟會將上一步產生的矩陣變成一個更爲規整的矩陣從而適合後續的處理,具體過程將會比較複雜,請參考論文。

Martix Operation

該步驟比較複雜,也是最有意思的步驟。採集的區塊頭哈希分割爲四份,每份做一次哈希生成一個新的哈希值,新的哈希值的每一個比特作爲Matrix Construction生成矩陣切片的索引值,從而切片獲得一個矩形。經過上述步驟後將獲得128個矩形,對這些矩形進行矩陣相乘最後得到一個矩陣。

Work Generation

這個步驟是輸入上一步生成的矩形變成一個32位的哈希值,從而進行最後的難度比較。首先將256x256的矩形變形位256x64的矩形,然後通過FNV函數轉換爲一個32位哈希值。

我們將得到的哈希值和難度值做比較,看是否滿足條件,這一輪的共識算法就結束了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章