Some pointers that might help the review, since a lot of this overlaps work that already exists. I run an independent x402 facilitator on Sui and have contributed to the x402 spec, so this is the part I know.
Already on Zcash, per the Rill thread (post 3):
- CipherPay’s x402 package verifies x402 v2 and MPP payments against shielded ZEC, using viewing-key trial decryption.
- zpay already exposes the facilitator endpoints (
GET /x402/v2/supported,POST /verify,POST /settle) with a PCZT binding. - An “x402 Compatible Payment Bridge for Private ZEC Settlement” came to ZCG in February and was rejected (minutes).
So I think M1 and M2 need to say what they add on top of those, or build on them directly.
Two things worth pinning down in the spec either way:
- Who holds the viewing key. To confirm a shielded payment, whoever verifies it needs the payee’s incoming viewing key. If that’s a shared facilitator, the facilitator sees every payment that seller receives, which is exactly the payment graph the proposal wants to hide. If the seller verifies its own payments, that problem goes away, but then there isn’t much left for a facilitator to do.
- Binding the payment to the request. The 402 flow has to tie each payment to one resource and one nonce, so a single payment can’t be replayed to unlock a second request. Rill uses the memo for the resource id and zpay uses a PCZT binding. The spec should pick one and say why.
One note on the numbers in the pitch: the raw x402 transaction counts are mostly inflated. Artemis ran a wash-trade filter over x402 activity and found about 89% of April’s volume was self-dealing or wash trading. The case for private agent payments stands without the headline figure.