Autor: Ash Li, Noah Ho
Fonte: 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
As discussões sobre o protocolo ERC-6551 estão gradualmente esquentando na comunidade. Este protocolo traz um enorme potencial de expansão para o NFT. ERC-6551 cria uma carteira de contrato exclusiva para cada NFT por meio de uma conta Token Bond (TBA), permitindo manter ativos e registrar ações relacionadas. Isto cria a possibilidade de verificação de identidade de Tokens Não Fungíveis (NFTs) e NFTs combinados. Indo mais fundo, podemos descobrir que o ERC-6551, na verdade, fornece uma carteira totalmente funcional para NFTs, e a “chave” dessa carteira é o próprio NFT. Este artigo revisará o histórico de desenvolvimento padrão do NFT e cobrirá tentativas anteriores de expansão do NFT. Como o núcleo do TBA é a carteira de contratos, também daremos uma breve introdução à carteira de contratos. Por fim, nos aprofundaremos nos detalhes de implementação do protocolo e suas aplicações potenciais.
1. História e situação atual dos padrões NFT
Como uma criptomoeda especial e um ativo de arte digital, o NFT fornece um novo suporte digital para obras de arte e expande os cenários de aplicação da tecnologia blockchain. Ao contrário dos tokens fungíveis tradicionais, cada NFT é único e está associado a metadados específicos, como obras de arte, acessórios de jogos, música e outros materiais eletrônicos. Portanto, o NFT pode ser usado como um certificado de propriedade de dados eletrônicos para as pessoas coletarem ou negociarem. Em 3 de maio de 2014, o artista digital Kevin McCoy criou a primeira obra NFT conhecida, "Quantum". É um octógono pixelado feito de várias formas, apresentado de forma psicodélica. No entanto, foi somente com o surgimento do ERC-721 (Ethereum Request for Comments 721) que o NFT realmente teve um padrão unificado, proporcionando comodidade para os desenvolvedores aplicarem em diferentes projetos.

ERC-721
O ERC-721 está intimamente ligado à história de desenvolvimento dos CryptoPunks. CryptoPunks foi lançado em 2017 e inclui 10.000 imagens exclusivas de arte de 24x24 pixels. Foi o seu sucesso que atraiu a atenção generalizada dos desenvolvedores e da comunidade, fazendo com que mais pessoas percebessem o enorme potencial do NFT. Desde então, tornou-se o modelo para muitos projetos NFT e levou à formulação do padrão ERC-721. O padrão foi fundado por Dieter Shirley, CTO da CryptoKitties. Em janeiro de 2018, William Entriken, Dieter Shirley, Jacob Evans e Nastassia Sachs propuseram conjuntamente o padrão ERC-721. Este padrão de token não fungível implementa ABI relacionado a token em contratos inteligentes, estabelecendo as bases para a criação, gerenciamento e transferência de ativos digitais exclusivos no Ethereum, abrindo um novo capítulo para artistas, colecionadores e o mercado de arte digital.

