BIP9
BIP9(Bitcoin Improvement Proposals 9)은 여러 BIP제안들이 비트코인 네트워크 안에서 얼마나 지지를 받는지 확인하고, 네트워크의 안정성을 유지하면서도 동시에 어떻게 시스템에 적용할지 같은 절차적인 방법을 정의한 제안이다.[1]
개요
BIP9은 일종의 메타 BIP이다. 블록체인의 블록 구조를 살펴보면서 블록 헤더 정보의 버전 요소가 있다. 채굴자들은 자신들이 발행하는 블록에 포함되는 32비트 버전 정보에 특정 BIP를 적용하기 위한 준비가 완료되었는지를 표시한다. 이를 시그널링이라한다. 비트코인 네트워크는 모든 것이 공개되기 때문에 누가 얼마나 준비가 되었는지 블록이 네트워크에 전파되는 즉시 확인 할 수 있다. 이런 방식은 비트코인 생태계가 어떤 BIP에 대해 전체 참여자들의 충분한 동의가 있음을 확인하고 적용하게끔 만든다. 채굴자들이 특정 비트를 1로 세팅하면 ‘우린 그 BIP를 사용할 준비가 되었고 적용에 동의한다’는 의사표현이다. 이에 따라 각 BIP안에 제안된 시작시간으로부터 1년 동안 2,016블록(10분에 1블록씩 채굴되므로 14일)단위로 구성된 난이도적용 기간동안 ‘95% 이상’의 블록이 동의를 하면 해당 BIP는 락인된다. 일단 락인이 되면 활성화가 될 준비가 완료된 것이며 충분한 지지를 얻은 것을 의미한다.[1]
등장배경
BIP34는 미리 정의된 플래그 타임스탬프 없이 소프트포크 변경을 수행하는 메커니즘을 도입했다. 대신에 블록 헤더에서 더 높은 버전 번호로 표시된 채굴자 지지대를 측정하는 데 의존했다. 그러나 버전 번호를 정수로 비교하는 것에 의존하고 있기 때문에 제안들 간의 조정이 필요하며, 영구적인 거부를 허용하지 않고 하나의 소프트포크가 완전히 롤아웃되지 않는 한, 미래의 누구도 스케줄링할 수 없다. 또한 BIP34는 정수 비교를 95% 임계값에 도달한 후 합의 규칙으로 하여 유효한 버전 번호 집합에서 231+2 값을 제거하였다. 이는 이 접근방식의 또 다른 단점을 나타낸다. 모든 업그레이드는 허용된 nVersion 필드 값의 집합을 영구적으로 제한한다. 이 접근법은 나중에 BIP66과 BIP65에서 재사용되었고, 유효한 옵션으로 nVersion 2와 3을 추가로 제거했다. 이러한 BIP34의 단점때문에 BIP9이 등장하게 된다.
평가와 전망
BIP9이 활성화되면, 비트는 더 이상 설정될 필요가 없고, 향후 활성화에 다시 사용될 수 있다. 이를 통해 최대 29개의 소프트포크를 병렬로 배치하고 독립적으로 작동할 수 있다. 하지만 BIP9은 해시파워 신호에 여전히 의존하고 있다. BIP9이 해시파워 신호에 의존하는 이유는 소프트포크가 모든 노드를 한 번에 업데이트할 필요는 없지만, 채굴자들이 새로운 규칙을 적용하도록 업데이트해야 새로운 규칙을 시행할 수 있기 때문이다. 채굴자 신호는 채굴자 신호의 원활한 조정을 위해 허용된다. 채굴자 다수가 새로운 규칙을 시행하고 있는 한, 어떤 체인 분할의 위험도 사실상 배제할 수 있다. 95%는 단지 안전한 편에 서도록 선택되었다. 그것은 결코 표결을 의도한 것이 아니었다. 소프트포크는 배치 전에 논의되고 조사되어야만 필요한 생태계 지원을 받을 수 있다는 생각이다. BIP9는 네트워크에 대한 중단을 가능한 한 피하면서, 전환 조정 문제에 대한 해결책에 불과했다. 그럼에도 불구하고, BIP66의 활성화는 완전히 순조롭게 진행되지 않았다. 왜냐하면 채굴자들이 신호를 보내고 있음에도 불구하고, 많은 사람들이 실제로 새로운 규칙을 시행하지 않았기 때문이다. 이로 인해 일부 채굴자들이 BIP66을 시행한 노드에 의해 거부된 체인을 맨 위에 건설하게 되었다. 이 블록들은 나중에 네트워크로부터 거부당했고 이 체인 꼭대기에서 채굴한 채굴자들은 보상을 잃었다. 이것은 타당성 없는 채굴로 알려져 있다. BIP9는 상대적인 타임록이 가능하도록 CheckKSEQUENCEVERIFY opcode를 추가한 BIP68, BIP112, BIP113 소프트포크 번들을 활성화하기 위해 처음 사용되었다. 이 배치와 활성화는 순조롭게 진행되었다. 그리고 나서 BIP9, BIP141을 사용하여 작동하도록 되어 있던 두 번째 연성 포크가 나타났다. 사용자와 산업에 엄청난 양의 홍보 활동을 했음에도 불구하고, 이 특별한 소프트포크는 배치 전에 공개적으로 논의되고 인정되지 않은 이해의 차이뿐만 아니라 오해로 인해 매우 정치화됬다. 구체적으로는, 가장 큰 채굴 풀 운영자들로부터, 그것에 대해 신호를 보내겠다는 말을 들었음에도 불구하고, 실제로 그것이 공개되었을 때, 상당한 양의 해시파워가 그것을 거부했다. 몇몇 채굴 풀은 합의된 계층에서 양립할 수 없는 다른 버전의 비트코인 소프트웨어를 실행하고 변화하는 수요를 만들겠다는 위협을 사용하기 시작했는데 대부분의 개발자들은 혼란스러워 했다. 채굴자와 사용자들 사이에 이해의 차이가 있을 때 소프트포크의 채굴자 활성화는 의존할 수 없다는 것이 명백해졌다. 공동 사례에서 올바르게 수행되면 원활하게 작동하는 것으로 알려진 시험된 메커니즘이다. 그러나, 상대적 경우 그것은 단지 효과가 없다. BIP9는 사용자와 업계 사이에 아무리 널리 보급되어도 소프트포크의 활성화에 대해 사실상 적은 양의 해시파워 거부권을 부여한다. 95%는 투표가 아니라 안전 문턱이라는 뜻이다. 95%는 고아율과 몇 블록 이상 지속되는 일시적인 체인 분할 가능성을 급격히 감소시키는 경향이 있지만, 60%에 달하는 낮은 것 조차도 영구적인 체인 분할을 보장하기에 충분하다. 그리고 채굴자 활성화의 출현 이전에 비트코인은 기표 날짜와 블록 높이 활성화에 의존했으며, 이는 채굴자들이 따라갈 인센티브로 소프트웨어를 업데이트하는 경제적으로 중요한 노드에 의존한다. 이러한 유형의 메커니즘은 UASF(User Activated Soft Fork)라는 이름으로 지정되었다. 따라서 이를 고려할 때 이러한 적대적 시나리오를 적절히 해결하기 위해 향후 배치에는 MASF와 UASF의 조합이 필요할 것으로 보인다. 즉 BIP9가 다시 사용될 것 같지는 않다.
각주
- ↑ 1.0 1.1 Lee JungMin, 〈비트코인과 스케일링 논쟁〉, 《leejungmin》, 2017-07-29
참고자료
- GitHub 공식홈페이지 - https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
- Lee JungMin, 〈비트코인과 스케일링 논쟁〉, 《leejungmin》, 2017-07-29
- Eric Lombrozo, 〈Forks,Signaling, and Activation〉, 《Medium》, 2017-07-18