Skip to content

Gerenciamento de NFTs

Pré-requisitos de acesso

  • Permissão (módulo): manageToken
  • Licença/Feature: MANAGE_NFTS
  • Contêiner do menu: TOKENIZAÇÃO → grupo TokenizaçãoGerenciar NFTs

O que é / quando usar

Catálogo de NFTs / ativos tokenizados (imóveis, certificados, colecionáveis, pacotes). Aqui o operador cria, edita, visualiza e desativa NFTs, atribui-os a uma coleção e a uma categoria, define preço e moedas aceitas, configura comissões de carteiras, sorteia e envia (distribui) NFTs para usuários.

A criação de uma NFT exige que a coleção e a categoria já existam.

Pré-condições

  • Permissão: manageToken (dupla — enum CPM + módulo dinâmico no DB).
  • Licença/Feature: MANAGE_NFTS.
  • Dependências: a Coleção precisa existir (Coleções); a Categoria precisa existir e permitir criação de produto (allow_product_creation = true, em Categoria de NFTs).

Passo a passo (listagem)

  1. Acesse o menu Tokenização → Gerenciar NFTs.
  2. Busque por nome (busca com debounce) e filtre por coleção.
  3. Pelos ícones de cada linha: sorteio (roleta), enviar (distribuir), editar, visualizar e excluir.
  4. Use Criar NFT para abrir o formulário.

Filtros e colunas

Filtro / ColunaO que mostraOrigem do dado
Busca por nomeFiltra por name (server-side, paginado)getAllAssets({ name, collectionId, limit, offset })
ColeçãoFiltra por collectionIdgetCollections()
Nome / Tipo / ValorIdentificação, tipo (NFT) e preço atual em tokensTokenController (assets)
AçõesRoleta, enviar, editar, visualizar, excluir

Formulário de Criar / Editar NFT

O formulário é dividido em grupos (Catálogo, Comercial, Configurações) com seções. Em criação, a seção "Informações adicionais" fica bloqueada (só liberada em edição/visualização).

Seção: Geral (obrigatória)

CampoO que éObrigatório?Efeito no sistema/backend
ColeçãoColeção à qual a NFT pertenceSimcollection.id. Define o contrato/padrão on-chain (ERC-721 ou regulado).
CategoriaCategoria do ativoSimcategory_id — só categorias com allow_product_creation.
NomeNome do ativoSimname.
DescriçãoDescriçãoSimdescription.
QuantidadeQuantidade de itens a emitirSimquantity.
CaracterísticasPares chave/valor livres ou por templateNãocharacteristics[].

Seção: Precificação (obrigatória)

CampoO que éObrigatório?Efeito no sistema/backend
PreçoValor do ativo na moeda fiduciáriaSim*price (BigNumber). *Pode ser dispensado com skipPrice.
Moedas aceitasTokens aceitos como pagamento (checkbox por token)Nãopayment_types[].
Permite splitDistribui o pagamento entre os tokens marcadosNãoallow_split + percentual por token (paymentPrice). A soma deve fechar 100%.
Tipo de transação / TaxaImposto/taxa da transação (Percentual ou Absoluto)NãotaxType (A/P) + transactionTax.

Seção: Mídia (obrigatória)

CampoO que éObrigatório?Efeito no sistema/backend
FotosImagens do ativoSimphotos[] (ao menos uma).

Seção: Carteiras / Comissões (opcional)

CampoO que éObrigatório?Efeito no sistema/backend
Carteira + comissãoCarteiras que recebem comissão da vendaNãowallets_commission[] = { id, commission }.

Seção: Publicação (configurações)

Reúne os toggles de comportamento da NFT e os campos de token vinculado/liquidez. A referência completa de cada toggle está em Referência de configurações (toggles).

Campos não-toggle desta seção:

