Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #11
Summary
0n0ncompatibility default only for absent counters on accounts that do not existWhy
The previous helper caught every
BigInt(...)conversion error and returned0n. That made malformed relay data indistinguishable from a legitimate zero fee, nonce, transaction ID, or balance, allowing later logic to proceed with false state.Verification
node --test test/relay-integer-parsing.test.mjs— 5 passednpm run check— ABI check passed; 70 tests passedgit diff --check— passedThe regression matrix covers decimal and hex strings, bigint/number values, explicit zero, malformed and whitespace strings, negative/fractional/unsafe numbers, booleans/objects, missing counters on absent versus existing accounts, and malformed prepaid balances.
Compatibility
Valid non-negative integer strings, safe integer numbers, bigints, hexadecimal values, and explicit zero retain their existing results. Only malformed or missing required response fields now fail closed with a field-specific error.