區塊、交易與帳本
隨機數
隨機數(nonce)是為某個特定目的「只用一次」的數字——系統會調整或遞增這個一次性的值,好讓某樣東西恰好滿足條件,或讓事情保持有序。這個英文詞是「number used once(只用一次的數字)」的縮寫。在區塊鏈裡,這個術語出現在兩個截然不同、又容易混淆的地方,值得把它們分清楚,因為它們做的活兒很不一樣。
在工作量證明的挖礦中,隨機數是礦工為了找到一個有效區塊而不停撥動的那個旋鈕。礦工反覆更動區塊標頭裡的這個數字、再對標頭重新做雜湊,搜尋一個落在難度目標之下的指紋。沒有捷徑:要找到中獎的隨機數,唯一的辦法就是嘗試天文數字般多的取值——這正是挖礦成為一場昂貴的數字抽獎的緣由,也正是它保護鏈安全的方式。找到的那個幸運隨機數隨後會被公布,好讓任何人都能立刻驗證答案無誤。
而在帳戶模型裡——以太坊及類似的鏈所採用——附在每個帳戶上的,則是一個很不一樣的隨機數:一個簡單的計數器,給該帳戶的交易編號,一、二、三,依此類推。它的職責是固定某個帳戶各筆交易的先後順序,並防止一筆陳舊的、早已花掉的付款被惡意地重新廣播、重放。同一個詞,兩種角色:一個是暴力搜尋的變數,另一個是防重放的序列號。
另見