// block.go
package main
import "time"
import "crypto/sha256"
import "bytes"
type Block struct {
Version int64 //版本信息
PrevBlockHash []byte //前一个区块的hash值
Hash []byte //本区块的hash值,为了方便而做了一些简化,正常比特币区块不包含自己的hash值
TimeStamp int64 //时间戳,用于标记产生的时间
TargetBits int64 //难度值
Nonce int64 //随机值
MerKelRoot []byte //默克尔根
Data []byte //区块体,简化,正常来说是一个交易
//正常分区块头和区块体,这里方便编写,所以写在了一起
}
func NewBlock(data string, prevBlockHash []byte) *Block { //创建交易信息
//data 是交易,prev是前一个区块的hash值
block := &Block{ //初始化区块各个字段的数据
Version: 1,
PrevBlockHash: prevBlockHash,
//Hash:
TimeStamp: time.Now().Unix(), //时间戳
TargetBits: 10, //没有涉及pow证明,后期选个合理的
Nonce: 5, //工作量证明的,此处演示
MerKelRoot: []byte{}, //根据交易计算出的
Data: []byte(data)}
//现有的内容做一个hash运算
block.SetHash() /
BlockChain (V1)
最新推荐文章于 2024-04-30 18:22:50 发布
本文介绍了区块链的基本概念,包括分布式账本、加密算法以及工作量证明等核心机制。通过学习,读者将理解区块链如何实现去中心化、安全性以及不可篡改的特性,并探讨其在金融、物联网等领域的应用前景。
摘要由CSDN通过智能技术生成