WEB3DEV

Cover image for Aprenda a codificar seu próprio contrato inteligente SoulBound NFT
Diogo Jorge
Diogo Jorge

Posted on

Aprenda a codificar seu próprio contrato inteligente SoulBound NFT

Image description

Antes de escrever nosso contrato SoulBound, vamos entender o que é SoulBound NFT e como ele é útil para nós.

Soulbound Tokens (SBT) são apenas tokens não fungíveis (NFTs) que, “uma vez adquiridos, não podem ser transferidos ou vendidos para mais ninguém”.

Tokens SoulBound podem ajudá-lo:

  • criar um sistema abertamente verificável onde as pessoas possam emitir seu currículo digital como tokens SoulBound, o que ajudará a verificar os históricos de trabalho de um indivíduo e removerá a falsificação.
  • possibilitar que protocolos para verificar os perfis de crédito dos mutuários avaliem suas pontuações de crédito para determinar quanto eles podem obter em empréstimo.
  • pode ajudar a emitir certificados educacionais como carteira de motorista, certificados de incorporação e outras provas pessoais e profissionais essenciais.

e muito mais.

Ideias onde você pode usar SoulBound Tokens:

  1. Em sua faculdade, agora mesmo, para adicionar notas de testes
  2. Usando como um token de identificação em sua faculdade
  3. Usando Soulbound token como seu currículo

Assim, não vamos esperar mais e começar com nosso Dia 3 ⚒️

1. Crie um projeto e instale as dependências

1.1: Use os seguintes comandos em sua CLI para inicializar seu projeto.

mkdir soulbound-NFT-with-buildbear && cd soulbound-NFT--with-buildbear
Enter fullscreen mode Exit fullscreen mode

1.2: Execute o comando npx hardhatem sua CLI e escolha Create a Javascript Object; escolha yespara todas as opções.

Depois de ter executado com sucesso o acima e se você abrir este repositório no VS Code, você deve ter uma estrutura de diretórios semelhante à seguinte:

Image description

2. Codificando seu contrato Soulbound NFT

2.1: Crie um arquivo chamado Soulbound.sol na pasta contracts.

2.2 Usamos o código do contrato ERC-721 que já aprendemos no Dude! Acabei de implantar meu próprio NFT!!! ….WT.F!

Você pode usar o seguinte código:

Image description

Você pode até mesmo obter o código acima do nosso Github aqui

3. Implantando e testando o porque SoulBound Tokens são diferentes

Agora, vamos implantá-lo em testnet privada usando BuildBear para brincar com o contrato

3.1: Criando uma Testnet privada no BuildBear 🐻‍❄️ (por que BuildBear, você pode perguntar? Dê uma olhada aqui: *Onde o Localhost falha e *Ganhe Web3 Hackathons, usando a análise do BuildBear Testnet)

3.1.1: Visite o aplicativo BuildBear, ao entrar no Github você verá uma página semelhante à imagem abaixo:

Image description

Aqui nós teremos que criar um nó simples para nossa aplicação de stake, então vamos clicar em criar um endpoint e nós vamos ser redirecionados para a página de configuração do nó.

Então, vamos simplesmente clicar em create, como mostrado abaixo.

Image description

Parabéns! Você criou seu nó em testnet privada!

Sua página deve ser atualizada para algo semelhante a isso:

Image description

Clique no URL do RPC (copie ou clique para visualizar) para obter o RPC em sua rede de teste privada.

3.2: Para realizar transações, precisamos de fundos da faucet. Não se preocupe! Não precisamos buscar faucets aleatórias para obter o Ether de teste.

Clique na Open Faucet e adicione a sua escolha à sua conta.

Image description

Depois disso, clique em Add to Metamask no canto direito da página da torneira.

Sua metamask receberá 1.000 BB ETH imediatamente.

3.3: Atualize o hardhat.config.js para o seguinte:

Image description

Nas redes, criamos uma rede chamada **buildbear **e adicionamos nossa URL RPC lá e adicionamos a chave privada da conta metamask (por favor, não exponha sua chave privada a ninguém, nunca).

Agora nossa configuração está pronta! Vamos escrever nosso contrato inteligente.

4. Implante nosso contrato Soulbound usando o BuildBear

4.1: Use o script a seguir para implantar seu contrato soulbound:

