ProtocolRegistry InfrastructureSmart Contracts

Categorias de Contratos

As cinco categorias de contratos inteligentes do Carrot — controladores, custodiantes, NFTs, tokens e registros.

Last updated on

Visão geral

Os contratos inteligentes da Rede Carrot são organizados em cinco categorias, cada uma com uma responsabilidade distinta. Esse design modular mantém os contratos individuais focados e auditáveis, enquanto o ContractRegistry os conecta em tempo de execução.

CategoriaContratosResponsabilidade
ControladoresInventoryManager, CreditPurchaseManager, CreditRetirementManagerLógica de negócio e orquestração
CustodiantesVault, RewardsVaultCustódia de ativos e distribuição
NFTsMassID, Certificate, CreditPurchaseReceipt, CreditRetirementReceiptTokens de prova soulbound (ERC-721)
TokensCreditTokens de crédito fungíveis (ERC-20)
RegistrosContractRegistry, CertificateRegistryDescoberta e rastreamento de relações

Controladores

Os controladores são os pontos de entrada para todas as operações principais. Eles orquestram fluxos de trabalho que abrangem múltiplos contratos, garantindo que cada operação seja executada atomicamente — ou todos os passos são bem-sucedidos ou nenhum deles é.

InventoryManager

Cria os ativos on-chain fundamentais. Quando os dados verificados estão prontos para minting, o InventoryManager minta NFTs de MassID e, em uma segunda transação, NFTs de Certificado e tokens de Crédito, no momento em que o crédito é emitido a partir do lote verificado. Ele também registra os relacionamentos entre esses ativos por meio do CertificateRegistry. Todos os ativos mintados são depositados no Vault.

CreditPurchaseManager

Executa compras de créditos atômicas. Em uma única transação, o CreditPurchaseManager:

  • Valida a ordem de compra usando uma assinatura de dados tipados EIP-712
  • Processa o pagamento em USDC
  • Atualiza os registros de certificados de lastro
  • Transfere os tokens de crédito para o comprador — para compras que não são integralmente aposentadas na mesma transação
  • Minta um CreditPurchaseReceipt como prova permanente
  • Registra as alocações de recompensas para os participantes

O CreditPurchaseManager suporta aposentadoria integrada — comprar e aposentar créditos em uma única transação — e esse é o caminho em uso hoje: toda compra é atualmente aposentada integralmente no momento da venda, de modo que os créditos são queimados em vez de entregues ao comprador. Os contratos também suportam aposentadoria parcial, com o restante transferido ao comprador, o que ainda não é usado em produção.

CreditRetirementManager

Realiza a aposentadoria de créditos standalone para detentores que desejam remover permanentemente créditos de circulação. O CreditRetirementManager queima os tokens de crédito, atualiza o rastreamento de certificados de lastro e minta um CreditRetirementReceipt como prova permanente da aposentadoria.

Custodiantes

Os custodiantes mantêm e gerenciam ativos em nome do ecossistema. Eles aplicam controles de acesso rigorosos — apenas contratos autorizados (controladores) podem transferir ou queimar ativos sob custódia.

Vault

O custodiante central para todos os NFTs soulbound (MassIDs, Certificados, NFTs de CreditPurchaseReceipt e CreditRetirementReceipt) e saldos de tokens de crédito antes da compra. O Vault é o lar permanente de todos os tokens não transferíveis do sistema, garantindo que permaneçam permanentes e rastreáveis, exceto quando revogados. Os tokens de crédito também são mantidos aqui como inventário disponível até que um comprador os adquira.

RewardsVault

Gerencia o sistema de distribuição de recompensas com preservação de privacidade. Durante as compras de créditos, os pagamentos em USDC são depositados no RewardsVault, e compromissos criptográficos (Merkle roots) representando a distribuição de recompensas são registrados on-chain. Isso mantém as identidades dos participantes pseudônimas — apenas um hash com escopo de compra é armazenado on-chain, e os hashes, sozinhos, não podem ser correlacionados entre compras. A carteira que reivindica e o valor tornam-se visíveis on-chain quando a recompensa é sacada, então reutilizar uma mesma carteira vincula os saques de um participante entre si. Os participantes reivindicam suas recompensas fornecendo Merkle proofs que são verificadas contra as roots armazenadas. O RewardsVault mantém USDC alocado para recompensas até que os participantes os reivindiquem.

NFTs (Soulbound ERC-721)

Todos os NFTs na Rede Carrot são soulbound — não transferíveis e mantidos permanentemente pelo Vault. Nenhum NFT pode ser transferido, vendido ou negociado. A única exceção é a revogação — um operador pode queimar um MassID ou Certificate e apontar seus metadados para um registro de revogação quando os dados subjacentes se mostram incorretos; os metadados originais e o motivo permanecem recuperáveis on-chain.

MassID

