Fluxos On-Chain
Descrições passo a passo dos principais fluxos de transação on-chain — minting, compra de créditos, recompensas, aposentadoria e revogação.
Last updated on
Visão geral
Os smart contracts da Rede Carrot executam cinco fluxos on-chain principais. Toda transação é atômica — ou todos os passos são concluídos com sucesso ou nenhum deles é, prevenindo alterações parciais de estado. O minting ocupa duas transações por desenho, porque elas acontecem em momentos diferentes: o MassID é mintado quando o lote de resíduos é verificado, e o certificado é mintado quando o crédito é emitido a partir dele.
Todas as transações são registradas on-chain e visíveis por meio de qualquer explorador de blockchain (por exemplo, PolygonScan). As principais operações também são exibidas no Carrot Registry com contexto ambiental e dados de rastreabilidade.
Minting
Quando dados verificados estão prontos para minting, o InventoryManager cria os ativos on-chain fundamentais em duas etapas, cada uma em sua própria transação.
Passo 1 — Minting de MassID
NFTs MassID são mintados para o Vault, cada um com uma URI de metadados no IPFS contendo dados de proveniência: tipo de material, peso, origem geográfica e a cadeia de custódia completa, desde a geração do resíduo até a coleta e triagem.
Passo 2 — Minting de certificado e crédito
NFTs de certificado são mintados e vinculados aos MassIDs correspondentes por meio do CertificateRegistry. Tokens de crédito fungíveis (ERC-20) são mintados em quantidades equivalentes e depositados no Vault.
Após a minting, todos os ativos ficam mantidos pelo Vault e prontos para compra de créditos. O CertificateRegistry registra qual MassID respalda cada certificado, estabelecendo a cadeia de rastreabilidade que persiste por toda a vida útil desses ativos.
Compra de créditos
Uma transação atômica executada pelo CreditPurchaseManager que realiza toda a compra em uma única operação. Se qualquer passo falhar, toda a transação é revertida.
Passo 1 — Validação da assinatura de compra
A ordem de compra é verificada usando uma assinatura de dados tipados EIP-712 de um signatário autorizado. Essa validação criptográfica garante que apenas ordens de compra legítimas e pré-aprovadas sejam executadas on-chain.
Passo 2 — Pagamento
USDC é transferido do pagador para o RewardsVault, onde fica disponível para distribuição de recompensas aos participantes.
Passo 3 — Atualização do certificado
O valor comprado é registrado em cada certificado de respaldo, reduzindo o inventário disponível. Isso garante que os mesmos créditos não possam ser vendidos duas vezes.
Passo 4 — Entrega ou aposentadoria de créditos
Hoje, todo crédito comprado é aposentado na mesma transação, de modo que nenhum token de crédito é entregue à carteira do comprador. Os contratos também suportam aposentadoria parcial, com tokens de crédito (por exemplo, C-BIOW, C-CARB.CH4) transferidos do Vault para a carteira do comprador no restante — uma capacidade que ainda não é usada em produção.
Passo 5 — Minting do recibo
Um NFT CreditPurchaseReceipt é mintado para o Vault como prova permanente e auditável da transação. O recibo registra os certificados envolvidos, o comprador, o valor e os detalhes do pagamento.
Passo 6 — Registro de recompensas
Uma raiz Merkle representando a distribuição completa de recompensas é registrada no RewardsVault. Isso permite que os participantes reivindiquem sua parcela do pagamento sem revelar detalhes de identidade on-chain.
Aposentadoria integrada
Com a aposentadoria integrada, os créditos são queimados (em vez de transferidos ao comprador) na mesma transação, e um CreditRetirementReceipt também é mintado. É assim que toda compra funciona hoje: compradores adquirem e aposentam créditos em um único passo, e reivindicam a compensação ambiental imediatamente.
Distribuição de recompensas
A distribuição de recompensas utiliza um mecanismo de preservação de privacidade que mantém as identidades individuais dos participantes off-chain, enquanto preserva a verificabilidade on-chain.
Registro
Durante cada compra de créditos, uma raiz Merkle é registrada on-chain no RewardsVault. Essa raiz representa a distribuição completa de recompensas para aquela transação. As identidades dos participantes permanecem pseudônimas — apenas compromissos com hash são armazenados publicamente on-chain. Os dados de distribuição subjacentes são mantidos off-chain pelo backend.
Reivindicação
Os participantes podem reivindicar suas recompensas fornecendo provas Merkle que verificam seu direito contra a raiz on-chain. O RewardsVault valida a prova e libera o USDC alocado ao requerente. Cada alocação só pode ser reivindicada uma vez — o contrato rastreia o status de reivindicação para prevenir reivindicações duplicadas.
Auditabilidade
Embora as identidades individuais dos participantes não sejam visíveis on-chain, auditores autorizados podem acessar os dados de distribuição subjacentes para identificar participantes para fins de conformidade. As raízes Merkle on-chain servem como compromissos criptográficos de que os dados off-chain não foram adulterados.
Aposentadoria de crédito (independente)
Para detentores de créditos que desejam aposentar créditos que já possuem, o CreditRetirementManager executa um fluxo de aposentadoria independente.
Passo 1 — Validação da assinatura de aposentadoria
A ordem de aposentadoria é verificada usando uma assinatura de dados tipados EIP-712, garantindo que apenas solicitações de aposentadoria autorizadas sejam processadas.
Passo 2 — Queima de créditos
Tokens de crédito são queimados (destruídos permanentemente) do saldo do próprio Vault, não diretamente da carteira do detentor. O detentor, portanto, transfere os créditos para o Vault antes, como uma transferência comum de token.
Esse depósito é uma transação separada, fora da aposentadoria atômica descrita aqui: se a ordem de aposentadoria falhar depois, o depósito não é revertido junto, e os contratos não expõem caminho de retorno — apenas controladores autorizados podem movimentar ativos para fora do Vault. Nesse caso, reenvie a ordem de aposentadoria em vez de considerar os créditos perdidos.
Tokens queimados nunca podem ser recuperados ou reemitidos — a compensação ambiental é permanentemente reivindicada.
Passo 3 — Rastreamento de certificado
Os valores aposentados são registrados nos certificados de respaldo, atualizando seus totais de aposentadoria. Isso mantém a contabilidade precisa em toda a camada de certificados.
Passo 4 — Minting do recibo
Um NFT CreditRetirementReceipt é mintado para o Vault como prova permanente da aposentadoria. Este recibo é a evidência definitiva on-chain de que os créditos foram aposentados.
Créditos aposentados são registrados na blockchain e visíveis por meio do Carrot Registry, fornecendo evidência transparente e auditável de que a compensação ambiental foi reivindicada e não pode ser contada duas vezes.
Revogação
Ativos podem ser revogados quando os dados subjacentes são considerados incorretos ou fraudulentos. A revogação é um mecanismo de proteção que preserva a credibilidade das reivindicações ambientais da Rede Carrot.
Revogação de MassID
Revogar um MassID não aciona revogação em cascata nos seus certificados:
- Certificados vinculados não são revogados automaticamente. Cada certificado precisa ser revogado por conta própria, antes do MassID, para não deixar certificados ativos vinculados a um MassID revogado.
- Proteção: Um MassID não pode ser revogado enquanto qualquer certificado ainda vinculado tiver créditos comprados — revogá-lo valida que cada certificado vinculado seria ele próprio revogável. Isso impede a invalidação retroativa de créditos que compradores já adquiriram de boa-fé. Certificados que já foram revogados são desvinculados do MassID pela sua própria revogação, então não o bloqueiam mais.
Revogação de certificado
Certificados individuais podem ser revogados independentemente sem afetar o MassID correspondente ou certificados relacionados. Isso permite correções direcionadas quando apenas reivindicações ambientais específicas precisam ser invalidadas.
- Assim como na revogação de MassID, a revogação de certificado é bloqueada se créditos daquele certificado já tiverem sido vendidos.
Preservação da trilha de auditoria
Revogar um ativo o marca como revogado, substitui sua URI de metadados por um registro de revogação e queima o NFT — e, no caso de certificados, o desvincula do seu MassID de origem no CertificateRegistry. A marca de revogado permanece legível on-chain de forma permanente, e o motivo da revogação, junto com a URI de metadados original, permanecem permanentemente legíveis no log de eventos da transação. Auditores e reguladores ainda conseguem reconstruir o histórico completo, mesmo que o token em si não exista mais.
Próximos passos
- Categorias de Contratos — Detalhamento de cada contrato envolvido nesses fluxos.
- Segurança — Como controle de acesso, pausabilidade e governança protegem essas operações.
- Comprando Créditos — A perspectiva do comprador sobre compras de créditos.
- Aposentando Créditos — Como e por que créditos são permanentemente aposentados.