婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > go語言實現簡易比特幣系統錢包的原理解析

go語言實現簡易比特幣系統錢包的原理解析

熱門標簽:仙桃400電話辦理 上海極信防封電銷卡價格 地圖標注免費定制店 不封卡外呼系統 鄭州智能語音電銷機器人價格 宿遷便宜外呼系統代理商 寧波語音外呼系統公司 湛江crm外呼系統排名 重慶慶云企業400電話到哪申請

錢包基礎概念

  • 廣義上,錢包是一個應用程序,為用戶提供交互界面。錢包控制用戶訪問權限、管理比特比地址及秘鑰、跟蹤余額、創建交易和簽名交易
  • 狹義上,即從程序員角度來看,“錢包”是指用于存儲和管理用戶秘鑰的數據結構
  • 錢包是私鑰的容器,一般是通過結構化文件或簡單數據庫來實現的
  • 錢包中并不包含比特幣。比特幣是被記錄在比特幣網絡的區塊鏈中,用戶通過錢包中的密鑰簽名交易,從而控制網絡中的比特幣,在某種意義上,比特幣錢包就是密鑰鏈

錢包結構體

type Wallet struct {
	//私鑰
	Private *ecdsa.PrivateKey
	//約定,這里的PubKey不存儲原始的公鑰,而是存儲X和Y拼接的字符串,在校驗端重新拆分(參考r,s傳遞)
	PubKey []byte
}

創建錢包

func NewWallet() *Wallet {
	//創建曲線
	curve := elliptic.P256()
	//生成私鑰
	privateKey, err := ecdsa.GenerateKey(curve, rand.Reader)
	if err != nil {
		log.Panic(err)
	}

	//生成公鑰
	pubKeyOrig := privateKey.PublicKey

	//拼接X, Y
	pubKey := append(pubKeyOrig.X.Bytes(), pubKeyOrig.Y.Bytes()...)

	return Wallet{Private: privateKey, PubKey: pubKey}
}

錢包集結構體

//定一個 Wallets結構,它保存所有的wallet以及它的地址
type Wallets struct {
	//map[地址]錢包
	WalletsMap map[string]*Wallet
}

創建錢包集

func NewWallets() *Wallets {
  var ws Wallets
  ws.WalletsMap = make(map[string]*Wallet)
  //加載本地錢包,把新建的錢包保存到本地
  ws.loadFile()
  return ws
}

創建錢包到錢包集

func (ws *Wallets) CreateWallet() string {
	//創建一個錢包
	wallet := NewWallet()
	address := wallet.NewAddress()

	//添加到錢包集
	ws.WalletsMap[address] = wallet

	//保存包本地
	ws.saveToFile()
	//返回創建錢包的地址
	return address
}

保存錢包到本地

func (ws *Wallets) saveToFile() {

	var buffer bytes.Buffer

	gob.Register(elliptic.P256())

	encoder := gob.NewEncoder(buffer)
	err := encoder.Encode(ws)
	//一定要注意校驗!!!
	if err != nil {
		log.Panic(err)
	}

	ioutil.WriteFile(walletFile, buffer.Bytes(), 0600)
}

讀取錢包集里的錢包

func (ws *Wallets) loadFile() {
	//在讀取之前,要先確認文件是否在,如果不存在,直接退出
	_, err := os.Stat(walletFile)
	if os.IsNotExist(err) {
		return
	}

	//讀取內容
	content, err := ioutil.ReadFile(walletFile)
	if err != nil {
		log.Panic(err)
	}

	//解碼
	gob.Register(elliptic.P256())

	decoder := gob.NewDecoder(bytes.NewReader(content))

	var wsLocal Wallets

	err = decoder.Decode(wsLocal)
	if err != nil {
		log.Panic(err)
	}

	ws.WalletsMap = wsLocal.WalletsMap
}

列出所有錢包的地址

func (ws *Wallets) ListAllAddresses() []string {
	var addresses []string
	//遍歷錢包,將所有的key取出來返回
	for address := range ws.WalletsMap {
		addresses = append(addresses, address)
	}

	return addresses
}

