1. 程式人生 > >通過App的演示深入理解區塊鏈執行原理

通過App的演示深入理解區塊鏈執行原理

下載安裝

如果沒有安裝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

執行結果:

image

建立區塊

在 blockchian ->後面輸入 bc檢視創始區塊結構。

image

當一個區塊挖礦時都發生了什麼?

在 blockchian ->後面輸入 mine kongyixueyuan.com

挖礦並建立一個新的模組。

image

Hash是怎麼計算的?

Hash值是一個十六進位制固定長度為64位的唯一的標識。

hash值是由index, previous block hash, timestamp, block datanonce 作為輸入資料計算而得。

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值,只要輸入值不變,永遠返回相同的結果。

image

你是否注意到塊雜湊中的四個前導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值的過程就叫做挖礦。

隨著難度的增加,可能的有效雜湊數減少。 使用較少可能的有效雜湊,需要更多的處理能力才能找到有效的雜湊。

nonce%E5%80%BC.gif

線上地址: