日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

区块链简单实现

發布時間:2024/7/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 区块链简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

提示:以下是本篇文章正文內容,下面案例可供參考

一、區塊鏈簡單實現

package Blockimport ("crypto/sha256""encoding/hex""fmt""strconv""strings""time" )type Block struct{PreHash stringHashCode stringTimeStamp stringDiff intData stringIndex intNonce int } func GenerateFirstBlock(data string) Block {var firstblock Blockfirstblock.PreHash = "0"firstblock.TimeStamp = time.Now().String()firstblock.Diff = 4firstblock.Data = datafirstblock.Index = 1firstblock.Nonce = 0firstblock.HashCode = GenerationHashValue(firstblock)return firstblock }func GenerationHashValue(block Block) string{var hashdata = strconv.Itoa(block.Nonce)+strconv.Itoa(block.Diff)+strconv.Itoa(block.Index)+block.TimeStampvar sha = sha256.New()sha.Write([]byte(hashdata))hashed := sha.Sum(nil)return hex.EncodeToString(hashed) }func GenerationNextBlock(data string,oldBlock Block) Block {var newBlock BlocknewBlock.TimeStamp = time.Now().String()newBlock.Diff = 4newBlock.Index = 2newBlock.Data = datanewBlock.PreHash = oldBlock.HashCodenewBlock.Nonce = 0newBlock.HashCode = pow(newBlock.Diff,&newBlock)return newBlock }func pow(diff int,block *Block) string{for{hash := GenerationHashValue(*block)fmt.Println(hash)if strings.HasPrefix(hash, strings.Repeat("0", diff)){//挖礦成功fmt.Println("挖礦成功")return hash} else {//沒挖到//隨機值自增block.Nonce++}} } package Blockchainimport ("demo2/Block""fmt" )type Node struct {NextNode *NodeData *Block.Block }func CreateHeaderNode(data *Block.Block) *Node {var headerNode = new(Node)headerNode.NextNode = nilheaderNode.Data=datareturn headerNode} func AddNode(data *Block.Block,node *Node) *Node{var newNode = new(Node)newNode.NextNode=nilnewNode.Data=datanode.NextNode = newNodereturn newNode }func ShowNodes(node *Node){n := nodefor{if n.NextNode == nil{fmt.Println(n.Data)break}else{fmt.Println(n.Data)n = n.NextNode}} }

總結

以上是生活随笔為你收集整理的区块链简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。