Welcome, Bitcoin Developers
If you know Bitcoin Script, you know its constraints: a small, deliberately limited opcode set, no loops, and no built-in way to enforce rules across more than one transaction. Simplicity targets the same UTXO model and the same Bitcoin-style transaction semantics, but is built on a small set of functional combinators instead of an opcode set. It adds introspection, so a program can constrain a transaction's outputs and not just check signatures, which is what makes covenants and multi-transaction vault protocols possible without the workarounds Script requires today. Every program's execution cost is still statically bounded and known before you fund it, the same guarantee you already rely on in Script.
Simplicity provides tools to represent and enforce complex financial agreements and instruments as on-chain smart contracts, in line with Bitcoin architecture and philosophy. The SimplicityHL language expresses this logic in a familiar Rust-like syntax.
Where to go from here
- Quickstart: Make a first Simplicity transaction ("pay-to-public-key" implemented in SimplicityHL) with the quickstart tutorial.
- Execution model: The UTXO model that Simplicity programs execute within, including introspection.
- Covenants, state, and oracles: Covenants and state management and oracles cover how to build vaults and advanced constraints. Jets expose transaction details and perform calculations efficiently.
- Use cases: Simplicity use cases and demos.
- Example code: Basic contract examples and more complex example contracts demonstrate SimplicityHL syntax and features. The SimplicityHL language documentation covers the full reference.
- Community: Join the Simplicity forum, Telegram group, or the weekly office hours calls.