工作量证明及哈希算法

什么是工作量证明:
1、工作的结果作为数据加入区块链成为一个区块
2、完成这个工作的人会获得奖励(这也就是通过挖矿获得比特币)
3、整个“努力工作并进行证明”的机制,就叫工作量证明

为什么采用哈希算法:
1、不可逆:无法从一个哈希值恢复原始数据,哈希并不是加密
2、唯一性:对于特定的数据,只能有一个哈希值,并且这个哈希值是唯一的
3、防篡改:改变输入数据中的一个字节,导致输出一个完全不同的哈希

哈希算法特征:
1、正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值
2、逆向困难:给定hash值,在有限时间内很难逆推出明文
3、输入敏感:原始输入信息修改一点信息,产生的hash值会有很大的不同
4、冲突避免:很难找到两段内容不同的明文,使得他们的hash值一致(发生冲突)

main.go

 block.go

 proofofwork.go

 utils.go

 打印结果:

Mining the block containing "Genesis Block"
00000965faabec60c056cc30d9e6e45a0db7cfa84cb5897d8d5bdaa96971bd5f

Mining the block containing "Send 1 BC to Ivan"
000006910ca6331d7c640787defe1189fb158bc3d624949bc61b68a3f0031efc

Mining the block containing "Send more BC to Ivan"
00000a9e4f7f891bf6dd7323a1a5b698d5ba88c9363c8f5c9676fd075d526796

Prev hash:
Data: Genesis Block
Hash: 00000965faabec60c056cc30d9e6e45a0db7cfa84cb5897d8d5bdaa96971bd5f
Pow: true

Prev hash: 00000965faabec60c056cc30d9e6e45a0db7cfa84cb5897d8d5bdaa96971bd5f
Data: Send 1 BC to Ivan
Hash: 000006910ca6331d7c640787defe1189fb158bc3d624949bc61b68a3f0031efc
Pow: true

Prev hash: 000006910ca6331d7c640787defe1189fb158bc3d624949bc61b68a3f0031efc
Data: Send more BC to Ivan
Hash: 00000a9e4f7f891bf6dd7323a1a5b698d5ba88c9363c8f5c9676fd075d526796
Pow: true

posted @   coder劲  阅读(1433)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示