As principais características do ERC-721 são as seguintes:
Exclusividade: Ao contrário dos tokens ERC-20 (que são fungíveis e cada token é idêntico a todos os outros tokens), cada token ERC-721 é único.
Propriedade e transferência: Este padrão de token permite que o proprietário de qualquer token seja determinado e permite que o proprietário ou indivíduo aprovado transfira o token.
Associação de Metadados: Permite que metadados sejam associados a cada token, que pode incluir uma imagem, descrição ou outras propriedades relevantes do token.
Para garantir o seu status como padrão, o ERC-721 define os seguintes métodos e eventos principais:
Métodos como balanceOf(), OwnerOf(), aprovar(), getApproved(), setApprovalForAll(), isApprovedForAll(), transferFrom() e safeTransferFrom().
e eventos como Transfer() e Approval().
Resumindo, o padrão ERC-721 fornece um mecanismo para ativos únicos no Ethereum, garantindo a singularidade e propriedade de cada ativo e permitindo que sejam verificados, negociados e gerenciados. ERC-721, o padrão para tokens não fungíveis, alcançou um sucesso explosivo nas áreas de arte digital e itens colecionáveis. ERC-721 define de forma importante
No entanto, embora tenha trazido muitos projetos famosos para aplicações NFT, ainda existem algumas limitações, como não poderem operar como agentes ou estar diretamente relacionados a outros ativos da rede. Para resolver estes problemas, a comunidade propôs uma série de extensões e novos padrões, sendo os mais representativos o EIP3664 e o EIP3525.
ERC-3664
Já em maio de 2021, a equipe DRepublic propôs o EIP-3664, um protocolo de extensão de atributos NFT. De forma engenhosa, esta proposta resolve as limitações dos principais padrões NFT, como ERC-721 ou ERC-1155, como expressividade insuficiente de atributos, dificuldade de integração entre NFTs e armazenamento centralizado de atributos.
Especificamente, o EIP-3664 não requer modificações nos padrões ERC-721 e ERC-1155 existentes. Ele adiciona propriedades dinamicamente ao NFT usando a função de retorno de chamada da interface IERC721Receiver ou IERC1155Receiver no método mint do NFT. Ou isso pode ser feito reescrevendo o método de conversão. Usando este protocolo, um NFT pode ter qualquer número de atributos anexados a ele, sem limite.
No EIP-3664, todos os atributos implementam a interface IERC3664. Os atributos básicos incluem vários campos básicos, como ID, nome, símbolo, endereço URI, saldo, etc., que são usados para descrever os metadados do NFT. Com o EIP-3664, as extensões de atributos NFT tornam-se mais flexíveis e personalizáveis. Ele fornece um método de implementação padronizado para funções de atributos NFT e integra-se perfeitamente ao ecossistema NFT existente.
ERC-3525
EIP-3525 introduz tokens semifungíveis (SFT), que podem ser vistos como ativos entre tokens fungíveis (FT) e tokens não fungíveis (NFT). Semelhante aos NFTs, os tokens SFT podem ser transferidos intactos de um endereço de carteira para outro. Mas, semelhante ao FT, o SFT permite que apenas parte do valor seja transferida entre diferentes tokens. Por exemplo, é possível transferir apenas parte da “vida” de um terreno para outro terreno. Sem dúvida, o SFT supera o FT em customização e supera o NFT em eficiência.

