通過App的演示深入理解區塊鏈執行原理
阿新 • • 發佈:2019-02-04
下載安裝
如果沒有安裝nodejs,需要先安裝 nodejs
# Clone this repository
$ git clone https://github.com/seanseany/blockchain-cli
# Go into the repository
$ cd blockchain-cli
# Install dependencies
$ npm install
# Run the app
$ npm start
執行結果:
建立區塊
在 blockchian ->後面輸入 bc檢視創始區塊結構。
當一個區塊挖礦時都發生了什麼?
在 blockchian ->後面輸入 mine kongyixueyuan.com
Hash是怎麼計算的?
Hash值是一個十六進位制固定長度為64位的唯一的標識。
hash值是由index
, previous block hash
, timestamp
, block data
和 nonce
作為輸入資料計算而得。
CryptoJS.SHA256(index + previousHash + timestamp + data + nonce)
The SHA256 algorithm will calculate a unique hash, given those inputs. The same inputs will always return the same hash.
SHA256演算法將根據給出的輸入資料計算出一個唯一的hash值,只要輸入值不變,永遠返回相同的結果。
你是否注意到塊雜湊中的四個前導0?
四個前導0是有效雜湊的最低要求。 所需的前導0的數量稱為難度
。
下面的方法驗證hash難度是否有效。
function isValidHashDifficulty(hash, difficulty) {
for (var i = 0, b = hash.length; i < b; i ++) {
if (hash[i] !== '0') {
break;
}
}
return i >= difficulty;
}
什麼是nonce?
nonce是一個用來找到滿足條件的hash值的數字。
let nonce = 0;
let hash;
let input;
while(!isValidHashDifficulty(hash)) {
nonce = nonce + 1;
input = index + previousHash + timestamp + data + nonce;
hash = CryptoJS.SHA256(input)
}
nonce
值一直迭代,直到 hash
值有效為止。在我們案例中一個有效的hash
值是最少有4個前導0。找到nonce
值以滿足合適條件的hash
值的過程就叫做挖礦。
隨著難度的增加,可能的有效雜湊數減少。 使用較少可能的有效雜湊,需要更多的處理能力才能找到有效的雜湊。
線上地址: