Autorzy: Ash Li, Noah Ho

Źródło: https://www.spectrumlab.io/zh/reports/erc6551%E7%95%B6nft%E7%A2%B0%E4%B8%8A%E5%90%88%E7%B4%84%E9% 8C%A2%E5%8C%85

Dyskusje na temat protokołu ERC-6551 stopniowo nagrzewają się w społeczności. Protokół ten wnosi ogromny potencjał ekspansji dla NFT. ERC-6551 tworzy unikalny portfel kontraktowy dla każdego NFT za pośrednictwem konta Token Bond (TBA), umożliwiając mu przechowywanie aktywów i rejestrowanie powiązanych działań. Stwarza to możliwość weryfikacji tożsamości tokenów niezamienialnych (NFT) i połączonych NFT. Kopiąc głębiej, możemy odkryć, że ERC-6551 faktycznie zapewnia w pełni funkcjonalny portfel dla NFT, a „kluczem” tego portfela jest sam NFT. W tym artykule dokonamy przeglądu standardowej historii rozwoju NFT i omówimy poprzednie próby rozszerzenia NFT. Ponieważ rdzeniem TBA jest portfel kontraktowy, przedstawimy również krótkie wprowadzenie do portfela kontraktowego. Na koniec zagłębimy się w szczegóły implementacyjne protokołu i jego potencjalne zastosowania.

1. Historia i aktualna sytuacja standardów NFT

Jako specjalny zasób kryptowaluty i sztuki cyfrowej, NFT zapewnia nowy cyfrowy nośnik dzieł sztuki i rozszerza scenariusze zastosowań technologii blockchain. W przeciwieństwie do tradycyjnych tokenów zamiennych, każdy NFT jest unikalny i powiązany z określonymi metadanymi, takimi jak grafika, rekwizyty do gier, muzyka i inne materiały elektroniczne. Dlatego NFT może być używany jako certyfikat własności danych elektronicznych, który można zbierać lub handlować danymi elektronicznymi. 3 maja 2014 roku artysta cyfrowy Kevin McCoy stworzył pierwsze znane dzieło NFT „Quantum”. To pikselowany ośmiokąt złożony z różnych kształtów, renderowany w psychodeliczny sposób. Jednak dopiero pojawienie się ERC-721 (Ethereum Request for Comments 721) umożliwiło NFT naprawdę ujednolicony standard, zapewniający programistom wygodę stosowania w różnych projektach.

ERC-721

ERC-721 jest ściśle powiązany z historią rozwoju CryptoPunks. CryptoPunks ukazało się w 2017 roku i zawierało 10 000 unikalnych obrazów graficznych o wymiarach 24x24 pikseli. To właśnie jego sukces przyciągnął powszechną uwagę programistów i społeczności, dzięki czemu coraz więcej osób zdało sobie sprawę z ogromnego potencjału NFT. Od tego czasu stał się on podstawą wielu projektów NFT i doprowadził do sformułowania standardu ERC-721. Standard został założony przez Dietera Shirleya, CTO w CryptoKitties. W styczniu 2018 roku William Entriken, Dieter Shirley, Jacob Evans i Nastassia Sachs wspólnie zaproponowali standard ERC-721. Ten niezmienny standard tokena implementuje związaną z tokenem ABI w inteligentnych kontraktach, kładąc podwaliny pod tworzenie, zarządzanie i przesyłanie unikalnych zasobów cyfrowych w Ethereum, otwierając nowy rozdział dla artystów, kolekcjonerów i rynku sztuki cyfrowej.

Główne cechy ERC-721 są następujące:

  • Wyjątkowość: W przeciwieństwie do tokenów ERC-20 (które są zamienne i każdy token jest identyczny z każdym innym tokenem), każdy token ERC-721 jest unikalny.

  • Własność i transfer: ten standard tokena umożliwia określenie właściciela dowolnego tokenu i umożliwia właścicielowi lub zatwierdzonej osobie przeniesienie tokena.

  • Powiązanie metadanych: umożliwia powiązanie metadanych z każdym tokenem, które mogą obejmować zdjęcie, opis lub inne istotne właściwości tokena.