const { ethers } = require("hardhat");
const hre = require("hardhat");
async function main() {
 const Soulbound = await hre.ethers.getContractFactory("Soulbound");
 const soulbound = await Staking.deploy();
 await soulbound.deployed();
 console.log(
   "Soulbound contract deployed to:", soulbound.address
 );
}
main().catch((error) => {
 console.error(error);
 process.exitCode = 1;
});
Enter fullscreen mode Exit fullscreen mode

Abra sua CLI e execute o seguinte comando:

npx hardhat run scripts/deploy.js --network buildbear
Enter fullscreen mode Exit fullscreen mode

4.2 Agora se você voltar para o BuildBear Explorer (link disponível no BuildBear App, depois de criar sua testnet privada). Você verá seu contrato implantado.

Image description

4.3 Agora abra seu endereço implantado e abra a aba contrato de gravação dentro da aba de contratos

Image description

Você pode ver aqui todas as funções que incluímos em nosso contrato.

Para cunhar nosso token soulbound, vamos chamar a função safeMint que requer o endereço do usuário e o tokenURI do NFT que inclui todos os metadados do token.

4.4 (opcional): Se você não sabe como fazer upload de tokenURI no IPFS, então você deve acompanhar.

O IPFS permite que você armazene seus dados como imagens e outros dados na blockchain. Para armazenar seus próprios dados, abra o Pinata, que é uma plataforma que permite armazenar dados no IPFS.

Crie um arquivo .json em seu sistema e adicione os seguintes dados a ele.

{
   "title": "John Doe",
   "type": "Identity Card",
   "properties": {
       "age": {
           "type": "string",
           "description": "19"
       },
       "image": {
           "type": "string",
           "description": "hhttps://gateway.pinata.cloud/ipfs/QmQPo8X32C1NnpqjwckxyAHpmXyoJk1G1x4fu5GLcxLqVG"
       },
       "course": {
           "type": "string",
           "description": "Computer Science"
       }
   }
}
Enter fullscreen mode Exit fullscreen mode

E carregue este arquivo no Pinata. Isso fornecerá um link IPFS onde os metadados são armazenados.

Use esse link para cunhar seu token NFT.

4.5 Passe seu endereço de carteira e tokenURI para a função safeMint cunhar seu token Soulbound.

Image description

E clique no botão write.

Agora você pode ver que nosso token Soulbound foi cunhado. Use o hash da transação fornecido para ver as informações do token.

Image description

Aqui você pode ver no token transferred, encontramos a transferência ERC721

4.6 Se você olhar na guia advance, poderá ver que o token foi cunhado no endereço fornecido pelo usuário.

Image description

Você pode usar o valor do URI e pesquisá-lo no seu navegador, você receberá os metadados do seu token, que acabou de fornecer.

Image description

USP de SoulBond Tokens. Isso é o que torna o SoulBond “SoulBond”

Os tokens Soulbound são usados ​​principalmente como tokens de identificação que só podem ter um proprietário.

Mas mesmo nos tokens de identificação, podemos precisar atualizar quaisquer novos dados para ele. Então, para isso, não vamos cunhar um novo token, mas sim atualizar os metadados do mesmo token.

Vamos entender como podemos atualizar os metadados do token cunhado.

4.7 Abra o Pinata e clique na opção editar metadados e adicione o par de valores-chave que deseja adicionar aos metadados.

Image description

Isso adicionará o par de valores-chave acima aos seus metadados em algum momento e você não precisará cunhar outro token para adicionar os metadados 😃

Os tokens Soulbounds não são apenas NFTs simples, mas têm suas próprias vantagens, o que os torna tão atraentes.

Para saber mais sobre o BuildBear, leia o docs

Obtenha o código Github acima aqui

Se você aprecia o que estamos fazendo, siga-nos no Twitter e junte-se ao grupo Telegram se ainda não o fez.

E, por favor, nos dê um aplauso 👏 se você gosta do nosso trabalho.

Recapitulação do #web3DevWithBuildBear até agora

Autor:

Pari Tomar (Twitter || LinkedIn), sempre aberta a feedback e aprendizado.

A propósito, se você conhece alguém que gostaria de trabalhar com o BuildBear. Por favor, dê uma olhada aqui!!!

Este artigo foi escrito por Pari Tomar e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.

Latest comments (0)