O ERC3525 permite a construção de estruturas SFT multinível, semelhantes às bonecas matryoshka russas, para alcançar mundos virtuais mais complexos e definir regras de interação entre diferentes níveis. Ao usar o ERC3525, o NFT pode transportar qualquer moeda digital. Isso significa que tokens com valor econômico podem ser incorporados em NFT para obter funções e métodos de interação mais ricos. Por exemplo, um SFT pode conter um NFT que carrega valor e outros tokens podem ser aninhados no NFT. Por meio do ERC3525, os desenvolvedores podem definir as regras e a lógica do SFT por meio de contratos inteligentes e personalizar regras comportamentais e regras de transação específicas. Essas características tornam o ERC3525 um dos padrões importantes no campo NFT, proporcionando aos desenvolvedores e partes do projeto mais espaço para criatividade.
2.ERC-6551
introduzir
A fim de aumentar a escalabilidade e praticidade do NFT, a proposta ERC-6551 visa dar a cada NFT os mesmos direitos e interesses dos usuários do Ethereum. Isso significa que o NFT pode não apenas manter ativos, mas também registrar o histórico de transações, aumentando muito seu escopo de aplicação. Sob esta proposta, os titulares de NFT podem criar uma carteira de contrato exclusiva chamada TBA (Token Bond Account) para que seu NFT realize diversas operações na cadeia. Isto é conseguido através da definição de um registro unificado - Registro. Este registro é dedicado a atribuir endereços de conta de contrato inteligente únicos e fixos a todos os NFTs e garantir que o controle da conta permaneça inteiramente nas mãos do titular do NFT. Notavelmente, esta proposta é totalmente compatível com os padrões ERC-721 ou 1155 existentes sem quaisquer modificações, ao mesmo tempo que se adapta à maioria das infraestruturas que suportam contas Ethereum.
Esta inovação fornece ao NFT as mesmas funções das contas Ethereum, abrindo muitos novos cenários de aplicação para NFT. Por exemplo, ativos complexos na realidade, como personagens de jogos de RPG, carros compostos de múltiplas peças, carteiras de investimentos diversificadas e até mesmo cartões de membro, podem ser todos convertidos em formatos NFT por meio desta proposta. Além disso, esta proposta não só é compatível com todos os padrões de ativos em cadeia existentes, mas também oferece possibilidades de expansão para novos padrões de ativos no futuro.
Conforme mencionado acima, o ERC-6551 permite a criação de uma carteira dedicada às interações on-chain para cada NFT. Este tipo de carteira é diferente das carteiras que normalmente usamos em plataformas como Metamask. Na verdade, é uma carteira de contrato, que é um contrato inteligente implantado na rede Ethereum. Antes de nos aprofundarmos em como ela é implementada, vamos primeiro entender as principais diferenças entre essas duas carteiras.
Conta de contrato
Uma conta Ethereum é uma entidade que possui saldo de Ethereum (ETH) e pode enviar transações na rede Ethereum. As contas podem ser controladas pelos usuários ou implantadas como contratos inteligentes.
As contas no Ethereum possuem 4 campos:
nonce: Um contador usado para exibir o número de transações enviadas pela conta externa ou o número de contratos criados pela conta do contrato. Cada conta só pode executar uma transação com um determinado nonce para evitar ataques de repetição, que se referem à transmissão e reexecução de uma transação assinada várias vezes.
saldo: modelo de balanço contábil, o número de Wei pertencentes a este endereço. Wei é a unidade de medida do Ethereum.
codeHash: Este hash representa o código da conta na Máquina Virtual Ethereum (EVM). As contas contratuais possuem trechos de código programados que podem realizar diferentes operações. Este código EVM é executado se a conta receber uma chamada de mensagem. Ao contrário de outros campos de conta, isto não pode ser alterado. Todos os trechos de código são salvos no hash correspondente no banco de dados de estado para recuperação posterior. Este valor hash é chamado codeHash. Para contas de propriedade externa, o campo codeHash é o hash da string vazia.
storageRoot: hash de armazenamento. Merkle Patricia tenta o hash de 256 bits do nó raiz que codificou o conteúdo armazenado da conta (um mapa de valores inteiros de 256 bits) e codificado como um teste como um mapa do hash Keccak de 256 bits do inteiro de 256 bits chaves para codificação RLP de valor inteiro de 256 bits. Este Trie codifica um hash do conteúdo do armazenamento desta conta e está vazio por padrão.
Existem dois tipos de contas Ethereum: contas externas (chaves privadas gerenciadas pelo usuário) e contas contratuais.
Contas de propriedade externa (EOA): controladas pela chave privada, seu codeHash está vazio. Essas contas podem enviar e receber criptomoedas e interagir com contratos inteligentes. Nossa carteira Metamask comumente usada pertence a isso.
Conta de Contrato (CA): Não existe chave privada e seu codeHash não está vazio. É um contrato inteligente implantado na rede Ethereum que controla a carteira do contrato por meio de contas externas que interagem com o contrato.
Existem carteiras de contrato padrão na CA, como carteiras abstratas de conta ERC4337, e carteiras nativas do tipo AA, como cadeias ZkSync e StarkNet, nas quais não há transações tradicionais e todas as contas são contas de contrato. Atualmente, a carteira tem problemas com direitos de propriedade e assinatura. Por exemplo, a chave privada é difícil de proteger. Os usuários perderão todos os seus ativos se perderem a chave privada. sendo muito alto, a taxa de manuseio só pode ser liquidada em uma única moeda por meio de pagamento em ETH.
Sem alterar a camada do protocolo de consenso, pode ajudar o Ethereum a avançar na direção da abstração de contas. ERC4337 pode realizar a atualização da abstração de contas por meio de contratos inteligentes, desde o início original de toda a transação até sua inclusão em todo o blockchain. foi atualizado e alterado, e UserOperation foi introduzido para descrever a estrutura das transações enviadas em nome dos usuários. O Bundler empacotará as transações nesses pools de memória para reduzir os custos de transação dos usuários. O cenário de múltiplos sinais é mais completo para alcançar a recuperação social. , etc. Atualizações funcionais.
concluir
De acordo com o padrão ERC-6551, os titulares de NFT podem implantar um novo contrato inteligente, nomeadamente TBA, na rede Ethereum ou em outros blockchains suportados por EVM, interagindo com o Contrato de Registro. A propriedade do TBA pertence ao titular do NFT e mudará com a transferência do NFT. Apenas o titular do NFT pode controlar este TBA. O código do TBA, suas regras, originam-se da chamada do Contrato de Implementação.
O diagrama a seguir mostra como o ERC-6551 funciona: Suponha que um usuário seja titular de NFT e sua conta de usuário possua dois NFTs, nº 123 do Contrato A e nº 456 do Contrato B. A Conta de Usuário interage com o registro sem permissão, ou seja, o Contrato de Registro, e insere as informações do NFT e o endereço do contrato para criar um TBA. Quando a Conta do Usuário chamar o contrato de registro, insira as informações NFT do Token#123e o endereço da Implementação A (0x321…), e a carteira do contrato Conta A (0x123…) será criada. Sua propriedade pertence ao titular do Token NFT #123, e suas funções e regras são derivadas das disposições da Implementação A. Quando a Conta de Usuário chama novamente o contrato de registro e altera o conteúdo de entrada, outro TBA é gerado. Mas para um NFT específico e um contrato de implementação, só pode haver um TBA correspondente exclusivo.