Aby zapewnić status standardu, ERC-721 definiuje następujące kluczowe metody i zdarzenia:

  • balanceOf(),ownerOf(),approve(),getApproved(),setApprovalForAll(),isApprovedForAll(),transferFrom() i safeTransferFrom() są wyłączone.

  • oraz zdarzenia, takie jak Transfer() i Approval().

Krótko mówiąc, standard ERC-721 zapewnia mechanizm unikalnych aktywów w Ethereum, zapewniający niepowtarzalność i własność każdego aktywa oraz umożliwiający ich weryfikację, handel i zarządzanie. ERC-721, standard dla niewymiennych tokenów, odniósł ogromny sukces w dziedzinie sztuki cyfrowej i przedmiotów kolekcjonerskich. ERC-721 w istotny sposób definiuje

Jednakże, chociaż umożliwiło to wprowadzenie wielu znanych projektów do aplikacji NFT, nadal istnieją pewne ograniczenia, takie jak brak możliwości działania jako agenci lub bezpośredniego powiązania z innymi zasobami w łańcuchu. Aby rozwiązać te problemy, społeczność zaproponowała szereg rozszerzeń i nowych standardów, z których najbardziej reprezentatywne to EIP3664 i EIP3525.

ERC-3664

Już w maju 2021 r. zespół DRepublic zaproponował EIP-3664, protokół rozszerzania atrybutów NFT. W genialny sposób propozycja ta rozwiązuje ograniczenia głównego nurtu standardów NFT, takich jak ERC-721 lub ERC-1155, takie jak niewystarczająca wyrazistość atrybutów, trudności w integracji pomiędzy NFT i scentralizowane przechowywanie atrybutów.

W szczególności EIP-3664 nie wymaga modyfikacji istniejących standardów ERC-721 i ERC-1155. Dynamicznie dodaje właściwości do NFT za pomocą funkcji wywołania zwrotnego interfejsu IERC721Receiver lub IERC1155Receiver w metodzie mennicy NFT. Można to też zrobić, przepisując metodę rzutowania. Korzystając z tego protokołu, do NFT można przypisać dowolną liczbę atrybutów, bez ograniczeń.

W EIP-3664 wszystkie atrybuty implementują interfejs IERC3664. Podstawowe atrybuty obejmują kilka podstawowych pól, takich jak identyfikator, nazwa, symbol, adres URI, saldo itp., które służą do opisu metadanych NFT. Dzięki EIP-3664 rozszerzenia atrybutów NFT stają się bardziej elastyczne i konfigurowalne. Zapewnia ustandaryzowaną metodę implementacji funkcji atrybutów NFT i bezproblemowo integruje się z istniejącym ekosystemem NFT.

ERC-3525

EIP-3525 wprowadza tokeny półzamienne (SFT), które można postrzegać jako aktywa pomiędzy tokenami zamiennymi (FT) i tokenami niezamiennymi (NFT). Podobnie jak NFT, tokeny SFT można przenosić w stanie nienaruszonym z jednego adresu portfela na drugi. Jednak podobnie jak FT, SFT umożliwia transfer tylko części wartości pomiędzy różnymi tokenami. Na przykład możliwe jest przeniesienie tylko części „życia” ziemi na inną działkę. Bez wątpienia SFT przewyższa FT pod względem dostosowania i przewyższa NFT pod względem wydajności.

ERC3525 umożliwia budowę wielopoziomowych struktur SFT, podobnych do rosyjskich lalek matrioszki, w celu uzyskania bardziej złożonych wirtualnych światów i zdefiniowania zasad interakcji pomiędzy różnymi poziomami. Korzystając z ERC3525, NFT może przenosić dowolną walutę cyfrową. Oznacza to, że tokeny o wartości ekonomicznej można osadzić w NFT, aby uzyskać bogatsze funkcje i metody interakcji. Na przykład transakcja SFT może zawierać transakcję NFT niosącą wartość, a w transakcji NFT można zagnieżdżać inne tokeny. Za pomocą ERC3525 programiści mogą definiować zasady i logikę transakcji SFT za pomocą inteligentnych kontraktów oraz dostosowywać określone reguły zachowań i reguły transakcji. Te cechy sprawiają, że ERC3525 jest jednym z ważnych standardów w dziedzinie NFT, zapewniającym programistom i stronom projektu więcej miejsca na kreatywność.

