믹스해시


블록의 헤더에는

넌스(64비트)와 믹스다이제스트(256비트)가 담겨있다

type BlockNonce [8]byte 
type Header struct {
... MixDigest common.Hash //----------- ➊
 Nonce BlockNonce          //----------- ➋ ... }


이두개는 제네시스블록에 저장되어있다.


난이도와 타임스탬프


난이도는 타임스탬프값을 기준으로 계속 조정이이루어진다.

1.if (타임스탬프가클때)
1.난이도가 낮아짐
2.블록생성시 채택이 잘안됌

2.else if(타임스탬프가 낮을때)
1.난이도가 높아짐
2.마이닝 비용상승

두가지 이유때문에 정확한 타임스탬프를 사용해야한다.


비잔티움과 홈스테드는 각각 하드포크 유무에따라 적용되는 공식이 다르다

즉, 비잔티움 = 홈스테드의 단점을 보완하기위해 하드포크한것

최신버젼인 런던은 = 비잔티움을 하드포크한것이다 ,eip 1559 버젼(수수료 개선한 버젼)

【비잔티움 버전의 난이도 공식】 난이도 = (부모 블록의 난이도 + (부모 블록의 난이도 / 2048 * 최댓값((부모 블록의 엉클 블록이존재하면 2 아니면 1) - ((현 블록 생성 타임스탬프 - 부모 블록 생성 타임스탬프)//9), -99)) ) + 난이도 폭탄
【홈스테드 버전의 난이도 공식】 난이도 = (부모 블록의 난이도 + (부모 블록의 난이도/ 2048 * 최댓값(1 - (현 블록 생성 타임스탬프 - 부모 블록 생성 타임스탬프) // 10, -99)) ) + 난이도 폭탄 

비잔티움(2번째버젼)

엉클블록 유무에따라 난이도를 달리한다.
엉클블록이 없는 경우
(현재 블록 타임스탬프 - 부모타임스탬프)(9초~17초) 난이도 유지
엉클블록이 있을 경우
(현재 블록 타임스탬프 - 부모타임스탬프)(18초~26초) 난이도유지

이구간을 넘어가면 난이도를 줄인다
떨어지면 난이도를 높인다

홈스테드(옛날버젼)

(현재 블록 타임스탬프 - 부모타임스탬프)을 15초이내로 유지
10초보다작을경우 난이도증가
15초일때            난이도유지
20초보다 클경우   난이도감소




위에 두가지 공식의 마지막에 난이도 폭탄이라는 녀석이 있는데

난이도폭탄

실제 마이닝시간을 강제로 늘리기 위한 가짜블록수를 계산해낸다.

난이도폭탄을 넣은 이유는

1.작업증명방식의 마이닝을 줄이기위해
2.PoS(지분 증명방식)으로의 전환을 위해서이다.

블록 타임

블록이 생성되고 네트워크에 전파되는데 걸리는 시간

이더리움에서는 12초가 가장적합하다고 판단

최종 12초블록생성시간을 만드는것을 목표로하고있다.

위에서 본것처럼 난이도는 타임스탬프에따라 오르고 내리고를 반복하는데

이때 이걸 악의적으로 이용해 높은컴퓨팅파워를 갖고있는 마이너가 블록체인을
장악하는것을 막기위해 방지책을 마련해야한다는것을 추구한다는것을
볼 수있다.


이상  (믹스해시,넌스,타임스탬프)을 보고 지금까지 나온 하드포크가 추구하는방향에대해 알아보았습니다.

복사했습니다!