Członek społeczności CKB, Retric, zaproponował protokół wiązania Nostr

Oryginalny artykuł został opublikowany na Githubie https://github.com/RetricSu/nostr-binding/blob/main/docs/lightpaper-zh.md

W tym artykule proponujemy protokół, który wiąże podstawowe struktury danych w protokole Nostr z blockchainem CKB. Dzięki temu powiązaniu umożliwiamy natywnym danym Nostr dziedziczenie charakterystyki UTXO/Cell na łańcuchu bloków CKB, wprowadzając nowe możliwości protokołu Nostr w oparciu o mechanizmy on-chain. Jednym z potencjalnych przypadków użycia jest wydawanie zasobów natywnych na Nostr. Protokół wiązania Nostr wprowadza także nowy paradygmat programowania do dApps. Zamiast dzielić Twoją dApp na dwa systemy (jeden to serwer poza łańcuchem, a drugi to inteligentny kontrakt w łańcuchu), budujemy dApps przy użyciu spójnego systemu z różnymi poziomami danych. Różni się to zasadniczo od modelu Ethereum.

Trójpoziomowa struktura Web5:

O Nostr

Nostr to prosty i otwarty protokół dystrybucji wiadomości, który wykorzystuje model klienta-przekaźnika do dystrybucji standardowych wiadomości w sieciach globalnych. Model klient-przekaźnik jest podobny do sieci P2P w łańcuchu bloków, ale jest tańszy, bardziej elastyczny, bardziej praktyczny (i bardziej scentralizowany) i lepiej dostosowany do masowego wdrażania aplikacji klasy konsumenckiej. Standardowe komunikaty są podstawową innowacją Nostr. Nostr definiuje standardowy format komunikatu oparty na JSON (ten format komunikatu jest jednocześnie podstawową strukturą danych protokołu) do opisywania różnych danych. Nazywa się to „Wydarzenie”.

Struktura wydarzenia:

Zdarzenie to fragment danych zawierający dowolną treść, podpisany przez użytkownika, dzięki czemu można go zweryfikować po stronie klienta bez konieczności ufania jakimkolwiek serwerom przekazującym. Wszystkie wiadomości, które publikujesz w protokole Nostr, są Zdarzeniami różnego rodzaju i wymagań. Więcej o Nostr można dowiedzieć się z NIP-ów.

O CKB

CKB to sieć drugiej warstwy Bitcoina o konstrukcji podobnej do UTXO i POW. Podstawowa struktura danych CKB nazywa się Cell. Cell to uniwersalny UTXO z dużą programowalnością.

Struktura komórkowa:

Struktura skryptu:

Więcej informacji na temat CKB można znaleźć na stronie docs.nervos.org.

wiążący

Tak zwane powiązanie polega na utworzeniu relacji mapowania jeden do jednego pomiędzy zdarzeniem Nostr a komórką CKB. Zdarzenia służą do definiowania szczegółów Twoich zasobów, a komórki mapujące to zdarzenie służą do zapewnienia ochrony własności i innych funkcji specyficznych dla blockchain. Aby utworzyć to mapowanie jeden do jednego, musisz mieć punkt zdarzenia Nostr na komórkę CKB i odwrotnie. Ze względu na prostotę protokołów Nostr i CKB utworzenie tego powiązania jest bardzo łatwe.

Jedyne czego potrzebujemy to dwa Skrypty

Wprowadziliśmy dwa skrypty CKB w protokole wiązania Nostr. Pierwszym z nich jest skrypt wiązania Nostr, będący skryptem typu definiującym metody wiązania zdarzeń z protokołu Nostr do CKB. Jest to bardzo prosty skrypt, ale obejmuje podstawową logikę wiązania. Drugi to skrypt blokady Nostr, skrypt blokady wykorzystujący wydarzenie Nostr jako sygnaturę odblokowania. Służy do uproszczenia doświadczenia użytkownika i procesu tworzenia Nostr dApps w oparciu o CKB.

Skrypt wiążący Nostr

