Skip to content

feat: add Paykit ERC-20 payment proofs - #163

Open
ben-kaufman wants to merge 1 commit into
masterfrom
feat/usdt-paykit-proofs
Open

ben-kaufman wants to merge 1 commit into
masterfrom
feat/usdt-paykit-proofs

Conversation

@ben-kaufman

@ben-kaufman ben-kaufman commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds signing and verification of Paykit ERC-20 payment proofs for direct Arbitrum USDT0 payments. An executed transfer can be bound to the authenticated payer/payee, receiving app, request, billing period and conversion quote using the Paykit EIP-712 profile. Retrying proof creation or delivery does not send another payment.

Verification checks successful canonical execution, the pinned token and recipient, and the signature against the Transfer event's sender. It returns the actual amount, block timestamp and a receipt-relative payment identity. Callers validate request terms and deadlines and prevent reuse across requests. The receipt service must preserve original log positions when filtering receipts.

Includes generated Swift bindings and the published Paykit rc59 interoperability vectors. The proof APIs are independent of the Paykit SDK runtime and bridging.

Preview

N/A — core APIs only.

QA Notes

Reviewer checks:

cargo fmt --check
cargo test --locked --lib modules::usdt::proof::tests
cargo test --locked --lib modules::usdt::tests::payment_proof_binds_execution_to_request_and_receiver
cargo test --locked --lib modules::usdt
cargo clippy --locked --lib --tests

The vector tests cover one-time and recurring bindings, signature/domain changes and canonical identifiers. The wallet integration test checks executed payments, request binding and receiver verification without sending real funds.

Validated on the rebased branch: 71 USDT tests passed; the existing local-Arbitrum-fork test is ignored. Formatting and generated Swift typechecking pass. Clippy's 120 diagnostics match master; none are introduced by this PR. Swift interfaces were regenerated from this source.

@ben-kaufman
ben-kaufman marked this pull request as ready for review October 7, 2026 00:32

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: ✅ Approve

Review: diff 10 files.

Findings:
1 inline (1 LOW)

QA:
No tests ran because the PR description gives no reviewer test instructions and its QA Notes only report automated checks the author already ran.


Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest

Comment thread src/modules/usdt/proof.rs Outdated
@ovi-reviewer

This comment has been minimized.

@ben-kaufman
ben-kaufman force-pushed the feat/usdt-paykit-proofs branch from d392962 to b5267c4 Compare October 7, 2026 01:50

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: ✅ Approve

Reaudit: diff 4 files.
No new findings; the rest is in the review.

QA:
No tests ran because the description lists only automated Cargo checks and no manual or journey test for this core API change with no user-visible behavior.


Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant