x402 Seller Kit
Servidor vendedor e cliente comprador, com as guardas de gasto, o conferidor de pré-voo e a camada de RPC que os exemplos oficiais não têm — mais nove modos de falha medidos em operação real, cada um com o teste que separa a causa verdadeira da aparente.
Existem starter kits de x402, e alguns são bons. Todos param no mesmo lugar: o servidor sobe, o 402 aparece, e o exemplo termina.
O que vem depois não está documentado em lugar nenhum. Uma validação que devolve a mesma mensagem para dois problemas opostos. Uma guarda que passa no seu terminal e falha aberta no supervisor. Um saldo que não pôde ser lido e chega ao código de decisão como o número zero. Um RPC que responde vazio em vez de responder erro.
Nada disso aparece em teste unitário, e nenhum deles avisa quando erra.
Express com @x402/express. 402 com termos legíveis por máquina, liquidação pelo facilitador da CDP em mainnet e pelo facilitador público em testnet.
Dry-run por padrão. Nada é assinado sem --confirm, e o --confirm é recusado quando o destino não indexa.
Divergência de payTo, domínio de túnel compartilhado, saldo desconhecido — na ordem certa, e a ordem é deliberada.
Identidade, payTo, preço anunciado contra o configurado, endpoint, alcance público. Imprime a origem de cada valor.
Um módulo interpreta a configuração, uma precedência declarada. Nenhuma guarda lê process.env direto.
Multicall3 que corta a rajada de 70 para 17 requisições, fallback entre endpoints e retry com backoff em 429.
Cada seção tem a mesma estrutura: o que parece, o que é, como separar os dois. A parte que importa é sempre a terceira — é o teste discriminante que sobrevive ao próximo caso, não a conclusão.
Skipped na validação da CDP não é bloqueio de hostnameA mesma mensagem aparece para dois problemas opostos. A sonda de controle — um app inexistente no mesmo domínio — separa os dois em dois minutos.
Um endpoint que vende e não indexa não tem o mesmo problema, nem a mesma solução, de um que indexa e não vende.
Passa no seu terminal, deixa passar no supervisor — no único script que gasta dinheiro. Com o comando que reproduz.
"Você não tem o dinheiro" é recuperável; "este gasto não compra nada" não é. Na ordem errada, a pessoa deposita para receber a notícia que já existia.
O verify do facilitador reverte. Como confirmar com eth_getCode antes de procurar o erro no seu payload — e a ressalva do que não foi possível isolar.
USDC implementa EIP-3009: o saldo se move por assinatura off-chain e o nonce do dono nunca incrementa. A única fonte é o log de Transfer.
Os dois defeitos que derrubaram a primeira compra real só existiam no caminho pago completo. Nenhum deles estava no handler.
mainnet.base.org não pode ser trocado por "um RPC melhor"Dos sete RPCs públicos da Base medidos, foi o único que suportou getLogs; os outros seis falharam 20 de 20. A solução foi o oposto de trocar.
Um .catch(() => 0) replicado em cinco arquivos transformou falha de leitura em autorização de compra. Custou US$ 5 reais. Vem com a guarda estrutural que impede a sexta cópia.
tsc --noEmit limpo..env acompanha o pacote. Os únicos endereços no código são contratos públicos da Base e endereços de teste.LICENSE original e NOTICE declarando o que foi extraído, adaptado e removido.Link de pagamento ainda não publicado.