生成錢包地址

  • 隨機選取32byte的數字作為私鑰
  • 使用橢圓曲線加密算法(ECDSA-secp256k1)計算私鑰對應的非壓縮公鑰
  • 計算公鑰的SHA-256哈希值
  • 取上一步結果,計算RIPEMD-160哈希值
  • 取上一步結果,前面加上版本號(比特幣主網版本號“0x00”)
  • 取上一步結果,計算SHA-256哈希值
  • 取上一步結果,計算SHA-256哈希值
  • 取上一步結果的前4個字節(8位十六進制)
  • 把這4個字節加在第五步的結果后面,作為校驗(這就是比特幣地址的十六進制形態)
  • 用base58表示法變換一下地址(這就是常見的比特幣地址形態)
//生成地址
func (w *Wallet) NewAddress() string {
	//錢包公鑰
	pubKey := w.PubKey

	//計算公鑰哈希和ripe160
	rip160HashValue := HashPubKey(pubKey)
	//主網版本號為0x00
	version := byte(00)
	//拼接version
	payload := append([]byte{version}, rip160HashValue...)

	//校驗碼checksum
	checkCode := CheckSum(payload)

	//拼接版本、哈希值、校驗碼、25字節數據
	payload = append(payload, checkCode...)

	//base58編碼
	address := base58.Encode(payload)

	return address
}

結束

源碼:https://gitee.com/xiaoshengdada/go_bitcoin/tree/master/v5

到此這篇關于go語言實現簡易比特幣系統錢包的原理解析的文章就介紹到這了,更多相關go實現比特幣錢包內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • GO語言創建錢包并遍歷錢包(wallet)的實現代碼

標簽:儋州 電子產品 物業服務 安康 海南 西雙版納 青海 遼寧

