Skip to content

CHIP-0057: Silent Payments#198

Open
kdc2000 wants to merge 5 commits into
Chia-Network:mainfrom
kdc2000:main
Open

CHIP-0057: Silent Payments#198
kdc2000 wants to merge 5 commits into
Chia-Network:mainfrom
kdc2000:main

Conversation

@kdc2000

@kdc2000 kdc2000 commented Mar 31, 2026

Copy link
Copy Markdown

No description provided.

@danieljperry danieljperry changed the title chip-kdc2000-silent_payments CHIP-0057: Silent Payments Mar 31, 2026
@danieljperry

Copy link
Copy Markdown
Contributor

This CHIP has been assigned as CHIP-57 and is a Draft. It describes a method to support Unlinkable on-chain payments to a static address using ECDH on BLS12-381.

Please leave your reviews here, and feel free to comment in the #chips channel of our Discord.

@danieljperry

Copy link
Copy Markdown
Contributor

The recording of the discussion of this CHIP is now available on Youtube.

@danieljperry

Copy link
Copy Markdown
Contributor

This CHIP is now in Review. Please leave your reviews here, and be sure to watch the video discussion, linked above.

… fixes

Reconcile the spec to the simplified single-Pass-2 scanning model (v1.5):
- Collapse Pass 2a (puzzle-hash grouping) + Pass 2b into a single Pass 2
  (opcode-64 ASSERT_CONCURRENT_SPEND directed-SCC); drop puzzle-hash grouping.
- Reword the stale "Spend group" glossary definition to concurrent-spend linkage.
- Correct Appendix A bandwidth for Chia's ~1-in-3 transaction-block frequency
  (~1,536 tx blocks/day; ~7.5-9 MB/day total).
- Remove Appendix C (ECDH scalar multiplication).
- Genericize evolving reference-implementation file references.

Status unchanged (Review). Test Vector 4 cryptographic values unchanged.
@kdc2000

kdc2000 commented Jun 3, 2026

Copy link
Copy Markdown
Author

Update on the multi-input grouping, plus a few editorial corrections.

Grouping: strongly connected components over ASSERT_CONCURRENT_SPEND

While implementing silent payments in the chia-wallet-sdk, I adopted strongly-connected-component (SCC) grouping over explicit opcode-64 ASSERT_CONCURRENT_SPEND bindings, and updated the CHIP to match. The scanner builds a directed graph from the ASSERT_CONCURRENT_SPEND conditions in each removal's solution and treats each strongly connected component as a multi-input group.

This replaces the earlier approach, which combined two heuristics: grouping coins that share a puzzle hash, and linking coins via coin announcements (opcode 60/61, CREATE_COIN_ANNOUNCEMENT / ASSERT_COIN_ANNOUNCEMENT). The single SCC mechanism is the one I validated against the SDK implementation.

Test Vector 4's cryptographic values are unchanged.

Editorial corrections

  • Appendix A (bandwidth): corrected for Chia's transaction-block frequency — only ~1 in 3 blocks carries spends (~1,536 tx blocks/day, not ~4,608); daily figures recomputed (~7.5–9 MB/day total).
  • Appendix C (ECDH scalar multiplication): removed — an implementation performance note rather than protocol content.
  • Glossary: reworded the "Spend group" definition.
  • Reference Implementation: framed as illustrative example code (not normative); dropped specific filenames since the example layout evolves.
  • Minor wording in the Indistinguishability section.

Status unchanged (Review).

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.

2 participants