
비트코인의 용량은 제한적입니다. 한편, 스마트 계약은 자원을 많이 소모할 수 있습니다. 그래서 비트코인이 항상 기본적인 스마트 계약 기능을 지원해왔지만, 두 가지는 자연스럽게 맞물리지 않았습니다.
하지만 Blockstream의 수학자 Andrew Poelstra가 주도한 최근 연구 주제가 이 문제를 해결하는 데 도움이 될 수 있습니다. 최근 스탠포드에서 열린 Scaling Bitcoin 발표의 핵심 부분으로 소개된 “Scriptless Scripts”는 특정 스마트 계약을 비트코인 블록체인에서 완전히 분리할 수 있는 잠재력을 가지고 있으며, 여전히 비트코인의 모든 보안을 활용할 수 있습니다.
비트코인과 스마트 계약
스마트 계약은 1990년대 디지털 통화 전문가 Nick Szabo에 의해 처음 제안된 것으로, 본질적으로 자동 실행되는 계약입니다. 일반적으로 특정 조건이 충족되면 누군가에게서 다른 누군가에게 돈을 송금합니다. 예를 들어, 누군가가 노래를 스트리밍하면, 스트리머에서 아티스트로의 지불이 자동으로 이루어집니다.
스마트 계약은 종종 이더리움과 같은 “2세대” 블록체인과 연관되지만, 비트코인도 항상 기본적인 스마트 계약을 지원해왔습니다. 어떤 면에서는 모든 비트코인 거래가 기술적으로 스마트 계약입니다: 자금은 일반적으로 유효한 암호화 서명이 제공되는 조건에서 이동합니다. 멀티시그 및 타임락과 같은 약간 더 발전된 스마트 계약은 라이트닝 네트워크와 같은 2차 프로토콜을 가능하게 합니다.
하지만 블록체인 기반 스마트 계약에는 문제가 있습니다. 하나는, 복잡해질수록 실행에 더 많은 자원이 필요하다는 것입니다. 이는 네트워크의 모든 노드가 계약을 실행해야 하므로 특히 문제가 됩니다 — 계약에 관련된 당사자만이 아니라 모든 노드가 필요합니다.
이 네트워크 전체의 실행은 또한 관련 당사자들이 스마트 계약의 내용에 대해 아무런 프라이버시가 없음을 의미합니다: 전체 네트워크는 그것이 어떻게 생겼는지 정확히 알게 됩니다. 이는 또한 대체 가능성에 나쁜 영향을 미칩니다. 스마트 계약이 어떤 이유로 인기가 없다면, 블록체인에서 공개적으로 보이는 자금은 오염됩니다.
스마트 계약이 더 복잡해짐에 따라, 보안 위험이 될 수도 있습니다. 대안 소프트웨어 구현은 예를 들어 계약의 세부 사항을 약간 다르게 해석할 수 있어, 네트워크의 모든 노드가 합의 상태를 유지하기 어렵게 만듭니다. 그리고 이러한 스마트 계약의 잠재적인 버그는 공개되어 있어 해킹의 가능성을 높입니다.
하지만 Poelstra는 이러한 많은 문제들이 실제로 계약의 대부분을 블록체인에서 분리함으로써 해결될 수 있다고 생각합니다. 네트워크의 모든 노드가 전체 스마트 계약을 계산하는 대신, 계약에 관련된 당사자만 이 기능을 수행해야 합니다.
핵심은 나머지 네트워크가 여전히 계약의 결과를 올바르게 집행하도록 보장하는 것입니다: 필요한 조건이 충족될 때만 지불이 이루어져야 합니다.
스노르
Poelstra는 원래 Mimblewimble 프로토콜의 맥락에서 “Scriptless Scripts”(그가 스스로 만든 용어)를 연구하기 시작했습니다. 이 간소화된 비트코인 버전은 더 나은 프라이버시와 확장성을 제공하지만 스크립트를 지원하지 않습니다: 대부분의 기본 스마트 계약 기능을 허용하는 비트코인 거래에 내장된 코드 조각입니다.
그래서 Poelstra는 블록체인에서 실제로 스크립트를 요구하지 않고도 스크립트가 제공하는 유용성을 얻는 방법을 알아냈습니다: Scriptless Scripts입니다.
Scriptless Scripts의 핵심은 (상당히) 일반적인 암호화 서명이 서명이 포함된 거래의 일부가 아닌 무언가를 간접적으로 드러낼 수 있다는 것입니다. 다시 말해, 누군가가 일반 비트코인 거래를 검증하기 위해 서명할 때, 블록체인에 호스팅되지 않은 스마트 계약이 여전히 충실하게 실행된다는 것을 의미합니다.
이는 스노르 서명 덕분에 가능합니다. 이러한 유형의 서명은 아직 비트코인 프로토콜에 구현되지 않았지만, 앞으로 1년 이내에 배포될 가능성이 있습니다.
스노르 서명은 서명 집합을 허용합니다; 여러 서명을 수학적으로 결합하여 하나의 서명으로 만들 수 있습니다. 그리고 이 사용 사례에 중요하게도, 이 수학은 “선형적”입니다. 이는 이러한 서명에 대해 상대적으로 간단하지만 매우 표현력이 풍부한 수학을 수행할 수 있음을 의미합니다.
과도하게 단순화하면, 다음과 같은 방식으로 작동합니다:
개인 키와 서명은 물론 실제로 숫자일 뿐이며, 후자는 전자에서 파생됩니다. 이 예시는 단순화된 것이므로, 하나의 개인 키가 10처럼 보이고, 그 개인 키에서 파생된 스노르 서명의 절반이 10000처럼 보인다고 가정해봅시다. 그리고 다른 개인 키는 15처럼 보이고, 스노르 서명의 두 번째 절반은 15000처럼 보입니다. 이 단순화된 예에서 스노르 서명은 25000(즉, 10000 + 15000)처럼 보입니다.
그리고 서명의 두 절반이 숫자일 뿐이므로, 이들 간의 수학을 수행할 수 있습니다. 예를 들어, 이 단순화된 예에서 두 절반의 차이는 5000(즉, 15000 – 10000)입니다.
현실은 더 복잡하지만, 스노르의 선형성은 이러한 종류의 수학 “트릭”을 여러 개 허용합니다.
스마트 계약
이제 스트리머가 아티스트의 노래를 듣고 싶어한다고 가정해봅시다. 아티스트는 이 노래에 대한 권리를 가지고 있으며, 아티스트의 서명이 서버에 제공될 경우에만 스트리머에게 재생됩니다. 단순화를 위해 이 “노래 서명”이 7000처럼 보인다고 가정해봅시다. 스트리머는 이 노래 서명에 대해 아티스트에게 1비트코인을 지불할 의향이 있습니다. (그는 정말로 이 노래를 듣고 싶어합니다.)
이 단순화된 예에서 스트리머와 아티스트는 두 가지 작업을 수행하여 이 거래를 자동화할 수 있습니다. 첫째, 스트리머와 아티스트가 각각 스노르 서명의 절반을 제공하여 전체 스노르 서명을 생성할 경우, 스트리머에서 아티스트로 1비트코인을 송금하는 일반적인 비트코인 거래를 생성합니다. (실제로 이 단계는 누군가 돈을 잃지 않도록 추가 안전 조치를 요구하지만, 상대적으로 간단합니다.)
다음 단계는 조금 더 복잡해집니다.
아티스트는 자신의 스노르 서명의 절반이 어떻게 생겼는지 알고 있습니다; 단순화를 위해 8000처럼 보인다고 가정해봅시다. 그리고 그녀는 자신의 노래 서명이 어떻게 생겼는지 알고 있습니다: 7000. 따라서 그녀는 이 두 값의 차이를 계산할 수 있습니다: 1000. 이를 어댑터 서명이라고 합니다. 아티스트는 이 어댑터 서명 — 1000 — 을 스트리머에게 전달합니다.
여기서 암호화 마법이 발생합니다.
일반 서명 검증 방법을 수정함으로써, 스트리머는 실제로 방금 받은 어댑터 서명(1000)이 아티스트의 스노르 서명의 절반과 그녀의 노래 서명 간의 차이임을 검증할 수 있습니다 — 스트리머는 아직 두 서명 모두에 접근할 수 없지만 말입니다. (그리고 “제로 지식 증명”이라는 암호화 트릭 덕분에, 이러한 방식은 이 예에서 묘사된 서명뿐만 아니라 놀랍도록 넓은 범위의 시나리오에서 실제로 수행될 수 있습니다.)
이제 어댑터 서명(1000)이 확인되었으므로, 스트리머는 아티스트에게 자신의 스노르 서명의 절반을 제공할 수 있습니다. 아티스트가 스트리머의 절반을 사용하여 전체 서명을 생성하고 이를 비트코인 네트워크에 방송하면, 그녀는 자동으로 자신의 스노르 서명의 절반(8000)을 스트리머에게도 공개하게 됩니다.
아티스트의 스노르 서명의 절반을 사용하여, 스트리머는 이제 어댑터 서명을 빼낼 수 있습니다: 1000. 아티스트의 스노르 서명의 절반에서 어댑터 서명을 빼면(8000 – 1000) 스트리머는 실제로 아티스트의 “노래 서명”: 7000을 알게 됩니다. 그리고 이제 그는 노래를 들을 수 있습니다.
다시 말해, 그녀에게 1비트코인을 지불하는 거래를 방송함으로써, 아티스트는 자동으로 스트리머에게 서명을 판매합니다: 스마트 계약입니다.
블록체인 관점에서 — 즉, 나머지 세계에서 — 거래는 매우 일반적입니다. “정산 거래” 외에는 스마트 계약에 대한 어떤 것도 블록체인에 기록되지 않습니다. 누군가가 기본 계약이 실행되었다는 것을 알 수 없으며 — 스트리머가 어떤 노래를 들었는지에 대해서는 말할 것도 없고 — 계약 관련 데이터는 관련 당사자 외에는 누구도 계산하거나 저장할 필요가 없습니다.
Poelstra의 Scriptless Scripts를 포함한 Scaling Bitcoin 발표를 보려면 여기를 클릭하세요. Scriptless Scripts에 대한 대안적인 심층 설명은 JoinMarket 개발자 Adam “Waxwing” Gibson에 의해 발표되었으며, 여기를 찾을 수 있습니다.