链客教你学习pow(2)

在这里插入图片描述
从图上可知,比特币区块结构分为区块头和区块体,区块体保存交易的具体信息,由它生成的hash保存在区块头里。其中区块头细分为:
父区块头哈希值:前一区块的哈希值,使用SHA256(SHA256(父区块头))计算。

版本(Version):区块版本号,表示本区块遵守的验证规则 。

时间戳(Timestamp):该区块产生的近似时间,精确到秒的UNIX时间戳,必须严格大于前11个区块时间的中值,同时全节点也会拒绝那些超出自己2个小时时间戳的区块。

目标值(Bits):该区块工作量证明算法的难度目标,已经使用特定算法编码。

随机数(Nonce):为了找到满足难度目标所设定的随机数,为了解决32位随机数在算力飞升的情况下不够用的问题,规定时间戳和coinbase交易信息均可更改,以此扩展nonce的位数。

Merkle根(MerkleRoot):该区块中交易的Merkle树根的哈希值。矿工收到计算过的区块,会跟自己的区块进行比较,其中Merkle root就是比较它们包含的交易是否一样。

区块头里的所有信息拼接成一个新的字节数组,pow函数运算的参数就是这个字节数组。函数运算是采用SHA256(SHA256())计算。

   var genesisBlock = wire.MsgBlock{
Header: wire.BlockHeader{
    Version:    1,
    PrevBlock:  chainhash.Hash{},         // 0000000000000000000000000000000000000000000000000000000000000000
    MerkleRoot: genesisMerkleRoot,        // 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
    Timestamp:  time.Unix(0x495fab29, 0), // 2009-01-03 18:15:05 +0000 UTC
    Bits:       0x1d00ffff,               // 486604799 
    Nonce:      0x7c2bac1d,               // 2083236893
},
Transactions: []*wire.MsgTx{&genesisCoinbaseTx},

}
1
2
3
4
5
6
7
8
9
10
11
更多内容请进入www店liankexing店com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值