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

- 使用
sha256算法,对区块数据加上随机数Nonce进行哈希运算,得到哈希值。 - 将哈希值与目标值进行比较,若大于则重复第
1步。 - 若小于目标值则挖矿成功,向全网广播。
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
}
构造函数,这里目标值是假设值:
- sha256得到的哈希值是256位32字节
- 所以目标值也需要是256位32字节
- 这里每2个16进制数表示1个字节,需要64个1

最低0.47元/天 解锁文章
588

被折叠的 条评论
为什么被折叠?



