Execution Preconditions and Validation Order

permalink SUBTC
#execution#order#preconditions#validation

WAproxy validates every wallet_send request using a strict and deterministic order of checks.

Execution must not proceed if any validation step fails.

Validation order:

1. Verify coin is enabled
2. Verify wallet_id exists
3. Verify amount_sat is integer
4. Verify amount_sat >= min_send
5. Verify idempotency key is present
6. Verify wallet_balance >= amount_sat + safety_margin
7. Apply protocol fee calculation
8. Broadcast transaction

This order prevents:

- unnecessary RPC calls
- invalid broadcast attempts
- duplicate transactions
- economic boundary violations

All validation occurs before transaction broadcast.

If a condition fails, WAproxy returns a deterministic error response.

No partial execution is allowed.

Example:

If amount_sat < min_send
Return: error_minimum_threshold

If wallet_balance insufficient
Return: error_insufficient_balance

If idempotency reused with different parameters
Return: error_idempotency_conflict

Validation order is fixed and non-configurable.

Deterministic validation ensures:

- predictable API behavior
- safe retries
- stable integration patterns
- reduced execution ambiguity

WAproxy enforces execution discipline before transport.