Crie o seu próprio contrato de NFT na camada 2 da Ethereum (Matic) – Tutorial (In Portuguese)
April 7, 2021Antes de iniciarmos, eu queria dizer uma informação muito importante. O código desse contrato (que permite criar tokens ERC 721) foi criado a partir do remix de alguns códigos da biblioteca de código aberto do OpenZeppelin. Esses códigos do OpenZeppelin foram exaustivamente testados e auditados por diverso(a)s programadore(a)s do mundo para não terem nenhuma vulnerabilidade e serem muito seguros. Mas, como tudo em programação e no mundo digital, o código desse contrato que eu estou disponibilizando pode conter alguma vulnerabilidade que ainda não foi detectada. Portanto, se você utilizar esse código e, no futuro, acontecer algum problema, você será inteiramente responsável por tê-lo usado. Eu não estou obrigando ninguém a usar esse código. Eu estou apenas tentando compartilhar um conhecimento que eu possuo e que acho importante espalhar para o máximo de pessoas possível. Você usará esse código se você quiser e será totalmente responsável por essa sua escolha. Certo? Ah, e se você tiver conhecimentos sobre a linguagem solidity e acredita que pode melhorar esse código, será de uma grande ajuda para a comunidade artística de NFT arte mundial. Por favor, faça essa melhoria e espalhe os seus conhecimentos para as pessoas! Vamos lá!
Como iniciar?
1 – Crie uma conta no GitHub e faça um fork do código de Nino Arteiro;
– Entre no GitHub e faça uma conta. Esta é a página inicial do GitHub. Clique em “Sign up”.
—
– Agora você irá criar um nome de usuário e colocar o seu e-mail. Por fim, você irá criar uma senha com pelo menos 21 caracteres com letras maiúsculas, minúsculas, números e caracteres especiais. Guarde essas informações de forma segura e não deixe ninguém ver.
—
– Pronto, agora você tem uma conta no GitHub!
—
– Depois de criar uma conta no GitHub, você irá entrar no repositório de códigos de Nino Arteiro e fará um fork (uma bifurcação) do código que cria um contrato inteligente para gerenciamento de NFTs na blockchain Matic. Aqui está o link para o código de Nino Arteiro: https://github.com/ninoarteiro/NinoArteiroRebellion—NFT-Contract
– Na página do código de Nino Arteiro, você irá clicar na palavra “Fork”.
—
– Agora você terá o mesmo código de Nino Arteiro. Para este tutorial, eu fiz uma conta no GitHub com o nome de “TestNino” para simular uma pessoa realizando todos os passos.
—
– O próximo passo é clicar em “Settings” (configurações).
—
– Você irá dar um nome ao seu novo repositório de código. No meu caso, eu dei o seguinte nome: “Contrato de NFT de TestNino”.
—
– Agora você irá clicar em “Your repositories” (Seus repositórios).
—
– Clique no seu repositório.
—
– Você irá editar o “README” (leia-me) do seu repositório. Clique na imagem do lápis.
—
– Se você quiser, você poderá colocar alguma informação sobre o código. Eu irei colocar: “Contrato de NFT de TestNino”.
—
– Confirme as alterações dessa maneira:
—
– Clique no seu contrato.
—
– Agora você irá fazer uma pequena alteração no código e personalizá-lo com a sua identidade. Clique em: “NinoArteiroRebellion.sol”.
—
– Clique no símbolo do lápis para editar o código.
—
– Você irá fazer 2 modificações. Nesse momento, eu queria dizer uma informação muito importante. Você irá modificar apenas o que eu propor. Se você modificar 1 caractere no código sem saber o que você realmente está fazendo ou modificar por motivo acidental, o código poderá não funcionar ou criar alguma vulnerabilidade. Portanto, tome muito cuidado no momento de modificar o código.
– As 2 modificações serão nas linhas 1676 e 1678. No lugar do nome “NinoArteiroRebellion”, você irá colocar o nome do seu contrato. Se o nome do seu contrato tiver mais que 1 palavra, você coloca o nome tudo junto, sem espaço. Caso o contrário, irá dar um erro na compilação quando formos implantar o código no futuro. No meu exemplo, o meu contrato terá o seguinte nome: “TestNino”.
—
– Confirme as alterações desta maneira:
—
– Veja como ficou a modificação:
—
– Ótimo. Agora você tem o seu próprio código personalizado para implantar o seu contrato inteligente de gerenciamento de NFTs na camada 2 da blockchain Ethereum (blockchain Matic).
—
2 – Implante o seu contrato de NFT na rede de teste da blockchain Matic (rede Mumbai) utilizando o remix IDE;
Como fazer?
– Antes de testar o código no remix, você irá configurar a rede de teste Mumbai na sua carteira Metamask. Siga as instruções que estão neste link: Config Matic on Metamask . Clique na opção Mumbai-Testnet que você verá as informações para configurar a nova RPC.
– Você irá deixar a sua carteira Metamask funcionando na rede de teste Mumbai. Desta maneira:
—
– Agora você já configurou a rede de teste Mumbai na sua carteira Metamask. Utilizando o remix, você irá implantar (registrar) o seu contrato de NFT na rede Mumbai para testar o código e verificar se tudo está funcionando perfeitamente. O link para o remix é: https://remix.ethereum.org/
—
– Você irá criar um novo arquivo clicando no botão “Create New File” (Criar novo arquivo) e dar um nome para esse novo arquivo.
—
– No meu exemplo, eu coloquei o seguinte nome para o novo arquivo: “Tutorial” .
—
– Agora você irá entrar no seu código que está no GitHub. No meu exemplo, eu vou entrar no meu código e clicar em: “NinoArteiroRebellion.sol”.
—
– Você irá copiar todo o código (até no final, sem esquecer nenhum caractere) e colar no remix. Nesse momento, tenha bastante cuidado para copiar e colar o código todo, de forma correta. Se você copiar o código de forma incorreta, faltando alguma parte, você não conseguirá prosseguir ou poderá gerar alguma vulnerabilidade. Tenha cuidado!
—
– Ótimo. Agora você terá o seu código no remix.
—
– O próximo passo será compilar o seu código para verificar se está escrito corretamente. Clique no ícone “Solidity compiler” (Compilador solidity).
—
– Configure o compilador desta maneira:
—
– Clique em: “Compile Nome do seu arquivo.sol”. No meu exemplo, eu irei clicar em: “Compile Tutorial.sol”. Quando terminar a compilação do código, irá aparecer um símbolo verde indicando que a compilação foi realizada com sucesso.
—
– Agora você irá clicar no ícone “Deploy & run transactions” (Implantar e executar transações).
—
– Configure o “DEPLOY & RUN TRANSACTIONS”. Em “ENVIRONMENT”, você irá selecionar “Injected Web3” (Web3 injetada). Não se esqueça de estar conectado, com a carteira Metamask, na rede de teste Mumbai (Custom (80001) network). Essa informação é muito importante para você não implantar, por engano, o seu contrato nas redes principais da blockchain Ethereum ou Matic. Se você fizer isso, você irá gastar criptomoedas reais. Em “CONTRACT”, você irá procurar e selecionar o termo: nome do seu contrato – nome do seu arquivo no remix.sol. O nome do seu contrato é aquele nome que você colocou dentro do seu código quando você o modificou no GitHub. No meu exemplo, eu irei selecionar “TestNino – Tutorial.sol”. A minha configuração ficará desta maneira:
—
– Nesse próximo passo, você irá clicar no símbolo com a setinha para baixo, ao lado da palavra “Deploy” (Implantar).
—
– Agora você irá colocar o nome e o símbolo (o símbolo é em letras maiúsculas) que o NFT do seu contrato terá. Deixe ativada a opção “Publish to IPFS” (Publicar no IPFS). Todos os tokens emitidos com esse seu contrato terão o mesmo nome e o mesmo símbolo. A única diferença entre os tokens estará no Id (cada token terá um Id – um número único que o identifica). No meu exemplo, o nome do meu NFT será “Liberdade” e o símbolo será “LIVRE”.
—
– O próximo passo é clicar em “transact” (transação) e gerar a transação para implantar o seu contrato na rede de teste Mumbai. Antes de clicar em “transact”, você terá que adquirir alguns tokens de teste MATIC (esses tokens de teste não têm valor – serve apenas para testar os contratos). Clique nesse faucet para você adquirir esses tokens de teste. No faucet, selecione a rede “Mumbai” e “MATIC Token” e coloque o seu endereço Ethereum para receber. Clique em “submit” (submeter).
—
– Agora você terá em sua carteira Metamask uma quantidade suficiente de tokens de teste MATIC para fazer todos os seus testes e verificar se o seu código está funcionando perfeitamente.
—
– Clique em “transact” (transação) para gerar a transação que irá implantar o seu contrato na rede de teste Mumbai.
—
– Confirme a transação através da carteira Metamask.
—
– Na mensagem que irá aparecer, você irá clicar em “OK”.
—
– Ótimo. O seu contrato foi implantado na rede de teste Mumbai. Se você quiser saber mais informações sobre o seu contrato, você irá clicar no símbolo com a seta para baixo, ao lado da palavra “Debug” (Depurar) e mexer na barra de rolagem.
—
– Você irá ver informações como o hash da transação (“transaction hash”) que implantou o seu contrato. Com o hash da transação, você poderá verificar mais informações sobre o seu contrato no Explorador Matic. No explorador, mude a rede para a rede de teste Mumbai.
—
– Copie o hash da transação que implantou o seu contrato e pesquise (cole) na busca do explorador para você ir se acostumando com o explorador Matic. Você irá ver várias informações. Uma dessas informações é o endereço do seu contrato. Salve o endereço do seu contrato para você poder acessá-lo outras vezes no remix. Isso é importante. Se você não tiver esse endereço, você não poderá acessar o seu contrato no remix para gerenciar os seus NFTs.
—
– O próximo passo é configurar a base URI do seu contrato. Você irá clicar na seta ao lado do nome do seu contrato que irá aparecer depois da implantação.
—
– Irá abrir um painel de controle que permitirá que você gerencie o seu contrato de NFT. Com esse painel de controle, você poderá emitir, transferir, queimar os seus NFTs e saber várias informações sobre o seu contrato. Basicamente, você usará apenas as funções “mint” (emitir), “setTokenURI” (configurar o URI do token), “transferFrom” (transferir de) e “burn” (queimar – use essa função com bastante cuidado para não queimar um NFT errado). É importante dizer também que você usará as outras funções somente se souber o que realmente está fazendo. Certo?
—
– Agora você irá configurar a “setBaseURI” (configurar a URI Base) com este termo: https://
– Logo em seguida, você irá clicar em “transact” e confirmar a transação na carteira Metamask para a configuração ser realizada.
—
– Perfeito. Você configurou a URI Base do seu contrato. Você irá fazer essa configuração da URI Base apenas 1 vez.
—
– Agora você irá verificar e publicar o seu código no Explorador Matic para tornar o seu contrato mais transparente e verificável por qualquer pessoa. Copie o endereço do seu contrato e cole na busca do Explorador Matic. Depois você irá clicar na palavra “Code” (Código).
—
– Clique em: “Verify & Publish” (Verificar e Publicar).
—
– Nesta etapa, você irá configurar os dados do seu contrato para realizar a verificação do seu código. Na opção “Enter the Solidity Contract Code” (Insira o código do contrato solidity), você irá copiar e colar o seu código que está no GitHub. Não se esqueça de copiar o código todo. Não deixe nenhum caractere faltando. Certo? Isso é importante. E outra informação importante é colocar em “Contract Name” (Nome do Contrato) o mesmo nome que você colocou dentro do seu código quando você o modificou lá no GitHub. Se o nome do seu contrato tiver mais que 1 palavra, você coloca o nome tudo junto, sem espaço. Bom, no meu exemplo, a minha configuração ficará desta maneira:
—
– Clique em “Verify & Publish” que você terá o código do seu contrato verificado e publicado no Explorador Matic.
—
– Depois de verificar e publicar o código do seu contrato no Explorador Matic, você irá tokenizar o seu primeiro NFT no remix. Você irá clicar na seta para baixo ao lado da palavra “mint” (emitir).
—
– Agora você irá colocar o seu endereço Ethereum (o endereço para onde o NFT será enviado) na opção “to” (para). Na opção “tokenId” (Id do token), você irá colocar o número que identificará o seu NFT. Esse número é único. Cada NFT do seu contrato terá um Id. O primeiro NFT do seu contrato terá o Id 1. O segundo NFT terá o Id 2. E assim por diante. Sempre que você for tokenizar um novo NFT, você terá que lembrar o Id do seu último NFT tokenizado. Isso é importante.
—
– Clique em “transact” e depois confirme a transação na carteira Metamask.
—
– Excelente! Você emitiu o seu primeiro NFT na rede de teste Mumbai.
—
– Se você quiser, você poderá clicar na seta para baixo ao lado da palavra “Debug”, copiar o hash da transação de criação desse NFT, colar na busca do Explorador Matic e visualizar mais informações sobre esse seu novo NFT.
—
– Para finalizar a criação do seu primeiro NFT, o próximo passo será conectar os metadados a esse novo NFT para que a sua arte seja vista nas diversas plataformas de NFT existentes. Por agora, nós emitimos apenas o token (o NFT). Para finalizar, nós teremos que criar e conectar os metadados a esse token. Os metadados serão escritos na linguagem JavaScript e salvos no formato JSON.
– Você irá usar a blockchain Arweave para armazenar os metadados dos seus NFTs de forma permanente (on-chain). Você terá um NFT muito mais seguro do que os NFTs que têm os metadados armazenados off-chain (armazenados no ipfs, por exemplo). Para criar a sua carteira, clique no seguinte link: criar uma carteira da blockchain Arweave. Você irá receber uma carteira com alguns tokens AR que já irão permitir que você armazene vários dados na blockchain Arweave. Quando acabar esses tokens AR grátis, você irá comprar mais.
—
– Com a sua carteira da blockchain Arweave, você irá criar uma conta em: ARDRIVE (um aplicativo descentralizado de armazenamento de dados que funciona na blockchain Arweave). Será em ARDRIVE que você irá armazenar os metadados dos seus NFTs. Veja, como exemplo, a maneira que eu organizei o meu ARDRIVE para armazenar os metadados dos meus NFTs.
—
– Agora, o primeiro passo será armazenar a imagem do NFT. Depois iremos armazenar o arquivo JSON com os metadados. Clique em “New” (novo) e depois em “New drive” (Novo drive).
—
– Agora você irá dar um nome para o seu novo drive e colocar a opção privacidade pública. No meu exemplo, eu irei dar o nome de “TUTORIAL”.
—
– O próximo passo será armazenar a imagem do seu NFT. Clique em “New folder” (Nova pasta) e dê um nome para esta pasta. No meu exemplo, eu vou dar o nome de “TEST”. Uma dica: crie uma pasta para cada arte no seu novo drive. Dessa maneira ficará mais organizado.
—
– Clique na sua nova pasta. Agora você irá fazer o upload da imagem da sua arte clicando em “Upload file(s)” (Envio de arquivos).
—
– Clique no arquivo e depois em “Preview” (Pré-visualização) para visualizar o endereço onde a imagem está armazenada.
—
– Agora esta imagem estará armazenada de forma permanente até quando a blockchain Arweave existir. Nem a pessoa que armazenou a imagem conseguirá deletar esse arquivo.
—
– O próximo passo será armazenar, no ARDRIVE, o arquivo JSON com os metadados. Para isso, iremos criar esse arquivo utilizando o programa gratuito “Visual Studio Code”. Baixe esse programa neste link: Visual Studio Code. Depois de instalar, você irá abrir o programa e usar um destes 2 modelos de códigos de metadados escritos em JavaScript:
1 – Metadados para NFTs com apenas imagem (JPG, PNG, GIF) :
{“description”: “”,
“external_url”: “”,
“image”: “”,
“name”: “”}
2 – Metadados para NFTs com música ou vídeo (as extensões de arquivo GLTF, GLB, WEBM, MP4, M4V, OGV e OGG são suportadas para vídeos, junto com as extensões de áudio MP3, WAV e OGA) :
{“description”: “”,
“external_url”: “”,
“image”: “”,
“animation_url”: “”,
“name”: “”}
– Você irá personalizar com os dados do seu NFT. Você irá colocar os seus dados entre aspas e não poderá mudar um caractere desse código em JavaScript. Isso é muito importante. Se você modificar alguma informação desse código de forma errada, os seus metadados não serão lidos de forma correta nas plataformas de NFT. Em “description” (descrição), você irá colocar entre aspas a descrição do seu NFT. Em “external_url” (url externa), você irá colocar uma URL de sua preferência (eu coloco o link para o meu portfólio digital). Em “image” (imagem), você irá colocar a URL da imagem que você armazenou na blockchain Arweave. Em “name” (nome), você irá colocar o nome da sua arte. Se você for tokenizar um vídeo ou uma música, você irá usar o modelo 2. Nesse modelo, em “image”, você irá colocar a URL da imagem (armazenada em Arweave) que será a capa do seu vídeo ou da sua música. Em “animation_url”, você irá colocar a URL do vídeo ou da música que você armazenou na blockchain Arweave. Veja 2 exemplos de metadados de NFTs de Nino Arteiro utilizando o modelo 1 e o modelo 2.
– Agora você irá abrir o programa Visual Studio Code, copiar um dos modelos de código de metadados, colar no programa, incluir os dados do seu NFT e salvar no formato JSON (tem que ser nesse formato. Caso o contrário, não irá funcionar). No meu exemplo, eu irei usar o modelo 1 e ficará desta maneira:
—
– O próximo passo será armazenar este arquivo JSON na blockchain Arweave. Em ARDRIVE, você irá clicar em “New”, depois em “Upload file(s)” para enviar o arquivo.
—
– Ótimo. Você finalizou o armazenamento dos metadados do seu NFT na blockchain Arweave. Clique em “Preview” para você acessar o link (a URL) onde o arquivo JSON está armazenado.
—
– Para finalizar completamente o processo de tokenização do seu NFT, agora você irá voltar para o remix e configurar a URI do seu primeiro NFT (o token com Id 1 que você já emitiu). No painel de controle do seu contrato no remix, clique na seta para baixo que fica ao lado da palavra “setTokenURI” (configurar token URI).
—
– Na opção “tokenId” (Id do token), como é o nosso primeiro token, você irá colocar 1. E na opção “uri”, você irá colocar uma parte da URL do arquivo JSON (que você armazenou na blockchain Arweave). Você irá retirar apenas o início “https://” da URL. No meu exemplo, a URL completa do meu arquivo JSON é a seguinte: https://aygorewp63fmrz6pkyzepkux5trjodhqocxl7nleixpgdruc5bia.arweave.net/Bgzoks_2ysjnz1YyR6qX7OKXDPBwrr-1ZEXeYcaC6FA . No remix, eu irei colocar na opção “uri” apenas esse pedaço (sem https://) da URL: aygorewp63fmrz6pkyzepkux5trjodhqocxl7nleixpgdruc5bia.arweave.net/Bgzoks_2ysjnz1YyR6qX7OKXDPBwrr-1ZEXeYcaC6FA . Esse momento é muito importante. Se você colocar a URI errada, os seus metadados não irão aparecer nas plataformas de NFT.
—
– Clique em “transact” e confirme a transação na carteira Metamask.
—
– Viva! Excelente! Você finalizou completamente a emissão do seu primeiro NFT na rede de teste Mumbai. Agora você irá entrar nas redes de teste do OpenSea e visualizar o seu primeiro NFT no seu endereço.
—
– Se o NFT não carregar de forma correta no OpenSea, você irá atualizar os metadados no ícone “Refresh metadata” (Atualizar metadados), esperar um pouco e depois atualizar a página. Se continuar aparecendo de forma errada, eu aconselho você a repetir todos os procedimentos novamente desde o início. Talvez você tenha errado em alguma etapa do processo.
—
– Agora o NFT está perfeito.
—
– O próximo passo seria testar bastante (muito) esse NFT na rede de testes do OpenSea. Você iria simular como se fosse um contrato real e utilizar todos os recursos que o OpenSea te oferece: colocar para a venda o NFT, vender, fazer ofertas, aceitar ofertas, transferir. O objetivo é testar diversas vezes para ver se o seu contrato está funcionando bem, sem nenhuma falha. Como a rede de testes do OpenSea ainda não está funcionando bem com a rede de teste Mumbai, você terá que fazer esses testes na rede principal Matic. Você irá criar alguns contratos de teste na rede principal Matic e testar no OpenSea. O custo para fazer esses testes será quase zero. Depois você abandonará esses contratos de teste e criará o seu contrato verdadeiro.
– Para configurar a rede principal Matic na sua carteira Metamask de forma rápida e fácil, siga este tutorial: Config Matic on Metamask.
—
– Para fazer esses testes, eu te aconselho a criar 2 outras contas com a carteira Metamask e usar essas contas como se você fosse um vendedor e um comprador. Não utilize a sua conta Metamask verdadeira para implantar os contratos de teste na rede principal Matic. Eu acho melhor assim. Além disso, dentro do remix, no momento da implantação dos contratos, não se esqueça de verificar se a sua carteira Metamask está conectada na rede principal Matic. Certo? Eu te aconselho também a realizar todo esse passo a passo presente no tutorial várias vezes (mais de 10 vezes) para você ir se acostumando com as configurações no remix IDE. Crie vários contratos com nomes de NFTs diferentes para você ir absorvendo a lógica de funcionamento do remix e tornar a sua aprendizagem mais efetiva e mais rápida. Com o tempo, você irá dominar facilmente esse novo universo. Vá com calma! Devagar sempre é melhor!
– Quando você for implantar os seus contratos de teste na rede principal Matic, você deverá ter, em sua carteira Metamask, alguns tokens MATIC reais para pagar a taxa de gás das transações (que é bem menos que 1 centavo de dólar). Uma informação importante: existem tokens MATIC reais da blockchain Ethereum e tokens Matic reais da blockchain Matic (que agora mudou o nome para blockchain Polygon). Para fazer os testes na rede principal Matic, você terá que ter em sua carteira os tokens Matic reais da blockchain Polygon. Isso é importante. Para adquirir esses tokens Matic reais da blockchain Polygon, você terá que enviar alguns ETHs da blockchain Ethereum para a blockchain Polygon (faça isso através da Carteira Matic). Esses ETHs irão se transformar em ETHs da blockchain Polygon, WETH da Polygon. Depois você irá trocar esses WETHs da Polygon por tokens Matic da Polygon (faça isso na Quickswap). Pronto, agora você poderá testar os seus contratos na rede principal Matic (Polygon) tranquilamente gastando quase nada.
– Mais uma informação importante. Depois que você implantar o seu contrato, tanto na rede de teste Mumbai como na rede principal Matic, você poderá acessá-lo novamente no momento que você quiser através do remix IDE. Dessa forma, você terá a liberdade para poder emitir novos NFTs, transferir, etc. Basta apenas você ter o endereço do seu contrato e configurar o remix da mesma maneira que você configurou no momento que você implantou ele. No meu exemplo, veja como eu irei fazer para acessar novamente o meu contrato. Primeiramente, você irá entrar no remix. Aquele arquivo que você criou no remix lá no início do tutorial com o seu código ficará gravado automaticamente na plataforma. Se você limpar o cache do seu navegador, esse arquivo irá sumir do remix. Se isso acontecer, você terá que copiar o seu código no GitHub e colar no remix para criar novamente esse arquivo. Clique nesse arquivo. No meu caso, o meu arquivo tem o seguinte nome: “Tutorial.sol”.
—
– Agora é só repetir a configuração que nós já fizemos no início do tutorial. Clique em “Solidity compiler”.
—
– Configure da mesma maneira que está na imagem abaixo e clique em “Compile nome do arquivo.sol”. No meu caso, eu irei clicar em “Compile Tutorial.sol”.
—
– Você compilou o seu código com sucesso! Agora você irá clicar em “Deploy & run transactions”.
—
– Por último, você irá configurar da mesma maneira que antes (veja na imagem abaixo o meu exemplo). Depois você irá copiar e colar o endereço do seu contrato ao lado do termo “At Address” (No Endereço) e clicar em “At Address”.
—
– Irá aparecer o seu contrato logo abaixo. Clique na seta que fica ao lado do nome do seu contrato e você terá acesso novamente a todas as funções do seu contrato. Perfeito! Agora você já sabe todo o processo de implantar e acessar novamente o seu contrato através da plataforma remix IDE.
—
– Excelente, artistas! Agora todas as pessoas que leram esse tutorial estarão aptas a criar os seus NFTs armazenados on-chain e utilizando o seu próprio contrato implantado em uma blockchain (Polygon) super-rápida, não poluente e praticamente gratuita. Boa sorte nessa sua nova jornada! Que as boas energias da justiça e do amor estejam em nossos caminhos para nos proteger e nos guiar!
– E lembrando que, se você quiser ter ainda mais autonomia, você poderá criar a sua própria plataforma de venda de NFTs usando o seu próprio site com o WordPress. Veja: Create your own NFT store on your website with WordPress plugins
Por favor, espalhe esses conhecimentos para o máximo de artistas possível! Obrigado.
Nino Arteiro, 1 de abril de 2021, Brasil, América do Sul, Planeta Terra, Via Láctea, Universo!