A criação e o funcionamento do TBA dependem totalmente do contrato de registro e do contrato de implementação. As regras destes contratos determinam as características e funções do TBA. EIP-6551 fornece modelos de código para esses contratos. Iremos nos aprofundar nesses modelos nas seções a seguir. No entanto, esses modelos não são as únicas opções; seu código determina como o TBA é implantado e implementado funcionalmente. Isso fornece aos desenvolvedores uma ampla gama de possibilidades de expansão. Por exemplo, um contrato de registro pode definir quais NFTs são elegíveis para registro usando o contrato de registro. O contrato de implementação pode definir as funções e regras do TBA, como definir o limite diário de transações do TBA ou especificar os tipos de ativos que pode deter.
Contrato de Implementação
Todos os TBAs criados através do registo de um contrato podem selecionar o contrato de implementação que desejam utilizar para a conta. O contrato de implementação registra as funções e regras da conta do contrato inteligente. Deve implementar pelo menos as seguintes funções:
executeCall(): uma função usada para executar qualquer função de contrato inteligente que interaja com um contrato externo. Por exemplo, para vender os ativos incluídos em uma conta vinculada a um NFT, pode ser necessário chamar uma função no contrato Uniswap. executeCall permite que você faça esta chamada de função em nome de sua conta de contrato inteligente, permitindo comprar, vender/trocar qualquer ativo que desejar.
token(): uma função de visualização somente leitura que retorna o identificador do NFT que possui a conta vinculada ao token. Ele retorna o ID da cadeia (se o NFT está na rede principal, Polygon, Optimism, etc.), o endereço do contrato NFT e o ID do token NFT.
proprietário(): Retorna o endereço do proprietário do NFT que controla a conta vinculada ao token. Seguindo o exemplo acima, este seria o endereço da Conta do Usuário.
nonce(): Retorna o nonce atual desta carteira de contrato inteligente. Cada transação bem-sucedida aumentará o nonce em 1, com valor inicial de 0.
Por fim, embora não seja uma chamada de função, o contrato de implementação que vincula a conta ao token deve ter uma função recebe() para poder receber o ativo nativo (como ETH) diretamente em seu endereço.
Registrar Contrato
A seguir está um contrato inteligente de registro escrito em linguagem Solidity:

