Simplicity is a blockchain programming language designed as an alternative to Bitcoin script.
HTML
364
755 commits
updated Sep 3, 2026
[!IMPORTANT] The Simplicity language and implementation are still under development.
Simplicity is a blockchain programming language designed as an alternative to Bitcoin script.
It is a low-level, typed functional language designed to be a drop-in alternative for Bitcoin's Tapscript. It offers static resource bounds and has a formal specification (in Rocq) which allows the creation of machine-checkable proofs of program behavior.
It is currently deployed on Blockstream's Liquid, which is a sidechain resembling Bitcoin in many ways; but which differs in many Script-relevant ways (e.g. supporting multiple assets and using Confidential Transactions).
This repo is the core Haskell and C implementation of Simplicity (AKA libSimplicity).
If you are simply looking to develop with the language, you may wish to use SimplicityHL, or rust-simplicity instead.
This project contains
Use Nix for the easiest build. Alternatively, use GNU Autotools.
Change into the root directory of this repository.
Build the nix package.
nix-build -A c
Enter a nix shell to develop the project manually (see below).
nix-shell --arg coq false --arg haskell false
Use arguments to enable / disable the other projects.
Change into the C directory of this repository.
Build the project using make.
make -j$(nproc)
To install the project, run make.
make install # use "out=/path/to/dir" for local install
To run the tests, run make.
make check
Change into the root directory of this repository.
Build the nix package.
nix-build -A haskell
Enter a nix shell to develop the project manually (see below).
nix-shell --arg c false --arg coq false
Use arguments to enable / disable the other projects.
Install the Glasgow Haskell Compiler and Cabal.
Change into the root directory of this repository.
Build the project using cabal.
cabal build
To run tests, run cabal.
cabal test # use --test-options="+RTS -N -RTS" for parallel jobs
To enter an interactive GHCi prompt with the project loaded, run cabal.
cabal repl Simplicity
Change into the root directory of this repository.
Build the nix package.
nix-build -A coq
Enter a nix shell to develop the project manually (see below).
The shell provides Coq, CompCert and VST.
nix-shell --arg c false --arg haskell false
Use arguments to enable / disable the other projects.
Install the opam package manager.
Enter the opam environment in your shell.
opam init
eval $(opam env)
Install the Coq theorem prover.
opam pin -j$(nproc) add coq 8.17.1
Install the CompCert certified C compiler.
opam repo add coq-released https://coq.inria.fr/opam/released
opam install -j$(nproc) coq-compcert.3.13.1
Install a custom version of the Verified Software Toolchain.
You cannot use opam for this step!
wget -O - https://github.com/PrincetonUniversity/VST/archive/v2.13.tar.gz | tar -xvzf -
cd VST-2.13
make -j$(nproc) default_target sha
make install
install -d $(coqc -where)/user-contrib/sha
install -m 0644 -t $(coqc -where)/user-contrib/sha sha/*.v sha/*.vo
Enter the Coq directory of this repository.
Build the project using make.
coq_makefile -f _CoqProject -o CoqMakefile
make -f CoqMakefile -j$(nproc)
To install the project, run make.
make -f CoqMakefile install
Detailed documentation can be found in the Simplicity-TR.tm TeXmacs file.
A recent PDF version can be found in the pdf branch.
Interested parties are welcome to join the Simplicity mailing list. Issues and pull-requests can be made through GitHub's interface.
HTML
76.9%
C
9.2%
Rocq Prover
8.0%
Haskell
3.2%
Tcl
1.8%
Simplicity is a blockchain programming language designed as an alternative to Bitcoin script.
HTML
364
755 commits
updated Sep 3, 2026
[!IMPORTANT] The Simplicity language and implementation are still under development.
Simplicity is a blockchain programming language designed as an alternative to Bitcoin script.
It is a low-level, typed functional language designed to be a drop-in alternative for Bitcoin's Tapscript. It offers static resource bounds and has a formal specification (in Rocq) which allows the creation of machine-checkable proofs of program behavior.
It is currently deployed on Blockstream's Liquid, which is a sidechain resembling Bitcoin in many ways; but which differs in many Script-relevant ways (e.g. supporting multiple assets and using Confidential Transactions).
This repo is the core Haskell and C implementation of Simplicity (AKA libSimplicity).
If you are simply looking to develop with the language, you may wish to use SimplicityHL, or rust-simplicity instead.
This project contains
Use Nix for the easiest build. Alternatively, use GNU Autotools.
Change into the root directory of this repository.
Build the nix package.
nix-build -A c
Enter a nix shell to develop the project manually (see below).
nix-shell --arg coq false --arg haskell false
Use arguments to enable / disable the other projects.
Change into the C directory of this repository.
Build the project using make.
make -j$(nproc)
To install the project, run make.
make install # use "out=/path/to/dir" for local install
To run the tests, run make.
make check
Change into the root directory of this repository.
Build the nix package.
nix-build -A haskell
Enter a nix shell to develop the project manually (see below).
nix-shell --arg c false --arg coq false
Use arguments to enable / disable the other projects.
Install the Glasgow Haskell Compiler and Cabal.
Change into the root directory of this repository.
Build the project using cabal.
cabal build
To run tests, run cabal.
cabal test # use --test-options="+RTS -N -RTS" for parallel jobs
To enter an interactive GHCi prompt with the project loaded, run cabal.
cabal repl Simplicity
Change into the root directory of this repository.
Build the nix package.
nix-build -A coq
Enter a nix shell to develop the project manually (see below).
The shell provides Coq, CompCert and VST.
nix-shell --arg c false --arg haskell false
Use arguments to enable / disable the other projects.
Install the opam package manager.
Enter the opam environment in your shell.
opam init
eval $(opam env)
Install the Coq theorem prover.
opam pin -j$(nproc) add coq 8.17.1
Install the CompCert certified C compiler.
opam repo add coq-released https://coq.inria.fr/opam/released
opam install -j$(nproc) coq-compcert.3.13.1
Install a custom version of the Verified Software Toolchain.
You cannot use opam for this step!
wget -O - https://github.com/PrincetonUniversity/VST/archive/v2.13.tar.gz | tar -xvzf -
cd VST-2.13
make -j$(nproc) default_target sha
make install
install -d $(coqc -where)/user-contrib/sha
install -m 0644 -t $(coqc -where)/user-contrib/sha sha/*.v sha/*.vo
Enter the Coq directory of this repository.
Build the project using make.
coq_makefile -f _CoqProject -o CoqMakefile
make -f CoqMakefile -j$(nproc)
To install the project, run make.
make -f CoqMakefile install
Detailed documentation can be found in the Simplicity-TR.tm TeXmacs file.
A recent PDF version can be found in the pdf branch.
Interested parties are welcome to join the Simplicity mailing list. Issues and pull-requests can be made through GitHub's interface.
HTML
76.9%
C
9.2%
Rocq Prover
8.0%
Haskell
3.2%
Tcl
1.8%