The Plutus language reference implementation and tools
Clone or download
Latest commit a6d7600 Jan 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite [DEVOPS-1124] add split check functionality Nov 8, 2018
ci [DEVOPS-1124] Address review comments and move some tests to iohk-nix Nov 8, 2018
docs Merge pull request #474 from input-output-hk/j-mueller/tutorial Jan 17, 2019
language-plutus-core Addres comments Jan 15, 2019
nix/overlays lib: pass system and config to iohkNix Nov 30, 2018
pkgs replace hint with runghc Jan 11, 2019
plutus-core-interpreter Adapted 'plutus-core-interpreter' Dec 27, 2018
plutus-core-spec Kwxm/more minor spec updates (#425) Dec 19, 2018
plutus-exe [Test] Added a naive exponential function computing fibonacci numbers Jan 8, 2019
plutus-ir Addres comments Jan 15, 2019
plutus-playground wallet-api: Address review comments in tutorial Jan 17, 2019
plutus-tx-plugin Addres comments Jan 15, 2019
plutus-tx Add missing golden file Jan 15, 2019
plutus-use-cases wallet-api: Type names Jan 15, 2019
wallet-api wallet-api: Address review comments in tutorial Jan 17, 2019
.editorconfig Add .editorconfig Aug 31, 2018
.gitattributes minor fix Aug 11, 2018
.gitignore plutus playground Dec 5, 2018
.hindent.yaml plutus playground Dec 5, 2018
.hlint.yaml plutus-ir: thunk recursive values of non-function type (#473) Jan 11, 2019
.stylish-haskell.yaml Make extensions list less clashy Aug 31, 2018
CONTRIBUTING.md Update CONTRIBUTING.md Nov 28, 2018
README.md Add a glossary to the readme Dec 5, 2018
cabal.project Plutus core/add remote deps (#385) Dec 6, 2018
default.nix replace hint with runghc Jan 11, 2019
git-pre-commit-hook docs Aug 31, 2018
iohk-nix.json Bump iohk-nix Nov 30, 2018
lib.nix plutus playground Dec 5, 2018
release.nix Move plutus-playground attrs to subset Dec 13, 2018
shell.nix plutus playground Dec 5, 2018
stack.yaml plutus playground Dec 5, 2018

README.md

Plutus Platform for Cardano

This repository contains the various components and some documentation for the Plutus Platform, providing smart contract functionality for the Cardano blockchain.

Building

default.nix defines a package set containing all the packages in this repository. These can be built directly. For example:

nix build -f default.nix localPackages.language-plutus-core

The Plutus Core specification is also built this way, as the attribute docs.plutus-core-spec.

Binary caches

You may wish to add the IOHK binary cache to your Nix configuration. This will speed up builds a lot, since many things will have been built already by our CI.

Put the following in /etc/nix/nix.conf, or ~/.config/nix/nix.conf if you are a trusted user (if you don't know what that means, just use /etc/nix/nix.conf):

substituters        = https://hydra.iohk.io https://cache.nixos.org/
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=

Docs

Docs are built by hydra. The latest docs for plutus core master branch can be found at https://hydra.iohk.io/job/serokell/plutus/language-plutus-core.x86_64-linux/latest

You can also build the docs yourself locally. For example:

nix build -f default.nix localPackages.language-plutus-core.doc

Glossary

Definitions of some technical terms and names used throughout this project.

  • Extended UTxO
    • The ledger model on which the Plutus Platform is based.
  • On-chain code
    • Code written as part of a smart contract which executes on the chain during transaction validation.
  • Off-chain code
    • Code written as part of a smart contract which executes off the chain, usually in a user's wallet.
  • Plutus Core
    • A small functional programming language designed to run as on-chain code.
  • Plutus IR
    • An intermediate language that compiles to Plutus Core, for use as a target language for compiler writers.
  • Plutus Platform
    • The combined software support for writing smart contracts, including:
      • Libraries for writing off-chain code in Haskell.
      • Libraries for writing on-chain code in Plutus Tx.
      • Emulator support for testing smart contracts.
  • Plutus Tx
    • A subset of Haskell which is compiled into Plutus Core.