2. ERC-6551

wprowadzić

Aby zwiększyć skalowalność i praktyczność NFT, propozycja ERC-6551 ma na celu zapewnienie każdemu NFT takich samych praw i interesów jak użytkownicy Ethereum. Oznacza to, że NFT może nie tylko przechowywać aktywa, ale także rejestrować historię transakcji, co znacznie zwiększa zakres jego zastosowania. W ramach tej propozycji posiadacze NFT mogą utworzyć ekskluzywny portfel kontraktowy o nazwie TBA (konto Token Bond) dla swoich NFT w celu wykonywania różnych operacji w łańcuchu. Osiąga się to poprzez zdefiniowanie jednolitego rejestru - Rejestru. Rejestr ten ma na celu przypisywanie unikalnych i stałych adresów kont inteligentnych kontraktów wszystkim NFT i zapewnia, że ​​kontrola nad rachunkiem pozostaje całkowicie w rękach posiadacza NFT. Warto zauważyć, że ta propozycja jest w pełni kompatybilna z istniejącymi standardami ERC-721 lub 1155 bez żadnych modyfikacji, a jednocześnie dostosowuje się do większości infrastruktury obsługującej konta Ethereum.

Ta innowacja zapewnia NFT te same funkcje, co konta Ethereum, otwierając wiele nowych scenariuszy zastosowań dla NFT. Na przykład złożone aktywa w rzeczywistości, takie jak postacie z gier RPG, samochody składające się z wielu części, zdywersyfikowane portfele inwestycyjne, a nawet karty członkowskie, można za pomocą tej propozycji przekształcić w formy NFT. Ponadto ta propozycja jest nie tylko kompatybilna ze wszystkimi istniejącymi standardami aktywów w łańcuchu, ale zapewnia także możliwości rozbudowy o nowe standardy aktywów w przyszłości.

Jak wspomniano powyżej, ERC-6551 umożliwia utworzenie portfela dedykowanego interakcjom w łańcuchu dla każdego NFT. Ten rodzaj portfela różni się od portfeli, których powszechnie używamy na platformach takich jak Metamask. W rzeczywistości jest to portfel kontraktowy, czyli inteligentny kontrakt wdrożony w sieci Ethereum. Zanim zagłębimy się w jego implementację, najpierw zrozummy główne różnice między tymi dwoma portfelami.

Konto kontraktowe

Konto Ethereum to podmiot przechowujący saldo Ethereum (ETH) i mogący wysyłać transakcje w sieci Ethereum. Konta mogą być kontrolowane przez użytkowników lub wdrażane jako inteligentne kontrakty.

Konta w Ethereum posiadają 4 pola:

  • nonce: Licznik używany do wyświetlania liczby transakcji wysłanych przez rachunek zewnętrzny lub liczby umów utworzonych przez rachunek kontraktu. Każde konto może wykonać tylko jedną transakcję o danej wartości jednorazowej, aby zapobiec atakom polegającym na powtarzaniu, które polegają na wielokrotnym rozgłaszaniu i ponownym wykonywaniu podpisanej transakcji.

  • saldo: Model księgowania salda, liczba Wei posiadanych przez ten adres. Wei to jednostka miary dla Ethereum.

  • codeHash: Ten skrót reprezentuje kod konta na maszynie wirtualnej Ethereum (EVM). Konta kontraktowe mają zaprogramowane fragmenty kodu, które mogą wykonywać różne działania. Ten kod EVM jest wykonywany, jeśli konto otrzyma połączenie z wiadomością. W przeciwieństwie do innych pól konta, nie można tego zmienić. Wszystkie fragmenty kodu są zapisywane pod odpowiednim skrótem w bazie danych stanu w celu późniejszego pobrania. Ta wartość skrótu nazywa się codeHash. W przypadku kont zewnętrznych pole codeHash jest skrótem pustego ciągu.

  • StorageRoot: skrót pamięci. Merkle Patricia trie 256-bitowy skrót węzła głównego, który zakodował przechowywaną zawartość konta (mapa 256-bitowych wartości całkowitych) i zakodowany jako trie jako mapa 256-bitowego skrótu Keccaka z 256-bitowej liczby całkowitej klucze do kodowania RLP 256-bitowej wartości całkowitej. Ta Trie koduje skrót zawartości pamięci tego konta i jest domyślnie pusta.

