工作量证明

工作量证明

工作量证明计算复杂耗时,但验证简单快速。

工作量证明计算过程

在这里插入图片描述

  1. 使用sha256算法,对区块数据加上随机数Nonce进行哈希运算,得到哈希值。
  2. 将哈希值与目标值进行比较,若大于则重复第1步。
  3. 若小于目标值则挖矿成功,向全网广播。

go工作量证明demo

区块结构
type Block struct {
	//版本号
	Version uint64
	// 前区块哈希
	PrevHash []byte
	//交易的根哈希值
	MerkleRoot []byte
	//时间戳
	TimeStamp uint64
	//难度值, 系统提供一个数据,用于计算出一个哈希值
	Bits uint64
	//随机数,挖矿要求的数值
	Nonce uint64
	// 哈希, 为了方便,我们将当前区块的哈希放入Block中
	Hash []byte
	//数据
	Data []byte
}
工作量证明(挖矿)
type ProofOfWork struct {
	//区块
	block *Block
	//目标值:target,与生成哈希值比较
	target *big.Int
}

构造函数,这里目标值是假设值:

  1. sha256得到的哈希值是256位32字节
  2. 所以目标值也需要是256位32字节
  3. 这里每2个16进制数表示1个字节,需要64个1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值