A curated list of amazingly awesome Plutus libraries, resources and shiny things.
Plutus is the new smart contract language for the Cardano blockchain.
This is intended to give the first waves of Plutus developers the best and most comprehensive information and tools for using Plutus as fast as possible.
- FAQ
- Official
- Community Tutorials
- Videos
- Code Examples
- Testing
- Formal Specification Documents
- Deployment
Q: Where can I find Haskell libraries I can use with Plutus. A: We recommend https://hoogle.haskell.org - which allows you to search for functions by type. Please keep in mind that Plutus on-chain code will only support a subset of Haskell. You might also want to take a look at awesome-haskell
Q: How can I write/run Plutus code today? A: (As of may 19, 2021) - currently Plutus does not have a public test net, Plutus can run in a simulated chain using the Plutus Application backend, or PAB, which is available in the Plutus monorepo.
- Plutus Monorepo - the place to get started, depend on this repo to start a Plutus project
- The Plutus Playground - allows a Plutus script to be compiled and evaluated online
- Official Plutus Tutorial - a great starting place to get the foundations of Plutus
- Plutus GHC Plugin Errors - Troubleshooting guide - the official guide to troublshooting Plutus plugin & Plutus Core generation issues.
- How to Use Hoogle with the Plutus Monorepo - allows you to run Haskell's searchable documentation database, with the plutus library included
- Public Haddock Instance for Plutus - allows you to search Plutus documentation directly
- PAB Explainer - how the plutus application backend will work at launch
- Alonzo office hours - discussion of the Plutus hard fork event, and how to interact with plutus contracts on testnets (some episodes not available)
- Hydra: Fast Isomorphic State Channels - a scaling solution in the pipeline for Cardano.
- Interhead Hydra: Two Heads are Better Than One - additional information about Hydra.
- Cardano Improvement Proposals (CIPs) - proposals for updates and standards for the Cardano ecosystem. Many important draft proposals in the PR section are already being adopted in the community.
- The Minimum Ada Requirement - A specific rule that is important in smart contract development.
- Essential Cardano - a curated list of resources for the entire Cardano network and community.
- The UTXO model explained with examples - since the Plutus smart contract platform uses an extended UTXO model, it is good to have a solid understanding of how this model works and how it is different from the Ethereum Account model.
- Introduction to the Cardano blockchain ledger and smart contracts - a general introduction to the mechanics of smart contracts in the Cardano ecosystem
- Ouroboros Protocol. The Heart of Cardano - an explainer of the Proof of Stake protocol used by Cardano. accompanying article here
- Plutus Pioneer Program & Alonzo White Notes - lecture notes for the Plutus Pioneer Program
- The Plutonomicon - A collection of important documents and techniques for advanced, production-ready plutus.
- Plutus Pioneer Program Lectures - this is the first formal education program intended for the first wave of Plutus developers
- Plutus Use Cases - the first toy applications developed in Plutus as proof of concept for industrial projects. a great reference including example test suites
the Plutus monorepo currently provides two libraries that can be used to write effective tests for your Plutus contract:
- Wallet Emulator - can easily run tests in an emulated environment.
- PAB Simulator - can easily run tests or live interaction via http with a simulated local blockchain which supports Plutus
- IOHK Tutorial on Testing Plutus Contracts - a tutorial on how to test stateful contracts using quickcheck property testing.
- The EUTXO Model - specification for extensions on the UTXO model, as used in Cardano, defines many of the base data types used in Plutus
- The Plutus Platform Technical Report (DRAFT) - a general overview of Plutus as a language and smart contract platform.
- Plutus Core Formal Specification - the specification for the serializable core language built on system F which is used for the on-chain portion of Plutus.
- https://github.com/input-output-hk/Alonzo-testnet - describes how to set up an Alonzo Blue node (as of June 16 2021)