<목차>
1. Chain의 Block 난이도 설정
1. Chain의 Block 난이도 설정
Block은 일정수준의 dibfficulty 난이도를 풀어야 체굴이 됩니다 블록체인의 난이도는 새로운 블록을 채굴(혹은 생성)하기 위해 풀어야 하는 암호학적 퍼즐의 난이도를 정의합니다. 이 퍼즐을 풀려면 충분한 계산 능력이 필요하며, 이 과정을 통해 블록체인 네트워크는 탈중앙화된 방식으로 새로운 거래를 검증하고 블록을 추가할 수 있습니다. 난이도가 높을수록 퍼즐을 푸는 데 더 많은 계산이 필요하게 됩니다.
목표 시간: 비트코인의 경우, 블록 생성 시간 목표는 10분입니다.
실제 시간: 2016개의 블록이 생성된 실제 시간을 측정합니다.
조정 비율: 실제 시간과 목표 시간의 차이를 기반으로 난이도를 조정합니다. 예를 들어, 2016개의 블록이 목표 시간보다 빨리 생성되었다면 난이도를 증가시키고, 느리게 생성되었다면 난이도를 낮춥니다.
난이도 조정의 필요성
블록체인의 네트워크는 시간에 따라 참여하는 채굴자의 수와 컴퓨터의 성능이 달라집니다. 예를 들어, 채굴자가 많거나 채굴 장비가 더 강력할 경우, 새로운 블록을 빠르게 생성할 수 있습니다. 이로 인해 블록 생성 속도가 너무 빨라지면 네트워크의 안정성에 문제가 발생할 수 있습니다. 반대로 채굴자가 적거나 장비 성능이 낮으면 블록 생성 속도가 너무 느려지게 되어 거래가 지연될 수 있기에 블록체인은 일정한 간격으로 블록 생성 시간을 조절하는 난이도 조정 메커니즘을 도입하여 네트워크의 안정성을 유지합니다. 이 조정 메커니즘을 통해 블록체인 네트워크는 블록 생성 속도를 일정하게 유지하며, 네트워크의 과도한 변화나 성능 저하를 방지할 수 있습니다.
난이도 조정 방식
가장 대표적인 난이도 조정 방식은 비트코인의 난이도 조정 알고리즘입니다. 비트코인 네트워크는 2016개의 블록을 기준으로 난이도를 조정합니다. 이를 ‘난이도 조정 주기’라고 하며, 평균적으로 약 2주에 한 번씩 블록 생성 시간을 10분에 맞추기 위해 난이도를 조정합니다. 즉, 2016개의 블록이 평균적으로 2주를 초과하여 생성되면 난이도를 올리고, 2주보다 빨리 생성되면 난이도를 내리는 방식이고. 이 방식은 블록체인 네트워크에서 채굴의 속도 변동에 맞추어 난이도를 조절함으로써, 블록 생성 시간이 일정하게 유지되도록 합니다. 비트코인의 경우, 블록 생성 속도가 일정하므로 네트워크에서 발생하는 각종 거래가 예측 가능한 시간 내에 처리될 수 있습니다.
코드에서의 구현 흐름
실제의 블록체인의 난이도조절 X.
체인은 블록의 갯수를 판단하고 난이도를 조정할지 말지를 결정합니다 예시의 코드로는 10개 이상 의 블록 갯수를 판단합니다
chain
체인에서는 블록의 갯수를 판단하고 난이도조절
블록의 난이도는 블록이 생성될때 결정이 되기때문에 체인에서 받은 블록의 갯수를 기반으로
블럭에서 진짜 난이도가 조정이 됩니다.
block
블록에서는 실제로 getDifficulty 로 난이도 계산을 수행합니다.