Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

README.md

1.61 Kb · 39 lines

p/moul/agents/commit/v0 — shared commitment helpers

A tiny pure package: the one place the agent demos agree on how a commitment is computed. On-chain realms should store commitments (hashes) to off-chain material — reports, patches, verdicts — not the material itself. When several realms do that, they need to compute hashes the same way, or they can't verify each other's commitments.

1commit.Hash(parts...)          // hex SHA-256, length-prefixed (no boundary collisions)
2commit.Verdict(vote, salt)     // canonical commit-reveal commitment for a hidden bool
3commit.Short(hexHash)          // abbreviate for display

Hash length-prefixes each part, so Hash("ab","c") != Hash("a","bc") — a small detail that matters the moment a commitment concatenates attacker-influenced fields.

Verdict is the scheme the jury demo uses for blind voting: commit Verdict(vote, salt) during the commit phase, then reveal (vote, salt) — anyone can recompute and confirm the vote wasn't changed after the fact.

Pure, deterministic, no realm state. Import it; don't reinvent the hashing.

1gno test .

Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.

⚠️ Disclaimer: provided as-is, without warranty; not security-audited. Full disclaimer: DISCLAIMER.