Skip to content

Verify on-chain USDC transfer details before granting paid access #232

Description

@AnkanMisra

Summary

The core technical step for real settlement support is verifying that a qualifying USDC transfer actually happened on-chain before granting paid access.

Current State

The current verifier and gateway path validate signed authorization data only. They do not validate transaction receipt state, token contract, recipient, amount, or confirmation status for a real on-chain USDC transfer.

What to build

Implement the on-chain verification path needed to confirm a qualifying USDC transfer before granting access in an on-chain settlement mode.

Acceptance Criteria

  • On-chain verification checks transaction receipt success.
  • Verification checks expected token contract, recipient, amount, and chain ID.
  • Confirmation requirements are explicit and documented.
  • Missing receipt, wrong token, wrong recipient, wrong amount, wrong chain, and RPC failure cases return safe public errors.
  • Tests cover both valid settlement and the main negative cases.

Non-goals

  • Do not define payment-mode configuration in this issue.
  • Do not solve transaction replay/deduplication in this issue.
  • Do not change the signature-only demo path beyond what is required for clean mode separation.

Verification

  • Run the relevant gateway/verifier test suites.
  • Exercise a valid and invalid settlement path against the chosen RPC/test setup.

Blocked by

Parent umbrella: #161

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestgoPull requests that update go codelevel:advancedLarge, risky, or cross-service work requiring strong project context.rustPull requests that update rust codetriageNeeds maintainer triage.type:featureNew user-facing or API-facing capability.type:securitySecurity, abuse resistance, secret safety, or payment integrity work.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions