java 區塊鏈中設計合理的難度係數

難度係數的概念

區塊鏈的難度係數:是設計區塊鏈挖礦難易的關鍵因子,難度係數越低,挖礦越容易。難度係數越高,相應越難。例如比特幣的難度係數是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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章