Isometric illustration of a vault with a verified contract inside
Simplicity

High-assurance bitcoin smart contracts.

Simplicity is a UTXO-based smart contracting language for bitcoin, designed for verifiable security, financial correctness, and high-value applications.

Why Simplicity?

Know what your contracts do before they run.

A Simplicity contract is a spending condition on coins: it doesn't call other contracts, touch shared state, or loop without bound. That narrower model makes contracts easier to analyze. Their resource use is known ahead of time, and the language has a formal, machine-checked specification.

  • Execution costs bounded before you broadcast.
  • No external calls, so a smaller attack surface.
  • A formally specified and verified core language, Rocq.
  • Only the executed branch is revealed on-chain.
How Simplicity works

Verifiable, predictable execution.

Simplicity complements Bitcoin Script with a low-level language that's expressive enough for advanced covenants and financial instruments while being formally verifiable for absolute predictability. Financial applications inherit a small, precisely defined base: bounded costs, no shared state, and no ambiguity in what the consensus layer will do. Developers write SimplicityHL, full nodes execute Simplicity.

SimplicityHL in the editor
  1. Familiar to read.

    SimplicityHL looks like Rust: let, match, typed functions. Underneath, a program is a predicate over a transaction. It either authorizes a spend or it doesn't. There's no heap, no global state and no unbounded loops.

  2. Explicit to reason about.

    Everything a contract depends on is in front of you: the transaction it inspects, the witness data it receives, and the conditions it asserts. Nothing else can change that state while it runs.

  3. Compiled to Simplicity.

    The SimplicityHL compiler turns your code into Simplicity, the low-level language that full nodes execute. Common operations like hashing and signature checks run as optimized jets.

Coming from the EVM?

The EVM offers more flexibility and composability. Simplicity is deliberately more restrictive, trading some of that flexibility for stronger security guarantees.

EVMSimplicity

State

Each contract keeps persistent storage that its functions read and write.

State

State lives in the coins (UTXOs) a contract locks and is carried forward in transaction outputs.

Checks

require(cond) reverts the call.

Checks

assert!(cond) fails the program, making the transaction invalid.

Costs

Gas is metered at runtime, and a reverted transaction still pays for the gas it used.

Costs

CPU and memory use have a static upper bound, known before broadcast. Invalid transactions are never mined.

Authorization

msg.sender identifies the caller.

Authorization

Signatures are checked explicitly, e.g. jet::bip_0340_verify.

Composition

Contracts call each other, and one call can trigger many others.

Composition

No contract calls. Several contracts compose by being spent in the same transaction.

Re-entrancy

Guarded against with checks-effects-interactions or ReentrancyGuard.

Re-entrancy

Not a class of bug. With no external calls, execution can’t be re-entered.

Tokens

ERC-20 and ERC-721 contracts.

Tokens

Native Liquid assets, issued at the protocol level. Contracts constrain how they move.

Applications

Built with Simplicity.

Open-source protocols, demos, and research projects on Liquid.

  • Demo

    P2P lending

    A peer-to-peer lending protocol in pure SimplicityHL. Borrowers post collateral, lenders fund offers, and the covenant enforces repayment or liquidation at expiry.

  • Demo

    Decentralized asset management protocol

    Regulated assets on Liquid. A Simplicity covenant enforces whitelists, blacklists, and transfer limits with no issuer signature on each transfer, and issuers can produce signed confidential audit reports.

  • Demo

    Native multisig

    Multisig custody contracts with Rocq proofs that reach from the security model all the way down to the deployed compiled bytes.

  • Reference

    Options & offers

    Option and option-offer contracts, plus on-chain state management patterns, built with Smplx and tested on a local Liquid regtest.

  • In development

    Price oracle

    A Simplicity-powered, decentralized price oracle for Liquid. The draft specification is public and development happens in the open.

  • Research

    Post-quantum signatures

    A SHRINCS hash-based signature verifier written in Simplicity, used by the PQ Liquid Wallet to sign transactions on Liquid testnet.

Capital markets

High-assurance financial programming.

Since Simplicity contracts are auditable and provable before deployment, Simplicity offers unprecedented transparency and compliance assurance for financial institutions. Build programmable capital markets, issue assets, and settle trades—all on bitcoin’s most secure sidechain, Liquid.

Simplicity for capital markets
Isometric illustration of an institution building with a Bitcoin emblem
Get started

Try Simplicity now.

Start from the example contracts and the standard library, or write your own. Live on Liquid with native multi-asset support, and available on a bitcoin signet for experimentation.