用go語言實現位元幣位址校驗

2021-08-25 11:33:19 字數 910 閱讀 2052

隨機取乙個32位隨機數作為私鑰

利用生產的隨機數採用橢圓加密演算法生成公鑰

計算公鑰的sha256雜湊值

計算ripemd-160雜湊值

第4步結果加上版本號(位元幣為0x00)

對第5步結果取兩次sha256雜湊值

取上一步結果的前四個位元組

將第7步結果加到第步的結果後面作為校驗

利用base58對第8步結果進行變化得到位址

func (w wallet) getaddress() byte 

func hashpubkey(pubkey byte) byte

func checksum(payload byte) byte

位址是否正確**

addresschecksumlen:=4

func validateaddress(address string) bool

base58decode是對位元幣位址進行解碼,然後取後四位校驗位actualchecksum,利用去掉校驗位的pubkeyhash再次算出校驗位與位址的校驗位做出對比,即可驗證位址的正確性。 其中用到的函式有:

func checksum(payload byte)   //利用兩次shah256求校驗位

byte

這是解碼的函式,已經有不少現有的**支援,故不作講解

func base58decode(input byte) byte 

}payload := input[zerobytes:]

for _, b := range payload

decoded := result.bytes()

return decoded

}

利用go語言獲取位元幣餘額

我們輸入乙個位元幣位址,然後獲取對應位元幣位址擁有者對應的pubkey,由該公鑰檢測utxo集,獲取未花費交易,累加value,從而獲取位址對應的餘額 func cli cli getbalance address,nodeid string bc newblockchain nodeid utxo...

Go語言實現Valid Parentheses

write a function called that takes a string of parentheses,and determines if the order of the parentheses is valid.the function should return true if ...

如何使用go語言搭建位元幣區塊鏈

首先我們來回顧一下區塊鏈中的一些概念 區塊 區塊鏈 交易 1.如何儲存區塊鏈資料?眾所周知,區塊鏈主要的特點就是去中心化,也就是採用分布式儲存。那麼我們如何將資料儲存在使用者本地呢?這裡採用bolt資料庫。bolt是乙個純go語言實現的鍵值資料,支援事務,介面簡單易用。2.資料如何進行編碼?當我們選...