Skrypt wiązania Nostr to skrypt typu używany do definiowania reguł wiązania pewnych specjalnych zdarzeń z protokołu Nostr z łańcuchem. Skrypt wiązania Nostr zapewnia, że ​​komórka używająca tego skryptu jako skryptu typu jest jedyną żywą komórką, która istnieje w łańcuchu bloków CKB i jest powiązana z określonym zdarzeniem Nostr.

wiążący skrypt:

  • TYPE_ID służy do zapewnienia, że ​​tylko jedna żywa komórka w łańcuchu bloków ma skrót tego typu

  • NOSTR_EVENT_ID służy do zapewnienia, że ​​komórka wskazuje tylko na unikalne zdarzenie Nostr

Komórka używająca skryptu wiążącego Nostr jako skryptu typu jest komórką wiążącą zdarzenia Nostr.

Struktura wydarzenia ograniczona przez Nostr:

  • Znacznik cell_type_id w zdarzeniu aktywów Nostr zapewnia, że ​​zdarzenie wskazuje tylko unikalną komórkę CKB

Wydarzenie dotyczące zasobów Nostr Prezentuje zasób stworzony przez użytkownika. Metadane aktywów Nostr Metadane zdarzeń używane do opisu tego samego zbioru aktywów.

Metadane zasobu Nostr Struktura zdarzenia:

Skrypt blokady Nostr

Skrypt blokady Nostr to skrypt blokady, który wykorzystuje zdarzenie Nostr jako dowód odblokowania. Służy do uproszczenia doświadczenia użytkownika i procesu tworzenia Nostr dApps w oparciu o CKB.

Blokada Nostr Struktura skryptu:

  • args jest ustawiony na klucz publiczny konta Nostr. Możesz także dodać wartość POW w ostatnich 4 bajtach, co oznacza, że ​​aby odblokować wydarzenie, należy spełnić określony poziom trudności POW.

  • Gdy argumenty mają 32 bajty i wszystkie są równe 0, oznacza to, że nikt nie może odblokować zamka.

  • Kiedy wszystkie pierwsze 32 bajty mają wartość 0, a ostatnie 4 bajty są niezerowe, oznacza to, że zamek może zostać odblokowany przez dowolne konto Nostr, o ile zdarzenie odblokowania spełnia określoną wartość trudności POW (można to wykorzystać do uczciwych wydanie)

Nostr odblokowuje strukturę wydarzenia:

Aby odblokować komórkę CKB za pomocą skryptu blokady Nostr, w polu świadka transakcji należy podać zdarzenie odblokowania Nostr. Użytkownicy mogą wygenerować wiele zdarzeń odblokowujących, ale ponieważ zdarzenie zarejestruje odpowiednią transakcję CKB w tagu po przesłaniu do łańcucha, pozostałe zdarzenia automatycznie stracą ważność, więc nie ma ryzyka powtórki.

Skrypt blokady Nostr może również obsługiwać wiele podpisów. Argumenty skryptu blokady mogą być identyfikatorem zdarzenia Nostr. Pole Tag tego zdarzenia rejestruje wszystkie klucze publiczne właściciela MP. Odblokowanie wymaga co najmniej N (N<=M) kont Nostr w celu dostarczenia zdarzenia odblokowania Nostr jako dowodu.

Za pomocą skryptu blokady Nostr użytkownicy mogą używać ekologicznego klienta Nostr i wtyczki do przeglądarki do bezpośredniego podpisywania i generowania odblokowanych wydarzeń jako dowodów podpisu w celu odblokowania transakcji CKB, dzięki czemu twórcy tych ekologicznych narzędzi Nostr poza łańcuchem mogą wiedzieć tak mało, jak możliwe I wprowadź kod związany z CKB i blockchain. Jednocześnie użytkownicy mogą niemal „nie przejmować się” blockchainem. Strona projektu lub inni wolontariusze mogą uruchomić specjalny przekaźnik, aby monitorować, czy w sieci Nostr pojawiają się nowe zdarzenia odblokowania, a jeśli tak, pomóc w analizie transakcji i przesłaniu ich do łańcucha CKB w celu odblokowania. Opłaty transakcyjne można uiszczać za pośrednictwem komórek, które rezerwują część swojego salda jako opłaty manipulacyjne.

