Skip to content

v0.60.0

@0xultravioleta 0xultravioleta tagged this 20 Aug 15:07
Medido contra produccion el 2026-08-20: de 40 recursos vivos del Bazaar, 36 de 36
que responden 402 traen el desafio en el header PAYMENT-REQUIRED y NINGUNO en el
body. Los dos transportes son x402 legal; los vendedores eligieron el que casi
nadie lee.

Y hay un detalle que lo vuelve traicionero: vendedores como Tenjin usan el body
de la 402 para la VISTA PREVIA GRATIS del contenido pago. Asi que el body es JSON
valido sin `accepts` -- un lector que solo mira el body parsea contento y no
encuentra nada, sin error.

payment_challenge_from(headers, body) lee el header primero, cae al body, y
devuelve None cuando ningun transporte trae un desafio. Ese None es
deliberadamente distinguible de un `accepts` vacio: quien no puede diferenciarlos
concluye que miro y no habia nada malo -- que es exactamente como el chequeo de
secuestro de payTo del Bazaar nunca disparo.

_is_challenge es a proposito mas estricto que "es un dict", justamente por la
vista previa.

Vectores reales: el header es base64 de lo que sirve produccion y el body es la
vista previa que Tenjin devuelve de verdad.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Assets 2
Loading