# 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. ```go commit.Hash(parts...) // hex SHA-256, length-prefixed (no boundary collisions) commit.Verdict(vote, salt) // canonical commit-reveal commitment for a hidden bool commit.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](../../../r/moul/agents/jury/v0/) 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. ```sh gno test . ``` --- Part of **[moul/gno-contracts](https://github.com/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](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).