Wydaj aktywa

wiązanie bezpośrednie

Użytkownik: Wymaga konta Nostr i CKB

  1. Indeksuj komórkę CKB i oblicz TYPE_ID komórki

  2. Wygeneruj zdarzenie zasobu Nostr z podpisem Nostr przy użyciu TYPE_ID

  3. Użyj zdarzenia aktywów Nostr, aby wygenerować transakcję wiążącą CKB i wysłać ją do sieci

przez RGB++

Użytkownik: Wymaga konta Nostr, portfela Bitcoin i Satoshi

  1. Indeksuj UTXO, wygeneruj mapowanie komórki poprzez RGB++ i oblicz TYPE_ID komórki

  2. Wygeneruj zdarzenie zasobu Nostr z podpisem Nostr przy użyciu TYPE_ID

  3. Użyj zdarzenia aktywów Nostr, aby wygenerować transakcję wiążącą CKB i wysłać ją do sieci

przenosić

Podczas blokowania za pomocą Nostr

Użytkownik: wymagane konto Nostr

  • Indeksuj komórkę, którą chcesz odblokować, za pomocą skryptu blokady Nostr na CKB

  • Skonstruuj transakcję CKB i zastąp tę komórkę innym skryptem blokady

  • Korzystając z wyników z kroku 2, wygeneruj zdarzenie odblokowania Nostr poprzez rozszerzenie klienta/przeglądarki Nostr

  • Wyślij zdarzenie odblokowania Nostr do specjalnej grupy przekaźników i prześlij je do łańcucha

Podczas korzystania z innych zamków

Użytkownik: Musisz mieć portfel odpowiadający innym zamkom, nie są wymagane żadne operacje związane z Nostr

Aby odblokować transfer, wystarczy wykonać normalny proces na CKB/RGB++.

Problemy ze skalowalnością

Główną zaletą protokołu wiązania Nostr jest to, że jest on bardzo prosty i bezpośredni. Prostota ułatwia także programistom klientów tworzenie na ich podstawie produktów. Z drugiej strony wadą protokołu wiązania Nostr jest problem skalowalności. W tym prostym projekcie przepustowość tokena Nostr jest powiązana z łańcuchem bloków CKB, więc łańcuch bloków CKB stanie się wąskim gardłem. Biorąc pod uwagę, że Nostr został zaprojektowany jako bardziej elastyczna sieć społecznościowa nastawiona na masową adopcję, przepustowość ta może stać się problemem w przyszłości, gdy duża liczba użytkowników będzie wchodzić w interakcję z natywnymi zasobami.

Widzimy jednak kilka opcji rozwiązania tego problemu:

  1. Zintegrowany z siecią CKB Lightning

Ponieważ natywne zasoby Nostr utworzone przez protokół wiązania Nostr można traktować jak zwykłe zasoby CKB, możemy ich użyć do rozszerzenia protokołu wiązania Nostr po uruchomieniu sieci CKB Lightning Network. Sam protokół wiązania Nostr nie wymaga żadnych zmian, jest funkcją bezpłatną. Ale wadą jest to, że trzeba poczekać na uruchomienie sieci CKB Lightning Network.

  1. Wdrożyj prosty, ale użyteczny kanał płatności

Inną opcją przed uruchomieniem CKB Lightning Network jest wdrożenie kilku bardzo prostych, ale przydatnych kanałów płatności, takich jak kanały przelewowe. Kanał przelewowy to jednokierunkowy kanał płatności, który jest prostszy do wdrożenia. W kanale występuje płatnik i odbiorca. Ten rodzaj kanału płatności może nie być zbyt przydatny w przypadku blockchainu, ale w przypadku protokołu wiążącego Nostr idealnie wpisuje się w model subskrypcji pomiędzy twórcami treści a ich obserwującymi.

  1. Wiązanie N do 1 zamiast wiązania 1 do 1

