P L U T O N O M I C O N
Introduction
The Plutonomicon is a developer-driven guide to the Plutus smart contract language in practice.
Since this ecosystem is moving at a breakneck speed, we ask that ANY information posted that is not confirmed to work on chain be labelled as 🔧 work in progress
.
Available resources
We currently provide the following resources, broadly organized by topic.
Fundamentals and explanations
- The Fundamentals of Plutus, which gives a brief introduction to the Plutus language.
- Plutus from a Transaction Perspective, which gives another perspective to the environment Plutus runs in.
-
Plutus Numeric Hierarchy, which gives an overview of the Plutus numerical type class stack, as well as the extensions to it provided by
plutus-numeric
. -
User guide to
plutus-numeric
, which gives a more ‘example-driven’ explanation for how to do certain common tasks usingplutus-numeric
. - How Stake Validators Actually Work, which gives an explanation of ‘Stake Validators’.
Design patterns
- Forward Minting Policy. Also described in another writeup. Some caution is required, as you may not wish to directly reference a script to obtain a hash used to identify the two scripts, as this method details.
- Come and Go Proof Tokens
- State Thread Token Pattern
- DistributedMap, describing an on-chain implementation of key-value mappings. This is naive, and mostly designed for conceptual illustration.
- Consistency of a Distributed Map, which explains some ways of operating on a distributed map.
- Stick Breaking Set, describing an on-chain method of proving presence or absence in a set.
- On-Chain Association List With Constant Time Insert-Removal, describing a pattern that can be used to replicate account-style maps without breaking transaction size limits. This is the optimized version of the naive version of that data structure.
-
Transaction Tokens provide an method of deferring validation to minting policies for the purpose of validating entire transactions rather than the unlocking of individual UTxOs.
- The Transaction Token Pattern document introduces the pattern.
- The Transaction Token Protocol Architecture document introduces a conceptual and practical framework leveraging the pattern for specifying and implementing protocols.
- The Protocol Category Sketch document sketches a formalism to establish a formalism that places protocols described according the the Architecture into the language of symmetric monoidal categories, and works through some examples of how wiring diagrams and aid specification and implementation.
Testing and optimization
-
Staying In Bounds, which describes the testing interface for Plutus on-chain size provided by
plutus-size-check
.
Script Optimization Techniques:
- Reducing Plutus Script Sizes
- Optimizations to reduce CPU and Mem consumption
- Shrinker (shrinker is currently unmaintained)
Plutus Vulnerabilities:
Discussion
To discuss the projects and the content under the Plutonomicon umbrella, join our Discord: https://discord.gg/722KnTC8jF
Running the website
If you’d like to run a live version of the website locally:
nix run
As you edit
1
and save the Markdown files, the browser view should update instantly without requiring a manual refresh. Run nix build
to build the statically generated website. See Emanote guide for further information.
Please note the Markdown writing conventions:
-
There must be zero or one level 1 heading (
# A heading
) as the first line.- If a level 1 heading is not specified, title will be derived from the filename.
- All other headings must be level 2 or greater.