Skip to content

Conversation

@casks-mutters
Copy link
Owner

…dress.", file=sys.stderr) sys.exit(1) address = checksum(sys.argv[1])

Summary

The main CLI in app.py has a bit of duplicated and redundant validation:

  • The Ethereum address is checked twice with Web3.is_address(...) (once before and once after to_checksum_address).
  • The block range swap (if block_a > block_b) appears twice: once inside the try block and again immediately afterward, with two slightly different messages.

This PR simplifies the validation logic so that:

  • The address is checked only once, then converted to checksum format.
  • The block_a/block_b swap is performed in a single, clear place.

Changes

In app.py:

  1. Address validation

    • Keep a single address validity check using Web3.is_address(sys.argv[1]).
    • If valid, convert to checksum form once and reuse it.
    • Remove the second Web3.is_address(address) check, which is redundant after checksumming.
  2. Block range swap

    • Parse block_a and block_b in the try block.
    • Normalize their order exactly once (if block_a > block_b, swap and print a single message).
    • Remove the second if block_a > block_b branch after the try block.

Rationale

  • Reduces duplication and makes the argument-parsing logic easier to read and maintain.
  • Keeps CLI behavior the same (still validates address and ensures block_a <= block_b), but with less surprising repetition.
  • Low-risk change touching only input validation.

Testing

  • Run the following to ensure behavior is unchanged:
# Valid address, ordered blocks
python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 18000000 19000000

# Valid address, reversed blocks (should swap once and print a single swap message)
python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 19000000 18000000

# Invalid address (should error once, as before)
python app.py not_an_address 0x0 18000000 19000000

…s.", file=sys.stderr) sys.exit(1) address = checksum(sys.argv[1])

## Summary

The main CLI in `app.py` has a bit of duplicated and redundant validation:

- The Ethereum address is checked twice with `Web3.is_address(...)` (once before and once after `to_checksum_address`).
- The block range swap (`if block_a > block_b`) appears twice: once inside the `try` block and again immediately afterward, with two slightly different messages.

This PR simplifies the validation logic so that:

- The address is checked only once, then converted to checksum format.
- The `block_a`/`block_b` swap is performed in a single, clear place.

## Changes

In `app.py`:

1. **Address validation**
   - Keep a single address validity check using `Web3.is_address(sys.argv[1])`.
   - If valid, convert to checksum form once and reuse it.
   - Remove the second `Web3.is_address(address)` check, which is redundant after checksumming.

2. **Block range swap**
   - Parse `block_a` and `block_b` in the `try` block.
   - Normalize their order exactly once (if `block_a > block_b`, swap and print a single message).
   - Remove the second `if block_a > block_b` branch after the `try` block.

## Rationale

- Reduces duplication and makes the argument-parsing logic easier to read and maintain.
- Keeps CLI behavior the same (still validates address and ensures `block_a <= block_b`), but with less surprising repetition.
- Low-risk change touching only input validation.

## Testing

- Run the following to ensure behavior is unchanged:

```bash
# Valid address, ordered blocks
python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 18000000 19000000

# Valid address, reversed blocks (should swap once and print a single swap message)
python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 19000000 18000000

# Invalid address (should error once, as before)
python app.py not_an_address 0x0 18000000 19000000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants