圖解比原鏈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位雜湊值
我們將得到的雜湊值和難度值做比較,看是否滿足條件,這一輪的共識演算法就結束了
結語
1、比原鏈的Tensority共識演算法比比特幣的演算法複雜很多,對於單次的計算過程肯定需要耗費更多的資源,但是可以透過難度值來調整計算的難度。
2、Tensority共識演算法的特色在於演算法過程中穿插了很多的矩陣生成,矩陣變換,矩陣乘法等運算,而這些能力在AI加速中也會頻繁使用。
3、基於上一條,如果想要做比原礦機,那麼這些礦機就必須得有能力支援矩陣運算,這些礦機就可以用來做AI的加速服務,從而提高了礦機的資源利用率。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;