WEB3DEV

Cover image for Como Cunhar um NFT Compactado na Solana
Isabela Curado Nehme
Isabela Curado Nehme

Posted on

Como Cunhar um NFT Compactado na Solana

30 de maio de 2023

Os NFTs compactados na blockchain Solana são um novo tipo de NFT que usa uma estrutura compactada da Árvore de Merkle para reduzir seu tamanho de arquivo e os custos de gás. Neste artigo, mergulharemos no emocionante mundo dos NFTs compactados em Solana.

Quando se trata de criar aplicativos da Web3 escaláveis, a Solana é uma das melhores escolhas por causa da sua alta velocidade, baixo impacto ambiental e, o mais importante, baixas taxas de gás. Devido a isso, a blockchain Solana está sendo amplamente utilizada como uma infraestrutura em mercados da Web3, jogos e na indústria de arte e colecionáveis ​​hoje em dia.

A Solana introduziu recentemente a compactação de estado e os NFTs compactados, que reduziriam o custo de cunhagem e desenvolvimento. Os NFTs compactados na blockchain Solana são um novo tipo de NFT que usa um formato compactado para reduzir o tamanho do arquivo e os custos de gás. Neste artigo, mergulharemos no emocionante mundo dos NFTs compactados em Solana e exploraremos a maneira mais fácil de cunhar NFTs compactados na Solana com a ajuda das APIs SHYFT.

Leia mais sobre NFTs compactados.

Antes de começar

Para começar, precisaremos de algumas coisas.

Registre sua conta SHYFT e obtenha sua própria chave de API SHYFT.

O x-api-key é um parâmetro de autenticação, que dá acesso às APIs SHYFT. Você pode obter sua própria chave de API no site da SHYFT. Basta se inscrever com seu ID de e-mail aqui e você pode obtê-lo gratuitamente. Se você já tiver uma chave de API SHYFT, favor pular esta etapa.

Node.js ou qualquer ambiente de servidor compatível com chamadas de API.

Usamos o Node.js para este artigo, mas estes podem ser inicializados usando qualquer ambiente de servidor que suporte chamadas de API, ou até mesmo com aplicativos de front-end do React, Next.js ou Vanilla JS.

Árvores de Merkle e NFTs compactados

Os NFTs compactados aproveitam das Árvores de Merkle, uma estrutura de dados compatível com compactação que armazena dados off-chain com hash criptográfico juntos e calcula um único hash final que é armazenado na cadeia. Esse método de “compactação” permite que os programas e dApps da Solana usem o espaço barato do livro-caixa da blockchain, ao invés do espaço mais caro da conta, para armazenar dados com segurança.

Criando uma Árvore de Merkle

Veja como podemos criar uma árvore merkle usando as APIs SHYFT. O ponto de extremidade da API:

POST https://api.shyft.to/sol/v1/nft/compressed/create_tree
Enter fullscreen mode Exit fullscreen mode

Todas as APIs da SHYFT requerem o parâmetro x-api-key em seu cabeçalho, que está disponível gratuitamente no site da SHYFT.

Parâmetros necessários para esta chamada de API

  • network: especifica o ambiente Solana Blockchain, que pode ser devnet, testnet e mainnet-beta.
  • wallet_address: especifica a autoridade da árvore e o pagador da transação (se não for declarado explicitamente pelo campo fee_payer).
  • max_depth_size_pair: este é um objeto JSON que especifica ainda dois campos - max_depth (a profundidade máxima da árvore de Merkle) e max_buffer_size (número máximo de alterações que podem ser feitas mantendo a validade do hash raiz).
  • canopy_depth: especifica o número de nós de prova que são armazenados ou gravados em cache na cadeia para um caminho de prova específico.
  • fee_payer(optional): se especificado, esta conta pagará a taxa de gás da transação, ao invés da autoridade da árvore wallet_address.

Para saber mais sobre as Árvores de Merkle e os parâmetros necessários para criá-la em detalhes, por favor, confira nossa documentação detalhada sobre as árvores de Merkle aqui.

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("x-api-key", "YOUR_API_KEY"); // Você pode obter sua própria chave de API SHYFT do https://shyft.to

