La versione breve
Un venditore crea un deposito bloccando USDC in EscrowV2 su Base e indicando il metodo di pagamento in fiat, la valuta, l'identificativo di pagamento e il tasso. Un acquirente sceglie quella liquidità, avvia un intent onchain, paga il venditore nell'app di pagamento selezionata e invia la prova del pagamento.
Il protocollo non chiede a nessuna delle due parti di fidarsi di uno screenshot di una chat. La prova del pagamento viene verificata offchain dal servizio di attestazione, e la PaymentAttestation EIP-712 risultante viene verificata onchain prima che il contratto rilasci gli USDC.
Il ciclo di vita del fill
- 01Il venditore deposita USDC nativi su Base in EscrowV2 e dichiara i metodi di pagamento accettati, le valute e i dettagli del beneficiario.
- 02L'acquirente seleziona il deposito e segnala un intent tramite OrchestratorV4. Quell'intent riserva l'importo specifico mentre l'acquirente paga.
- 03L'acquirente paga il venditore direttamente nell'app fiat selezionata. USDCtoFiat non riceve né detiene mai il trasferimento in fiat.
- 04La prova del pagamento viene verificata rispetto all'intent: importo, valuta, destinatario, timestamp, metodo di pagamento e vincoli della rotta.
- 05Il servizio di attestazione firma una PaymentAttestation. Il verificatore onchain controlla la firma, i valori dello snapshot e il nullifier, poi OrchestratorV4 rilascia gli USDC.
Perché il contratto può rilasciare in sicurezza
| Primitiva | Cosa fa | Perché è importante |
|---|---|---|
| EscrowV2 | Detiene gli USDC del venditore su Base | Né USDCtoFiat né l'acquirente possono spostarli senza le regole del contratto |
| Hash dell'intent | Identifica un singolo ordine dell'acquirente | Lega la prova del pagamento in fiat al fill esatto |
| PaymentAttestation | Risultato di verifica firmato EIP-712 | Permette a un solo contratto verificatore di gestire più metodi di pagamento |
| Nullifier | Marcatore monouso per un pagamento | Impedisce che lo stesso pagamento venga rivendicato due volte |
| Hash dei dettagli del beneficiario | Hash dell'identificativo di pagamento del venditore | Lega il pagamento al venditore. Per la maggior parte dei metodi non ha salt, quindi chi conosce l'identificativo può abbinarlo |
Cosa è pubblico
Il tuo identificativo di incasso non viene scritto su Base in chiaro, ma ogni deposito registra un suo hash e, per la maggior parte dei metodi di pagamento, quell'hash non ha salt. Chiunque conosca o indovini il tuo Cashtag, Revtag, email Zelle o ID account Venmo può calcolarne l'hash e trovare ogni deposito che lo usa, e la ricerca pubblica dei maker di ZKP2P restituisce l'identificativo registrato per un hash. Considera pubblico il tuo identificativo di incasso. Il login e la cronologia del tuo account nell'app di pagamento non vengono pubblicati su Base.
Il tuo identificativo di pagamento resta comunque visibile alla controparte che deve pagarti. Questo è inevitabile in qualsiasi flusso di regolamento via app di pagamento: l'acquirente non può inviare fiat senza una destinazione.