go 创建自己的区块
Posted dqh123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 创建自己的区块相关的知识,希望对你有一定的参考价值。
package main
import (
"time"
"crypto/sha256"
"bytes"
)
//区块体
type Block struct {
//版本信息
Version int64
//前区块链的hash值
PrevBlockHash []byte
//当前区块的hash
Hash []byte
//梅卡尔根
MerkelRoot []byte
//时间戳
TimeStamp int64
//难度值
Bits int64
//随机数
Nonce int64
//交易信息
Data []byte
}
func (block Block) setHash() {
tep := [][]byte{
IntToByte(block.Version),
block.PrevBlockHash,
block.MerkelRoot,
IntToByte(block.TimeStamp),
IntToByte(block.Bits),
IntToByte(block.Nonce),
block.Data,
}
data := bytes.Join(tep,[]byte{})
hash := sha256.Sum256(data)
block.Hash = hash[:]
}
func NewBlock(data string,prevBlockHash []byte) *Block {
var block Block
block = Block{
Version:1,
PrevBlockHash:prevBlockHash,
MerkelRoot:[]byte{},
TimeStamp:time.Now().Unix(),
Bits : 1,
Nonce:1,
Data:[]byte(data),
}
block.setHash()
return &block
}
//传世区块
func NewGenesisBlock() *Block{
return NewBlock("Genesis Block!",[]byte{})
}
以上是关于go 创建自己的区块的主要内容,如果未能解决你的问题,请参考以下文章