BIP 16 P2SH 논쟁
사건표준BIP 16 P2SH dispute
다른 이름 BIP 16 P2SH dispute · BIP 17 · BIP16 vs BIP17 · BIP16 논쟁 · OP_CHECKHASHVERIFY · P2SH dispute · P2SH wars · P2SH 논쟁 · Pay to Script Hash activation · 스크립트 해시 지불 도입 · 첫 비트코인 개발자 전쟁
BIP 16 P2SH 논쟁(BIP 16 P2SH dispute)은 2012년 초 비트코인에 "스크립트 해시로 지불(P2SH)" 기능을 넣는 방식을 두고 개빈 안드레센의 BIP 16과 루크 대시어의 BIP 17이 맞선 일이다. 채굴자들이 블록에 지지 문자열을 넣어 의사를 밝혔고, 한 차례 적용 일정이 미뤄진 끝에 BIP 16이 2012년 4월 1일 적용됐다. 비트코인의 첫 소프트 포크 업그레이드로 꼽히며 "첫 비트코인 개발자 전쟁"으로도 불린다.
1.보내는 사람 대신 받는 사람이 조건을 낸다#
2011년까지 다중서명 같은 복잡한 조건으로 비트코인을 받으려면, 보내는 사람이 그 조건 스크립트 전체를 거래에 넣어야 했다. 지갑과 거래소가 이를 따로 지원해야 했고 주소처럼 짧게 주고받을 방법도 없었다. 안드레센이 2012년 1월 3일 번호를 받은 BIP 16은 이 책임을 받는 쪽으로 옮겼다. 보내는 사람은 스크립트의 20바이트 해시만 지정하고, 나중에 쓰는 사람이 스크립트 원문과 서명을 내면 노드가 해시를 맞춰 본 뒤 그 스크립트로 한 번 더 검증한다. 이 해시는 QR 코드에 담을 만큼 짧아 기존 주소 체계를 거의 그대로 쓸 수 있었다. 3으로 시작하는 비트코인 주소가 여기서 나왔다.
BIP 16은 같은 목적의 BIP 12(OP_EVAL)를 대신한 안이다. 스파크의 정리에 따르면 OP_EVAL은 보안 취약점이 발견돼 버려졌다.
[1][2][3]2.BIP 16 대 BIP 17#
루크 대시어는 BIP 16이 특정 형태의 출력만 골라 특별 취급하는 불균형한 설계라며 반대했고, 2012년 1월 18일 번호를 받은 BIP 17(OP_CHECKHASHVERIFY)을 내놨다. 안 쓰던 명령어 OP_NOP2를 새 명령어로 바꿔 같은 일을 하는 방식이었다. 두 안 모두 채굴자에게 블록의 코인베이스에 지지 문자열("/P2SH/" 또는 "p2sh/CHV")을 넣게 해 해시파워 과반의 지지를 재려 했다.
안드레센은 비트코인톡 포럼에서 BIP 16을 고른 이유를 설명했다. BIP 16은 P2SH 거래를 일반 거래처럼 두 번 완전히 검증하지만, BIP 17은 서명 검사를 지금과 전혀 다른 위치에서 실행하게 해 "공격 방법은 모르겠지만 매우 불안하다"는 것이었다. 지원을 나중에 철회하면 BIP 17 출력은 누구나 가져갈 수 있다는 점도 들었다. 대시어는 1월 31일 메일링 리스트에서 BIP 17에 남은 "실체 있는" 반대는 없고 안드레센은 "아무도 생각해 내지 못한 이론상의 위험"을 걱정할 뿐이라고 반박했다. 같은 스레드에서는 논쟁이 기술에서 벗어나 감정싸움이 됐다는 지적도 나왔다.
[4][5][6][7]3.한 번 미뤄진 적용#
BIP 16 원문은 2012년 2월 1일 직전 7일 동안의 블록 약 1,000개 가운데 550개(약 55%) 이상이 "/P2SH/"를 담으면 2월 15일부터 새 규칙을 적용한다는 일정을 적었다. 과반이 지지하지 않으면 미루거나 접는다는 조건도 달았다. 스파크의 정리에 따르면 3월 1일로 잡은 첫 적용 목표는 최근 1,000블록 가운데 지지가 절반에 못 미쳐 무산됐고, 다시 집계한 뒤 4월 1일로 미뤄졌다.
BIP 16은 타임스탬프 1333238400(2012년 4월 1일) 이후 블록, 블록 높이로는 17만 3,805부터 적용됐다. 이를 담은 클라이언트는 비트코인 코어의 전신인 비트코인 0.6.0이었다. BIP 17은 "종결" 상태로 남았다. P2SH는 다중서명을 실제로 쓸 수 있게 만들었고, 채굴자 신호를 세어 규칙 변경을 정하는 방식은 뒤의 세그윗 등 소프트 포크 논쟁에서도 되풀이됐다.
[8][9][10]4.연표3건
- 2012.01이정표1월 3일 BIP 16(P2SH), 1월 18일 경쟁안 BIP 17(OP_CHECKHASHVERIFY) 번호 부여, 채굴자 코인베이스 신호로 지지 집계
- 2012.03이정표3월 1일로 잡은 적용 일정이 지지 부족으로 무산, 4월 1일로 연기
- 2012.04이정표4월 1일 블록 17만 3,805부터 BIP 16 적용(비트코인 0.6.0)
각주
- [1]BIP 16: Pay to Script Hash — bips.dev · BIP 16 원문(bips.dev)
- [2]Bitcoin Soft Fork History: Every Consensus Change Explained — spark.money · 스파크
- [3]Re: [Bitcoin-development] BIP16/17 replacement — mirror.b10c.me · 비트코인 개발 메일링 리스트(루크 대시어)
- [4]BIP 17: OP_CHECKHASHVERIFY (CHV) — github.com · BIP 17 원문(깃허브)
- [5]Gavin Andresen post on BIP 16 vs BIP 17 (bitcointalk, 2012-01-21) — ic.unicamp.br · 비트코인톡(개빈 안드레센 게시물 보관본)
- [6]Gavin Andresen post on removing BIP 16/17 support (bitcointalk, 2012-01-25) — ic.unicamp.br · 비트코인톡(개빈 안드레센 게시물 보관본)
- [7]Re: [Bitcoin-development] BIP16/17 replacement — mirror.b10c.me · 비트코인 개발 메일링 리스트(루크 대시어)
- [8]BIP 16: Pay to Script Hash — bips.dev · BIP 16 원문(bips.dev)
- [9]Bitcoin Soft Fork History: Every Consensus Change Explained — spark.money · 스파크
- [10]BIP 17: OP_CHECKHASHVERIFY (CHV) — github.com · BIP 17 원문(깃허브)
이 문서가 도움이 됐나요?
토큰포스트 위키, “BIP 16 P2SH 논쟁”, 2026-11-12 수정, https://wiki.tokenpost.kr/w/bitcoin-p2sh-bip16-dispute-2012Accept: text/markdown 로 요청해도 같은 결과문단 3개 · 연표 3건 · 각주 10개