Ir para o conteúdo

Usando thirdweb na Tanssi

Introdução

thirdweb é um framework completo de desenvolvimento Web3 com ferramentas para criar contratos, dApps e muito mais. Você pode usar contratos predefinidos ou criar os seus, implantar via CLI e interagir com SDKs em várias linguagens (React, TypeScript, etc.). Para ver tudo o que o thirdweb oferece, consulte a documentação oficial.

Criar contrato

Para criar um novo contrato com a CLI do thirdweb:

  1. No terminal:
    npx thirdweb create contract
    
  2. Responda aos prompts:
  3. Nome do projeto
  4. Framework: Hardhat ou Foundry
  5. Nome do contrato
  6. Tipo base: Empty, ERC20, ERC721, ou ERC1155
  7. Extensões opcionais (lista)
  8. Abra o projeto no editor; o contrato estará em contracts/.

Exemplo de contrato ERC721Base sem extensões:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import '@thirdweb-dev/contracts/base/ERC721Base.sol';

contract Contract is ERC721Base {
    constructor(
        string memory _name,
        string memory _symbol,
        address _royaltyRecipient,
        uint128 _royaltyBps
    ) ERC721Base(_name, _symbol, _royaltyRecipient, _royaltyBps) {}
}

Ele herda ERC721Base importando o contrato, declarando a herança e implementando o construtor.

Depois de ajustar a lógica, implante na rede EVM da Tanssi (veja Implantar).

Também é possível implantar contratos prontos (NFT, token, marketplace) direto da página Explore:

  1. Acesse a página Explore
  2. Escolha o tipo de contrato
  3. Siga os prompts para configurar e implantar

Implantar contrato

O deploy do thirdweb implanta contratos em qualquer rede EVM sem expor chave privada ou configurar RPC manualmente.

  1. No diretório contracts do projeto, execute:
    npx thirdweb deploy
    
    Isso compila os contratos, permite escolher qual implantar e envia o ABI para o IPFS.
  2. No dashboard que abre, preencha parâmetros como:
  3. _name – nome do contrato
  4. _symbol – símbolo
  5. _royaltyRecipient – carteira que recebe royalties de vendas secundárias
  6. _royaltyBps – basis points (ex.: 500 = 5%)
  7. Selecione a rede (demo EVM da Tanssi ou sua própria).
  8. Ajuste configurações extras no dashboard (subir NFTs, permissões, etc.).

thirdweb deploy

Mais detalhes em thirdweb Deploy.

Criar aplicação

O thirdweb oferece SDKs para React, React Native, TypeScript, Unity, etc. Para criar um app:

  1. No terminal:
    npx thirdweb create --app
    
  2. Escolha:
  3. Nome do projeto
  4. Framework: Next.js, Vite ou React Native (exemplo usa Vite)

Depois use o SDK (React/TypeScript) para interagir com o contrato.

Informar Client ID

Você precisa de um Client ID (API key) do thirdweb. Crie um gratuitamente em Settings → API Keys:

  1. Dê um nome ao API key
  2. Defina domínios permitidos (para dev, pode permitir todos)
  3. Confirme

Coloque o Client ID no .env na raiz do projeto. Exemplo (app Vite) em client.ts:

client.ts
import { createThirdwebClient } from 'thirdweb';

// Substitua pelo seu Client ID
const clientId = import.meta.env.VITE_TEMPLATE_CLIENT_ID;

export const client = createThirdwebClient({
  clientId: clientId,
});

Nota

Se não definir o Client ID corretamente no .env, o app pode aparecer em branco. Corrija o Client ID primeiro.

Rodar localmente

Para testar local:

yarn dev

Veja o endereço/porta no console e abra no navegador.

Configurar chain

Como Tanssi não vem na lista padrão de @thirdweb/chains, defina uma chain customizada com defineChain:

chains.ts
import { defineChain } from 'thirdweb';
const tanssi = defineChain({
  id: 5678,
  rpc: 'https://services.tanssi-testnet.network/dancelight-2001/',
});

SDK do thirdweb

Resumo de métodos comuns do SDK:

Contas e carteiras

