/p/moul/agents/commit/v0
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.