var raw = JSON.stringify({
  "network": "devnet", // pode ser rede de desenvolvimento (devnet), rede de testes (testnet), ou rede principail beta (mainnet-beta)
  "wallet_address": "5KW2twHzRSxAiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2", // endereço do criador da árvore de merkle
  "max_depth_size_pair": {
    "max_depth": 14,
    "max_buffer_size": 64
  },
  "canopy_depth": 10,
  "fee_payer": "3yTKSCKoDcjBFpbgxyJUh4cMING77gFXBimkVBx2hKrf" // parâmetro opcional, especifica o pagador da taxa para criar a transação 
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/nft/compressed/create_tree", requestOptions) //api endpoint for creating Merkle Tree
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
Enter fullscreen mode Exit fullscreen mode
# Crie uma árvore de Merkle em Solana

Uma vez executada com sucesso, a resposta retornada terá um encoded_transaction que exigirá uma assinatura da wallet_address e o fee_payer (se especificado), na qual, após sua conclusão, uma nova árvore de Merkle será criada.

Cunhando NFTs compactados

A SHYFT fornece uma solução simples baseada em API para cunhagem de NFTs compactados em Solana. O ponto de extremidade da API para cunhar os NFTs compactados:

POST https://api.shyft.to/sol/v1/nft/compressed/mint
Enter fullscreen mode Exit fullscreen mode

Todas as APIs SHYFT requerem o parâmetro x-api-key em seu cabeçalho, que está disponível gratuitamente no site da SHYFT. Você pode obter sua própria chave de API SHYFT aqui.

Parâmetros necessários para esta chamada de API

  • network: seleciona o ambiente da blockchain Solana, que pode ser devnet, testnet ou mainnet-beta.
  • creator_wallet: especifica o endereço da carteira que é o criador do NFT. Este será o pagador da taxa de transação se não for especificado no campo fee_payer.
  • merkle_tree: endereço da árvore de Merkle existente que será associado a este NFT compactado.
  • metadata_uri: aceita a URL de metadados do NFT, que contém metadados do NFT no formato JSON. Este documento JSON deve estar em conformidade com o padrão de token não fungível da metaplex.
  • max_supply(optional): aceita o número de clones/edição de cunhagens possíveis para este NFT. Por padrão, ele é definido como 0, o que cria um NFT único.
  • collection_address(optional): endereço da coleção à qual o NFT será adicionado.
  • is_mutable(optional): especifica se a atualização deste NFT é possível ou não. Por padrão, ele é definido como “verdadeiro”.
  • receiver(optional): endereço da conta que recebe este NFT recém cunhado. Se não for especificado, a carteira do criador receberá o NFT.
  • is_delegate_authority(optional): se o destinatário do NFT terá a autoridade de atualizar o NFT.
  • fee_payer(optional): se mencionado, esta é a conta que pagará a taxa de gás da transação.

Saiba mais sobre os parâmetros desta API aqui.

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("x-api-key", "YOUR_API_KEY"); // Você pode obter sua própria chave de API SHYFT do https://shyft.to

var raw = JSON.stringify({
  "network": "devnet", // pode ser rede de desenvolvimento (devnet), rede de testes (testnet), ou rede principail beta (mainnet-beta)
  "wallet_address": "5KW2twHzRSxAiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2", // endereço do criador a árvore de merkle
  "max_depth_size_pair": {
    "max_depth": 14,
    "max_buffer_size": 64
  },
  "canopy_depth": 10,
  "fee_payer": "3yTKSCKoDcjBFpbgxyJUh4cMING77gFXBimkVBx2hKrf" // parâmetro opcional, especifica o pagador da taxa para criar a transação 
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/nft/compressed/create_tree", requestOptions) // ponto de extremidade par a criação da árvore de Merkle
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
Enter fullscreen mode Exit fullscreen mode
# Cunhando NFTs compactados em Solana - usando APIs

Depois de executada com sucesso, a API retorna um encoded_transaction que precisa de uma assinatura do creator_wallet e do fee_payer (se especificado) antes de ser executada pelo tempo de execução da Solana. Para saber sobre assinatura de transações na Solana, você pode seguir nosso guia do desenvolvedor aqui ou também pode conferir nosso repositório no GitHub para todas as funções necessárias para assinar transações codificadas. Uma vez feito isso, seu novo NFT compactado será criado. A resposta da API acima se parece um pouco com esta:

{
"success": true,
"message": "transação de cunhagem de gerada com sucesso",
"result": {
"encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEJDiwtqCYXlzhrq8mEyvvhhNTOfGeIyz37PhBiUwnXHZv4QCwHlX8JKKwKpawHjfHTp/CXruh+Lt6Hx8xs+BZ7UD89hGPOY71rWjp41Y2cEFuh3S4tVBuiQYdfUskT+tvqRVWBOfABirW4DbXrmT//0334xeljBq7uSsGpdHc5vyxF/S8seYZj5fquYDnlKBxRnoPx4XgntLNTtXU342z+sUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZLL1Rhodf4wAu7ZXc4ZiZjkwHTJUvMr2m/ME7O6J68SYG2nVFE9kcF2V6x3Ws/IDvpmhnD5VqC3afdM4GMcJyYVZi15G8ljDYch8aBQBsYKvPTTM5zV/H8BI2juhGa9piLgOt5NShpsiR0X1ndv4omWMoT3GiBISY1HK4HwaWlCSoT7pXEHLoIpn9axn6N9+HaEWJeHWQTf49PI4MDfxT/N2xmRuqZRGXDUBt0eb8kZY/vzBLgUWmrRPqwMO2rywtwZbHj0XxFOJ1Sf2sEw81YuGxzGqD9tUm20bwD+ClGC7wPwLtHyi90xBEulKsTz6PGNOXcF+rLA80aI81+eHyVwfzc3PMZOVcMsE5QF5AyAywyf7wsaT3j5qVkvaffewEJEAMICAIBAQEJBwQLBg0KDAXtAZkSsi/FnlYPEQAAAENvbXByZXNzZWQgTkZUICMxBAAAAENORlRQAAAAaHR0cHM6Ly9nYXRld2F5LnBpbmF0YS5jbG91ZC9pcGZzL1FtWW1VYjVNSFp3WW92blFnOXFBTlRKVWk3UjhWYUU1Q2V0ZnNzY3phU1duNUv0AQEBAQABAAEASYG2nVFE9kcF2V6x3Ws/IDvpmhnD5VqC3afdM4GMcJwAAAIAAABALAeVfwkorAqlrAeN8dOn8Jeu6H4u3ofHzGz4FntQPwFQLC2oJheXOGuryYTK++GE1M58Z4jLPfs+EGJTCdcdm/gAFA==",
"mint": "DPvPbxaX4rDQt8DH8GQbikdpYHPfyiKXunCLd27Qb8ut",
"signers": [
"5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2",
"3yTKSCKoDcjBFpbgxyJUh4cM1NG77gFXBimkVBx2hKrf"
]
}
}
Enter fullscreen mode Exit fullscreen mode

Os NFTs compactados em Solana representam um salto significativo na evolução dos ativos digitais, o que os torna amplamente utilizáveis ​​em jogos da Web3, onde o armazenamento eficiente de ativos de NFT é necessário para milhões de jogadores ou ambientes fechados de NFT, como ingressos para shows musicais ou shows privados, e vemos que a SHYFT fornece uma solução simples baseada em API para cunhagem de NFTs compactados, que pode ser facilmente implementada ou integrada em dApps da Solana.

Se você gostou deste artigo sobre cunhagem de NFTs compactados, sinta-se à vontade para verificar nossos outros artigos sobre Como Criar um Feed de Atividade Web3 ao Vivo na Solana ou Obtenção de Transações Legíveis por Humanos na Solana. Esperamos que você se divirta construindo com SHYFT.

A SHYFT também provém um SDK JS que fornece uma tonelada de funcionalidades para interações com a blockchain Solana, incluindo NFTs, tokens fungíveis, carteiras, retornos de chamadas e transações, sinta-se à vontade para conferir aqui.

Fontes

Documentação da API SHYFT

Site da SHYFT

Obtenha a chave da API

GitHub

Junte-se ao nosso Discord

Javascript SDK

Experimente nossas APIs na Swagger UI

Esse artigo foi escrito pela Equipe Shyft e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.

Oldest comments (0)