저자: Hanssen; 역자: saku; 원문 링크:
https://talk.nervos.org/t/en-cn- misc-single-use-seals/8279
일회성 씰은 비트코인의 기능을 확장하는 RGB/RGB++ 프로토콜의 초석입니다. 하지만 일회용 씰(SUS)이란 정확히 무엇일까요? 그리고 이를 블록체인에서 어떻게 구현할 수 있을까요? RGB++ 프로토콜이 도입되기 전에도 단일 사용 씰이 CKB의 기술 아키텍처에 존재했다는 사실을 알고 계셨나요?
위 질문들에 대해 간략히 설명하고 일회용 씰 개념을 기반으로 한 몇 가지 CKB 스크립트 디자인을 보여드리겠습니다.
SUS란?
일회성 봉인을 달성하기 위해 채굴자는 키-값 쌍 집합에 대한 일련의 진리-값 식을 증명할 것을 제안합니다. 키는 표현식이고 값은 선언이며, (폐기 가능한) 증인과 함께 표현식에 대한 인수를 구성합니다. 표현식이 봉인 집합에 추가되면 해당 표현식과 연관된 값은 변경할 수 없습니다.
Peter Todd - 프라이버시 및 검열 저항성 향상을 위한 폐쇄형 봉인 집합과 진실 목록
Peter Todd의 실제 사례에 나오는 다음 도표는 SUS를 생생하고 정확하게 설명합니다. 실제 도장과 마찬가지로 다시 열 수 없도록 봉인되어 있으며, 각 도장은 고유하게 식별됩니다.
디지털 세상을 상상해 보세요. 데이터를 봉인할 수 있는 고유하고 파괴할 수 없는 봉인을 가질 수 있고, 그 누구도(자신을 포함하여) 그 봉인을 위조할 수 없는 세상, 이것이 바로 SUS입니다.
쉬운 SUS
우리가 산출물의 합계를 지출할 때, 우리의 목표는 지출된 돈이 다른 산출물 집합으로 흘러가도록 하는 것입니다. 이 출력 세트의 분배를 이 일회성 씰에 커밋함으로써 다른 출력 세트에 흘러가도록 하는 것입니다.
Peter Todd - 프라이버시 및 검열 저항성 향상을 위한 폐쇄형 봉인 세트와 진실 목록
Peter Todd - 프라이버시 및 검열 저항성 향상을 위한 폐쇄형 봉인 세트와 진실 목록
블록체인 세계에서 미사용 트랜잭션 출력(UTXO)은 사용자가 자산을 저장하는 곳입니다. 사용자가 트랜잭션을 통해 자산을 이전하는 과정은 본질적으로 UTXO를 소비하고 다른 사람을 위해 새로운 UTXO를 생성하는 것입니다.
US와 UTXO의 자연스러운 일관성으로 인해 UTXO 모델에서 일회성 씰을 설계하는 것이 간단하고 쉽습니다. TXO(트랜잭션 출력)를 우리의 씰로 생각할 수 있으며, 블록체인에 제출된 각 트랜잭션은 입력된 모든 TXO에 데이터를 씰링하는 것으로 생각할 수 있습니다. 이런 식으로 우리는 UTXO 모델에서 일회성 씰의 설계를 완료했습니다: 거래의 출력은 일회성 씰의 모든 요구 사항을 충족합니다.
US와 UTXO 모델은 함께 작동하도록 설계되어 UTXO 모델에서 일회성 씰이 생성되었습니다. p>봉인된 씰을 파괴할 수 없는 이유는 봉인을 위해 TXO를 사용해야 하고, 일시불을 두 번 사용할 수 없기 때문입니다.
봉인은 고유하며 모든 TXO가 고유하기 때문에 위조할 수 없습니다.
데이터를 봉인하기 전에 씰을 가질 수 있는 이유는 TXO를 생성하는 것과 지출하는 것은 별개의 프로세스이기 때문입니다.
씰 체인 및 유형 ID
타입 ID는 특수 타입 스크립트를 사용하여 싱글톤 타입(즉, 하나만 있는 타입)을 생성하는 방법을 설명합니다. Live Cell.
CKB RFC 0022 - CKB 트랜잭션 구조
타입의 단일 인스턴스를 만들려면 봉인을 닫고 봉인을 닫을 때 새 봉인을 첨부하여 단일 인스턴스를 만들 수 있습니다. 이 접근 방식은 검증자가 초기 씰에 동의하기만 하면 씰 체인을 통해 최신 씰을 가져오기 때문에 검증 프로세스를 간소화합니다. 하지만 이는 유효성 검사자가 가장 최신 데이터를 검증하기 위해 전체 씰 체인을 검색해야 한다는 것을 의미합니다.
CKB의 튜링 완전 가상 머신과 확장된 UTXO 모델인 Cell 모델 덕분에 씰에 더 많은 정보를 포함할 수 있습니다. CKB의 셀과 BTC의 UTXO의 차이점은 셀은 "유형" 스크립트에 의해 변환이 제한되는 임의의 데이터를 저장할 수 있다는 것입니다.
CKB의 Type ID 체계에서는 씰 체인에 있는 각 씰이 시작 정보로 첫 번째 씰의 ID를 포함해야 합니다. 타입 ID는 타입 스크립트가 셀에 고유 ID를 부여하고 씰 체인의 시작부터 끝까지 변경할 수 없도록 제한하는 것을 의미합니다. 이 ID를 통해 유효성 검사기는 CKB의 공통 인덱서만 사용하여 가장 최근의 씰을 검색할 수 있습니다.
CKB에 대한 추가 SUS
일회용 잠금: 이 잠금을 해제하려면 지정된 라이브 셀을 소모해야 합니다. 앞서 언급했듯이 봉인은 한 번만 봉인할 수 있습니다. 따라서 일회용 잠금장치는 한 번만 해제할 수 있습니다.
타입 프록시 잠금: 이 잠금을 해제하려면 특정 타입 스크립트가 있는 셀이 필요합니다. 타입 스크립트가 타입 ID인 경우, 업데이트된 봉인 체인의 전체 한도를 가진 사람만 잠금을 해제할 수 있습니다.
자산 릴리스 권한 제어는 두 가지 유형의 스크립트 모두에 대한 실제 시나리오입니다. CKB의 xUDT 프로토콜에서 발행자는 소유자 잠금을 해제할 수 있음을 증명하면 새 토큰을 발행할 수 있습니다. 단순한 서명 기반 잠금만으로는 발행자가 여전히 개인 키를 가지고 있는지 확신할 수 없으므로 언제든지 새 토큰을 발행할 수 있으며, 각 자산을 무한히 증가시킬 수 있습니다.
일회용 잠금이 이에 대한 해결책을 제공합니다. 주어진 셀을 소비한 후에는 아무도 소유자 잠금을 해제하여 새 토큰을 발행할 수 없으므로 토큰 공급에 실제로 상한선이 있다는 것을 확신할 수 있습니다.
보다 유연한 솔루션으로 토큰 발행자는 유형 프록시 잠금을 사용하여 다른 사람에게 넘기거나 파기할 수 있는 위조 불가능한 키 역할을 하는 유형 ID 셀에 발행 권한을 바인딩할 수 있습니다.