Mix

MIX算法到底是什麼

  • February 14, 2021

我正在嘗試評估雜湊探勘的 MIX 塊的確切實現。有很多資訊(可能太多),但找不到任何描述 MIX 功能的詳細實現的資訊。

這是一個圖表,它解釋了我到底在尋找什麼:

在此處輸入圖像描述

我對實現“混合功能”塊的確切步驟感興趣。

這是我認為您正在尋找的基本 Python 實現,來自Ethash wiki。您需要從頁面的其他位置獲取各種常量。

def calc_dataset(full_size, cache):
   return [calc_dataset_item(cache, i) for i in range(full_size // HASH_BYTES)]

def calc_dataset_item(cache, i):
   n = len(cache)
   r = HASH_BYTES // WORD_BYTES
   # initialize the mix
   mix = copy.copy(cache[i % n])
   mix[0] ^= i
   mix = sha3_512(mix)
   # fnv it with a lot of random cache nodes based on i
   for j in range(DATASET_PARENTS):
       cache_index = fnv(i ^ j, mix[j % r])
       mix = map(fnv, mix, cache[cache_index % n])
   return sha3_512(mix)

fnv()呼叫是Fowler –Noll–Vo 雜湊函式


要獲得實際可用的工作版本,請查看 Geth 的algorithm.go. 再次,generateDatasetItem()可能是您正在尋找的。

這是在範例 GPU 硬體上執行 Ethash 的一個非常好的分析: https ://github.com/LeastAuthority/ethereum-analysiss/blob/master/PoW.md

引用自:https://ethereum.stackexchange.com/questions/59828