Zamiast tworzyć powiązanie 1 do 1, możemy utworzyć powiązanie N do 1 pomiędzy zdarzeniem Nostr a komórką CKB. Innymi słowy, w celu zapewnienia skalowalności łączymy wiele zdarzeń w komórkę. Dzięki temu koszt przechowywania map w łańcuchu będzie znacznie niższy niż w przypadku wydarzenia Nostr poza łańcuchem. Jednak problem z wiązaniem N do 1 polega na tym, że wymaga zaprojektowania nowego wzorca w celu kontrolowania i dzielenia własności powiązanych zdarzeń. Będzie to bardziej złożone i będzie wymagało dodatkowych prac projektowych i wdrożeniowych.

  1. Rozwiązanie w stylu RGB

Innym sposobem na osiągnięcie najwyższej skalowalności jest stworzenie rozwiązania w stylu RGB, wykorzystującego komórkę CKB jako jednorazową pieczęć i czyniącego protokół Nostr warstwą implementacyjną podobną do protokołu RGB. To rozwiązanie upraszcza przepływ pracy, decydując się na wdrożenie wyłącznie standardu tokena i wykluczenie ogólnych koncepcji inteligentnych kontraktów z oryginalnego protokołu RGB.

Często Zadawane Pytania

Dlaczego warto wybrać Nostr?

Nostr to idealna warstwa do zastosowań masowych opartych na kryptografii. Jest to super prosty, bezpośredni, praktyczny, bezstronny i łatwy do zintegrowania protokół dystrybucji informacji. Wiele projektów web3 może wykorzystywać rzeczy takie jak Arweave i IPFS, które wyznają zupełnie inne wartości i filozofie. Można myśleć o Nostr jako o bardzo luźnym protokole, bez obsesji na punkcie w pełni zdecentralizowanej sieci P2P ani nadmiernego zaangażowania w ekonomię tokenów i mechanizmy motywacyjne, które od dawna istnieją w świecie web3, co czyni Nostr bardziej praktycznym i nieoceniającym.

Dlaczego nie wykorzystać po prostu zasobów blockchain?

Umożliwienie użytkownikom emitowania własnych, natywnych zasobów w sieci Nostr w oparciu o zdarzenia, zamiast bezpośrednio korzystać z istniejących tokenów blockchain w sieci Nostr, opiera się głównie na prostym fakcie, że jeśli nie zostanie utworzona żadna wartość, tokeny nie będą miały żadnej wartości. W przypadku produktów konsumenckich większość zasobów blockchain po prostu powoduje tarcia w przepływie pracy produktu, zamiast dodawać wartość do produktu. Zamiast wciskać mechanizm tokena w produkt, lepiej spojrzeć na perspektywę użytkownika i zobaczyć, czego potrzebuje i jak blockchain może pomóc. Wierzymy, że natywne zasoby oparte na zdarzeniach pasują do tej metodologii. Twórcy aplikacji i użytkownicy mogą zobaczyć, co mogą zrobić z zasobami z własnej perspektywy, zamiast zmuszać ich do akceptowania istniejących zasobów i zasad blockchain. Ponadto zasoby oparte na wydarzeniach z większym prawdopodobieństwem będą bezproblemowo współpracować z protokołem Nostr, wprowadzając nowe sposoby gry do istniejących produktów i narzędzi ekosystemu Nostr.

Dlaczego wybrać CKB?

Implementacja protokołów wiązania przy użyciu CKB jest znacznie łatwiejsza ze względu na jego programowalność. Bitcoin jest jeszcze trudniejszy. Dodatkowo, biorąc pod uwagę wyjątkowy sposób powiązania CKB z BTC, łatwiej byłoby połączyć się najpierw z CKB, a następnie z BTC.

Wniosek

Ogólnie rzecz biorąc, Nostr, jako prosty i praktyczny protokół dystrybucji informacji, doskonale nadaje się do zastosowania na dużą skalę w aplikacjach konsumenckich. Programowalność CKB i powiązanie z Bitcoinem sprawiają, że jest to idealny wybór do wdrożenia protokołu wiązania Nostr. Jednocześnie wydając natywne aktywa oparte na Nostr Event, można projektować nowe mechanizmy produktowe w oparciu o aplikacje, dzięki czemu Nostr może konkurować z innymi tradycyjnymi aplikacjami internetowymi i znajdować swój własny, unikalny PMF.