Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/IntersectMBO/plutus

The Plutus language implementation and tools
https://github.com/IntersectMBO/plutus

blockchain programming-language smart-contracts

Last synced: 28 days ago
JSON representation

The Plutus language implementation and tools

Lists

README

        

= https://github.com/IntersectMBO/plutus[Plutus Core]
:email: [email protected]
:author: Input Output HK Limited
:toc: left
:reproducible:

image:https://img.shields.io/badge/policy-Cardano%20Engineering%20Handbook-informational[link=https://input-output-hk.github.io/cardano-engineering-handbook]

== Introduction

Plutus Core is the scripting language embedded in the Cardano ledger and forms the basis of the Plutus Platform, an application development platform for developing distributed applications using the Cardano blockchain.

For more information about the projects, see the <>.

This repository contains:

* The implementation, specification, and mechanized metatheory of Plutus Core
* Plutus Tx, the compiler from Haskell to Plutus Core.

For people who want to *use* the project, please consult the <>.

== Development

[[how-to-develop]]
=== How to develop and contribute to the project

Run `nix develop` to enter the development shell and you will be presented with a list of available commands.

**Please see link:CONTRIBUTING{outfilesuffix}[CONTRIBUTING] for comprehensive documentation on how to contribute to the project, including development and submitting changes*

=== How to submit an issue

Issues can be filed in the https://github.com/IntersectMBO/plutus/issues[GitHub Issue tracker].

=== How to depend on the project from another Haskell project

The `plutus` libraries are published via https://input-output-hk.github.io/cardano-haskell-packages/[CHaP].
See the information there for how to use CHaP.
After setting it up you should just be able to depend on the `plutus` packages as normal and cabal will find them.

== Documentation

=== User documentation

The main documentation is located https://plutus.readthedocs.io/en/latest/[here].

The latest documentation for the metatheory can be found https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-metatheory-site/latest/download/1[here].

=== Talks

- https://www.youtube.com/watch?v=MpWeg6Fg0t8[Functional Smart Contracts on Cardano (2020)]: an overview of the ideas behind the Plutus Platform.
- https://www.youtube.com/watch?v=usMPt8KpBeI[The Plutus Platform (2020)]: an overview of the Platform as a whole (including the Application Framework) at the time.

=== Specifications and design

- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-report/latest/download/1[Plutus Technical Report (draft)]: a technical report and design document for the project.
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-core-spec/latest/download/1[Plutus Core Specification]: the formal specification of the core language.
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.extended-utxo-spec/latest/download/1[Extended UTXO Model]: a design document for the core changes to the Cardano ledger.

=== Academic papers

- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.unraveling-recursion-paper/latest/download/1[Unraveling Recursion]: a description of some of the compilation strategies used in Plutus IR (https://doi.org/10.1007/978-3-030-33636-3_15[published version]).
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.system-f-in-agda-paper/latest/download/1[System F in Agda]: a formal model of System F in Agda (https://doi.org/10.1007/978-3-030-33636-3_10[published version]).
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.eutxo-paper/latest/download/1[The Extended UTXO Model]: a full presentation of the EUTXO ledger extension (https://doi.org/10.1007/978-3-030-54455-3_37[published version]).
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.utxoma-paper/latest/download/1[UTXOma: UTXO with Multi-Asset Support]: a full presentation of the multi-asset ledger extension (https://doi.org/10.1007/978-3-030-61467-6_8[published version]).
- https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.eutxoma-paper/latest/download/1[Native Custom Tokens in the Extended UTXO Model]: a discussion of the interaction of the multi-asset support with EUTXO (https://doi.org/10.1007/978-3-030-61467-6_7[published version]).
- https://arxiv.org/abs/2201.04919[Translation Certification for Smart Contracts]: a certifier of Plutus IR compiler passes written in Coq.

== Licensing

You are free to copy, modify, and distribute this software under the terms of the Apache 2.0 license.

See the link:./LICENSE[LICENSE] and link:./NOTICE[NOTICE] files for details.