You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two independent correctness bugs surfaced while debugging k6 smoke
500/402 failures on staging:
1. `get_billing_wallet_address` / `get_account_wallet_address` propagated
the raw alloy error from `.call()` without running it through
`decode_contract_revert`. The resulting string is just the 4-byte
selector, so `billing::wallet_resolution_err`'s substring match on
"AccountDoesNotExist" never fired — a missing account was returned as a
500 ("internal billing lookup error") instead of the intended 400.
Now both helpers decode the revert, so a missing account maps to 400
and the error string is human-readable in logs.
2. `send_transaction` treated any returned receipt as success. A
transaction that reverts on-chain still yields a receipt (EIP-658
status 0), so a reverted write (e.g. `newAccount`) was reported as
succeeded. Added `receipt_to_result`, which inspects the status and
surfaces an on-chain revert as an error, applied at both receipt sites.
Adds regression tests for the selector→name mapping and the
wallet-resolution status mapping (400 vs 500).
Co-authored-by: Chris Cassano <chris@litprotocol.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments