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