Conta (SDK) = um endereço capaz de assinar; não “conecta/desconecta”. Carteira agrupa contas, conecta/desconecta e delega assinatura.

Exemplo: inicializar e conectar MetaMask, assinar e enviar transação. (Ver snippet initialize.ts):

initialize.ts
import { sendTransaction } from 'thirdweb';
// MetaMask wallet used for example, the pattern is the same for all wallets
import { createWallet } from 'thirdweb/wallets';

// Initialize the wallet. thirdweb supports 300+ wallet connectors
const wallet = createWallet('io.metamask');

// Connect the wallet. This returns a promise that resolves to the connected account
const account = await wallet.connect({
  // Pass the client you created with `createThirdwebClient()`
  client,
});

// Sign and send a transaction with the account. Returns the transaction hash
const { transactionHash } = await sendTransaction({
  // Assuming you have called `prepareTransaction()` or `prepareContractCall()` before, which returns the prepared transaction to send
  transaction,
  // Pass the account to sign the transaction with
  account,
});

Obter contrato

Use getContract para conectar-se a um contrato (ex.: incrementer na rede demo EVM da Tanssi):

import { getContract } from 'thirdweb';

const contract = await getContract({
  client,
  address: '0xC12f6fA2d1CA8f875bD25555e8883f1dDa40a93D',
});

Ler dados

Use readContract para ler estados:

import { readContract } from 'thirdweb';

const value = await readContract({
  contract,
  method: 'function number() view returns (uint256)',
  params: [],
});

Escrever transações

Use sendTransaction para enviar transações (lembre-se de conectar carteira/conta):

import { sendTransaction, prepareContractCall } from 'thirdweb';

const transaction = prepareContractCall({
  contract,
  method: 'function increment()',
  params: [],
});

const { transactionHash } = await sendTransaction({
  account,
  transaction,
});

Eventos

Obtenha logs com getContractEvents:

import { getContractEvents } from 'thirdweb';

const events = await getContractEvents({
  contract,
  fromBlock: 0n,
  toBlock: 'latest',
});

Armazenamento IPFS

Use upload para enviar dados ao IPFS:

import { upload } from 'thirdweb/storage';

const uri = await upload({
  client,
  files: [
    {
      name: 'metadata.json',
      data: JSON.stringify({ name: 'Meu NFT', description: 'Exemplo' }),
    },
  ],
});

Conclusão

Com a CLI, o Deploy e os SDKs do thirdweb, você consegue criar, implantar e interagir com contratos na sua rede EVM da Tanssi com rapidez. Consulte a documentação do thirdweb para recursos avançados.

As informações apresentadas aqui foram fornecidas por terceiros e estão disponíveis apenas para fins informativos gerais. A Tanssi não endossa nenhum projeto listado e descrito no Site de Documentação da Tanssi (https://docs.tanssi.network/). A Tanssi Foundation não garante a precisão, integridade ou utilidade dessas informações. Qualquer confiança depositada nelas é de sua exclusiva responsabilidade. A Tanssi Foundation se exime de toda responsabilidade decorrente de qualquer confiança que você ou qualquer outra pessoa possa ter em qualquer parte deste conteúdo. Todas as declarações e/ou opiniões expressas nesses materiais são de responsabilidade exclusiva da pessoa ou entidade que as fornece e não representam necessariamente a opinião da Tanssi Foundation. As informações aqui não devem ser interpretadas como aconselhamento profissional ou financeiro de qualquer tipo. Sempre busque orientação de um profissional devidamente qualificado em relação a qualquer assunto ou circunstância em particular. As informações aqui podem conter links ou integração com outros sites operados ou conteúdo fornecido por terceiros, e tais sites podem apontar para este site. A Tanssi Foundation não tem controle sobre esses sites ou seu conteúdo e não terá responsabilidade decorrente ou relacionada a eles. A existência de qualquer link não constitui endosso desses sites, de seu conteúdo ou de seus operadores. Esses links são fornecidos apenas para sua conveniência, e você isenta e exonera a Tanssi Foundation de qualquer responsabilidade decorrente do uso dessas informações ou das informações fornecidas por qualquer site ou serviço de terceiros.
Última atualização: 9 de dezembro de 2025
| Criada: 9 de dezembro de 2025