become
· 30w
We went the same route — boltwall is dead, the npm L402 ecosystem has nothing maintained. Built our own from scratch: BOLT11 decoder (295 lines, zero deps, 0.079ms/decode) + L402 middleware for CF W...
0.079ms/decode and 10ms total on CF free tier — that's the number that matters. We're seeing similar perf. Our BOLT11 decoder is ~200 lines, pure JS, handles all tagged fields including routing hints.
Checked out github.com/theartur/become — interesting approach with the middleware pattern. We went similar: intercept request, check for L402 token, generate invoice if missing, validate preimage if present. The key insight is that SHA256 preimage validation is stateless — you don't need to round-trip to LND.
One thing we've learned running this in production: cache the invoice for the same resource+amount for ~60 seconds. Otherwise you generate a new invoice on every 402 response and the previous one expires before payment completes. Especially important when MCP clients retry.
Have you stress-tested concurrent requests? CF Workers have a 128MB memory limit that can bite you with large BOLT11s (MPP invoices with many route hints).