비트코인 블록 다이어그램: 공개 에이식부스트 (Overt AsicBoost) vs 비공개 에이식부스트 (Covert AsicBoost)

요약: 이 보고서에서 저희는 머클 트리 (Merkle trees)를 포함한 비트코인 블록의 다이어그램을 통해
세그윗 (Segregated Witness upgrade, SegWit upgrade)와 관련된 블록 내의 추가적인 머클 트리의 중요성에 대해 설명할 것입니다. 그리고 같은 주제를 다룬 저희의 2017년 보고서에 이어, 공개 그리고 비공개 에이식부스트 (AsicBoost)의 몇 가지 잠재적인 부정적 측면들을 살펴보겠습니다. 최근 BDPL (Blockchain Defensive Patent License, 블록체인 전용 방어적 특허 수집) 특허권자의 발표 이후 저희는 새로운 블록체인 전용 방어적 특허 수집 (BDPL) 스키마가 강력하고 탄탄한 것이라면 네트워크 상에서 공개 에이식부스트 사용의 몇 가지 단점을 야기시킬 수 있다고 결론지었습니다. 반면, 비공개 에이식부스트가 공개 에이식부스트에 비해 효율적이지 못하다는 점에 대해서는 아직 논쟁의 여지가 있을 수 있다고 결론내렸습니다.

 

이 다이어그램은 비트코인 블록의 구조와 블록내의 머클 트리를 단순화시킨 것입니다. 더 자세하게 묘사된 다이어그램은 Jeremy RubinTimo Hanke는 더 자세하게 묘사된 다이어그램을 제작하였습니다. (출처: BitMEX Research) 

다이어그램의 구성요소

블록 헤더 (Block header)

비트코인 블록 헤더 (회색으로 표시)는 약 80 바이트이며, 버전 (version), 이전 블록 해시 (the hash of the previous block), 머클 루트 (Merkle root), 타임스탬프, 비트 (bits / 난이도) 그리고 넌스 (nonce)를 포함하고  있습니다.

블록 헤더 후보 (Block header candidate)

넌스를 제외한 위의 모든 항목들이 포함되어 있습니다.

청크 (Chunks)

이 다이어그램은 머클 루트가 비트코인 SHA256의 작업 증명 기능 (proof-of-work)을 필요로하는 두 개의 청크로 분리되어 있다는 것을 보여줍니다. 이에 대한 설명은 저희가 이전에 게재한 보고서에서 확인하실 수 있습니다.

세컨드 머클 트리 (Second Merkle tree)

세그윗 업그레이드를 통해 위트니스 데이터 (witness data)와 코인베이스 거래 (coinbase transaction)를 제외한 메인 머클 트리 (main Merkle tree)와 동일한 구조의 새로운 머클 트리 (new Merkle tree)가 도입되었습니다. 각 거래의 상대적 포지션은 메인 머클 트리의 상대적 포지션과 동일해야만 합니다.

세컨드 머클 트리의 필요성

세컨드 머클 트리는 단점으로 간주될 수도 있는 구조의 복잡성 (complexity)를 증가시킵니다. 비트코인 네트워크로 업그레이드 된 세그윗은 시그해시 (sighash) 작업의 2차적 확장 및 거래의 가변성과 같은
버그를 수정했습니다. 메인 머클 트리에 위트니스 데이터를 추가하는 일은 불가능 합니다. 올드 노드 (old nodes)가 이러한 거래를 하드포크 가능성이 있는 유효하지 않은 거래 (invalid transaciton)로
간주하기 때문입니다.

