A versão curta
Um vendedor cria um depósito bloqueando USDC no EscrowV2 na Base e listando o método de pagamento em moeda fiduciária, a moeda, o identificador de pagamento e a taxa. Um comprador escolhe essa liquidez, inicia uma intenção onchain, paga o vendedor no app de pagamento selecionado e envia a evidência do pagamento.
O protocolo não pede que nenhum dos lados confie em um print de tela. A evidência do pagamento é verificada offchain pelo serviço de atestado, e o PaymentAttestation EIP-712 resultante é verificado onchain antes de o contrato liberar o USDC.
O ciclo de vida da execução
- 01O vendedor deposita USDC nativo na Base no EscrowV2 e declara os métodos de pagamento aceitos, moedas e dados do beneficiário.
- 02O comprador seleciona o depósito e sinaliza uma intenção pelo OrchestratorV4. Essa intenção reserva o valor específico enquanto o comprador paga.
- 03O comprador paga o vendedor diretamente no app fiduciário selecionado. A USDCtoFiat nunca recebe nem guarda a transferência em moeda fiduciária.
- 04A evidência do pagamento é verificada contra a intenção: valor, moeda, destinatário, timestamp, método de pagamento e restrições de rota.
- 05O serviço de atestado assina um PaymentAttestation. O verificador onchain confere a assinatura, os valores do snapshot e o nullifier, e então o OrchestratorV4 libera o USDC.
Por que o contrato pode liberar com segurança
| Primitivo | O que faz | Por que importa |
|---|---|---|
| EscrowV2 | Guarda o USDC do vendedor na Base | Nem a USDCtoFiat nem o comprador podem movê-lo sem as regras do contrato |
| Hash da intenção | Identifica uma ordem de comprador | Vincula a prova de pagamento em moeda fiduciária à execução exata |
| PaymentAttestation | Resultado de verificação assinado em EIP-712 | Permite que um único contrato verificador lide com vários métodos de pagamento |
| Nullifier | Marcador de uso único para um pagamento | Impede que o mesmo pagamento seja reivindicado duas vezes |
| Hash dos dados do beneficiário | Hash do identificador de pagamento do vendedor | Vincula o pagamento ao vendedor. Na maioria dos métodos não tem salt, então quem conhece o identificador pode associá-lo |
O que é público
Seu identificador de recebimento não é gravado na Base como texto simples, mas cada depósito registra um hash dele e, na maioria dos métodos de pagamento, esse hash não tem salt. Qualquer pessoa que conheça ou adivinhe seu Cashtag, Revtag, e-mail do Zelle ou ID de conta do Venmo pode gerar o hash e encontrar todos os depósitos que o usam, e a consulta pública de makers da ZKP2P retorna o identificador registrado para um hash. Trate seu identificador de recebimento como público. Seu login e o histórico da sua conta no app de pagamento não são publicados na Base.
Seu identificador de pagamento ainda fica visível para a contraparte que precisa pagar você. Isso é inevitável em qualquer fluxo de liquidação em app de pagamento: o comprador não pode enviar moeda fiduciária sem um destino.