CampoO que éObrigatório?Efeito no sistema/backend
Token vinculado para distribuições futurasToken usado em distribuições/claims feitas a partir do NFTNãotokenClaimId. Define qual token o holder recebe quando o NFT distribui valor.
Token de liquidez para distribuições futurasToken de liquidez oferecido como alternativa de recebimentoNãoliquidityToken. Habilita a opção de o holder escolher receber em fiat/token (ver block_liquidity_option).
Status internoStatus operacional usado internamente para o NFTNãostatus. Não exibido ao usuário final.

Seção: Informações adicionais (só em edição)

projectUrl, projectDescription, projectCustomHtml e contract — informações de projeto e endereço de contrato.

Referência de configurações (toggles)

A NFT possui 8 toggles distribuídos entre as seções Precificação (allow_split) e Publicação (os demais). Todos são booleanos e gravados na entidade assets do TokenController. A tabela abaixo cobre 100% deles.

Rótulo (tela)Campo (ngModel)O que faz (efeito no backend)Quando usar
Publicar NFT imediatamenteasset.enabledPublica a NFT nas plataformas (Midas-Web/Trade) e a inclui nas listagens de catálogo. Desligado, a NFT existe mas fica oculta dos usuários. A "exclusão" da NFT na listagem também é um soft-delete que zera este campo (enabled = false + disabled = now).Ligue quando a oferta estiver pronta para o público. Deixe desligado em rascunhos/pré-lançamento.
Bloquear vendaasset.block_sellTrava a venda primária. Em market.core.handler, a reserva de compra lança erro (NFT sale is blocked) quando block_sell = true, exceto chamadas administrativas (isAdminCall). É travado automaticamente na Queima de NFTs (snapshot em nft_burn_operation.previous_block_sell para reversão manual).Para encerrar a venda primária de uma oferta (esgotada, suspensa, em recall) sem excluir a NFT.
Bloquear revendaasset.block_resellImpede o mercado secundário: no app do holder (Midas-Web card-list), as ações de revenda, leilão e split ficam ocultas quando block_resell = true. Também é travado em conjunto com block_sell durante a Queima de NFTs (snapshot em previous_block_resell).NFTs não-revendáveis: ingressos nominais, cotas com lock-up, ativos regulados que não podem circular.
Somente pacoteasset.only_packageRemove a NFT do catálogo avulso: a query de listagem pública (AssetsDAO) adiciona only_package = false, então a NFT só aparece/é vendida dentro de um Pacote de NFTs. A tela de detalhe do produto também oculta o checkout avulso. Admin e perfil de coleção continuam vendo.Quando a NFT só deve ser adquirida embutida num pacote, nunca isoladamente.
Gerenciar acessoasset.handle_accessTrata a NFT como controle de acesso/credencial: ao concluir a compra, o market.core.handler cria um user token de acesso no CPM para o comprador (e remove o do vendedor na revenda). A NFT passa a aparecer na lista de "access assets" do admin.Ingressos, assinaturas, áreas restritas — qualquer NFT que conceda um direito de acesso atrelado à posse.
Bloquear preferência de liquidezasset.block_liquidity_optionCongela a escolha de forma de recebimento das distribuições: changeDistributionType (assets.core.handler) lança erro quando true, e no app do holder os ícones de "receber em fiat/token" ficam desabilitados. Atua junto com o Token de liquidez configurado.Quando a forma de liquidez já está definida pela oferta e o holder não pode mais alterná-la.
Remover do Informe de Rendimentos (IRPF)asset.block_from_irpfExclui a NFT do relatório de IRPF: o irpf.snapshot.handler e o gerador de informe filtram (!block_from_irpf) tanto o snapshot-base quanto o snapshot-final, removendo o ativo das linhas de rendimento.Ativos que não devem entrar no Informe de Rendimentos do usuário (ex.: itens não tributáveis, utilitários internos).
Permite Split de NFTsasset.allow_splitDois efeitos: (1) na Precificação, habilita distribuir o pagamento entre vários tokens aceitos (percentual por token, soma = 100%); (2) no app do holder, libera a ação de fracionar (split) a NFT na revenda — o ícone de split só aparece com allow_split = true, block_resell = false e price > 0.Quando a NFT pode ser fracionada e/ou paga com rateio entre múltiplos tokens.

