Antes de desenvolver o contrato inteligente ERC1155, vamos dar uma olhada detalhada no ERC1155 e em suas aplicações.
Primeiro, vamos analisar o ERC, os tokens e os NFTs para entender a necessidade do ERC1155
"ERC" significa Ethereum Request for Comments (Solicitação de Comentários da Ethereum). É um tipo de EIP (Plataforma de Inteligência Empresarial) focada em padrões para aplicativos Ethereum, uma categoria que inclui tokens.
Tokens?
Os tokens são unidades de valor transferíveis. Coloquialmente, eles são chamados de criptomoedas ou (tecnicamente incorreto) moedas. Os tokens geralmente se enquadram em um de dois grupos: fungíveis ou não fungíveis. Os tokens fungíveis são mutuamente intercambiáveis, como notas de dólar ou pesos. Os tokens não fungíveis são exclusivos e não intercambiáveis, como uma pintura ou um livro.
NFTs?
Os tokens não fungíveis, ou NFTs, são ativos digitais comprovadamente exclusivos. Eles podem ser usados para representar itens tangíveis e intangíveis.
Por que precisamos do ERC-1155?
Antes do ERC-1155, os dois padrões de token predominantes eram ERC-20 para tokens fungíveis e o ERC-721 para os não fungíveis. Eles não podiam (e não podem) ser empacotados no mesmo contrato inteligente. Essa limitação significava que, se alguém quisesse transferir, digamos, USDC (ERC-20) e um NFT (ERC-721) CryptoKitties, precisaria executar várias transações, o que era ineficiente e caro.
O ERC-1155 resolve esse problema combinando os dois padrões de tokens. O ERC-1155 é um padrão de token que permite a transferência eficiente de tokens fungíveis e não fungíveis em uma única transação. Witek Radomski, Andrew Cooke, Philippe Castonguay, James Therien, Eric Binet e Ronan Sandford propuseram o novo padrão em junho de 2018, com o EIP-1155.
O que o ERC-1155 tem de especial?
Além de permitir a transferência de vários tipos de tokens de uma só vez e os ganhos em eficiência e custos de transação mais baixos, o ERC-1155 tem várias outras características especiais:
- Ele suporta um número infinito de tokens, em contraste com o ERC-20 e o ERC-721, que exigem um novo contrato inteligente para cada tipo de token.
- Ele suporta não apenas tokens fungíveis e não fungíveis, mas também tokens semifungíveis. Os tokens semifungíveis são como ingressos gerais de shows. Eles são intercambiáveis e podem ser vendidos por dinheiro antes do show (fungíveis). Mas, após o show, perdem o valor pré-show e se tornam colecionáveis (não fungíveis).
- Ele possui uma função transfer (de transferência) segura que permite que os tokens sejam recuperados se forem enviados para o endereço errado, ao contrário do ERC-20 e do ERC-1155 (N.T. deve ser ERC 721)
Ele elimina a necessidade de "aprovar" contratos de tokens individuais separadamente, o que significa assinar menos transações.
Se estiver interessado em entender como o ERC-1155 funciona em um nível técnico, consulte EIP-1155.
Aplicação do ERC-1155?
- 🎮 Enjin — Enjin oferece uma série de produtos de blockchain, muitos dos quais implementam o ERC-1155.
- 🕹️ Horizon — Horizon é uma empresa de jogos de blockchain cujo jogo Skyweaver utiliza o ERC-1155.
- 🖼️ OpenSea — A implementação do ERC-1155 no mercado do NFT permite que um contrato inteligente possa ter vários criadores, mas somente um criador pode cunhar mais cópias.
Aprendemos as informações necessárias.
Agora, vamos criar 3 coleções de NFT (pedra, papel e tesoura) usando o ERC1155.
Passo 1: Desenvolvendo um Contrato Inteligente ERC1155
Linha 1: Especifica o tipo de licença SPDX, que foi adicionada após o Solidity ^0.8.9. Sempre que o código-fonte de um contrato inteligente é disponibilizado ao público, essas licenças podem ajudar a resolver/evitar problemas de direitos autorais. Se você não quiser especificar nenhum tipo de licença, poderá usar um valor especial UNLICENSED ou simplesmente ignorar todo o comentário (isso não resultará em um erro, apenas em um alerta).
Linha 2: Declara a versão do Solidity.
Linha 4–5: Usamos os contratos padrão fornecidos pelo openzeppelin; Quando você se dedicar em tempo integral aos contratos inteligentes, perceberá que os contratos Open Zeppelin são enviados por Deus.
Linhas 6–9: Cria nosso contrato chamado MyToken.
Lihas 10–12: SetUri nos permite alterar o Uri de Metadados de nossos NFTs e tokens.
Linhas 14–20: A função “mint” nos permite cunhar Tokens e NFTs.
Compile o contrato, vá para a terceira aba no menu à esquerda, selecione Injected Web3 como ambiente e implemente-o escolhendo o nome adequado do contrato:
Passo 2: Obtendo a infraestrutura necessária para implementar e testar nosso contrato inteligente
Agora, conforme as práticas "definidas", espera-se que você implante o contrato acima em um nó de blockchain local (por exemplo, Hardhat ou Truffle) ou em uma rede de teste pública, como a Goreli. Tudo bem, exceto pelos seguintes pontos nevrálgicos:
Em relação à rede de teste Goreli:
- Faucet (torneira): Preciso explicar mais? 😤
Em relação ao nó local:
- Faucet: Checar ✅
- Depurar meu contrato com facilidade: Infelizmente, não com facilidade (sim, eu poderia usar alguns console.logs, mas isso é tudo). 😢
- Compartilhar o estado da minha transação com meus amigos/mentores para obter feedback: Bem, ele é chamado de localhost por um motivo! Portanto, esqueça isso. 😭
2.1. É aí que entra o BuildBear. Ele reúne os benefícios de ambos os mundos para você:
- Faucet: Checar ✅
- Depurando minha transação: Checar ✅ [vem com um rastreador de transações integrado]
- Compartilhar o estado da minha transação com meus amigos/mentores para obter feedback: Checar. É uma rede de teste privada para um time, portanto, posso convidar meus amigos/mentores para minha própria rede de teste e analisar minha transação.
Dê uma olhada aqui: ***Onde o Localhost falha* e **Ganhe Hackathons Web3, usando as análises da rede de teste BuildBear. *
2.2. Visite o App BuildBear. Depois de fazer login com sua conta do Github ou do Google, você verá uma página semelhante à imagem adicionada abaixo:
2.3. Crie seu nó privado fazendo um forking (bifurcação) da rede principal da Ethereum:
2.4. Adicione sua rede de teste privada à sua carteira MetaMask usando o botão "Unlock and Add to Metamask" (Desbloquear e adicionar à Metamask):
2.5. Cunhe seus tokens Eth a partir da Faucet (usando o URL da Faucet):
2.5.1. Cunhando os Tokens
Passo 3: Implantando o Contrato Inteligente
3.1. Navegue para o site da IDE Remix Online e aceite os termos e condições.
3.2. Crie um novo contrato e cole o código do contrato inteligente, disponível aqui 👉 GitHub Link
3.3. Compile o contrato inteligente, com a versão 0.8.19 do Solidity, usando os seguintes detalhes:
Observe que a ABI do contrato só estará disponível depois que o contrato for compilado. Você pode ver na imagem acima a ABI que pode ser copiada. Tenha isso em mãos. Precisaremos dela em breve.
3.4. Selecione a aba “Deploy and Run Transactions”: e implemente o contrato como a seguir:
- Certifique-se de atualizar o Environment para "Injected provider - MetaMask" | CRITICAL.
3.5. Clique no botão "transact" (transacionar) para implantar o contrato em sua rede de nós privados; uma vez feito isso, você verá algo semelhante ao seguinte:
3.6. Copie o endereço do contrato e acesse o Explorer (explorador) da Blockchain para sua rede de teste bifurcada pessoal (link disponível na página do painel em home.buildbear.io) e localize seu contrato.
3.6.1. Enviando a ABI do contrato para facilitar a interação
Você pode visitar a página do seu contrato no Explorer da Blockchain do BuildBear e, em seguida, visitar a aba Contract (Contrato). Você deverá ver algo semelhante ao seguinte:
Envie a ABI que copiamos do Passo 3.3; uma vez feito isso, você deverá ver os botões Read and Write Contract (Ler e escrever contrato) disponíveis na Contract Page (Página de contrato):
Criamos e implementamos com sucesso o contrato inteligente ERC1155!!! 🎉🎉🎉
Passo 4: Vamos Cunhar NFt e Tokens.
Primeiro vamos carregar os Metadados da Nft e do token para o IPFS.
Para carregar nossos arquivos no armazenamento descentralizado do IPFS, podemos fazer por meio da CLI (Interface de Linha de Comando) ou por meio dessa ferramenta muito fácil de usar NFT Storage.
Usaremos a segunda opção, NFT Storage. Entre no NFT Storage e faça o upload de seus arquivos de imagem para Token e NFT. Você deve ver algo assim, depois que eles forem enviados com sucesso:
Criaremos três arquivos de metadados JSON para armazenar informações sobre nossas coleções de NFTs.
- 1.json: Coleção de NFT
- 2.json: Coleção de Token
Use https://jsoneditoronline.org/ para criar os arquivos JSON.
Nosso arquivo 1.json será mais ou menos assim:
{ //1.
"name": "BuidBear",
"description": "BuildBear NFTs.",
"image": "https://ipfs.io/ipfs/bafkreifvhjdf6ve4jfv6qytqtux5nd4nwnelioeiqx5x2ez5yrgrzk7ypi",
}
- name: Tem o nome do NFT.
- description: Tem a descrição do NFT.
- image: Tem o link da imagem que obtivemos anteriormente (URL do IPFS).
- Se uma coleção tiver várias imagens, o que geralmente é o caso, um parâmetro id extra é adicionado para diferenciar os tokens entre a coleção.
Crie os arquivos JSON restantes, 2.json para Token.
Para carregar eficientemente todos os arquivos JSON para o IPFS, vamos arquivá-los em formato endereçado a conteúdo. https://car.ipfs.io/ ajuda a arquivar arquivos no formato de arquivo endereçado a conteúdo compatível com IPFS (.car).
Vá até o IPFS CAR e carregue todos os arquivos 2 JSON. Uma vez carregados, faça download do arquivo .car e faça upload para o NFT Storage. Todos os seus arquivos JSON estão agora armazenados no IPFS de forma arquivada. Copie o URL do IPFS do arquivo carregado .car e você poderá acessar arquivos JSON apenas inserindo o nome do arquivo no final do URL, por exemplo:
https://ipfs.io/ipfs/bafybeihjjkwdrxxjnuwevlqtqmh3iegcadc32sio4wmo7bv2gbf34qs34a/2.json
Configure o URI do IPFS
Chame a função SetURI com o link do IPFS.
https://ipfs.io/ipfs/bafybeidwskpummsslvz6m35x2h45xd5agenzurxndmuzihxiskqu6i2udu/{id}.json
Vamos Cunhar o NFT
Digite a conta do destinatário, o ID como 1, o valor como 1 e clique em write.
Nós cunhamos nosso NFT com sucesso 🎉🎉
Vamos Cunhar nosso Token
Digite o endereço do destinatário, id como 2, a quantidade que desejamos e clique em write.
Nós cunhamos nossos Tokens com sucesso 🎉🎉
Agora podemos passar a ler a seção do contrato e verificar nosso saldo, URI de metadados e assim por diante.
Conseguimos cunhar NFTs e Tokens com sucesso, no mesmo contrato. 🎉🎉
Compartilhe seu projeto no Twitter e no LinkedIn e marque @_BuildBear.
Leia nossos artigos anteriores e continue aprendendo. (em inglês)
Como Gerar um NFT com IA e Implantar o contrato inteligente NFT e o Aplicativo Front-End
Saiba como executar um empréstimo flash | Aave v3 | 15mins | Simulação na Mainnet
Se você gosta do que estamos fazendo, siga-nos no Twitter, LinkedIn e Junte-se ao Grupo do Telegram se você ainda não o fez.
E, por favor, nos aplauda 👏 se você gostar do nosso trabalho.
A propósito, se você conhece alguém que gostaria de trabalhar com o BuildBear, por favor, dê uma olhada aqui !!!
Esse artigo foi escrito por Chandan e traduzido por Fátima Lima. O original pode ser lido aqui.
Top comments (0)