ProtocolRegistry InfrastructureSmart Contracts

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

On this page