Representa um lote verificado de material residual. Cada MassID registra o tipo de material, peso e a cadeia completa de custódia desde a geração do resíduo até a coleta e triagem. Os MassIDs são a base do ciclo de vida dos créditos — cada certificado pode ser rastreado até um único MassID.

Certificate

Representa um resultado ambiental verificado — seja reciclagem (RecycledID) ou reduções de emissões de carbono (GasID). Os Certificados são vinculados ao seu MassID de origem por meio do CertificateRegistry e rastreiam seu ciclo de vida por meio de quatro quantidades: o montante total (definido no minting), o montante comprado (atualizado a cada venda), o montante aposentado (atualizado a cada aposentadoria) e o montante disponível — derivado no momento da leitura como o total menos o comprado; o montante aposentado não o afeta. Esse modelo contábil é central para a prevenção de dupla contagem — o contrato garante que créditos não possam ser vendidos além do saldo disponível, nem aposentados além do montante efetivamente comprado.

CreditPurchaseReceipt

Prova auditável de que uma compra de crédito ocorreu. Cada recibo registra quais certificados estavam envolvidos, o endereço do comprador, o montante comprado e os detalhes do pagamento. Os recibos de compra são visíveis no Carrot Registry e fornecem um registro permanente para conformidade e relatórios.

CreditRetirementReceipt

Prova permanente de que créditos foram aposentados (queimados). Os recibos de aposentadoria registram os certificados envolvidos, o montante aposentado e a parte que realizou a aposentadoria. São utilizados para relatórios ESG e conformidade regulatória, e podem ser visualizados no Carrot Registry ou em qualquer explorador de blockchain (ex.: PolygonScan).

Tokens (Fungíveis ERC-20)

Credit

Tokens de crédito ambiental fungíveis. A Rede Carrot emite dois tipos de crédito:

SímboloNomeRepresenta
C-BIOWTokenized Recycling Credit (TRC), ex.: do BOLD Recycling1 tonelada métrica de material reciclado certificado
C-CARB.CH4Tokenized Carbon Credit (TCC), ex.: do BOLD Carbon (CH₄) (metano)1 tonelada métrica de CO₂ equivalente em reduções

Os créditos são os únicos tokens transferíveis do sistema. São projetados para atividade de mercado — compra, custódia e aposentadoria de compensações ambientais. Todos os outros tokens (MassIDs, certificados, recibos) são soulbound e não podem ser transferidos. O sistema de créditos é projetado para suportar tipos de crédito adicionais além dos atuais C-BIOW e C-CARB.CH4 conforme novas metodologias ambientais forem validadas.

Registros

Os registros fornecem a infraestrutura para coordenação de contratos e rastreamento de relacionamentos. Eles não contêm lógica de negócio, mas são essenciais para a capacidade de atualização e a rastreabilidade do sistema.

ContractRegistry

O registro central que mapeia nomes lógicos de contratos para seus endereços implantados on-chain. Em vez de codificar endereços diretamente, os contratos consultam o ContractRegistry para descobrir uns aos outros em tempo de execução. Isso desacopla os contratos dos endereços uns dos outros. Uma atualização de lógica comum não exige nenhuma alteração no registro — o endereço do proxy é estável, então os dependentes continuam resolvendo a mesma entrada. O registro importa quando um contrato é totalmente substituído por um novo proxy: isso exige uma escrita no registro mais migração explícita de estado, em vez de reimplantar cada contrato dependente.

CertificateRegistry

Rastreia o relacionamento pai-filho entre tokens MassID e seus certificados vinculados. Cada certificado pode ser rastreado, por meio deste registro, até o lote específico de resíduos que ele representa. O CertificateRegistry é o que torna a rastreabilidade de ponta a ponta possível — de um crédito aposentado, passando por seu certificado, até o resíduo físico.

Relacionamentos entre tokens

Os ativos on-chain formam um grafo direcionado de relacionamentos:

  • MassID → Certificate — Vinculados por meio do CertificateRegistry. Um único MassID pode lastrear vários certificados; cada certificado é lastreado por exatamente um MassID.
  • Certificate → Credit — Os tokens de crédito são gerados no momento do minting em quantidades correspondentes aos seus certificados de lastro.
  • CreditPurchaseReceipt e CreditRetirementReceipt — Registram transações contra certificados específicos, fornecendo a trilha de auditoria para cada compra e aposentadoria.

Essa estrutura garante que cada crédito em circulação possa ser rastreado, por meio de seu certificado, até o lote específico de resíduos que o produziu.

Próximos passos

  • Fluxos On-Chain — Passo a passo de como esses contratos interagem durante o minting, compra e aposentadoria.
  • Segurança — Controle de acesso, pausabilidade e proteções de governança.
  • Ciclo de Vida dos Créditos — O ciclo de vida MassID → Certificate → Credit.

On this page