所谓比特币(区块链)挖矿解决密码学难题,其实是故意说得复杂或者好听。
比特币/区块链挖矿的实质不过是,对区块链数据进行HASH (将任何长度的数据,变成一个数字),得到一个正整数。
理论上,这个HASH结果是一个整数,随机分布在0到2的32次方这么大的空间里。
如果HASH出来的整数,结果小于预先指定的数(比如1000万),而你是第一个HASH出来这个值的人。恭喜你,广播到区块链网络上,这12.5比特币就归你了。
如果HASH出来的整数不小于指定值,就把区块链数据里的一个数加1,再次HASH,即所谓“暴力穷举“。
如果有其它人先HASH出来最小值,说明这一轮HASH竞赛输了,再开始下一轮(新一个区块)。
可以看出,这个预先指定的数 ,指定了当前的挖矿(Hash)难度,越小越难。
系统只需要过1段时间(比如说1000个区块),调整一下这个值,就能够保证,固定的时间内(比如说每约10分钟)只能挖出一个区块。
图来自网上视频
什么是Hash ,维基百科上的定义:
散列函数(英語:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。
比特币/区块链挖矿的实质不过是,对区块链数据进行HASH (将任何长度的数据,变成一个数字),得到一个正整数。
理论上,这个HASH结果是一个整数,随机分布在0到2的32次方这么大的空间里。
如果HASH出来的整数,结果小于预先指定的数(比如1000万),而你是第一个HASH出来这个值的人。恭喜你,广播到区块链网络上,这12.5比特币就归你了。
如果HASH出来的整数不小于指定值,就把区块链数据里的一个数加1,再次HASH,即所谓“暴力穷举“。
如果有其它人先HASH出来最小值,说明这一轮HASH竞赛输了,再开始下一轮(新一个区块)。
可以看出,这个预先指定的数 ,指定了当前的挖矿(Hash)难度,越小越难。
系统只需要过1段时间(比如说1000个区块),调整一下这个值,就能够保证,固定的时间内(比如说每约10分钟)只能挖出一个区块。
图来自网上视频
什么是Hash ,维基百科上的定义:
散列函数(英語:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。