그러나 세그윗의 소프트포크 업그레이드가 아닌 하드포크 업그레이드를 통해 추가적인 머클 트리의 생성을 막을 수 있다는 것은 사실이 아닙니다. 메인 머클 트리에 포함되어 있는 위트니스 데이터의 결과로
실행된 하드포크는 기존 지갑들이 새로운 거래 포맷을 유효하지 않은 것으로 판단하게 할 가능성이 있습니다. 또한 이 지갑들은 노드가 완전 검증 노드인지, 아닌지 그 여부에 관계없이 새로운 거래 포맷과 호환되지 않습니다. 이는 몇몇 거래자들 간의 상호작용을 불가능하게 한다거나 자금이 사라져 버리는 것에
영향을 줄 수 있습니다. 위와 같은 종류의 업그레이드는 심각한 시스템 작동 중지가 일어나지 않는 비트코인 같은 실시간 네트워크 내에서는 불가능 할 수도 있습니다. 따라서 세그윗 업그레이드가 하드포크였다 할지라도 부가적인 세컨드 머클 트리의 복잡성은 필수적이라고 할 수 있습니다.

에이식부스트 (AsicBoost)

에이식부스트에 관한 저희의 지난 보고서에서 설명드렸듯, 비공개 에이식부스트는 머클 루트의 마지막
4 바이트로의 헤더값 충돌 (collision)의 발견을 수반합니다. 또한 비공개 에이식부스트는 해싱 알고리즘이 머클 루트를 두 개의 청크로 분할한다는 점을 활용합니다. 비공개 에이식부스트는 다수의 거래와 복잡하게 연관되어 있지만, 공개 에이식부스트에는 이를 방지하는 기능이 있습니다. 만약 블록의 크기가 감지되지 않을 정도로 매우 작지 않을 경우, 세컨드 머클 트리는 비공개 에이식부스트의 실행을 어렵게 만들 수 있습니다.

에이식부스트의 잠재적인 단점 및 문제점

비공개 에이식부스트
(Covert AsicBoost)
공개 에이식부스트
(Overt AsicBoost)

특허권 보호

에이식부스트의 잠재적인 문제점은 비공개와 공개 에이식부스트 모두에게 적용됩니다. 에이식부스트는 특허받은 기술이며, 특허권
관한 저희 보고서에서 설명드렸듯, 특허권은 블록체인 산업에
피해를 줄 수 있습니다. 이는 에이식부스트의 주된 문제점 중 하나입니다. 그 이유는 특허권 독점이 하나의 기업에게 경쟁 시 다른 회사가 넘어설 수 없을 정도의 우위를 점할 수 있는 이득을 줄 수 있고,
그 결과 법적 규제로 인해 기업 간의 차이가 좁혀지지 않을 수 있기
때문입니다. 이는 비트코인 코어 (Bitcoin core)의 가치 평가를 하락시킬 수 있습니다. 비트코인 커뮤니티는 특허권 문제가 심각해질
경우, 에이식부스트를 중단하기 위한 소프트포크를 실행할 수도
있습니다.

이 문제의 해결을 위해 특허권자는 특허권을 모두에게 개방할 수
있습니다 – 예를 들어, 방어적 특허권의 보증을 통해서 말이죠. 최근 특허권자들은 이러한 움직임을 보이고 있으며, 그들의 보증과 약속이 사실로 입증될 경우, 특허권 보호의 문제점은 해결될 것입니다.
적어도 특허권이 적용되는 지역에서는 말이죠.

더 작은 블록 사이즈와
더 적은 거래 처리 용량

비공개 에이식부스트는
비공개 에이식부스트의
실행을 더 효율적으로
만드는 작은 사이즈의 블록 혹은 빈 블록을 생성할 수
있습니다. 비공개 에이식부스트는 거래 수수료를 증가시키고 네트워크의 거래
처리 용량을 감소시킬 수
있습니다.

작은 사이즈의 블록 혹은
빈 블록은 거래 처리 용량에 부정적인 영향을 줍니다.
그 이유는 이들이 네트워크 상의 문제점으로 여전히
남아있고, 거래 지연 현상에 대해 긍정적인 영향을 전혀 주지 않기 때문입니다.

해당 사항 없음

세그윗으로의 업그레이드를 꺼려하며, 그에 대한 이유가 사실이 아닌 경우

