码迷,mamicode.com
首页 > 其他好文 > 详细

go 创建自己的区块

时间:2019-12-21 00:31:29      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:RKE   block   nes   style   版本   string   lock   version   byte   

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 创建自己的区块

标签:RKE   block   nes   style   版本   string   lock   version   byte   

原文地址:https://www.cnblogs.com/dqh123/p/12075421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!