최근 Wallet of Satoshi가 Lightspark의 최근 “Spark” 시스템 통합 덕분에 곧 미국으로 돌아올 것이라는 발표 이후 많은 비판이 일고 있습니다. 이는 신뢰 모델 문제와 Wallet of Satoshi의 새로운 버전이 비수탁 지갑인지 여부에 초점을 맞추고 있습니다.
Spark는 statechains에 기반한 시스템입니다. Statechains는 가장 명확한 신뢰 모델을 가지고 있지 않습니다. Spark는 본질적으로 statechains의 채널 공장 버전으로, 단일 온체인 UTXO에 구축된 트랜잭션 트리 안에 여러 개의 statechains가 중첩되어 있습니다.
Statechains는 전체 UTXO를 유동성 제약 없이 오프체인에서 자유롭게 전송할 수 있게 해주는 Layer 2 시스템이지만, 일부 신뢰 거래를 수용해야 합니다. 사용자는 서비스 제공자인 운영자가 statechain이 전송될 때마다 개인 키 자료를 삭제할 것이라고 신뢰해야 합니다.
그렇다면 비수탁 지갑의 정의를 살펴보겠습니다.
- 사용자는 자신의 자금에 대한 일방적인 통제권을 가지고 있거나 이를 회복할 수 있는 능력이 있습니다.
- 다른 어떤 당사자(또는 당사자들)도 사용자가 자신의 자금을 사용하거나 회복하는 것을 방해할 수 없으며, 사용자의 개입 없이 자금을 사용할 수 없습니다.
첫 번째 특성은 확실히 statechains에 적용됩니다. Lightning 채널처럼 사용자는 타임락 기간 후에 자금을 회수하기 위해 미리 서명된 트랜잭션을 사용할 수 있습니다. 두 번째 특성은 적용 여부가 명확하지 않습니다.
statechain 프로토콜은 운영자와 원래 사용자가 서로 완전한 지식을 가지지 않는 키를 공동으로 생성하도록 요구합니다. 그들의 지분을 사용하여 사용자의 인출 트랜잭션을 미리 서명할 수 있습니다. 원래 사용자가 이를 다른 사람에게 전송하면, 원래 사용자, 새로운 사용자 및 운영자가 모두 협력하여 새로운 사용자와 운영자 간의 다른 지분을 가진 동일한 키를 “재생성”합니다.
새로운 사용자의 인출 트랜잭션에 서명한 후, 운영자는 원래 사용자와 함께 생성한 지분을 삭제해야 합니다. 이는 운영자가 원래 사용자와 새로운 트랜잭션을 서명할 수 없도록 하며, 새로운 사용자의 트랜잭션에 대한 짧은 타임락은 그들이 원래 사용자가 자신의 자금을 사용할 수 있기 전에 자금을 사용할 수 있도록 보장합니다.
운영자가 이전 키 지분을 삭제하지 않으면, 그들은 자신의 키 지분을 보관한 과거 사용자와 협력하여 statechain의 자금을 훔칠 수 있는 가능성이 있습니다.
운영자
운영자가 해야 할 일을 잘 수행하고 statechain이 전송될 때마다 이전 키 지분을 삭제하고 있다면, 그들은 비수탁 시스템입니다. 그들은 현재의 정당한 소유자 외에는 누구와도 협력하여 트랜잭션에 서명할 수 없습니다. 미리 서명된 트랜잭션의 타임락 감소는 현재 소유자가 이전 소유자보다 항상 자신의 인출 트랜잭션을 확인할 수 있도록 보장합니다.
운영자는 SGX 인클레이브 또는 기타 안전한 컴퓨팅 환경에서 소프트웨어를 실행할 수 있으며, 인클레이브가 소프트웨어의 올바른 동작을 강제할 수 있습니다. 이는 다른 사람들이 검증할 수 있는 증거를 제공할 수도 있습니다(환경이 손상되지 않았다고 믿는다면).
그들은 또한 프로토콜을 정직하게 운영할 강력한 유인이 있습니다. 그렇게 함으로써 그들은 다른 사람의 자금을 보유하는 비수탁 서비스와 관련된 규정을 준수할 필요가 없기 때문입니다.
사용자
최종 사용자는 일방적인 인출 트랜잭션을 가지고 있습니다. 이는 소유권의 타임락이 만료된 후와 이전 소유자의 타임윈도우가 만료되기 전에 언제든지 사용할 수 있습니다. 운영자가 응답을 중단하거나 사라지면 이 옵션이 있습니다.
하지만 그들은 운영자가 프로토콜을 정직하게 운영하고 과거 키 지분을 삭제하고 있다고 신뢰해야 합니다. 그들은 이를 정말로 검증할 방법이 없습니다. 위에서 언급한 바와 같이, SGX 인클레이브와 같은 것이 운영자의 소프트웨어 보안을 처리하고 정직한 소프트웨어를 실행하고 있다는 증거에 서명할 수 있습니다. 그러나 이는 신뢰의 지점을 운영자에서 Intel, SGX 인클레이브의 제작자로 이동시키는 것에 불과합니다.
정말로 정직한 운영자와 거래할 때조차, 사용자는 그들이 정직한 운영자인지 알 수 없습니다. 그들은 단지 운영자가 정직했었다는 것을 볼 수 있을 뿐이며, 그들이 계속 그렇게 할 것이라고 희망할 뿐입니다.
그래서….?
명확한 답은 없습니다. 운영자가 실제로 정직하게 운영되고 있는 상황에서는, 비수탁으로 간주될 수 있는 모든 기준에 부합합니다. 사용자는 자금에 대한 완전한 접근 권한을 방해받지 않고 얻을 수 있으며, 다른 누구도 그들이 그렇게 하거나 자금을 훔치는 것을 막을 수 없습니다.
문제는 검증할 수 없다는 것입니다.
사용자로서 신뢰할 수 없는 방식으로 자금에 대한 신뢰할 수 없는 통제권을 가지고 있다는 것을 검증할 방법이 없습니다. 실제로 그렇게 되더라도 말입니다.
따라서 비수탁으로 분류하는 데 문제가 있습니다. 비록 비수탁이라 하더라도 사용자가 이를 진정으로 검증할 수 있는 방법이 없기 때문입니다. 그러나 비수탁이라고 부르는 데도 문제가 있습니다. 왜냐하면 운영자는 다른 사용자와 협력하지 않고는 자금을 이동할 수 없고 현재 사용자는 일방적인 인출 트랜잭션을 가지고 있기 때문입니다. 이는 이 공간의 도구를 분류하는 데 딜레마를 만듭니다.
해결책이 무엇인지 모르겠지만, 첫 번째 단계는 자신의 유인에 따라 사물에 레이블을 붙이기 전에 발생하는 기술적 현실을 인식하는 것이라고 생각합니다(왜 새로운 범주를 만들지 않습니까?). 이러한 질문들은 비트코인 프로토콜의 변화가 극도로 느린 환경에서 개발자들이 비트코인의 현재 한계의 거래를 고민하면서 더욱 빈번해질 것입니다.
비트코인은 프로그래머블 머니이며, 사람들이 이를 프로그래밍하는 방식은 항상 우리가 미리 정의한 틀에 맞지 않을 것입니다.