Files
neuron-tai/docs/archived/alpha-hardening/issues/12-c2-on-chain-idempotency.md
2026-07-17 12:41:46 +03:00

1.1 KiB
Raw Permalink Blame History

Status: ready-for-human

12 — C2: On-chain settlement idempotency (deferred)

What to build

Harden payout idempotency so Solana transaction retries never double-pay. Design accepted in ADR-0019 §1; implementation deferred post-alpha.

Code refs:

  • packages/tracker/meshnet_tracker/server.py_settlement_loop resend (~33313356), _send_settlement (~33583376)
  • packages/contracts/meshnet_contracts/solana_adapter.pysend_payouts (~186213)

Today: pending debited before broadcast with stable settlement_id; unconfirmed batches resent. Gap: on-chain confirmation vs ledger state if tx succeeds but confirm fails.

Acceptance criteria

  • confirm_settlement only after RPC finalized confirmation
  • Retry path reuses same settlement_id and detects already-confirmed signature
  • Property test: N retries → single on-chain transfer per wallet per settlement_id
  • Document recovery procedure for stuck unconfirmed batches

Blocked by

Alpha release (ADR-0016 single settlement tracker)