Terp Docs
GuidesTrustlessness

Trustlessness Spec

Normative checklist for trust-minimized verification on Terp Network — build, hash, compare, decide

import { Callout } from 'fumadocs-ui/components/callout';

Trustlessness Spec

This page is the short normative checklist for verification work on Terp Network. Philosophy and manifesto: Trustlessness concept. Step-by-step procedures: Trustlessness guides.

Trust model

Mandate

No user should be required to trust a third party to verify the integrity of the network, its software, or its state.

Trust assumptions (what we still need)

AssumptionWhy it remainsMitigation
Honest majority / BFT of validator setConsensus safetyRun software you verified; diversify operators
Correct light client / IBC clientCross-chain safetyVerify client state; multiple sources
Correct local machineBuild environment integrityReproducible Docker builds; checksum installers
Availability of sourceReproducibilityMirror critical repos; pin tags/commits

Trust minimization requirements

For any artifact labeled “official” or used with real value:

  1. Source available at a pinned commit/tag
  2. Build instructions reproducible by a third party
  3. Hash published independently of a single UI
  4. User can refuse the artifact if hashes diverge

Verification workflow (normative)

Every trustlessness guide follows the same four steps:

1. Build from source (or obtain a pinned artifact)
2. Compute hash (SHA-256 or documented algorithm)
3. Compare against on-chain or independently published reference
4. Decide — match → use; mismatch → stop and investigate
StepPass criterion
BuildClean checkout of the claimed tag; documented toolchain/optimizer
HashDeterministic digest over the exact bytes users will run
CompareSame algorithm and encoding (hex/base64) as the reference
DecideExplicit human or CI gate — no silent continue on mismatch

Artifact verification matrix

ArtifactReferenceProcedure
terpd / installer scriptsPublished checksumsVerify, Terp Installer
Release binariesGitHub release + checksumsIntegrity
CosmWasm codeOn-chain checksum for code_idCompile & verify code ID
IBC metadata exportIndependent checksums of JSON dumpsIBC Info checksums
Static websitesContent hashes / source comparisonVerify website
ZK circuitsReproducible build + key verificationVerify circuit
Genesis / chain configOfficial + secondary mirrorsGenesis, Public endpoints

Common mismatches

CauseWhat you seeWhat to do
Wrong optimizer / compiler versionWASM or binary hash differsPin versions from release notes
Platform differencesNative binary hash differs across OS/archCompare per-arch checksums; prefer Docker reproducible builds
Local modificationsDirty git treegit status; rebuild from clean tag
Wrong tag / forkHash matches neither release nor chainConfirm repo URL and tag
Encoding mismatch“Different” hashes that are the same bytesNormalize hex case / base64

Requirements for guides and tooling

Docs and automation that claim to be production-ready SHOULD:

  • Document the exact command that produces the hash
  • Link the reference (on-chain query or published file)
  • Include a failure path (what if mismatch)
  • Prefer public RPC examples users can re-point to their own node

Apps and deployment pipelines SHOULD:

  • Fail CI on hash mismatch
  • Record tag, commit, and digest next to deploys
  • Avoid “trust the CDN” as the only control

Further reading

On this page