Nostr 바인딩 프로토콜, 체인 기반 메커니즘을 통한 새로운 가능성 제공
Web5의 3층 구조:
Nostr에 대하여
Nostr는 간단하고 개방적인 정보 배포 프로토콜로, 중계-클라이언트 모델을 사용하여 전 세계 네트워크에서 표준 메시지를 배포합니다. 중계-클라이언트 모델은 블록체인에서의 P2P 네트워크와 유사하지만, 더 저렴하고 유연하며 실용적(또한 더 중앙집중화됨)으로 소비자 애플리케이션의 대규모 채택에 더 적합합니다. 표준 메시지는 Nostr의 핵심 혁신입니다. Nostr는 JSON을 기반으로 다양한 데이터를 설명하는 표준 메시지 형식을 정의합니다(이 메시지 형식은 프로토콜의 기본 데이터 구조이기도 합니다). 이를 "Event"라고 부릅니다.
Event 구조:
Event는 임의의 내용을 포함하고 사용자 서명으로 구성된 데이터 조각으로, 중계 서버를 신뢰하지 않고도 클라이언트에서 검증할 수 있습니다. Nostr 프로토콜에서 게시하는 모든 메시지는 다양한 종류와 요구 사항의 Event입니다. Nostr에 대한 더 많은 정보는 NIPs에서 확인할 수 있습니다.
CKB에 대하여
CKB는 비트코인의 2층 네트워크로, UTXO 및 POW 디자인을 가지고 있습니다. CKB의 기본 데이터 구조는 Cell이라고 합니다. Cell은 강력한 프로그래밍 가능성을 가진 일반 UTXO입니다.
Cell 구조:
Script 구조:
CKB에 대한 더 많은 정보는 docs.nervos.org에서 확인할 수 있습니다.
바인딩
바인딩이란 Nostr Event와 CKB Cell 사이에 1:1 매핑 관계를 생성하는 것입니다. Event는 자산의 세부 정보를 정의하는 데 사용되며, 이 Event와 상호 매핑되는 Cell은 소유권 보호 및 기타 블록체인 특정 기능을 제공합니다. 이러한 1:1 매핑을 생성하려면 Nostr Event가 CKB Cell을 가리키도록 하고, 그 반대도 마찬가지입니다. Nostr와 CKB 프로토콜의 단순성 덕분에 이러한 바인딩을 생성하는 것은 매우 쉽습니다.
우리가 필요한 것은 단 두 개의 Script입니다
우리는 Nostr 바인딩 프로토콜에서 두 개의 CKB Script를 도입했습니다. 첫 번째는 Nostr 바인딩 Script로, Nostr 프로토콜의 Event를 CKB에 바인딩하는 방법을 정의하는 Type Script입니다. 이는 매우 간단한 Script이지만 바인딩의 핵심 논리를 포함하고 있습니다. 두 번째는 Nostr lock Script로, Nostr Event를 해제 서명으로 사용하는 Lock Script입니다. 이는 사용자 경험을 간소화하고 CKB 기반의 Nostr dApp 구축 과정을 단순화하는 데 사용됩니다.
Nostr 바인딩 Script
Nostr 바인딩 Script는 Nostr 프로토콜의 특정 Event를 체인에 바인딩하는 규칙을 정의하는 Type Script입니다. Nostr 바인딩 Script는 이 Script를 Type Script로 사용하는 Cell이 CKB 블록체인에서 특정 Nostr Event에 바인딩된 유일한 live Cell임을 보장합니다.
바인딩 Script:
- TYPE_ID는 블록체인에서 이러한 type hash를 가진 live Cell이 하나만 존재하도록 보장합니다.
- NOSTREVENTID는 해당 Cell이 오직 하나의 고유한 Nostr Event만 가리키도록 보장합니다.
Nostr 바인딩 Script를 Type Script로 사용하는 Cell은 Nostr Event의 바인딩 Cell입니다.
Nostr 바인딩의 Event 구조:
- celltypeid 태그는 Nostr 자산 Event에서 해당 Event가 오직 하나의 고유한 CKB Cell만 가리키도록 보장합니다.
Nostr 자산 Event는 사용자가 발행한 자산을 나타냅니다. Nostr 자산 메타데이터 Event는 동일한 자산 집합의 메타데이터를 설명하는 데 사용됩니다.
Nostr 자산 메타데이터 Event 구조:
Nostr Lock Script
Nostr lock Script는 Nostr Event를 해제 증명으로 사용하는 Lock Script입니다. 이는 사용자 경험을 간소화하고 CKB 기반의 Nostr dApp 구축 과정을 단순화하는 데 사용됩니다.
Nostr lock Script 구조:
- args는 Nostr 계정의 공개 키로 설정됩니다. 마지막 4바이트에 POW 값을 추가할 수도 있으며, 이는 해제 Event가 특정 POW 난이도를 충족해야 함을 의미합니다.
- args가 32바이트 모두 0일 경우, 이는 아무도 해당 잠금을 해제할 수 없음을 의미합니다.
- 현재 32바이트가 모두 0이고 마지막 4바이트가 비영일 값일 경우, 이는 해당 잠금이 어떤 Nostr 계정에 의해 해제될 수 있음을 의미하며, 해제 Event가 특정 POW 난이도 값을 충족해야 합니다(이는 공정한 발행에 사용될 수 있습니다).
Nostr 해제 Event 구조:
Nostr lock Script를 사용하는 CKB Cell을 해제하려면 거래의 witness 필드에 Nostr 해제 Event를 제공해야 합니다. 사용자는 여러 해제 Event를 생성할 수 있지만, Event가 체인에 업로드될 때 해당 CKB 거래에 대한 태그에 기록되므로 나머지 Event는 자동으로 무효화되어 재전송 위험이 없습니다.
Nostr lock Script는 다중 서명도 지원할 수 있습니다. 그 lock Script args는 Nostr Event ID가 될 수 있습니다. 해당 Event의 Tag 필드는 모든 소유자의 M개의 P 공개 키를 기록합니다. 해제를 위해서는 최소 N개의(N<=M) Nostr 계정이 Nostr unlock Event를 증명으로 제공해야 합니다.
Nostr lock Script의 도움으로 사용자는 Nostr 생태계 클라이언트 및 브라우저 플러그인을 사용하여 직접 서명하고 해제 Event를 서명 증명으로 생성하여 CKB 거래를 해제할 수 있습니다. 따라서 이러한 오프체인 Nostr 생태계 도구의 개발자는 CKB 및 블록체인 관련 코드를 가능한 한 적게 이해하고 도입할 수 있습니다. 동시에 사용자는 거의 "블록체인에 신경 쓰지" 않아도 됩니다. 프로젝트 팀이나 다른 자원봉사자는 특별한 중계를 운영하여 Nostr 네트워크에서 새로운 해제 Event가 있는지 모니터링하고, 있다면 거래를 해석하고 CKB 체인에 제출하여 해제를 도와줄 수 있습니다. 거래 수수료는 일부 잔액을 수수료 Cell로 예약하여 지불할 수 있습니다.
자산 발행
직접 바인딩
사용자: Nostr 계정과 CKB 필요
- CKB Cell을 인덱싱하고 해당 Cell의 TYPE_ID를 계산합니다.
- TYPE_ID를 사용하여 Nostr 서명이 포함된 Nostr 자산 Event를 생성합니다.
- Nostr 자산 Event를 사용하여 CKB 바인딩 거래를 생성하고 체인에 전송합니다.
RGB++를 통한
사용자: Nostr 계정, 비트코인 지갑 및 센트 필요
- UTXO를 인덱싱하고 RGB++를 통해 매핑 Cell을 생성하며 해당 Cell의 TYPE_ID를 계산합니다.
- TYPE_ID를 사용하여 Nostr 서명이 포함된 Nostr 자산 Event를 생성합니다.
- Nostr 자산 Event를 사용하여 CKB 바인딩 거래를 생성하고 체인에 전송합니다.
전송
Nostr 잠금을 사용할 때
사용자: Nostr 계정 필요
- CKB에서 Nostr lock Script를 사용하는 Cell을 인덱싱합니다.
- CKB 거래를 구성하고 다른 lock Script로 해당 Cell을 교체합니다.
- 2단계의 결과를 사용하여 Nostr 클라이언트/브라우저 확장을 통해 Nostr 해제 Event를 생성합니다.
- Nostr 해제 Event를 특별한 중계 그룹에 전송하고 체인에 제출합니다.
다른 잠금을 사용할 때
사용자: 해당 다른 잠금의 지갑을 소유해야 하며, Nostr 관련 작업은 필요하지 않습니다.
CKB/RGB++에서 정상적인 프로세스를 따라 전송을 해제하면 됩니다.
확장성 문제
Nostr 바인딩 프로토콜의 주요 장점은 매우 간단하고 직접적이라는 것입니다. 단순성 덕분에 클라이언트 개발자가 그 위에 제품을 구축하기가 더 쉬워집니다. 반면에 Nostr 바인딩 프로토콜의 단점은 확장성 문제입니다. 이러한 단순한 설계 하에서 Nostr 토큰의 처리량은 CKB 블록체인에 바인딩되므로 CKB 블록체인이 병목 현상이 될 것입니다. Nostr가 대규모 채택을 목표로 하는 더 유연한 소셜 네트워크로서, 미래에 많은 사용자가 이러한 원주율 자산과 상호작용할 경우 이러한 처리량이 문제가 될 수 있습니다.
그러나 우리는 이 문제를 해결할 몇 가지 선택지를 보았습니다:
- CKB 라이트닝 네트워크와 통합
Nostr 바인딩 프로토콜로 생성된 Nostr 원주율 자산은 일반 CKB 자산으로 간주될 수 있으므로, CKB 라이트닝 네트워크가 출시되면 이를 활용하여 Nostr 바인딩 프로토콜을 확장할 수 있습니다. Nostr 바인딩 프로토콜 자체는 어떤 변경도 필요하지 않으며, 이는 무료 기능입니다. 그러나 단점은 CKB 라이트닝 네트워크 출시를 기다려야 한다는 것입니다.
- 간단하지만 유용한 결제 채널 구현
CKB 라이트닝 네트워크가 출시되기 전의 또 다른 선택지는 spillman 채널과 같은 매우 간단하지만 유용한 결제 채널을 구현하는 것입니다. spillman 채널은 단방향 결제 채널로, 구현이 더 간단합니다. 채널에는 지불자와 수취인이 있습니다. 블록체인에 대해 이러한 결제 채널은 그다지 유용하지 않을 수 있지만, Nostr 바인딩 프로토콜의 경우 콘텐츠 제작자와 그들의 팔로워 간의 구독 모델에 매우 적합합니다.
- N 대 1 바인딩 대신 1 대 1 바인딩
1 대 1 바인딩을 생성하는 것과는 달리, 우리는 Nostr Event와 CKB Cell 사이에 N 대 1 바인딩을 생성할 수 있습니다. 즉, 여러 Event를 하나의 Cell에 묶어 확장성을 달성하는 것입니다. 이는 체인에서 매핑 저장 비용이 체인 외부 Nostr Event보다 훨씬 적게 됩니다. 그러나 N 대 1 바인딩의 문제는 묶인 Event의 소유권을 제어하고 분할하기 위한 새로운 패턴을 설계해야 한다는 것입니다. 이는 더 복잡해지며 추가적인 설계 및 구현 작업이 필요합니다.
- RGB 스타일 솔루션
최종 확장성을 달성하는 또 다른 방법은 CKB Cell을 일회성 봉인으로 사용하고 Nostr 프로토콜을 RGB 프로토콜과 유사한 구현 계층으로 만드는 RGB 스타일 솔루션을 만드는 것입니다. 이 솔루션은 토큰 표준만 구현하고 원래 RGB 프로토콜의 일반 스마트 계약 개념을 제외하여 작업 흐름을 단순화할 수 있습니다.
자주 묻는 질문
왜 Nostr를 선택했나요?
Nostr는 암호 기술 기반의 대중 애플리케이션에 이상적인 계층입니다. 이는 매우 간단하고 직접적이며 실용적이고 편견이 없으며 통합하기 쉬운 정보 배포 프로토콜입니다. 많은 web3 프로젝트는 Arweave 및 IPFS와 같은 유사한 것을 사용할 수 있으며, 이들은 완전히 다른 가치관과 이념을 가지고 있습니다. Nostr를 완전히 분산된 P2P 네트워크에 대한 집착 없이 매우 느슨한 프로토콜로 볼 수 있으며, web3 세계에서 토큰 경제 및 인센티브 메커니즘에 대한 과도한 약속이 없기 때문에 Nostr는 더욱 실용적이고 편견이 없습니다.
왜 블록체인 자산을 직접 사용하지 않나요?
사용자가 Nostr 네트워크에서 자신의 원주율 자산을 Event를 기반으로 발행할 수 있도록 하는 것은 Nostr 네트워크에서 기존 블록체인 토큰을 직접 사용하는 것보다 더 간단한 사실에 기반합니다: 가치가 창출되지 않으면 토큰은 의미가 없습니다. 소비자 제품의 경우 대부분의 블록체인 자산은 제품 작업 흐름에서 저항을 초래할 뿐, 제품에 가치를 추가하지 않습니다. 토큰 메커니즘을 제품에 강제로 도입하기보다는 사용자 관점에서 그들이 무엇을 필요로 하는지, 블록체인이 어떤 도움을 줄 수 있는지를 살펴보는 것이 더 좋습니다. 우리는 Event 기반의 원주율 자산이 이러한 방법론에 부합한다고 생각합니다. 애플리케이션 개발자와 사용자는 자산으로 무엇을 할 수 있는지 자신의 관점에서 살펴볼 수 있으며, 기존 블록체인 자산과 규칙을 강제로 받아들이지 않아도 됩니다. 또한 Event 기반 자산은 Nostr 프로토콜과 원활하게 협력하기가 더 쉬워, 기존 Nostr 생태계 제품과 도구에 새로운 플레이를 제공합니다.
왜 CKB를 선택했나요?
CKB의 프로그래밍 가능성 덕분에 CKB에서 바인딩 프로토콜을 구현하는 것이 훨씬 쉽습니다. 비트코인은 더 어렵습니다. 또한 CKB와 BTC의 바인딩 방식이 독특하므로, 먼저 CKB에 바인딩한 후 BTC에 바인딩하는 것이 더 쉽습니다.
결론
전반적으로 Nostr는 간단하고 실용적인 정보 배포 프로토콜로, 소비자 애플리케이션의 대규모 채택에 매우 적합합니다. CKB의 프로그래밍 가능성과 비트코인과의 바인딩 관계는 Nostr 바인딩 프로토콜을 구현하는 데 이상적인 선택이 됩니다. 동시에 Nostr Event를 기반으로 원주율 자산을 발행함으로써 애플리케이션에서 출발하여 새로운 제품 메커니즘을 설계할 수 있어, Nostr가 다른 전통적인 인터넷 애플리케이션과 경쟁하고 독특한 PMF를 찾을 수 있게 합니다.