Introdução ao ERC 721
Primeiro, queremos explicar brevemente a origem e um conceito de NFT (Non-fungible Token, ou token não fungível). O token fungível é um tipo de token criptográfico que é construído de tal forma que cada fração de um token é equivalente ao próximo como uma moeda fiat geral (ex. Bitcoin e Ethereum). A fim de criar e gerenciar tokens fungíveis na rede Ethereum, os usuários precisam seguir o padrão ERC-20.
Ao contrário dos tokens fungíveis descritos acima, os tokens não fungíveis (NFTs) não são intercambiáveis entre si. Eles devem ter um código de identificação único e ter uma titularidade que pode ser livremente negociada. Atualmente, os tokens são usados para administrar a propriedade de ativos da vida real, como bens imóveis e obras de arte e também os objetos virtuais, como arte, música e itens dentro do jogo.
Com a criação do sistema de autenticação de propriedade baseado em blockchain, o ERC-721 cresceu e se tornou um pilar do ecossistema Ethereum. O ERC-721 é um padrão de token que permite que as pessoas cunhem tokens não-fungíveis (NFTs). É uma interface que permite que os proprietários autorizem outros contratos inteligentes para gerenciar os tokens. Os códigos relacionados aos NFTs devem usar as funções definidas na interface. As principais funções do ERC-721 incluem safeTransferFrom
, ownerOf
, balanceOf
que serão discutidos mais tarde detalhadamente.
O que é o ERC-721A?
É extremamente comum que os desenvolvedores de software reutilizem o código existente para simplificar o processo de desenvolvimento. O time da Azuki encontrou alguns problemas com o ERC721 anterior e lançou uma nova implementação do ERC721 chamada ERC 721A.
O time da Azuki encontra três grandes problemas com o ERC721.
O primeiro problema com o ERC721 é que ele usa o armazenamento de forma redundante e ineficiente para gerenciar a propriedade de tokens e metadados. Este uso redundante de armazenamento é eficiente para ler informações sobre o token, mas se torna ineficiente para gerar tokens. É um compromisso de sacrificar a função de escrita para tornar a função de leitura mais eficiente. Entretanto, o time da Azuki acreditava que os usuários valorizassem a função de escrita em vez da função de leitura e optou por tornar a função de escrita mais eficiente, sacrificando ao mesmo tempo a função de leitura.
O segundo problema é que quando um usuário compra vários NFTs ao mesmo tempo, as informações sobre o saldo do usuário precisam ser atualizadas a cada vez. Entretanto, o time da Azuki possibilitou que as informações sobre o saldo pudessem ser atualizadas apenas uma vez após a compra de vários NFTs, emitindo um número de série para o ID do NFT.
O terceiro problema é semelhante ao segundo, pois quando um usuário compra vários NFTs ao mesmo tempo, as informações do proprietário precisam ser atualizadas a cada vez. Mas, a implementação é alterada de forma que as informações do proprietário são armazenadas apenas na primeira compra de token.
O ERC-721A é a nova implementação do ERC 721 que resolve estes três problemas críticos. Isto funciona adicionando uma função de escrita que pode gerar de forma eficiente vários tokens.
Vantagem da cunhagem por lotes
Ao otimizar a emissão de vários tokens, o usuário paga a mesma quantia de taxa que na compra de um NFT. Por exemplo, se Alice quiser comprar 3 tokens de uma vez, a informação do proprietário será atribuída ao primeiro token emitido como a imagem abaixo. Usando este método, vários tokens podem ser emitidos pelo mesmo preço que na compra de um token.
Fonte: https://www.azuki.com/erc721a
Desvantagem da transferfrom
O ERC721A é implementado de uma forma que sacrifica a leitura para otimizar a escrita. Para uma explicação clara, a fim de verificar ou mudar o proprietário do token #102 na figura acima, o sistema precisa verificar o token #101 e o token #100 para encontrar o proprietário especificado. Quando houver a necessidade de mais cálculos, isso levará a taxas de gas mais altas.
Resultados dos testes (ambiente de teste, descrição do cenário, diferença entre os indicadores de desempenho 721 e 721A)
Testamos se esta hipótese é verdadeira e o quanto ela pode reduzir as taxas de_ gas_. O experimento foi conduzido usando 'hardhat-waffle' em um ambiente local e o resultado foi obtido como um valor médio após cunhar várias vezes. Aqui, a unidade de taxa de gas está em gwei.
Resultados dos testes de cunhagem por lote
Como você pode ver pelos resultados, quando você está cunhando em lote, a taxa de gas do ERC721A é mais baixa do que a do ERC721. Embora haja um aumento constante na taxa de gas do ERC721A, à medida que o tamanho da cunhagem em lote aumenta, a taxa é tão barata quanto a cunhagem de apenas um token ERC 721.
Como o ERC721A optou por pagar uma taxa de gas mais alta quando o proprietário do token é trocado, nós testamos a cunhagem de 5 tokens de uma vez e a transferência de cada token para outros usuários e comparamos o ERC721 com o ERC721A para ver qual incorre em taxa de gas mais alta.
Resultados do teste de transferência de tokens
Como o gráfico mostra claramente, a transferência de tokens ERC721A paga um pouco mais de taxas de gas do que a de ERC 721. Entretanto, a cunhagem bem sucedida de tokens ocorre muito mais frequentemente do que a mudança de propriedade dos tokens e como não há uma diferença enorme entre o ERC721 e o ERC 721A, o ERC 721A é melhor do que ERC721.
Conclusão
A Ethereum, com o Contrato Inteligente, criou uma nova direção para a web3.0 e um lugar para introduzir novas tecnologias. Entretanto, como diz o ditado, "não existe essa coisa de almoço grátis", mesmo em uma rede blockchain descentralizada, os usuários não têm outra escolha senão suportar o custo computacional na forma de uma taxa de gas.
O time da Azuki criou uma nova maneira de reduzir a taxa de gas ao cunhar NFTs e nós experimentamos para ver se a nova implementação poderia realmente reduzir a taxa de gas. Como surgiu a necessidade de cunhagem em lote, nossos experimentos mostram claramente que o uso do ERC721A pode reduzir significativamente a taxa de gas.
Além do ERC721A, outros métodos como o ERC 721 Psi estão sendo propostos por várias comunidades para reduzir as taxas de gas.
Fonte: William Entriken Twitter
Embora não tenhamos mencionado no documento, lemos o código das implementações de ERC721 e ERC721A e procuramos formas de otimizar as implementações para reduzir ainda mais a taxa de gas.
Esse artigo foi escrito por oxid e traduzido por Fátima Lima. O original pode ser lido aqui.
Oldest comments (0)