隨機取乙個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.資料如何進行編碼?當我們選...