Istnieją dwa rodzaje kont Ethereum: konta zewnętrzne (klucze prywatne zarządzane przez użytkownika) i konta kontraktowe.

  1. Konta zewnętrzne (EOA): kontrolowane przez klucz prywatny, jego codeHash jest pusty. Takie konta mogą wysyłać i odbierać kryptowaluty oraz wchodzić w interakcję z inteligentnymi kontraktami. Do tego należy nasz powszechnie używany portfel Metamask.

  2. Konto kontraktowe (CA): Nie ma klucza prywatnego, a jego codeHash nie jest pusty. Jest to inteligentny kontrakt wdrożony w sieci Ethereum, który kontroluje portfel kontraktów za pośrednictwem zewnętrznych kont wchodzących w interakcję z kontraktem.

W CA istnieją standardowe portfele kontraktowe, takie jak portfele abstrakcyjne kont ERC4337, oraz portfele Native typu AA, takie jak sieci ZkSync i StarkNet, w których nie ma tradycyjnych transakcji, a wszystkie konta są kontami kontraktowymi. Obecnie portfel ma problemy z prawami własności i podpisami. Na przykład klucz prywatny jest trudny do ochrony. Użytkownicy stracą wszystkie swoje aktywa, jeśli stracą klucz prywatny. Istnieją również problemy ze zbyt małym algorytmem podpisu i uprawnieniami jest zbyt wysoka. Dodatkowo opłatę manipulacyjną można uregulować wyłącznie w jednej walucie poprzez płatność ETH.

Bez zmiany warstwy protokołu konsensusu może pomóc Ethereum w kierunku abstrakcji kont. ERC4337 może zrealizować aktualizację abstrakcji kont poprzez inteligentne kontrakty, od pierwotnej inicjacji całej transakcji do jej włączenia do całego łańcucha bloków został zaktualizowany i zmieniony, a także wprowadzono UserOperation w celu opisania struktury transakcji wysyłanych w imieniu użytkowników. Bundler będzie pakował transakcje w tych pulach pamięci, aby zmniejszyć koszty transakcji użytkowników. Scenariusz z wieloma podpisami jest pełniejszy, aby osiągnąć poprawę sytuacji społecznej itp. Ulepszenia funkcjonalne.

osiągać

Zgodnie ze standardem ERC-6551 posiadacze NFT mogą wdrożyć nowy inteligentny kontrakt, a mianowicie TBA, w sieci Ethereum lub innych łańcuchach bloków obsługiwanych przez EVM, wchodząc w interakcję z umową rejestru. Własność TBA należy do posiadacza NFT i ulegnie zmianie wraz z przeniesieniem NFT. Tylko posiadacz NFT może kontrolować ten TBA. Kodeks TBA, jego zasady, wywodzą się z zaproszenia do Umowy Wykonawczej.

Poniższa ilustracja pokazuje, jak działa ERC-6551: Załóżmy, że użytkownik jest posiadaczem NFT, a jego konto użytkownika posiada dwie NFT, nr 123 w ramach Umowy A i nr 456 w ramach Umowy B. Konto Użytkownika wchodzi w interakcję z rejestrem bez uprawnień, czyli Umową Rejestru, i wprowadza informacje NFT oraz adres umowy w celu utworzenia TBA. Gdy Konto Użytkownika wywoła umowę rejestracyjną, wprowadź informacje NFT Tokena#123i adres Implementacji A (0x321…), a portfel kontraktowy Konto A (0x123…) zostanie utworzone. Jego własność należy do posiadacza tokenu NFT nr 123, a jego funkcje i zasady wywodzą się z postanowień Implementacji A. Gdy Konto Użytkownika ponownie wywoła umowę rejestracyjną i zmieni wprowadzoną treść, generowany jest kolejny TBA. Jednak w przypadku konkretnej umowy NFT i umowy wdrożeniowej może istnieć tylko jeden unikalny odpowiadający TBA.

