{"id":26055554,"url":"https://github.com/blockstreamresearch/simplicity","last_synced_at":"2025-05-16T08:03:20.497Z","repository":{"id":33574186,"uuid":"157935873","full_name":"BlockstreamResearch/simplicity","owner":"BlockstreamResearch","description":"Simplicity is a blockchain programming language designed as an alternative to Bitcoin script.","archived":false,"fork":false,"pushed_at":"2025-05-13T22:17:15.000Z","size":9498,"stargazers_count":321,"open_issues_count":8,"forks_count":46,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-05-14T00:12:20.071Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlockstreamResearch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-17T00:23:53.000Z","updated_at":"2025-05-11T13:56:38.000Z","dependencies_parsed_at":"2024-03-07T22:24:49.561Z","dependency_job_id":"0ad02a6d-8ce6-4f4f-890e-2af54f373772","html_url":"https://github.com/BlockstreamResearch/simplicity","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlockstreamResearch%2Fsimplicity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlockstreamResearch%2Fsimplicity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlockstreamResearch%2Fsimplicity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlockstreamResearch%2Fsimplicity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlockstreamResearch","download_url":"https://codeload.github.com/BlockstreamResearch/simplicity/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493381,"owners_count":22080126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-08T10:19:46.067Z","updated_at":"2025-05-16T08:03:20.456Z","avatar_url":"https://github.com/BlockstreamResearch.png","language":"HTML","readme":"# Simplicity\n\nSimplicity is a blockchain programming language designed as an alternative to Bitcoin script.\n\nThe language and implementation is still under development.\n\n## Contents\n\nThis project contains\n\n* A C implementation of a minimal, consensus-critical Simplicity runtime for full nodes.\n* A Haskell implementation of Simplicity's language semantics, type inference engine, serialization functions, and some example Simplicity code.\n* A Haskell code generator that exports Simplicity constants to C and Rust.\n* A Coq implementation of Simplicity's formal denotational and operational semantics.\n\n## Build\n\nUse [Nix](https://nixos.org) for the easiest build. Alternatively, use GNU Autotools.\n\n### C project\n\n#### Nix\n\nChange into the root directory of this repository.\n\nBuild the nix package.\n\n```bash\nnix-build -A c\n```\n\nEnter a nix shell to develop the project manually (see below).\n\n```bash\nnix-shell --arg coq false --arg haskell false\n```\n\nUse arguments to enable / disable the other projects.\n\n#### Manual\n\nChange into the C directory of this repository.\n\nBuild the project using make.\n\n```bash\nmake -j$(nproc)\n```\n\nTo install the project, run make.\n\n```\nmake install # use \"out=/path/to/dir\" for local install\n```\n\nTo run the tests, run make.\n\n```bash\nmake check\n```\n\n### Haskell project\n\n#### Nix\n\nChange into the root directory of this repository.\n\nBuild the nix package.\n\n```bash\nnix-build -A haskell\n```\n\nEnter a nix shell to develop the project manually (see below).\n\n```bash\nnix-shell --arg c false --arg coq false\n```\n\nUse arguments to enable / disable the other projects.\n\n#### Manual\n\nInstall the [Glasgow Haskell Compiler](https://www.haskell.org/ghc/) and [Cabal](https://www.haskell.org/cabal/).\n\nChange into the root directory of this repository.\n\nBuild the project using cabal.\n\n```bash\ncabal build\n```\n\nTo run tests, run cabal.\n\n```bash\ncabal test # use --test-options=\"+RTS -N -RTS\" for parallel jobs\n```\n\nTo enter an interactive GHCi prompt with the project loaded, run cabal.\n\n```bash\ncabal repl Simplicity\n```\n\n### Coq project\n\n#### Nix\n\nChange into the root directory of this repository.\n\nBuild the nix package.\n\n```bash\nnix-build -A coq\n```\n\nEnter a nix shell to develop the project manually (see below).\n\nThe shell provides Coq, CompCert and VST.\n\n```bash\nnix-shell --arg c false --arg haskell false\n```\n\nUse arguments to enable / disable the other projects.\n\n#### Manual\n\nInstall the [opam package manager](https://opam.ocaml.org/).\n\nEnter the opam environment in your shell.\n\n```bash\nopam init\neval $(opam env)\n```\n\nInstall the [Coq theorem prover](https://coq.inria.fr/).\n\n```bash\nopam pin -j$(nproc) add coq 8.17.1\n```\n\nInstall the [CompCert certified C compiler](https://compcert.org/).\n\n```bash\nopam repo add coq-released https://coq.inria.fr/opam/released\nopam install -j$(nproc) coq-compcert.3.13.1\n```\n\nInstall a custom version of the [Verified Software Toolchain](https://vst.cs.princeton.edu/).\n\n**You cannot use opam for this step!**\n\n```\nwget -O - https://github.com/PrincetonUniversity/VST/archive/v2.13.tar.gz | tar -xvzf -\ncd VST-2.13\nmake -j$(nproc) default_target sha\nmake install\ninstall -d $(coqc -where)/user-contrib/sha\ninstall -m 0644 -t $(coqc -where)/user-contrib/sha sha/*.v sha/*.vo\n```\n\nEnter the Coq directory of this repository.\n\nBuild the project using make.\n\n```bash\ncoq_makefile -f _CoqProject -o CoqMakefile\nmake -f CoqMakefile -j$(nproc)\n```\n\nTo install the project, run make.\n\n```bash\nmake -f CoqMakefile install\n```\n\n## Documentation\n\nDetailed documentation can be found in the `Simplicity-TR.tm` TeXmacs file.\nA recent PDF version can be found in the [pdf](https://github.com/ElementsProject/simplicity/blob/pdf/Simplicity-TR.pdf) branch.\n\n## Further Resources\n\n* Our [paper that originally introduced Simplicity](https://arxiv.org/abs/1711.03028).  Some of the finer details are out of date, but it is still a good introduction.\n* [BPASE 2018 presentation](https://youtu.be/VOeUq3oR2fk) of the above paper.\n* [Scale by the Bay 2018 presentation](https://youtu.be/M4XnDrRIKx8) that illustrates formal verification of Simplicity in Agda ([slides](https://lists.ozlabs.org/pipermail/simplicity/2018/000011.html)).\n* Our library [rust-simplicity](https://github.com/BlockstreamResearch/rust-simplicity) that implements Simplicity in Rust.\n\n## Contact\n\nInterested parties are welcome to join the [Simplicity mailing list](https://lists.ozlabs.org/listinfo/simplicity).\nIssues and pull-requests can be made through GitHub's interface.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockstreamresearch%2Fsimplicity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblockstreamresearch%2Fsimplicity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockstreamresearch%2Fsimplicity/lists"}