블록헤더 - Unix timestamp 고갈, 2038년 문제
2038년 문제
2025.12.07 - [분류 전체보기] - 비트코인 블록 헤더 구조 분석
비트코인 블록 헤더 구조 분석
비트코인은 블록체인으로 만들어져 있다는 얘기는 이제는 너무 유명하다.블록체인이란 블록을 해싱해서 체인으로 연결했기에 이와 같이 불린다.사토시가 제시한 백서에서는 공식적으로 블록
3min-bitcoin.tistory.com
비트코인 블록 헤더에는 time 값이 있다.
이는 난이도 조절을 할 때 블록이 채굴된 시간을 확인하기 위해 사용된다.
time 필드에는 현재 시간을 입력하는데, Unix timestamp 초단위 포맷으로 입력한다.
유닉스 타임스탬프는 1970년 1월 1일 00시 UTC 를 기준으로 몇 초가 지났는지를 계산해서 저장하는 방식이다.
시간이 흐를수록 숫자는 무한히 계속 커지는 시스템이다.
time 필드는 총 4바이트(32비트)로 용량이 정해져있다.
시간이 계속 흐르다보면 4바이트안에 표기할 수 없는 날이 도달한다. (이를 overflow라고 한다)
이를 2038년 문제라고 한다.
컴퓨터에서 integer는 32비트이고, 맨 앞자리는 +, - 부호를 나타내기 위해 사용하기 때문에 2^31 정도 크기의 수를 표현할 수 있고 이는 21억이다. 1970년부터 21억초를 더하면 2038년 1월쯤이 되서 이 문제를 2038년 문제라고 부른다. 비트코인은 음수가 필요 없는 시간값을 다루기 때문에 정확히 두 배인 2106년까지 버틸 수 있게 된다.
대응법?
아직 먼 미래라서 뚜렷한 대응책이 급한 상황은 아니다.
현재는 이정도 대응이 되고 있는 것으로 보인다.
- 우선 2106년이 너무 먼 미래라서 개발자들이 적극적으로 토론이나 대응을 안하고 있음. (있다면 알려주세요...)
- BitBlend라는 Softfork 할 수 있는 논문도 있음 (헤더엔 32비트로 쓰는데, 실제로는 64비트로 해석하자는 방식)
https://bitblend2106.github.io/bitcoin/BitBlend2106.pdf https://x.com/NathanLevy10/status/1778476745487691801 - 현재 채굴자들은 자발적으로 coinbase 거래에 시각을 입력하고 있음 (강제X)
만약 비트코인 time값을 64비트로 늘린다면 어마어마한 시간을 커버할 수 있지만,
이는 블록 헤더의 근본 합의를 깨는 문제가 되므로 썩 좋아보이진 않는다.
참고문헌
https://www.youtube.com/watch?v=p0Ek-x4KUnE&t=4s
https://www.reddit.com/r/Bitcoin/comments/17nwc4p/bitcoins_2106_problem_how_to_fix_when_to_fix/
Reddit의 Bitcoin 커뮤니티
Bitcoin 커뮤니티에서 이 게시물을 비롯한 다양한 콘텐츠를 살펴보세요
www.reddit.com