Ward Protocol SDK — v0.2.2
Documentation
SDK reference, module overview, and integration guides. All modules are independently auditable.
146/146 TestsPython 3.11+MIT License
Quickstart
# Install
pip install ward-protocol==0.2.2
# Validate a claim (9 steps, all on-chain)
from ward import ClaimValidator
validator = ClaimValidator(url="https://s.altnet.rippletest.net:51234/")
result = await validator.validate_claim(
claimant_address="rClaimantXXX...",
nft_token_id="A" * 64,
defaulted_vault="rVaultXXX...",
loan_id="B" * 64,
pool_address="rPoolXXX...",
)
print(result.approved) # True
print(result.steps_passed) # 9
print(result.claim_payout_drops) # min(vault_loss, policy_coverage)Module Reference
Total nSLOC: ~1,565 Python + ~583 Rust
WardClientward/client.py · ~100 nSLOC
High-level SDK entrypoint. No wallet stored as instance attribute.
VaultMonitorward/vault_monitor.py · ~240 nSLOC
WebSocket default detection. 3-ledger confirmation. Heartbeat reconnect.
ClaimValidatorward/validator.py · ~220 nSLOC
9-step on-chain claim validation. All state from XRPL ledger.
EscrowSettlementward/settlement.py · ~160 nSLOC
PREIMAGE-SHA-256 escrow lifecycle. Ward never receives preimage.
PoolHealthMonitorward/pool.py · ~175 nSLOC
Coverage ratio enforcement. XRPL reserve accounting.
primitivesward/primitives.py · ~220 nSLOC
validate_drops(), check_rate_limit(), make_preimage_condition(), submit_with_retry().
constantsward/constants.py · ~95 nSLOC
Single source of truth for all protocol constants. 100% test coverage.
Testing
# Run test suite (146/146 passing) pip install -r requirements.txt python -m pytest test_ward.py -m "not integration" -v # Rust modules cd ward && cargo test
146 tests covering all 9 claim validation steps, all 15 attack vectors, VaultMonitor, EscrowSettlement, PoolHealthMonitor, and all primitives. Marked integration tests require XRPL Mainnet access.