에이식부스트의 가장 치명적인 단점은 일부 마이너들이 세그윗으로의 업그레이드를 꺼려하게 만들 수 있다는 점입니다. 이것 자체로는 아주 부정적이지 않을 수 있지만, 사실과 다른 그리고 분열을 야기하는 세그윗 정보 캠페인은 생태계에 심각한 악영향을 주었을 가능성이 있습니다.

그러나 저희는 위 내용이
불확실하고 근거없는 비난에 불과하다는 것과 이 점이
세그윗 반대에 대한 동기를 유발시켰다는 것은 확실하지 않다는 것을 지적하고 싶습니다.

해당 사항 없음

머클 트리 또는 거래 조정을
위한 인센티브

위 다이이어그램이 보여주듯 비공개 에이식부스트의 성패는 마이너의 머클 트리 혹은 거래 조정 능력에 따라 좌우됩니다. 이 점은 작은 사이즈의 블록과 함께 네트워크 상에 해로운 영향을 줄 수 있습니다. 블록헤더 내의 필드를 변경하는 것 만으로도 공개 에이식부스트는
훨씬 명확한 해결책이 될 수 있습니다.

해당 사항 없음

경쟁 우위를 점할 수 있는
비밀스러운 이점

비공개 에이식부스트의 실행 여부는 쉽게 알아내기 어려우므로 일부 마이너들에겐 경쟁 우위를 점할 수 있는
그들만의 비밀스러운 이점을 제공할 수 있습니다.

일반적으로 우리는 투명성을 좋고 긍정적인 요소로 생각하지만, 이 표에 언급된 것을 제외하고 비공개 에이식부스트 네트워크가 기밀성으로 부터 기인한 직접적인
단점을 야기했는지의 여부는 명확하지 않습니다.

해당 사항 없음

비트코인 코어 (Bitcoin Core)내의 버전 시그널
및 경고 메시지를 통해
감소된 소프트포크 업그레이드 실행 능력

해당 사항 없음

공개 에이식부스트는 다이어그램 왼쪽 상단에 위치한 버전 필드를 활용합니다. 이는 마이너들이 소프트포크
통해 업그레이드를 할 준비가 되었다는 신호로 사용되어 왔습니다. 공개
에이식 부스트는 공개 에이식부스트가 업그레이드 신호 시스템으로 이용되는 것을 방지하는 버전 필드 내의 공간을 활용할 수도 있습니다.

그러나:

1. 공개 에이식부스트의 실행은
4 바이트 전부를 필요로 하지 않을
수도 있으며, 일부 바이트는 소프트포크의 신호 용도로 남겨질 수 있습니다. 이 방식은 동시다발적으로 실행되는 소프트포크의 수를 감소시킵니다.

2. 다수의 사람들은 소프트포크 신호 시스템 (softfork signalling system)을 실패한 시스템으로 생각하고 있습니다. 마이너들은 종종 소프트포크
신호와 상충되는 신호를 내보내서
소프트포크 신호 방법론을 신뢰할 수 없게 만듭니다.

공개 에이식부스트의 또 다른 단점은 비트코인 코어 (Bitcoin Core) 소프트웨어가 특이하거나 흔하지 않지만
정상적인 버전 필드를 발견하면, 이를 네트워크가 알 수 없는 방식 (unknown manner)으로 업그레이드 중이라고 인식하여 사용자에게 경고 메시지를 보낸다는 것입니다.

저희는 에이식부스트가 네트워크에 꼭 부정적이지만은 않다고 생각합니다. 비공개 에이식부스트에는
작은 사이즈의 블록의 생성을 촉진시킨다는 문제점이 있지만, 공개 에이식부스트에 관한 대부분의 문제점들은 충분히 완화될 수 있습니다. 특히, 블록체인 전용 방어적 특허 수집 (BDPL) 시스템이 탄탄한
것으로 입증되면, 공개 에이식부트스트 활용으로 인한 심각한 문제는 발생하지 않을 것입니다. 적어도
현재 저희가 예상하고 있는 선에서 말입니다.