Mining-Theory

什麼是精確的隨機數查找協議?

  • August 15, 2020

關於什麼是挖礦有很多描述,但沒有一個是準確描述的。從我收集到的:

探勘意味著找到一個隨機數 c,使得對於某些資訊 s,雜湊值 h(s||c) 以一定數量的零開始(h 是 sha-256,|| 連接)。

這裡給出了“資訊” 。nonce 是一個在探勘過程中遞增的整數。但似乎不是 s||c 被散列,而是有一些雙重散列正在進行,但是,h(s)||c, h(s||c), h(s)|| h(c)? 我無法從上一個連結中的 Python 程式碼中推斷出它(注意:我是程式碼文盲)。

此外,nonce 不只是初始化為零,然後遞增直到成功:

為了避免以這種方式浪費工作,需要有一個隨機起點,因此工作變成找到 H(s,x,c)/2^(nk) = 0 其中 x 是隨機的(例如 128 位使兩個使用者在同一點惡意或意外啟動在統計上是不可行的),c 是變化的計數器,s 是服務字元串。(資源)

但那是描述 hashcash 的文章,誰知道比特幣可能沒有像提議的那樣實現 hashcash 協議。

所以我的問題是,確切的協議是什麼?如果可以的話,我會去閱讀原始碼,但就像我說的那樣,我不識程式碼。當然,答案必須可以簡潔地表述,例如:

計算 h(s||c),其中 c 在 0,1,… 上執行,直到值以 15 個零開頭。

要麼

散列 s 並以方式 X 獲得 x,然後計算 h(h(s)||c),其中 c 在 x,x+1,… 上執行,直到值以 17 個零開頭。

抱歉,如果以前有人問過這個問題,如果很清楚,我在Google上搜尋錯誤的話,謝謝。

這個挖礦模擬器很好地展示了正在被散列的內容。

<http://www.yogh.io/#mine:last>

人們是對的,您不必更改 Nonce,這只是獲得不同雜湊輸出的最快方法。您可以很好地將 nonce 保持在 1 並更改時間戳或包含的交易列表,這將更改 merkelroot。

被雜湊的是版本 + 前一個區塊雜湊 + 默克爾根 + 時間 + 比特(目標)+ 隨機數。這會被雜湊兩次 sha256(sha256(blockheader))

這裡的程式碼和描述是 pre <https://en.bitcoin.it/wiki/Block_hashing_algorithm>

引用自:https://bitcoin.stackexchange.com/questions/41949