Simplicity copy guide

Blockchain programming language for high-assurance smart contracts; Bitcoin Script alternative.

Everything a writer needs to write about Simplicity correctly, in one pass.

Recently rebrandedLow priority
  • Recently rebranded (SimplicityHL; Simfony retired); slim package on purpose.
  • "Powered by Simplicity" badge rejected (open source, no ROI); own marketing track instead.
  • First Simplicity-powered product: Blockstream Lend (H2, legal-gated).

Golden rules

Get these right and most copy takes care of itself.

  1. Never "deterministic": the word is not in the paper; write "formally verifiable."
  2. SimplicityHL, one word; "Simfony" is retired.
  3. Never sole-credit Blockstream: name the researchers; Bitcoin protocol work is collaborative.
  4. Bitcoin steps are proposals: "Prove it on Liquid. Then bring it to Bitcoin." Never promise integration.
  5. Load quantum-content-rules.md before any SHRINCS, SHRIMPS, or signature-size claim; always pair component with system size.

Who you're writing for

Meet the reader before touching the rules.

Write for Bitcoin and Lightning devs, sidechain builders, and smart-contract researchers: assume they read code, explain why over what.

Attribute to named researchers, never sole-credit Blockstream for collaborative work; cite GitHub repos and commits as source of truth.

Route to @blksresearch: research content posts there; send the community to t.me/simplicity_community and Tuesday office hours.

Names

The product names and exactly how to write them.

Write Simplicity capitalized: the low-level, formally-verifiable smart contract language, never the high-level interface.

Write SimplicityHL: one word, caps S/H/L; never 'Simfony' (retired Jul 2025) or 'simplicity HL'.

Write BitMachine: one word, capital B and M, Simplicity's execution model.

Write simc lowercase (say 'sim-see'), the SimplicityHL compiler; hal-simplicity lowercase, hyphenated.

Write Simplex (smplx) capitalized, never lowercase; the early-stage dev framework for Simplicity contracts.

Write Simplicity Unchained for the oracle-based interpreter running Simplicity on chains without native support; in development.

Say this, not that

The usage dictionary. When in doubt, search it.

TopicWriteNever writeWhy
combinatorcombinatorfunction · opcodeone of Simplicity's nine primitive operators
jetjetbuilt-in functionpre-compiled native implementation of a common expression
Merkle rootsCommitment / Identity / Annotated Merkle Root, spelled out on first usebare acronyms on first use
SHRIMPSSHRIMPS, all caps; the multi-device extension (1,024 devices)citing an eprint for itload quantum-content-rules.md first
SHRINCSSHRINCS, all caps, spelled out first use; eprint 2025/2203 (Kudinov, Nick)writing sizes without quantum-content-rules.md loadedload the rules file first
The high-level languageSimplicityHL, one word, caps S/H/Lsimplicity HLRust-like, compiles to Simplicity
Completeness framingfinitiary completeness: any finite computationapologizing for not-Turing-completethe selling point
Verification claimsformally verifiabledeterministicnot in the paper; undefined terms for effect are banned
The old nameSimplicityHLSimfonyretired July 2025
Cost unitmilliWU; cost known before execution"gas"static analysis; no gas concept
PSETPartially Signed Elements TransactionBitcoin's PSBT analog
The compile targetSimplicity bytecode (the Rust-to-assembly analogy)implying people write raw Simplicitynobody writes raw Simplicity
Witness vs parameterwitness = runtime spend data · parameter = compile-timeswapping the twowitness::NAME · param::NAME

Voice & tone

How the copy sounds, and where the register switches.

Write the most formal developer register: careful, precise language about safety guarantees, no hand-waving.

Sound like a maintainer writing release notes: assume the reader reads code, explain why over what.

Never use marketing language, simplify into inaccuracy, omit version numbers, or promise unshipped features.

Never use undefined terms for effect: don't call Simplicity 'deterministic'; write 'formally verifiable'.

Writeformally verifiable
Notdeterministic

Format terms and commands as inline code (jet::bip_0340_verify(), .simf, .wit); annotate versions inline; link GitHub.

Write file extensions lowercase with a dot: .simf (programs), .wit (witness data), .args (compile-time params).

Set headings Title Case (H1-H4); hold the technical, authoritative, precise register, no hype language.

Positioning

What to lead with, what to always pair, what never to claim.

Not final positioning

These points are an amalgamation of what has been learned so far, from product docs, launches, and reviewer feedback. They are not definitive or authoritative positioning from anyone. Product marketing still needs to clearly define positioning for this product, which will happen in a follow-up.

Frame as a parallel replacement built on formal mathematical foundations, never an incremental Bitcoin Script upgrade.

Contrast with Solidity/EVM: no unbounded loops or global state; every program terminates; cost known pre-execution; UTXO-based.

Lead with formal verification and quantum resistance; thought leadership, zero branded demand. Load quantum-content-rules.md first.

Frame Bitcoin steps as proposals: 'Prove it on Liquid. Then bring it to Bitcoin.' Never promise testnet or mainnet integration.

Frame the 'last soft fork' thesis (Lewe) as an argument, not a deliverable; Poelstra: any finite computation runs in Simplicity.

Writethe "last soft fork" argument (Lewe)
Notthe last soft fork Bitcoin will ship
Illustrative example, not shipped copy.

Always pair component with system size: a 324-byte SHRINCS sig sits in a ~38 KB Simplicity tx. Load quantum-content-rules.md first.

Never claim sole credit: Blockstream Research works with external co-authors; frame Bitcoin protocol work as collaborative, not owned.

Claims

What a page or post may cite. Confirm, correct, or kill each row; an unconfirmed claim does not ship.

ClaimAs ofStatus
Any finite computation can run in Simplicity (Poelstra)current docsapproved
A 324-byte SHRINCS signature sits in a ~38 KB Simplicity transaction; always pair the twoeprint 2025/2203approved

Open questions

Unresolved tensions for review. Don't resolve these in copy; flag them.

  1. No Simplicity boilerplate exists in boilerplates.md; a rebrand should author one.
  2. products-overview.md has no Simplicity entry despite coverage in product-brands.md and terminology.md.
  3. 'Simfony' is missing from the project CLAUDE.md retired-terms grep list, and old blog posts still use it with no redirect or update strategy.
  4. Typography conflict: product-brands.md says Carbon/Ubuntu for Simplicity graphics; corporate system mandates Rigid Square/Inter. No doc says which wins.
  5. Developer persona is the least documented internally: suggested content areas exist, guidelines unfilled.
  6. No lockup guidance: never written 'Blockstream Simplicity'; repos live under BlockstreamResearch. Make explicit in new guidelines.

Notepad

Scribble anything: loose thoughts, questions, things that don't fit a pin or a highlight. Saves automatically with the review feedback.

0 / 1000