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
.
We currently provide the following resources, broadly organized by topic.
- The Fundamentals of Plutus, which gives a brief introduction to the Plutus language.
- 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
.
- 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.
- Staying In Bounds, which describes the testing interface for Plutus on-chain size provided by
plutus-size-check
.
- Reducing Plutus Script Sizes
- Optimizations to reduce CPU and Mem consumption
- Shrinker (shrinker is currently unmaintained)
To discuss the projects and the content under the Plutonomicon umbrella, join our Discord: https://discord.gg/722KnTC8jF
If you'd like to run a live version of the website locally:
nix run
As you edit1 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. - All other headings must be level 2 or greater.
- When writing links, use
[foo](foo.md)
, or[[foo]]
.
Footnotes
-
Try Obsidian or VSCode with vscode-memo for editing. ↩