功能**:
//計算公鑰
if iscompress else
// base58check( 0x05 hash160( 0x00 0x14 hash160( pubkey ) ) )
//上面的 hash160(x) = ripemd160(sha256(x)),base58check(x) = x sha256(sha256(x)).substring(0,4)
if hash160, err = ripemd160aftersha256(pubkey); err != nil
return "", err
} checksum := sha256aftersha256(buf)
return base58.encode(buf),nil
}測試**:
func testnewp2sh(t *testing.t) ,
} var err error
var address string
for _, onecase := range testcases
if address != onecase.address
}}
這裡的測試用例可以用electrum錢包生成的位址測試。不過electrum錢包匯出的私鑰是wif格式的,需要將它解碼轉成位元組陣列的形式填寫在測試用例中。
(全文完)
位元幣位址生成演算法之P2PKH
功能 如下 1.用私鑰生成公鑰 privkey secp256k1.privkeyfrombytes rawprivkey 2.計算公鑰 if iscompress else 3.計算公鑰的sha256雜湊值 4.計算上一步結果的ripemd160雜湊值 if hash160,err ripemd1...
位元幣位址生成演算法之公鑰和私鑰(上)
關於橢圓曲線部分的知識,我就不寫了,不是因為簡單,恰恰相反,因為太難了,我自己也沒搞懂。這裡我只寫一點寫 的時候需要掌握的一點點知識。首先是公鑰,我們可以把公鑰看成是乙個二維座標上的點,作為乙個二維座標上的點,它當然有x軸和y軸兩個數來共同決定。另外,這兩個數還特別大,每個數要用256bit來儲存,...
《區塊鏈寶典》位元幣默克爾根生成演算法及原理
一 默克爾樹 二 默克爾根 一 只有唯一一次鑄幣交易 只有唯一一筆coinbase交易的hash就是默克爾根的hash值 二 默克爾根的生成步驟 將每乙個葉子節點下的分支節點進行兩兩hash,之後大小端顛倒然後拼接到一起,拼接好的資料進行雜湊運算,之後在進行一次大小端顛倒 如下 package ma...