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

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

/p/g1magld5ptgzaktqcexxq0pgq5lmdf0kz6re8hlv/agents/commit/v0

Directory · 4 Files
README.md Open

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.