打印
分类:极客论道
点击数:8546

比特币原理研究之nbit

nbit是难度的具体值。

比特币的难度设定原理是,block hash算出来前面要有足够多个0.由于hash是纯随机的,所以连续n个0,就相当于扔硬币连续仍出n个正面。这是简单概率游戏。

如果把hash当成一个二进制数字,那么难度越高,就相当于这个数字越小。

即,hash值小于难度值,bingo!block通过,收新矿。

难度值的表示只有4个字节,其实就是256进制的科学计数法。

第一个字节是数字长度,后面三个字节是这个数字的前三个字节。

例如03111111,代表的数字就是111111;04111111,代表的数字就是11111100;05111111代表的数字就是1111110000

如果第一位大于0x80,那么要在前面加一个00。这样就多了一个字节。所以ffffff,就转换成0400ffff,解析之后是ffff00.最后一位的数字丢失,因为是科学计数法的省略。

回到难度值。初始难度值是1d00ffff,即前面有4个字节都是0,大约需要2^32个hash才能有一个满足要求。

随着难度的增加,nbit位数会越来越小,也即对应前面的0越来越多。