비트코인 BIP66 체인 분기

사건표준

Bitcoin BIP66 chain fork

토큰포스트 위키인용하기

다른 이름 Bitcoin BIP66 chain fork · 2015년 비트코인 체인 분기 · BIP 66 fork · BIP66 fork · BIP66 분기 · BIP66 포크 · July 2015 chain forks · SPV mining fork 2015 · SPV 채굴 사고

비트코인 BIP66 체인 분기(Bitcoin BIP66 chain fork)는 2015년 7월 4일과 5일 비트코인 네트워크에서 서명 형식 규칙 BIP66이 강제된 직후 무효 블록 위에 블록이 쌓이며 체인이 두 번 갈라진 사건이다. 규칙을 따르지 않은 작은 채굴자가 무효 블록을 캤고, 연산력의 절반가량이 블록을 검증하지 않은 채 그 위에 이어 붙이는 'SPV 채굴'을 하고 있었다. 비트코인닷오알지는 경량 지갑 이용자에게 평소보다 확인을 30회 더 기다리라고 경보를 냈고, 이 사건은 소프트 포크 활성화가 채굴자의 실제 검증 습관에 달려 있다는 점을 드러냈다.

1.OpenSSL에서 떼어 내려던 서명 규칙#

BIP66은 피터 울(Pieter Wuille)이 제안해 2015년 1월 10일 번호를 받은 규칙이다. 제안서에 따르면 당시 비트코인 코어는 서명 검증을 OpenSSL 라이브러리에 맡기고 있어, 사실상 OpenSSL이 블록 유효성 규칙을 정하는 셈이었다. OpenSSL은 버전 사이에 동작이 똑같다고 보장하지 않았고, 실제로 1.0.0p와 1.0.1k에서 DER 표준을 벗어난 서명을 받아들이는 방식이 바뀌자 일부 노드가 체인을 거부한 일이 있었다. BIP66은 유효한 서명을 DER 표준이 정한 형식으로만 한정해 합의 규칙이 OpenSSL의 해석에 기대지 않게 하려 했다. 엄격한 DER 형식은 0.8.0부터 중계 정책으로 이미 적용돼 있었고, 규칙을 어기는 거래도 거의 없었다.

[1][2]

2.95% 문턱을 넘은 날#

BIP66은 BIP34의 두 단계 전환 방식을 그대로 썼다. 직전 1,000블록 가운데 750개가 버전 3이면 버전 3 블록에 새 규칙을 적용하고, 950개를 넘으면 버전 2 블록 자체를 무효로 본다. 비트코인닷오알지 경보에 따르면 2015년 7월 4일 이른 아침 95% 문턱을 넘었고, 곧이어 업그레이드하지 않은 5%에 속한 작은 채굴자가 무효 블록을 캤다. 여기까지는 예상된 일이었다. 문제는 BIP66을 지키겠다고 신호까지 보낸 연산력 절반가량이 받은 블록을 검증하지 않고 바로 다음 블록을 캐고 있었다는 점이다. 그레고리 맥스웰은 비트코인 개발자 메일링 리스트에서 업그레이드하지 않은 BTC너겟츠(BTC Nuggets)가 무효 블록을 만들었고 F2Pool과 앤트풀이 그 위에 블록을 이어 붙였다고 설명했다. 그가 전한 바로는 이어 붙인 블록에는 거래가 하나도 담기지 않았다.

[3][4][5]

3.확인 30회를 더 기다리라는 경보#

비트코인닷오알지가 정리한 분기는 두 번이다. 첫 분기는 7월 4일 02시 10분부터 03시 50분(UTC)까지 6블록 길이로 이어졌고 이중지불은 없었다. 두 번째는 7월 5일 21시 50분부터 23시 40분까지 3블록이었다. 경보는 경량(SPV) 지갑, 비트코인 코어 0.9.4 이하, 웹 지갑 이용자에게 평소보다 확인을 30회 더 기다리라고 권했고, 0.9.5 이상을 쓰는 풀 노드는 무효 블록을 가려내므로 영향이 없다고 밝혔다. 풀 채굴자에게는 블록을 제대로 검증하는 풀로 옮기고, 혼자 채굴하는 사람에게는 0.10.2로 올리라고 했다. 경보는 무효 블록 위에서 채굴한 대형 채굴자들이 그만큼 채굴 수입을 잃었다고 적었다. 7월 15일 마지막 갱신에서도 문제가 곧 완전히 풀리지는 않을 것이라고 봤다.

[6][7]

4.남은 교훈#

메일링 리스트에서 맥스웰은 이런 실패 양상을 개발자들이 이미 알고 있었고, 그래서 문턱을 95%로 높게 잡았다고 했다. 그런데도 이번 일로 BIP66을 지키겠다고 신호를 보낸 채굴자가 실제로는 블록을 검증하지 않을 수 있다는 점이 드러났다. BIP66 문서에는 네트워크 전체가 규칙을 받아들인 뒤 저자가 엄격한 DER 서명이 자신이 앞서 발견한 다른 합의 버그를 간접적으로 막아 준다는 사실을 공개했다는 기록이 남아 있다. 비트코인의 체인 분기 사례로는 2013년 버클리DB 분기와 2018년 인플레이션 버그가 함께 거론된다.

[8][9]

5.연표3건

  1. 2015.01이정표피터 울의 BIP66(엄격한 DER 서명) 제안 번호 부여
  2. 2015.07사건7월4일 95% 문턱 직후 무효 블록 위로 6블록 분기, 비트코인닷오알지 경보
  3. 2015.07사건7월5일 3블록 길이의 두 번째 분기

각주

  1. [1]BIP 66: Strict DER signatures — github.com · bitcoin/bips (GitHub)
  2. [2]Miners Lost Over $50,000 from the Bitcoin Hardfork Last Weekend — cointelegraph.com · Cointelegraph
  3. [3]Some Miners Generating Invalid Blocks — bitcoin.org · Bitcoin.org
  4. [4]BIP 66: Strict DER signatures — github.com · bitcoin/bips (GitHub)
  5. [5][bitcoin-dev] Fork of invalid blocks due to BIP66 violations — mirror.b10c.me · bitcoin-dev 메일링 리스트
  6. [6]Some Miners Generating Invalid Blocks — bitcoin.org · Bitcoin.org
  7. [7]Miners Lost Over $50,000 from the Bitcoin Hardfork Last Weekend — cointelegraph.com · Cointelegraph
  8. [8][bitcoin-dev] Fork of invalid blocks due to BIP66 violations — mirror.b10c.me · bitcoin-dev 메일링 리스트
  9. [9]BIP 66: Strict DER signatures — github.com · bitcoin/bips (GitHub)

이 문서가 도움이 됐나요?

이 문서 인용하기
토큰포스트 위키, “비트코인 BIP66 체인 분기”, 2026-10-27 수정, https://wiki.tokenpost.kr/w/bitcoin-bip66-chain-fork-2015

문단 4개 · 연표 3건 · 각주 9개