難度係數的概念
區塊鏈的難度係數:是設計區塊鏈挖礦難易的關鍵因子,難度係數越低,挖礦越容易。難度係數越高,相應越難。例如比特幣的難度係數是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;
}