블록 공간은 제한적입니다: 비트코인 블록체인은 최대 초당 약 10건의 거래만 처리할 수 있습니다. 이를 해결하기 위해 비트코인의 기술 커뮤니티는 라이트닝 네트워크 및 사이드체인과 같은 “오프체인” 거래를 처리하는 2차 프로토콜을 개발하고 있습니다. 이러한 거래는 영리한 암호화 기술을 사용하여 주기적으로 비트코인 블록체인에 단일 거래로 정산됩니다.
이제 새로운 2차 프로토콜이 등장하고 있습니다. 서울 비트코인 밋업의 조직자이자 언해시드 팟캐스트 공동 진행자인 루벤 솜센이 처음 제안한 스테이트체인은 비트코인 거래의 개념을 뒤집습니다. 주소에서 주소로 코인을 보내는 대신, 스테이트체인 사용자는 코인을 사용할 수 있는 개인 키를 전송합니다.
그 이유는 그리 미친 생각이 아닙니다.
스테이트체인이 안전한 이유 (대체로)
간단히 말해, 비트코인 거래는 어떤 코인(“UTXO”)이 어떤 주소(“입력”)에서 어떤 주소(“출력”)로 이동하는지를 나타내는 메시지입니다. 이 메시지는 송신 주소에 해당하는 개인 키로 암호화 서명되어, 이 코인의 소유자가 거래를 생성했음을 증명합니다. 이 번들(거래와 서명)은 비트코인 네트워크를 통해 전송되어 결국 채굴자에 의해 비트코인 블록에 포함됩니다.
대신 개인 키를 결제 수단으로 보내는 것이 기술적으로 가능합니다: 이는 개인 키의 수신자가 관련 코인을 사용할 수 있게 합니다. 그러나 이는 안전하지 않습니다. 송신자가 — 원래의 이름을 붙여 “앨리스”라고 합시다 — 수신자에게 개인 키를 보낼 때 — 그를 “밥”이라고 부르죠? — 밥은 앨리스가 키의 복사본을 보관하지 않았다는 것을 확신할 방법이 없습니다. 만약 그녀가 키의 복사본을 보관하고 있다면, 이 문맥에서 “임시 키”라고 부르겠습니다, 앨리스는 여전히 블록체인에서 코인을 사용할 수 있으므로, 코인은 전혀 밥의 것이 아닙니다.
스테이트체인의 첫 번째 해결책은 혼합에 두 번째 키를 추가하는 것입니다. 코인을 2대 2 다중 서명(multisig) 설정에 잠가두면, 두 키가 모두 동의하여 서명해야만 블록체인에서 이동할 수 있습니다.
이 두 번째 키는 중립적인 당사자인 빅터에 의해 생성되며, 그는 스테이트체인의 조정자가 됩니다. 빅터는 매우 중요한 임무를 가지고 있습니다. 빅터는 마지막 수신자가 임시 키를 요청할 경우에만 거래에 서명해야 합니다.
따라서 앨리스가 빅터를 조정자로 설정하여 스테이트체인을 설정한다고 가정해 보겠습니다. 앨리스는 임시 키를 생성하고, 빅터는 그의 키를 생성하며, 두 키를 사용하여 다중 서명 주소를 만듭니다. 그런 다음 앨리스는 이 주소에 1 비트코인을 보내고, 이를 앨리스와 빅터 사이에 “잠가둡니다.” 이제 앨리스가 코인을 밥에게 보내고 싶다면, 그녀는 거래를 생성하고 임시 키로 서명한 후 빅터에게도 서명해 달라고 요청할 수 있습니다. 두 서명이 모두 있으면, 앨리스는 거래를 방송하여 코인을 일반 블록체인 거래로 밥에게 보낼 수 있습니다.
하지만 그건 물론 스테이트체인의 요점을 놓치는 것입니다. 앨리스는 더 나은 아이디어가 있습니다. 앨리스는 대신 임시 키를 밥에게 보내고 빅터에게 그렇게 했다고 알립니다. 이렇게 하면 밥은 임시 키의 마지막 수신자가 됩니다. 이제 밥은 빅터에게 연락하여 코인을 이동하는 데 필요한 서명을 요청할 수 있습니다.
앨리스는 여전히 임시 키를 보유하고 있습니다. 그러나 이제 그녀가 빅터에게 거래 서명을 요청하면, 빅터는 거부할 것입니다. 빅터의 입장에서 앨리스는 더 이상 코인을 소유하지 않습니다. 그리고 그녀가 임시 키만 보유하고 있기 때문에, 그녀는 실제로 혼자서 그것을 이동할 수 없습니다.
만약 밥이 다른 사람에게 코인을 이동하고 싶다면 — 예를 들어 캐롤에게 — 그는 물론 스테이트체인 트릭을 반복할 수 있습니다. 그가 임시 키를 캐롤에게 보내고 빅터에게 알리면, 빅터는 그때부터 캐롤과만 협력하게 되어 코인은 사실상 캐롤의 것이 됩니다. 이 과정은 임의의 횟수만큼 반복할 수 있으며, 임시 키를 댄, 에린, 프랭크 등에게 전달할 수 있으며, 블록체인 거래를 요구하지 않습니다.
빅터를 신뢰하지 않기
위에서 설명한 시나리오는 실제로 시스템에서 모든 신뢰를 제거하지 않습니다. 오히려 상당한 신뢰가 빅터에게 부여됩니다.
하나, 빅터가 요청 시 블록체인 거래에 서명하지 않으면, 코인은 전혀 이동할 수 없습니다. (빅터의 컴퓨터가 고장났거나, 버스에 치였거나, 아니면 빅터가 자신의 권력을 인식하고 임시 키의 마지막 수신자에게 서명을 대가로 코인의 일부를 요구할 수도 있습니다.)
이 문제는 해결할 수 있지만, 여기서 스테이트체인 설계가 약간 더 복잡해집니다.
앨리스가 스테이트체인을 처음 설정할 때, 그녀는 예방 조치를 취합니다. 코인을 다중 서명 주소로 보내기 전에, 그녀는 코인을 이 다중 서명 주소에서 새로운 주소로 보내는 “백업 거래”를 생성합니다.
이 코인은 두 가지 조건에서 이 새로운 주소에서 사용될 수 있습니다. 빅터와 임시 키의 소유자가 거래에 서명하거나, 앨리스가 예를 들어 일주일 후에 혼자서 코인을 사용할 수 있습니다.
앨리스는 이 백업 거래를 비트코인 네트워크에 방송하지 않습니다. 대신, 그녀는 이를 빅터에게 주고, 거래에 서명해 달라고 요청한 후 다시 그녀에게 돌려받습니다.
앨리스가 빅터로부터 서명된(하지만 아직 방송되지 않은) 백업 거래를 받은 후에야 그녀는 코인을 다중 서명 주소로 보냅니다. 이렇게 하면 빅터가 사라지더라도, 그녀는 백업 거래를 방송하고 일주일 후에 코인을 다시 주장할 수 있습니다.
이제 앨리스가 임시 키를 밥에게 보내고 싶을 때, 그녀는 먼저 빅터에게 연락하여 밥을 위한 새로운 백업 거래에 서명해 달라고 요청합니다. 따라서 밥이 앨리스로부터 임시 키를 받았을 때, 그는 이미 빅터로부터 서명된 백업 거래를 가지고 있어, 빅터가 사라질 경우 코인을 주장할 수 있습니다.
마지막으로, 앨리스와 밥(그리고 임시 키의 모든 후속 소유자)은 라이트닝 네트워크를 위해 설계된 엘투(Eltoo)라는 트릭을 사용합니다. 엘투는 밥이 앨리스의 백업 거래를 자신의 백업 거래로 “무효화”할 수 있게 해줍니다. 따라서 앨리스가 자신의 오래된 백업 거래를 방송하려고 시도하면, 밥은 빅터와 협력하여 코인을 주장할 수 있는 일주일을 사용할 수 있거나, 자신의 업데이트 거래로 앨리스의 거래를 무효화하여 돈을 받을 수 있습니다.
첫 번째 문제 해결.
빅터를 약간 신뢰하기
빅터가 사라지는 문제는 해결되었지만, 또 다른 문제가 있습니다: 빅터가 속일 수 있습니다. 그는 앨리스와 같은 개인 키의 이전 소유자와 공모하여 밥, 캐롤, 댄, 에린, 프랭크 또는 임시 키의 마지막 수신자로부터 코인을 훔칠 수 있습니다. (그는 나중에 밥과 공모하여 캐롤, 댄, 에린, 프랭크 등에게서 훔칠 수도 있습니다.)
이 문제는 실제로 완전히 해결할 수 없으며 — 아마도 이것이 스테이트체인의 가장 큰 단점일 것입니다. 그러나 위험을 최소화할 수 있습니다.
위험을 최소화하기 위한 한 단계는 빅터를 “분할”하고 여러 개체로 교체하는 것입니다. “빅터의 키”가 분할됩니다. 따라서 이는 자체적으로 다중 서명 설정이 되어, 예를 들어 12명 중 8명이 임시 키 소유자와 협력하여 코인을 이동해야 합니다. 여덟 명의 “빅터”와 공모하는 것은 단 하나의 빅터와 공모하는 것보다 더 어려울 것입니다.
둘째, 이러한 “빅터”가 속일 경우 외부 세계에 명백하게 드러날 수 있습니다. 이는 본질적으로 새로운 미니 블록체인을 생성하여 — 실제로는 “스테이트체인” — 앨리스, 밥, 캐롤 및 다른 사람들이 코인을 전달한 사람과 그에 대한 메시지에 서명하도록 함으로써 이루어집니다. 만약 빅터들이 앨리스와 공모하여 그녀가 밥에게 서명한 후 코인을 사용하려고 한다면, 모든 사람이 이를 알 수 있습니다. (이 미니 블록체인이 정확히 어떻게 생길지는 아직 구체화되지 않았지만, 이는 해결하기 어려운 문제가 아닙니다.)
셋째, 이러한 “빅터”는 잘 알려진 개체일 수 있습니다; 예를 들어, 비트코인 회사 그룹입니다. 이러한 회사들은 자신의 평판이 걸려 있으므로, 속임수로 인해 잃을 것이 있습니다 — 비록 그들이 그렇게 해서 코인을 얻을 수 있다 하더라도 말입니다. 암호학적으로 완벽하지는 않지만, 이는 스테이트체인에 대한 보안 가정을 블록스트림의 리퀴드나 RSK Labs의 RSK의 현재 구현과 유사하게 만듭니다.
그게 전부입니다!
스테이트체인의 한계 (및 잠재적 해결책)
“빅터들”이 이전 스테이트체인 참여자와 공모하지 않을 것이라는 신뢰가 필요한 것 외에도, 스테이트체인에는 몇 가지 한계가 있습니다.
한계
첫 번째로 주목할 점은, 이 기사에서 설명된 대로 스테이트체인은 두 가지 프로토콜 업그레이드를 필요로 한다는 것입니다: 슈노르 서명과 Sighash_Anyprevout(또는 유사한 것). 이 두 가지 업그레이드는 진행 중인 작업이지만, 논란의 여지가 없어 보입니다.
또 다른 한계는 스테이트체인이 전체 UTXO의 전송만 허용한다는 것입니다; 이 기사에서 앨리스의 코인입니다. 앨리스가 정확히 1 비트코인을 잠가두었고, 이 비트코인에 해당하는 임시 키를 보내므로, 그녀는 전체 코인을 전달해야 하며, 밥, 캐롤 및 다른 사람들도 마찬가지입니다. 이는 잔돈으로 나머지를 송신자에게 반환할 수 있는 일반 비트코인 거래에 비해 꽤 큰 한계입니다.
해결책
그렇다고 해서 이것이 반드시 장애물이 되는 것은 아닙니다. 우선, 스테이트체인은 “원자 스왑”이라는 또 다른 트릭과 결합될 수 있습니다. 이 방법은 앨리스가 두 개의 반 코인을 가진 잭과 자신의 전체 코인을 교환할 수 있게 하여, 서로가 거래 중간에 철회하지 않을 것이라고 신뢰할 필요가 없게 합니다. 이 모든 것은 온체인 거래를 요구하지 않고 발생할 수 있습니다. 이는 유연성을 증가시킵니다.
둘째, 전체 UTXO를 전송하는 것조차도 일부 맥락에서 매우 유용할 수 있습니다. 아마도 가장 흥미로운 점은, 참가자들이 전체 라이트닝 채널을 전송할 수 있게 해준다는 것입니다. 라이트닝 채널을 정확한 금액으로 균형을 맞추면(예를 들어, 먼저 다른 채널에서 자신에게 지불함으로써), 앨리스는 여전히 밥에게 코인의 일부를 지불할 수 있습니다. 보너스로, 이는 밥이 즉시 라이트닝 채널을 열 수 있게 해주며, 온체인 자금 거래를 요구하지 않습니다(이는 시간과 수수료가 소요됩니다).
또한, 라이트닝 거래는 큰 가치 전송이 작은 것보다 완료하기 더 어려운 반대 문제를 가지고 있기 때문에, 스테이트체인과 라이트닝 네트워크는 서로 잘 보완할 수 있습니다.
프라이버시 문제
스테이트체인이 정확히 얼마나 많은 프라이버시를 제공할 수 있을지는 아직 명확하지 않습니다. 최악의 경우, 빅터와 스테이트체인의 다른 참가자들은 누가 누구에게 지불했는지를 정확히 알게 될 것입니다. (비록 실제로는 이들은 여전히 공개 키일 뿐, 실제 이름은 아닙니다.) 빅터와 관련하여 이를 개선할 수 있는 방법이 있습니다. 예를 들어, 블라인드 서명(1980년대 eCash 발명가인 데이비드 차움이 처음 제안한 암호화 기술)을 사용하면, 거래에 대한 책임을 빅터에서 사용자에게 전가할 수 있는 추가 이점이 있습니다. (빅터는 이상적으로 자신이 무엇을 서명할지조차 알지 못해야 합니다.)
다른 참가자들로부터의 프라이버시는 원자 스왑을 통해 해결될 수 있으며, 이는 소유권의 연쇄를 모호하게 하는 데 도움이 됩니다. 코인조인(CoinJoin) 적응과 같은 프라이버시를 개선할 수 있는 더 많은 해결책이 있을 것입니다. (예를 들어, 이것은 프라이버시를 보호하는 와사비 지갑이 사용하는 방법이기도 합니다.) 그러나 세부 사항은 아직 구체화되지 않았습니다.
체인에서의 과거 참가자들이 백업 거래를 통해 코인을 주장하려고 시도하는 것에 대한 우려도 있습니다. 이는 성공할 가능성이 낮지만, 시도하는 데는 (온체인) 거래 수수료만 들기 때문에, 기회를 노리는 속임수 행동이 스테이트체인의 잠재력을 제한할 수 있습니다.
마지막으로, 스테이트체인은 물론 상대적으로 새로운 개념이며, 동료 검토가 진행 중입니다.
정보와 피드백을 제공한 루벤 솜센에게 감사드립니다. 스테이트체인에 대한 더 많은 정보는 그의 Medium 설명서 또는 암스테르담의 Breaking Bitcoin 발표를 참조하세요.