Relação com a Queima de NFTs

block_sell e block_resell não são apenas configuração manual: a Queima de NFTs liga os dois automaticamente na mesma transação atômica do header da queima, gravando os valores anteriores em nft_burn_operation.previous_block_sell / previous_block_resell para permitir reversão manual. Travar a NFT em T0 impede compra e revenda enquanto o watcher processa a baixa on-chain (sink wallet ou burn nativo).

Efeitos não-óbvios

  • block_sell tem exceção de admin: chamadas com isAdminCall ignoram o bloqueio — o operador ainda consegue distribuir/vender pela administração mesmo com a venda pública travada.
  • only_package não some para admin: a NFT continua visível para administradores e no perfil da coleção; o filtro only_package = false só vale para o catálogo público do usuário.
  • allow_split é dois recursos num toggle: controla tanto o rateio de pagamento (Precificação) quanto a permissão de fracionar a NFT no mercado secundário.

Ações e modais

  • Criar / Editar: modal de confirmação (bottom sheet). A criação envia o payload completo (createAssets); a edição envia o subconjunto editável (editAssets).
  • Sorteio (roleta): abre a roleta de sorteio — todos os usuários que possuem aquela NFT participam; ao girar, é exibido o e-mail do ganhador e o ID da NFT.
  • Relatório de NFT: na tela de sorteio, exporta a lista de usuários com indicação de quem possui a NFT (e-mail, nome, telefone, data de cadastro, status da conta).
  • Enviar (distribuir) NFT: modal de distribuição — o admin envia a NFT para usuários específicos.
  • Excluir: desativação lógica (enabled = false + disabled = now), preservando histórico.

Regras de negócio / cuidados

Atenção

  • Coleção e categoria são pré-requisitos — sem elas o save não habilita.
  • Mint exclusivo do job (crowdfunding): para ativos de crowdfunding, a emissão e a queima de NFTs ocorrem apenas pelo job de crowdfunding. A distribuição financeira não emite NFT, e o TKN_OWNER não emite nem revende — isso garante a invariante captado == NFTs por construção.
  • block_sell / block_resell travam venda primária e secundária; são também acionados automaticamente no fluxo de Queima de NFTs.

Irreversível

  • A emissão (mint) de NFTs on-chain não tem rollback. Confira coleção, categoria e quantidade antes de confirmar.
  • Valores financeiros: preço, comissões e taxas são BigNumber — sem arredondamento.
  • Status APPROVED: distribuições/envios em nome de um usuário exigem o usuário-alvo com status === 'APPROVED'.

Exemplos

Cenário 1 — NFT de imóvel tokenizado com comissão de carteira
  1. Geral: coleção "Imóveis SP", categoria "Imóveis", nome, descrição, quantidade 100.
  2. Precificação: preço R$ 1.000,00; moedas aceitas: BRLX. Tipo Percentual, taxa 2%.
  3. Carteiras: adicionar a carteira do parceiro com commission = 5.
  4. Mídia: fotos do imóvel.
  5. Publicação: Publicar anúncio ligado, Bloquear revenda conforme a regra da oferta.
  6. Salvar. Resultado: 100 cotas-NFT publicadas, com comissão de 5% à carteira do parceiro.
Cenário 2 — NFT de acesso (ingresso) não-revendável
  1. Geral: coleção "Eventos", categoria "Ingressos", quantidade conforme lotação.
  2. Publicação: ligar Gerenciar acesso e Bloquear revenda.
  3. Precificação: preço do ingresso; moeda aceita conforme a operação.
  4. Salvar. Resultado: NFT funciona como ingresso, sem mercado secundário.

Telas relacionadas