Este código pode mostrar que os parâmetros necessários para criar uma conta para um determinado NFT incluem o endereço do contrato de execução da implementação, chainId o id da cadeia alvo, tokenContract correspondente ao contrato ao qual o NFT pertence, tokenId correspondente ao id ao qual o NFT pertence, tokenId correspondente ao id ao qual o NFT pertence. NFT pertence, e o valor de ofuscação é sal. Para criar uma conta NFT baseada no Fast Dapp Demo, você só precisa inserir o endereço e ID do contrato NFT, e o restante dos campos são gerados automaticamente.
A proposta ERC-6551 é um novo padrão de token que é uma atualização subversiva do padrão NFT original. ERC-6551 usa um registro sem permissão que é compatível com o ERC-721 NFT existente. O registro é um contrato inteligente que serve como fábrica e diretório para TBAs. Qualquer pessoa pode criar um TBA para qualquer token ERC-721 chamando uma função no registro e pagando uma pequena taxa. O contrato inteligente do registro tem duas funções:
createAccount: implanta uma nova conta vinculada a token para um determinado ERC-721 NFT e implementação específica.
conta: uma função de visualização somente leitura que retorna o endereço da conta vinculada ao token para um determinado NFT ERC-721 e sua implementação é fornecida.
aplicações potenciais
Desde o incidente Azuki, os NFTs de imagem estática única tornaram-se significativamente menos atraentes, fazendo com que o valor de muitos projetos importantes diminuísse. No entanto, os NFTs altamente interativos e combináveis podem ser a chave para a recuperação do mercado. Desde jogos blockchain, música, DID até o metaverso, esses campos estão cheios de um potencial infinito.
Os NFTs são mais do que apenas ativos; eles também têm sua própria identidade na cadeia e propriedades de contêiner e podem interagir com aplicativos descentralizados (Dapps). Isso significa que todas as interações com o NFT são registradas diretamente no próprio NFT, e não na conta do seu titular. Além disso, como os NFTs são baseados em contratos inteligentes, seu comportamento e interações podem ser definidos e controlados por meio de regras contratuais, proporcionando flexibilidade e segurança.
O protocolo ERC-6551 trouxe mudanças revolucionárias no campo NFT, mudando o foco das carteiras dos usuários para o próprio NFT, proporcionando novas possibilidades de transações, jogos, rastreabilidade e governança. Com o desenvolvimento do NFT, este protocolo nos levará a uma era digital mais personalizada, interativa e significativa.
Considere as quatro possíveis direções de aplicação a seguir:
Embalagem de ativos: o NFT pode servir como um contêiner de ativos, permitindo que vários ativos sejam empacotados e negociados em um único NFT. Por exemplo, um NFT de álbum de música pode conter vários NFTs de músicas, ou um NFT de coleção de arte pode conter vários NFTs de arte. Isso não apenas torna a cobrança mais sistemática, mas também reduz as taxas do gás durante a negociação.
Carteira de investimentos: o NFT pode ser usado como uma ferramenta de gestão de ativos, permitindo aos usuários armazenar e gerenciar vários Tokens em um TBA. Além disso, os detentores de NFT também podem autorizar gestores terceirizados a realizar transações de ativos e definir claramente as permissões do gestor em contratos inteligentes para garantir a segurança dos ativos.
Gerenciamento de identidade NFT: NFT pode registrar todas as suas atividades na cadeia, tornando-se uma verdadeira identidade na cadeia. Os usuários podem usar uma única carteira ENS para se representar e usar diferentes TBAs para representar suas funções em diferentes comunidades ou aplicativos.
NFTs modulares: um NFT mestre pode gerar TBAs para armazenar seus NFTs componentes. Por exemplo, no jogo, o personagem NFT pode ser equipado com vários equipamentos NFT. Isso não apenas torna a realização do Metaverso mais possível, mas também pode ser combinado com IA para criar personagens NPC mais realistas.
Resumindo, o futuro do NFT está cheio de possibilidades infinitas. Da gestão de ativos à verificação de identidade e ao design modular de jogos, eles desempenharão um papel fundamental no mundo digital.
