비트코인의 합의 계층은 이제 2년 넘게 변하지 않았습니다. 2017년 8월에 활성화된 세그리게이티드 위트니스(SegWit) 이후로는 하드 포크나 소프트 포크 프로토콜 업그레이드가 전혀 배포되지 않았으며, 이는 비트코인이 지금까지 합의 포크 없이 가장 긴 기간을 기록한 것입니다.
하지만 이 기간은 곧 끝날 수 있습니다: 현재 여러 개의 하위 호환 소프트 포크가 개발 중입니다. 낙관적으로, 그 중 일부는 2020년에 활성화될 수 있습니다 — 비트코인 생태계에서 충분한 지원을 받을 경우에 한해서입니다.
이들은 새해에 비트코인의 프로토콜 업그레이드가 될 수 있습니다 … 아니면 새로운 10년 동안에.
슈노르/탭루트/탭스크립트
슈노르 서명은 많은 암호학자들에 의해 이 분야에서 가장 좋은 유형의 암호화 서명으로 간주됩니다. 이들은 강력한 정확성 수준을 제공하며, 변조에 영향을 받지 않고, 검증 속도가 상대적으로 빠르며, 아마도 가장 흥미로운 점은 수학적 작업을 수행할 수 있게 해준다는 것입니다. 비트코인에 대한 구체적인 이점 중 하나를 들자면: 여러 서명을 하나의 서명으로 집계할 수 있어, 예를 들어 프라이버시를 강화하는 코인조인 거래를 경제적으로 유도할 수 있습니다.
슈노르 서명을 비트코인 프로토콜에 추가하는 작업은 한동안 진행 중이었습니다. 하지만 지난 1년 동안 블록스트림 개발자 피터 윌레와 요나스 닉, 자포의 앤서니 타운스와 같은 슈노르 서명 제안 작업을 하는 개발자들은 더욱 야심찬 계획을 공개했습니다. 슈노르 서명은 비트코인 코어 기여자 그레고리 맥스웰이 제안한 더 큰 소프트 포크 프로토콜 업그레이드인 탭루트의 일환으로 제안될 것입니다. 이는 이전에 MAST(머클화된 추상 구문 트리)라는 오래된 제안에서 영감을 받았습니다.
(일부) 비트코인은 여러 조건 하에서 사용될 수 있도록 잠금 설정이 가능하며, 예를 들어 시간 잠금이나 여러 참가자의 비밀 번호가 필요할 수 있습니다. MAST를 사용하면 모든 조건이 해시되어 머클 트리에 포함됩니다: 이는 압축된 암호화 데이터 구조입니다. 그런 다음 코인은 본질적으로 이 머클 트리의 최종 해시인 머클 루트에 잠겨 있습니다. 코인을 사용하려면 단지 사용하려는 조건을 공개하기만 하면 됩니다. 코인을 잠금 해제할 수 있었던 대체 방법은 영원히 숨겨져 있습니다.
따라서 탭루트는 흥미로운 인식에 기반합니다: 아무리 복잡하더라도 거의 모든 MAST 구조는 모든 참가자가 결과에 동의하고 함께 정산 거래에 서명할 수 있는 조건을 포함해야 합니다. 이 “협력적 종료”는 다른 모든 조건을 무시합니다.
탭루트는 이 인식을 활용하고 슈노르 서명을 이용해 협력적 종료를 일반 거래처럼 보이게 합니다. 간단히 말해, 협력적 종료는 집계된 서명으로 수행되며, 이는 일반 서명처럼 보입니다. 이렇게 함으로써 MAST 구조는 외부 세계에 완전히 숨겨져 있습니다! 이는 프라이버시와 효율성에 이점을 제공합니다.
탭루트는 또한 비트코인의 프로그래밍 언어인 스크립트의 업데이트된 버전인 탭스크립트를 동반할 수 있습니다. 이는 나중에 비트코인의 프로그래밍 언어에 새로운 기능(“OP 코드”)을 추가하는 것을 더 쉽게 만들 것입니다.
탭루트는 그다지 논란이 되지 않는 것처럼 보이지만, 개발자들은 여전히 구현 세부 사항에 대해 논의하고 있습니다.
대규모 합의 정리
대규모 합의 정리는 스퀘어 크립토 개발자 맷 코랄로가 제안한 소프트 포크입니다. 대부분의 프로토콜 업그레이드와는 달리 — 이 목록에 포함된 다른 업그레이드들도 포함하여 — 대규모 합의 정리는 비트코인을 새로운 기능이나 가능성으로 풍부하게 하려는 것이 아닙니다. 대신, 이름에서 알 수 있듯이 이 소프트 포크는 비트코인 프로토콜에서 일부 엣지 케이스 취약점을 제거하는 것을 목표로 합니다.
이 취약점은 상당히 기술적이며 “세부 사항에 얽혀 있습니다.” 예를 들어, 검증하는 데 많은 처리 능력이 필요한 변칙적인 유형의 거래, 프로토콜의 일부를 업그레이드하기 위한 중복 트릭, 비트코인의 난이도 조정 알고리즘의 약점이 포함됩니다. 이러한 취약점이 존재한다는 것은 이미 알려져 있었지만, 이를 악용하는 것이 수익성이 없을 정도로 비용이 많이 들거나, 그러한 악용이 발생할 경우 상대적으로 쉽게 처리할 수 있을 것이라고 일반적으로 믿어지고 있습니다. 그럼에도 불구하고 이를 수정하면 비트코인이 약간 더 견고해질 것이며, 비트코인 구현 개발이 조금 더 쉬워질 것입니다.
대규모 합의 정리의 주요 반대 의견은 아마도 일부 업그레이드가 이론적으로 특정 기존 코인(UTXO)을 사용할 수 없게 만들 수 있다는 것입니다. 이러한 UTXO가 존재할 가능성은 매우 낮지만, 그것이 존재하는지 확실히 알 수는 없으며, 일부는 이를 사용할 수 없게 만드는 것이 원칙적으로 결코 감수해야 할 위험이라고 주장합니다.
“노인풋 클래스”
비트코인 거래는 암호화 서명을 포함하여, 이는 공개 키의 소유자가 특정 거래에서 해당 코인을 정말로 사용하고 싶어한다는 것을 증명합니다. 그러나 전체 거래가 서명되는 것은 아닙니다. 거래의 어떤 부분이 정확히 서명되는지는 “사이해시 플래그”라는 것으로 표시됩니다.
현재 블록스트림 개발자 크리스찬 데커와 자포의 타운스에 의해 새로운 사이해시 플래그 클래스가 제안되고 있습니다. SIGHASH_NOINPUT, SIGHASH_ANYPREVOUT 및 SIGHASH_ANYPREVOUTANYSCRIPT와 같은 이름을 가진 이들은 유사한 솔루션을 제공하므로, 우리는 이 모든 것을 “노인풋 클래스”라고 부를 것입니다.
노인풋 클래스의 사이해시 플래그가 거래에 포함되면, 이는 출력(거래의 “수신” 부분)과 일부 다른 거래 데이터가 서명되지만 입력(거래의 “전송” 부분)은 서명되지 않음을 나타냅니다. 입력을 서명하지 않음으로써, 서명된 후에도 거래를 가져와 호환 가능한 다른 입력으로 교체할 수 있습니다.
대부분의 경우, 다른 호환 가능한 입력이 없을 것입니다. 서명은 여전히 공개 키에 해당하며, 이 공개 키는 특정(부분) 코인에만 해당합니다. 임의의 입력으로 교체하면 이 연결이 끊어지고 거래가 무효가 됩니다.
하지만 입력을 교체할 수 있는 몇 가지 예외가 있습니다. 특히, 새로운 유형의 라이트닝 네트워크 결제 채널 프로토콜인 엘투(Eltoo)에 대한 비트코인 거래는 호환 가능한 입력으로 교체될 수 있습니다. 이는 결제 채널의 집행 방식을 상당히 단순화할 것입니다. 특히, 버그나 다른 정직한 실수로 인해 채널의 모든 자금이 손실되지 않으며, 사용자는 훨씬 적은 백업 데이터를 사용할 수 있습니다.
노인풋 클래스에 대한 주요 반대 의견은 SIGHASH_NOINPUT이 특히 잘못 사용될 경우 불안정할 수 있다는 것입니다. SIGHASH_ANYPREVOUT 및 SIGHASH_ANYPREVOUTANYSCRIPT는 이를 해결하고(탭루트와 호환되게) 하지만 더 많은 복잡성을 초래합니다. 일부는 OP_CHECKTEMPLATEVERIFY(아래 참조) 또는 OP_cat(비활성화된 OP 코드로, 아마도 탭스크립트를 통해 재활성화될 수 있음)가 유사한 이점을 제공할 수 있다고 제안합니다.
OP_CHECKTEMPLATEVERIFY
OP_CHECKTEMPLATEVERIFY(CTV), 이전에 OP_SECURETHEBAG으로 알려진, 비트코인 코어 기여자 제레미 루빈이 제안한 새로운 OP 코드입니다. 주요 이점으로는 비트코인의 네트워크 혼잡과 수수료를 피크 시간 동안 완화하여 네트워크 처리량을 효과적으로 증가시킬 수 있다는 것입니다.
보다 구체적으로, CTV는 비트코인 거래를 두 개의 거래로 나누는 방식으로 작동합니다. 거래의 “전송” 절반은 입력을 포함하며, 기본적으로 코인이 보내는 주소입니다. 거래의 “수신” 부분은 출력을 포함하며, 기본적으로 코인이 받는 주소입니다.
두 절반은 “전송” 거래에 포함된 특별한 출력인 “커밋된 출력”을 통해 서로 연결됩니다. 커밋된 출력은 암호화 해시를 포함합니다: 무작위처럼 보이지만 상대적으로 짧은 숫자 문자열로, “수신” 거래에 연결되는 고유한 일련 번호 역할을 합니다. “전송” 거래에서 “보내진” 코인은 “수신” 거래에서만 “받을” 수 있습니다.
트릭은 두 “절반” — “전송” 거래와 “수신” 거래 — 모두 네트워크에 방송되지만 중요한 차이가 있다는 것입니다. “전송” 거래는 빠른 확인을 보장하기 위해 상대적으로 큰 수수료를 포함합니다. “수신” 거래는 상대적으로 낮은 수수료를 포함하므로 확인하는 데 시간이 걸릴 수 있습니다.
낮은 수수료 거래의 확인을 기다리는 것은 코인을 받는 사람에게 큰 문제가 되지 않아야 합니다. “전송” 거래가 확인되면 모든 자금이 “수신” 거래에 보장됩니다. 자금은 블록체인에 고정되어 있으며 수신자 외에는 갈 곳이 없습니다.
수신자가 코인을 다시 사용해야 하는 경우와 같이 “수신” 거래를 빠르게 처리해야 하는 경우, 그들은 단순히 확인되지 않은 “수신” 거래에서 직접 자금을 사용할 수 있습니다. 새 거래의 수수료가 충분히 높으면 “수신” 거래와 새 거래 모두 빠르게 확인됩니다. (이 트릭은 “자식이 부모를 지불한다”라고 불립니다.) 더욱 흥미로운 점은 CTV가 “수신” 거래를 더 작은 거래로 나누어 더 효율적인 솔루션을 허용한다는 것입니다. 이를 트리 결제(Tree Payments)라고 합니다.
CTV에 대한 주요 반대 의견은 아마도 동일한 작업을 수행하는 더 나은 방법이나 더 일반적인 방법이 있을 수 있다는 것입니다. (보다 일반적인 솔루션은 일반적으로 계약(Covenants)이라고 불립니다.) 일부는 노인풋 클래스나 OP_cat이 유사한 이점을 제공할 수 있다고 제안합니다.
드라이브체인 BIP
사이드체인은 비트코인 블록체인에 “연결된” 블록체인으로, 비트코인이 비트코인 블록체인에서 사이드체인으로 효과적으로 “이동”하고 다시 돌아올 수 있게 합니다. 코인이 사이드체인에 있으면 해당 블록체인의 프로토콜 규칙을 따르며, 이는 오늘날 존재하는 모든 블록체인만큼 다양할 수 있습니다. 예를 들어, 프라이버시를 위한 “지캐시 사이드체인”, 특정 스마트 계약을 위한 “이더리움 사이드체인” 또는 낮은 수수료 블록체인 거래를 위한 “대형 블록 사이드체인”이 있을 수 있습니다.
일부 사이드체인은 이미 존재하며, 특히 블록스트림의 리퀴드(주로 거래소 간 자금 이체를 위한)와 RSK Labs의 RSK(“이더리움 사이드체인”)가 있습니다. 이들은 “연합 사이드체인”입니다: 비트코인 블록체인과 사이드체인 간의 다리는 이 분야의 잘 알려진 회사들의 “연합”에 의해 관리됩니다. 이들은 본질적으로 비트코인 블록체인에서 다중 서명 주소를 제어하고, 코인을 서로 “이동”하기 위해 공동으로 서명합니다.
드라이브체인은 대신 비트코인 채굴자에 의해 보호됩니다: 비트코인 블록체인을 이미 보호하고 있는 동일한 채굴자들이 해시 파워를 제공합니다. 사이드체인에서 메인 체인으로 자금을 “이동”하려면 장기간에 걸쳐 해시 파워의 과반수가 필요합니다. 또한 드라이브체인은 병합 채굴되므로 비트코인 블록체인의 해시 파워가 사이드체인도 보호합니다.
이를 실현하기 위해 Tierion 개발자 폴 스토르크와 익명의 CryptAxe가 두 개의 소프트 포크를 제안했습니다. 첫 번째는 해시레이트 에스크로(Hashrate Escrows)라고 하며, 이는 비트코인 블록체인에서 계약에 자금을 잠그는 역할을 하여(사이드체인으로 “이동”), 해시 레이트가 자금을 잠금 해제하기 위해 투표할 때만 잠금 해제됩니다(코인을 “이동”하는 것). 두 번째 소프트 포크는 블라인드 병합 채굴(Blind Merged Mining)로, 사이드체인이 비트코인 블록체인과 동일한 해시 파워로 보호되도록 합니다.
드라이브체인은 다소 논란이 되고 있습니다. 왜냐하면 (주장하기에) 이는 비트코인 채굴자에게 더 많은 권한을 부여할 것이기 때문입니다. 일부는 블라인드 병합 채굴이 노인풋 클래스를 통해 달성될 수 있다고 제안합니다.