雜湊函式在區塊鏈中的應用

買賣虛擬貨幣
前幾節課我們對雜湊函式已經有了一個很完整的認知,今天這節課我們來細說雜湊函式在區塊鏈中的應用~以太坊使用者地址的生成第一步:生成私鑰 (private key)產生的256位元隨機數作為私鑰(256位元 16進位制32位元組): 18e14a7b 6a307f42 6a94f811 4701e7c8 e774e7f9 a47e2c20 35db29a2 06321725第二步:生成公鑰 (public key)
利用將私鑰(32位元組)和橢圓曲線ECDSA-secp256k1計算公鑰(65位元組)(字首04||X公鑰||Y公鑰): 04 ||50863ad6 4a87ae8a 2fe83c1a f1a8403c b53f53e4 86d8511d ad8a0488 7e5b2352 || 2cd47024 3453a299 fa9e7723 7716103a bc11a1df 38855ed6 f2ee187e 9c582ba6利用Keccak-256演算法計算公鑰的雜湊值(32bytes):fc12ad81 4631ba68 9f7abe67 1016f75c 54c607f0 82ae6b08 81fac0ab eda21781取上一步結果取後20bytes即以太坊地址:1016f75c54c607f082ae6b0881fac0abeda21781
第三步:輸地址 (address)0x1016f75c54c607f082ae6b0881fac0abeda21781默克爾雜湊樹

比特幣區塊包含了區塊頭部和一些比特幣交易。一個區塊上所有交易的雜湊值構成了該區塊默克爾雜湊樹的葉子結點,默克爾雜湊樹的根節點儲存在區塊頭裡面,因此所有交易與區塊頭部繫結在了一起。

挖礦難度的設定

比特幣難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個雜湊值的困難程度。

difficulty = difficulty_1_target / current_target

difficulty_1_target的長度為256位元, 前32位為0, 後面全部為1 ,一般顯示為雜湊值,

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

difficulty_1_target表示btc網路最初的目標雜湊。current_target是當前塊的目標雜湊,先經過壓縮然後儲存在區塊中,區塊的雜湊值必須小於給定的目標雜湊值, 表示挖礦成功。

數字簽名

比特幣需要利用公鑰進行加鎖,利用私鑰簽名進行解鎖,從而實現數字貨幣的交易。解鎖過程實際上是利用ECDSA演算法的產生數字簽名。給定交易資訊m,簽名過程如下:

選擇一個隨機數k
計算點R= k*G= (xR, yR) ,計算r=xR mod n
利用私鑰d計算s=k-1*((H(m) - d*r)) mod n
輸入簽名(r, s)

軟體釋出

挖礦軟體釋出資訊示意圖

雜湊函式在區塊鏈中的應用就講到這裡啦,下節課我們將開啟全新篇章的學習,敬請期待!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;