참고 : CDY 캔디 고래 채굴자와 결전
https://steemit.com/cdy/@bluejaytodd/5rimfr-cdy
5월15일 하드포크로 캔디가 비트코인캐시 포크 내용을 따라갑니다. 그리고 추가로 현재 채굴횡포를 막기 위한 난이도 함수 수정작업하였습니다.(최근 수정본(5월13일->5월15일등..)을 다시 반영하였습니다)
if(i >= height-10)
{
sum_last10_time += solvetime;
sum_last10_target += target;
}
에서 최근 10개 블럭의 난이도를 따로 계산합니다.
if(height>nNewRuleHeight && sum_last10_time <= 5*60)
{
arith_uint256 avg_last10_target;
avg_last10_target = sum_last10_target/10;
if(next_target > avg_last10_target/2) next_target = avg_last10_target/2;
}
else if(height>nNewRuleHeight && sum_last10_time <= 10*60)
{
arith_uint256 avg_last10_target;
avg_last10_target = sum_last10_target/10;
if(next_target > avg_last10_target*2/3) next_target = avg_last10_target*2/3;
}
최근 블럭 10개가 5분내에 발견되면 난이도를 대략적으로 최근 10개기준의 2배로 올려버립니다. 그리고 10개가 10분내에 발견되면 최근 10개기준난이도의 1.5배로 올립니다.
if(height>nNewRuleHeight)
{
arith_uint256 last_target;
last_target.SetCompact(pindexPrev->nBits);
if(next_target> last_target*13/10) next_target = last_target*13/10;
/*in case difficulty drops too soon compared to the last block, especially
*when the effect of the last rule wears off in the new block
*DAA will switch to normal LWMA and cause dramatically diff drops*/
}
다음 난이도가 이전 난이도 보다 30% 이상 하락하지 않게 합니다. (정확히 target값이 30%이상 높아지게 하지 않습니다)
이런 예외적인 상황이 아니면 선형가중치 평균(LWMA)을 적용합니다.
이 정도면 고래채굴자의 횡포는 충분히 커버 가능한 상황입니다. 매우 현명한 방법을 적용했습니다. 캔디 블록생성이 정상화 될것을 기대합니다. 최근 캔디가 급락에서 벗어나 급등한 원인중 하나입니다.