Utworzenie i zachowanie TBA jest całkowicie zależne od umowy rejestracyjnej i umowy wdrożeniowej. Zasady zawarte w tych umowach określają cechy i funkcje TBA. EIP-6551 udostępnia szablony kodów dla tych umów. Zagłębimy się w te szablony w kolejnych sekcjach. Jednak te szablony nie są jedynymi opcjami; ich kod określa sposób wdrożenia i funkcjonalności TBA. Daje to deweloperom szerokie możliwości rozbudowy. Na przykład umowa rejestracyjna może określać, które NFT kwalifikują się do rejestracji za pomocą umowy rejestracyjnej. Umowa wdrożeniowa może określać funkcje i zasady TBA, takie jak ustalenie dziennego limitu transakcji TBA czy określenie rodzajów aktywów, jakie może posiadać.

Umowa wdrożeniowa

Wszystkie TBA utworzone poprzez rejestrację umowy mogą wybrać umowę wdrożeniową, którą chcą zastosować dla konta. Umowa wdrożeniowa rejestruje funkcje i zasady konta inteligentnej umowy. Musi realizować co najmniej następujące funkcje:

wykonywaniaCall(): Funkcja używana do wykonywania dowolnej funkcji inteligentnego kontraktu, która wchodzi w interakcję z kontraktem zewnętrznym. Na przykład, aby sprzedać uwzględnione aktywa na koncie powiązanym z NFT, konieczne może być wywołanie funkcji w umowie Uniswap. executeCall pozwala na wywołanie tej funkcji w imieniu Twojego inteligentnego konta kontraktowego, umożliwiając kupno, sprzedaż/wymianę dowolnych aktywów.

token(): Funkcja widoku tylko do odczytu, która zwraca identyfikator NFT będącego właścicielem konta powiązanego z tokenem. Zwraca identyfikator łańcucha (czy NFT znajduje się w sieci głównej, Polygon, Optimism itp.), adres kontraktu NFT i identyfikator tokena NFT.

właściciel(): Zwraca adres właściciela NFT, który kontroluje konto powiązane z tokenem. Wzorem powyższego przykładu będzie to adres Konta Użytkownika.

nonce(): Zwraca bieżącą wartość jednorazową tego portfela inteligentnych kontraktów. Każda udana transakcja zwiększy wartość jednorazową o 1, przy wartości początkowej wynoszącej 0.

Wreszcie, choć nie jest to wywołanie funkcji, umowa implementacyjna, która wiąże konto z tokenem, musi mieć funkcję odbierania (), aby móc odebrać natywny zasób (taki jak ETH) bezpośrednio na jego adres.

Zarejestruj umowę

Poniżej znajduje się inteligentna umowa rejestru napisana w języku Solidity:

Ten kod może pokazać, że parametry wymagane do utworzenia konta dla określonego NFT obejmują adres kontraktu wykonania implementacji, chainId identyfikator łańcucha docelowego, tokenContract odpowiadający kontraktowi, do którego należy NFT, tokenId odpowiadający identyfikatorowi, do którego należy Należy NFT i sól wartości zaciemniającej. Aby utworzyć konto NFT w oparciu o wersję demonstracyjną Fast Dapp, wystarczy podać adres i identyfikator umowy NFT, a pozostałe pola zostaną wygenerowane automatycznie. Kroki są stosunkowo proste.

