区块链的难度系数:是设计区块链挖矿难易的关键因子,难度系数越低,挖矿越容易。难度系数越高,相应越难。例如比特币的难度系数是18。
难度系数通常是hash值的前置0的个数。java
例如难度系数定为6,也就是区块的有效hash,必须前面有6个0ide
例如难度系数为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; }