比特币原理研究之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越来越多。