Propozycja ERC-6551 to nowy standard Tokena, który jest wywrotową aktualizacją oryginalnego standardu NFT ERC-6551 wykorzystuje rejestr bez uprawnień, który jest kompatybilny z istniejącym ERC-721 NFT. Rejestr to inteligentny kontrakt, który służy jako fabryka i katalog dla TBA. Każdy może utworzyć TBA dla dowolnego tokena ERC-721, wywołując funkcję w rejestrze i uiszczając niewielką opłatę. Inteligentna umowa rejestru ma dwie funkcje:

createAccount: wdraża nowe konto powiązane z tokenem dla danego NFT ERC-721 i konkretnej implementacji.

konto: Funkcja widoku tylko do odczytu, która zwraca adres konta powiązanego z tokenem dla danego ERC-721 NFT i podana jest jego implementacja.

potencjalne zastosowania

Od czasu incydentu w Azuki pojedyncze statyczne obrazy NFT stały się znacznie mniej atrakcyjne, co spowodowało spadek wartości wielu czołowych projektów. Jednakże NFT, które są wysoce interaktywne i łatwe do komponowania, mogą okazać się kluczem do ożywienia rynku. Od gier typu blockchain, muzyki, DID po metaświat – te dziedziny są pełne nieskończonego potencjału.

NFT to coś więcej niż tylko zasoby; mają także własną tożsamość w łańcuchu i właściwości kontenera oraz mogą wchodzić w interakcje ze zdecentralizowanymi aplikacjami (Dapps). Oznacza to, że wszystkie interakcje z NFT są rejestrowane bezpośrednio w samej transakcji NFT, a nie na koncie jej posiadacza. Ponadto, ponieważ transakcje NFT opierają się na inteligentnych kontraktach, ich zachowanie i interakcje można definiować i kontrolować za pomocą zasad umów, co zapewnia elastyczność i bezpieczeństwo.

Protokół ERC-6551 przyniósł rewolucyjne zmiany w dziedzinie NFT, przenosząc punkt ciężkości z portfeli użytkowników na sam NFT, zapewniając nowe możliwości transakcji, gier, identyfikowalności i zarządzania. Wraz z dalszym rozwojem NFT protokół ten wprowadzi nas w bardziej spersonalizowaną, interaktywną i znaczącą erę cyfrową.

Rozważ następujące cztery potencjalne kierunki zastosowań:

  1. Pakowanie aktywów: NFT może służyć jako pojemnik na aktywa, umożliwiając pakowanie i handel wieloma aktywami w jednym NFT. Na przykład album muzyczny NFT może zawierać wiele utworów NFT, a kolekcja dzieł sztuki NFT może zawierać wiele utworów NFT. To nie tylko sprawia, że ​​zbiórka jest bardziej systematyczna, ale także zmniejsza opłaty za gaz podczas handlu.

  2. Portfel inwestycyjny: NFT może być używany jako narzędzie do zarządzania aktywami, umożliwiające użytkownikom przechowywanie wielu tokenów i zarządzanie nimi w TBA. Ponadto posiadacze NFT mogą również upoważniać zewnętrznych menedżerów do przeprowadzania transakcji na aktywach i jasno określać uprawnienia menedżera w inteligentnych kontraktach, aby zapewnić bezpieczeństwo aktywów.

  3. Zarządzanie tożsamością NFT: NFT może rejestrować wszystkie swoje działania w łańcuchu, co czyni go prawdziwą tożsamością w łańcuchu. Użytkownicy mogą używać jednego portfela ENS do reprezentowania siebie i używać różnych TBA do reprezentowania swoich ról w różnych społecznościach lub aplikacjach.

  4. Modułowe NFT: Główny NFT może wygenerować TBA, w którym przechowywane są jego składowe NFT. Przykładowo w grze postać NFT może być wyposażona w różne wyposażenie NFT. To nie tylko sprawia, że ​​realizacja Metaverse staje się bardziej możliwa, ale można je również połączyć z sztuczną inteligencją, aby stworzyć bardziej realistyczne postacie NPC.

Krótko mówiąc, przyszłość NFT jest pełna nieskończonych możliwości. Od zarządzania aktywami, przez weryfikację tożsamości, po modułowe projektowanie gier – będą odgrywać kluczową rolę w cyfrowym świecie.