|
November 29, 2013, 05:53:38 PM |
|
我是个技术宅,对于btc而言,是个新人。最近从各个材料上学习了一些btc的理论,个人总结了一些东西,也想写出来给大家分享。 本文的内容,是从技术上来真正解释算力、难度的含义。
1.hash,哈希 学过数据结构的都应该知道hash,但这里也还是再说明一下。hash的含义就是用一个较短的文字/数字,来表示一个较长的文字/数字。 把较长的数字,变为较短的数字的计算过程,叫做hash算法。同时,hash算法从数学上保证了,只能从长数字变为短数字,从短数字无法反过来得到长数字。 如果两个不同的长数字,通过hash算法得到了相同的短数字,就叫冲突。
2.sha256, 是一种hash算法,到目前为止,还没有发现冲突。可以将任意长度的文字/数字,变为256个位的短数字。 当然,如果你的原始数字只有一个位,算法首先会把他变成512个位,然后再进行计算。得出的结果也是256个位。
3.block,块 每个块里,都包含了高度(也就是第几个块,目前是272166),前一个块的hash值,当前时间,所有在这段时间内发生的交易,自己这个块的hash值,以及一个随机数(nonce)。六个段。 下面来说明一下这些这些东西计算的次序。 首先将所有的交易,通过复杂的sha256,得出一个256位的结果。再加上nonce、高度、时间、前一hash,将这五个内容计算sha256。如果计算的结果满足条件,(前面有很多的0),就成功了。
4.算力 上面这些,很多地方都写了,我不过是多说明一下,而下面的内容,网络上就没看到过了,是我自己的理解。 完成上面所说的,对nonce、高度、时间、前一hash,交易hash,进行一次计算,得出一个新的hash。就是1个算力。
5.nonce nonce是一个32位的数字。对于算力的计算来说,除了nonce,其他的都是都是固定的。而32位的nonce,从0x00000000到0xffffffff,要进行4G次计算。如果4G次计算还不能满足条件呢? 那就是交易hash的变化;将同样这些交易,不过是重新排序,就可以得出不同的交易hash。 目前的算力是7P每秒,在理论上的10分钟内,总计要进行4000+P次计算。也就是有1G个不同的交易hash,每个被计算了4G次。 当然,时间的变化,也可以造成结果hash的不同。
6.难度 从概率上讲,完成了4G次计算,那么就会出现一个前面是32bit个0的hash结果(从显示上看,是8个)。而难度1,就是前面要求32bit个0。 换句话说,难度1,等同于4G次计算。是在10分钟内完成的4G次计算。也就是6.666M每秒的算力。 大家可以到难度算力图上去看看,难度与算力的坐标关系,就是6.666M。
7.算力的计算 算力是根据概率估算出来的。 如目前难度是600M,那么如果有4P每秒的算力,从概率上讲,通过10分钟的计算,会出现一个满足条件的结果。 而如果目前的平均出块时间是8分钟,那估算的算力就是5P每秒。
|