Skip to content

[EXPLORATORY, do not merge] proposal anchor groundwork (canonical + commitment) - #30

Draft
danielgorgonha wants to merge 3 commits into
mainfrom
explore/proposal-anchor
Draft

[EXPLORATORY, do not merge] proposal anchor groundwork (canonical + commitment)#30
danielgorgonha wants to merge 3 commits into
mainfrom
explore/proposal-anchor

Conversation

@danielgorgonha

Copy link
Copy Markdown
Member

Exploratory branch — do NOT merge. First groundwork for the Zcash-anchored proposal timestamp + zkTimestamp direction, to align with the collaborator before committing the design.

  • anchor::canonical — deterministic, unambiguous (versioned + length-prefixed) serialization of a proposal's immutable content. The hash-independent foundation; fully tested (determinism, per-field sensitivity, no boundary / None-vs-empty collisions).
  • anchor::commitPLACEHOLDER SHA-256. The real commitment is Poseidon-BN254 with the Noir circuit's params (that swap is the open decision to align on).

Not wired into the app. The full flow (canonical → commit → Orchard-memo anchor → Noir zkTimestamp → verify) and the open decisions live in temp/ANCHOR-DESIGN.md (gitignored). 5 tests, fmt + clippy clean. Kept off main on purpose.

@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
konclave-demo Ready Ready Preview, Comment Jul 29, 2026 6:29pm

Request Review

…ion + placeholder commit)

EXPLORATORY (branch explore/proposal-anchor, do NOT merge): first cut of the Zcash-anchored
proposal timestamp direction. anchor::canonical is a deterministic, unambiguous
(length-prefixed, versioned) serialization of a proposal's immutable content -- the
hash-independent foundation, fully tested (determinism, per-field sensitivity, no
boundary/None-vs-empty collisions). anchor::commit is a PLACEHOLDER SHA-256; the real
commitment is Poseidon-BN254 with the Noir circuit's params (aligned with the collaborator).

Not wired into the app. Design + open decisions in temp/ANCHOR-DESIGN.md (gitignored). 5 tests.
… + anchor_memo_for)

EXPLORATORY (branch explore/proposal-anchor, do NOT merge). The commitment -> memo step:
encode_anchor_memo/decode_anchor_memo write and recover the commitment as a tagged, versioned
hex ('zkanchor:v1:<hex>', fits the 512-byte Orchard memo, greppable on explorers), and
anchor_memo_for(content) = encode(commit(content)). Hash-independent (works with any 32-byte
commitment; the Poseidon-BN254 swap and the field set stay the open decisions to align on).
Not wired into the send path yet. 8 anchor tests (round-trip + rejects non-anchor memos).
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