Skip to content

The Plutus language reference implementation and tools

Notifications You must be signed in to change notification settings

nathankaiser/plutus

 
 

Repository files navigation

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.

About

The Plutus language reference implementation and tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Haskell 59.5%
  • TeX 17.9%
  • Nix 15.2%
  • PureScript 3.7%
  • HCL 1.5%
  • CSS 0.6%
  • Other 1.6%