巨人網絡通訊聲明:本文標題《go語言實現簡易比特幣系統錢包的原理解析》,本文關鍵詞  語言,實現,簡易,比特,幣,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言實現簡易比特幣系統錢包的原理解析》相關的同類信息!
  • 本頁收集關于go語言實現簡易比特幣系統錢包的原理解析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品污www在线观看| 欧美色综合网站| 91搞黄在线观看| 国产欧美综合色| 成人妖精视频yjsp地址| 久久综合九色综合97婷婷女人| 午夜精品爽啪视频| 在线不卡a资源高清| 石原莉奈在线亚洲二区| 欧美不卡一区二区三区| 成人手机在线视频| 亚洲久草在线视频| 欧美日韩午夜在线| 国内精品伊人久久久久av一坑 | 捆绑紧缚一区二区三区视频| 91精品国产入口在线| 国产一区二区三区免费在线观看| 久久人人爽人人爽| 97超碰欧美中文字幕| 亚洲不卡av一区二区三区| 91精品国产色综合久久ai换脸| 激情欧美日韩一区二区| 中文字幕中文乱码欧美一区二区| 欧美主播一区二区三区美女| 久久丁香综合五月国产三级网站| 日本一区二区在线不卡| 在线视频亚洲一区| 国产在线播放一区三区四| 成人免费在线视频观看| 欧美一区二区三区四区五区| 国产精品一品二品| 亚洲成人av福利| 国产女人18水真多18精品一级做| 欧美亚洲日本一区| 国产精品亚洲视频| 日韩一区欧美二区| 国产精品入口麻豆九色| 欧美一区二区视频在线观看| 99亚偷拍自图区亚洲| 午夜久久久久久电影| 欧美一级艳片视频免费观看| 成人免费黄色在线| 婷婷综合五月天| 一区二区三区精品在线观看| 欧美一级国产精品| 色域天天综合网| 国产精品1区2区3区| 亚洲第一成人在线| 亚洲婷婷国产精品电影人久久| 欧美丰满一区二区免费视频| 成人性生交大片免费| 日韩国产一二三区| 亚洲在线一区二区三区| 久久久精品蜜桃| 制服丝袜成人动漫| 91丨九色丨黑人外教| 成人美女在线观看| 日韩综合小视频| 视频在线观看一区二区三区| 亚洲色图欧美偷拍| 综合色天天鬼久久鬼色| 久久婷婷国产综合国色天香| 欧美一区二区三区视频在线观看| 在线播放视频一区| 91福利精品第一导航| 成人高清在线视频| 国产成人高清视频| 韩日av一区二区| 久久精品二区亚洲w码| 视频一区二区不卡| 久久国产欧美日韩精品| 国模一区二区三区白浆| 精品午夜久久福利影院| 另类人妖一区二区av| 日韩精品欧美精品| 日本在线不卡视频| 日本aⅴ精品一区二区三区| 久久激情综合网| 激情图区综合网| 国产成人自拍网| av一区二区不卡| 91麻豆精品秘密| 91浏览器在线视频| 欧美日韩一区二区在线观看 | 久久99久久久欧美国产| 国精产品一区一区三区mba桃花| 经典三级在线一区| 成人一区二区三区| 色综合婷婷久久| 日韩一区二区影院| 久久亚洲一级片| 亚洲免费在线观看| 五月婷婷久久综合| 蜜桃久久久久久久| 岛国精品一区二区| 色偷偷久久一区二区三区| 欧美日韩mp4| 久久噜噜亚洲综合| 一区二区日韩电影| 黄色日韩三级电影| 99r国产精品| 精品毛片乱码1区2区3区| 国产精品国产三级国产aⅴ原创| 亚洲综合久久av| 看片网站欧美日韩| 一本大道综合伊人精品热热| 欧美日韩免费在线视频| 久久日一线二线三线suv| 亚洲卡通欧美制服中文| 国产精品一区一区三区| 欧美探花视频资源| 国产精品久久久久婷婷二区次| 亚洲国产成人porn| 国产大陆a不卡| 欧美精品第一页| 自拍偷拍欧美激情| 国产成人免费在线观看| 欧美日韩国产综合草草| 亚洲欧洲日本在线| 成人听书哪个软件好| 制服.丝袜.亚洲.中文.综合| 亚洲欧美一区二区三区久本道91| 看片的网站亚洲| 欧美一a一片一级一片| 欧美极品aⅴ影院| 捆绑变态av一区二区三区| 色婷婷av一区二区三区大白胸| 日韩欧美电影一区| 亚洲bdsm女犯bdsm网站| 91丨porny丨国产入口| 亚洲国产精品av| 久久99精品久久久| 欧美日韩在线播放一区| 国产精品久久综合| 国产盗摄精品一区二区三区在线| 欧美一区在线视频| 亚洲国产欧美日韩另类综合 | 久久综合999| 蜜臀av性久久久久蜜臀av麻豆| 色偷偷成人一区二区三区91| 国产亚洲短视频| 国产精品18久久久久久久久| 欧美性受极品xxxx喷水| 亚洲精品v日韩精品| 99视频国产精品| 亚洲人成精品久久久久久| 国产成人精品免费一区二区| 久久久久久久免费视频了| 国产一区二区伦理| 久久久精品免费观看| 99久久夜色精品国产网站| 亚洲视频一二三| 欧美二区三区91| 午夜视频一区在线观看| 亚洲视频网在线直播| 在线看不卡av| 丝袜美腿亚洲一区| 日韩欧美在线影院| 蜜乳av一区二区| 精品国产成人在线影院| 国产成人在线免费观看| 国产精品网友自拍| 91在线一区二区| 图片区小说区区亚洲影院| 亚洲精品在线免费观看视频| 国产高清视频一区| 中文字幕视频一区二区三区久| 91片黄在线观看| 亚洲一区二区精品久久av| 日韩亚洲欧美综合| 韩国毛片一区二区三区| 国产午夜精品理论片a级大结局| 风间由美中文字幕在线看视频国产欧美| 欧美国产日韩亚洲一区| 欧美喷水一区二区| 国产精品一区二区三区四区| 亚洲男人的天堂一区二区| 91精品国产免费| 懂色av中文字幕一区二区三区| 亚洲青青青在线视频| 精品久久久久一区| 91在线观看免费视频| 麻豆精品久久久| 国产精品视频yy9299一区| 777xxx欧美| 成人午夜在线免费| 三级在线观看一区二区| 国产农村妇女毛片精品久久麻豆| 欧美日韩国产一二三| 东方欧美亚洲色图在线| 久久不见久久见免费视频1| 亚洲另类在线一区| 国产欧美一区二区精品婷婷| 欧美喷潮久久久xxxxx| 不卡一区在线观看| 国内成人免费视频| 偷拍一区二区三区四区| ●精品国产综合乱码久久久久| 日韩午夜在线观看视频| 欧美顶级少妇做爰|