Neste tutorial eu vou lhe ensinar como criar coleções de tokens não-fungíveis (NFT) na blockchain Solana usando o programa da Metaplex, utilizado pela maioria das coleções profissionais do mercado. É importante, antes de avançarmos, que você saiba o que é e para que serve um NFT, então darei uma rápida introdução sobre o assunto, sobre o padrão e depois a programação em si. Fique à vontade para pular etapas conforme o seu domínio do assunto.
Este não é um tutorial de Solana para iniciantes e é recomendado que o programador já tenha certa familiaridade com outros padrões mais básicos ligados a tokens, como o SPL-Token, além da linguagem de programação Rust em si. Você pode aprender o básico de Rust neste tutorial, e sobre o padrão SPL-Token neste outro aqui.
O que é um Token Não-Fungível (NFT)?
A palavra fungível soa alienígena mas o seu conceito é bem simples de entender. Se preferir, o vídeo abaixo explica esta parte teórica inicial.

Algo fungível é algo consumível e substituível, como o dinheiro. Você gasta ele para usar e uma nota de 100 pode ser trocada por outra, ou até mesmo por várias menores, formando valor equivalente, sem perder qualquer uma de suas propriedades ou valor. Ao usar duas notas de 50 ou uma de 100 para pagar algo, não há absolutamente qualquer diferença prática, você vai ter pago da mesma forma e quem recebeu tem exatamente o valor que pediu em mãos.
Já algo não-fungível é justamente algo que não é substituível. Na verdade você até pode substituir, mas a troca NUNCA será 100% equivalente. Por exemplo um imóvel ou um carro. Por mais que você troque por outro de mesmo valor de mercado, a troca sempre irá possuir diferenças, seja na localização do imóvel, seja no estado de conservação do carro ou nas características dos bens. O mesmo vale para obras de arte, bilhetes de eventos, colecionáveis com edição limitada, etc.
No mundo digital também temos itens (tokens) não-fungíveis. Se eu crio uma arte digital, ela é tão não-fungível quanto um quadro a óleo, certo? Se eu crio uma videoaula, ela também é não-fungível, certo? Note que o conceito de fungibilidade não tem a nada a ver com quanto vale um item ou quão difícil foi de fazer ele, já que valor é algo subjetivo principalmente para itens artísticos e depende principalmente da raridade do item.
Mas Luiz, será que existem coisas não-fungíveis quando tudo são bits e bytes? Se eu posso facilmente criar cópias de itens com Ctrl+C e Ctrl+V, como saber qual é o original ou quem é o dono de fato de um item?
Aí entram os registros de ativos não-fungíveis, tanto no mundo físico, quanto no digital.
O que é uma coleção de NFTs?
Quando estamos no mundo físico e queremos a propriedade de algo, o que fazemos? Além de pagarmos por aquele bem, se for um bem de valor que justifique, é exigido um contrato, firmado em cartório, cedendo a propriedade do antigo dono, para a gente. É assim com carros, casas, ações de empresas…certo?
O mesmo vale quando realizamos grandes feitos e queremos comprovar que o fizemos. Emitimos certificados para nossas graduações, nossos recordes, experiências de trabalho e muito mais.
E no mundo digital? Se eu tenho um item digital como uma arte que criei, ou um personagem em um jogo, e quiser comprovar a posse ou até transferi-la para outra pessoa, como fazemos? Nada impede que eu copie um JPG de uma foto que alguém tirou e diga que é minha, mas também nada impede que eu crie um diploma de medicina agora e imprima na impressora e diga que é meu, certo? A diferença do real para a cópia é a autenticidade, a comprovação da posse baseada na confiança em cima de um contrato ou registro, seja ele físico ou digital.
Até a invenção das NFTs não existia uma maneira padronizada para fazer o registro de propriedade digital no mundo online. Não quer dizer que ela não era feita de alguma forma (eu mesmo tenho ebooks registrados), mas a criação e popularização das NFTs e dos padrões para criá-los, permitiu que esse mercado surgisse de fato e explodisse em 2021 de tanto sucesso. Um NFT nada mais é do que um certificado, uma propriedade registrada na blockchain, dizendo que um determinado item digital é de propriedade de alguém, representado por um endereço de carteira de criptomoedas.
Sendo a blockchain um grande livro de registros imutável e distribuído, podemos eliminar a necessidade de registrar nossos certificados de itens digitais em um cartório analógico e transferimos essas responsabilidade para os algoritmos, assim como já o fazemos com o dinheiro virtual que chamamos de criptomoedas. Isso tem inúmeras vantagens, como o acesso público ao certificado comprovando que é seu, o baixo custo já que eliminamos um terceiro de confiança e principalmente, a facilidade na transferência de propriedade, o que justamente permitiu o surgimento de marketplaces gigantescos de NFTs como a OpenSea e economias em tornos de jogos como Axie Infinity e CryptoKitties.
Mas então como eu crio um registro de NFT para comprovar a posse de algo que eu criei?
O Metaplex
O Metaplex é um protocolo de infraestrutura e conjunto de ferramentas baseado na blockchain Solana, lançado em 2021 para facilitar a criação, venda e gerenciamento de NFTs (tokens não fungíveis). Ele oferece ferramentas como a Candy Machine para cunhagem e o Token Metadata para padronização. Esses componentes padronizados e pré-construídos simplificam o desenvolvimento de coleções NFT na blockchain Solana, funcionando como “blocos de construção” para os desenvolvedores.
Se você veio do mundo EVM, você pode criar uma associação com a biblioteca OpenZeppelin, porém é mais do que isso, já que como na Solana os programas são separados dos dados, os programas do Metaplex você pode utilizar diretamente chamando o executável do programa na Mainnet (deployado pela equipe deles), mas com o contexto (leia: accounts) do seu programa. Resumindo, é um OpenZeppelin com esteróides ou caso já conheça a Solana Program Library, é uma SPL focada em NFTs. Só que com um porém: o protocolo possui taxas, então fique atento a isso.
O primeiro passo para usar o Metaplex é instalar o seu CLI globalmente na sua máquina, o que pode ser feito com o comando abaixo.
|
1 2 3 |
npm install -g @metaplex-foundation/cli |
A seguir, verifique a instalação com o comando:
|
1 2 3 |
mplx --version |
Agora temos de configurar a carteira que será usada pelo CLI. Provavelmente você já tem uma carteira Solana configurada na sua máquina para desenvolvimento, o comando abaixo adiciona ela e depois a adiciona como carteira principal para uso.
|
1 2 3 4 |
mplx config wallets add <name> <path> mplx config wallets set <name> |
Com a carteira configurada, agora precisamos configurar o nó RPC que vai atender às nossas requisições. Ajuste a URL de acordo com o ambiente onde quer criar sua coleção.
|
1 2 3 4 5 6 7 8 9 10 11 |
mplx config rpcs add mainnet https://api.mainnet-beta.solana.com ou mplx config rpcs add devnet https://api.devnet.solana.com e depois mplx config rpcs set <name> |
Com tudo configurado, podemos a seguir usar o CLI para criar nossa primeira coleção NFT com Metaplex.
Criando a coleção NFT
Existem vários programas diferentes disponíveis no protocolo Metaplex e portanto várias formas de criar suas NFTs. Desde coleções inteiras, marketplaces, NFTs avulsas e muito mais. Para criar uma coleção, recomendo o uso do modo interativo, com o comando abaixo.
|
1 2 3 |
mplx core collection create --wizard |
O terminal vai ir fazendo algumas perguntas e basta você ir respondendo para ter a sua coleção criada. Ao término do processo, você receberá o endereço da sua coleção, tome nota dele. Exemplo de coleção criada aqui.
O próximo passo agora é criar os assets, as NFTs da sua coleção. Para isso temos outra ferramenta no CLI, que está abaixo.
|
1 2 3 |
mplx core asset create --wizard |
O terminal vai fazer uma nova série de perguntas para você criar o seu NFT, sendo as mais importantes delas o caminho até o arquivo na sua máquina e o ID da coleção que você criou no passo anterior, para criar o vínculo entre elas. Ao término do processo, seu NFT terá sido criado, exemplo aqui.
Outra opção de criação, mais direta, é através do comando mais completo onde você informa o owner (por padrão as NFTs ficam com a conta que criamos lá no início), a imagem e os metadados em JSON.
|
1 2 3 |
mplx core asset create --files --image "image_path" --json "json_path" --owner <owner_wallet> --collection <collection_id> |
Abaixo um exemplo de metadados que usei:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "name": "LuizTools 002", "description": "Image #002", "external_url": "ipfs://Qmd2gwFtxxiwSzkUAxdry6k6upbN6betFR7VR5UMJAokNn/2.jpeg", "attributes": [], "image": "ipfs://Qmd2gwFtxxiwSzkUAxdry6k6upbN6betFR7VR5UMJAokNn/2.jpeg", "properties": { "files": [ { "uri": "ipfs://Qmd2gwFtxxiwSzkUAxdry6k6upbN6betFR7VR5UMJAokNn/2.jpeg", "type": "image/jpg" } ], "category": "image" } } |
O resultado você vê na imagem abaixo, da minha Phantom com o NFT acima.

Agora se você quiser transferir o seu asset para outra carteira, por qualquer que seja o motivo você terá de fazê-lo via código, algo que pretendo mostrar no próximo tutorial.
Até lá!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.



