难度系数的概念
区块链的难度系数:是设计区块链挖矿难易的关键因子,难度系数越低,挖矿越容易。难度系数越高,相应越难。例如比特币的难度系数是18。
难度系数一般是hash值的前置0的个数。
java 区块链中设计合理的难度系数
例如难度系数定为6,也就是区块的有效hash,必须前面有6个0
例如难度系数为6的有效hash为:00000048bfdc5e67aa448686438f1350a6cc7f4477feb5562b0368a808fdef57
具体代码实现也很简单:
/**
*
* 类名:BlockService.java
* 描述:区块服务
* 时间:2018年3月12日 下午7:05:06
*
* @author cn.wenwuyi
* @version 1.0
* @param hash 区块hash
* @return boolean
*/
private boolean isValidHashDifficulty(String hash) {
//定义难度系数
int dificutty = 6;
//定义标志符0(当然也可以定义其他,一般是0)
char zero = ‘0‘;
int i;
for (i = 0; i < hash.length(); i++) {
//获得hash字符串的i位置的字符
char ichar = hash.charAt(i);
//如果i处的值不为0则跳出
if (ichar != zero) {
break;
}
}
//判断i是否大于等于难度系数,返回即可
return i >= dificutty;
}
原文地址:http://blog.51cto.com/4577390/2108237
时间: 2024-11-09 12:07:54