Execution Preconditions and Validation Order
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.