Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ We currently provide the following resources, broadly organized by topic.
* The [Transaction Token Pattern](./transaction-token-pattern.md) document introduces the pattern.
* The [Transaction Token Protocol Architecture](./transaction-token-protocol.md) document introduces a conceptual and practical framework leveraging the pattern for specifying and implementing protocols.
* The [Protocol Category Sketch](./protocol-category.md) 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](size-test.md), which describes the testing interface for Plutus on-chain size provided by [`plutus-size-check`](https://github.com/Liqwid-Labs/plutus-extra/tree/master/plutus-size-check).
* [Costing model of Onchain scripts](uplc-costing.md), which describes how the cost for your onchain scripts are actually calculated. Spoilers: It's nothing like what you'd expect from a traditional VM.

#### Script Optimization Techniques:
* [Reducing Plutus Script Sizes](optimisations.md)
Expand All @@ -57,7 +58,7 @@ We currently provide the following resources, broadly organized by topic.
### Plutus Vulnerabilities:
* [Common Plutus Vulnerabilities](vulnerabilities.md)

## Discussion
## Discussion

To discuss the projects and the content under the Plutonomicon umbrella, join our Discord: https://discord.gg/722KnTC8jF

Expand Down
10 changes: 5 additions & 5 deletions builtin-data.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# What is Data/BuiltinData?
This document serves as a guide for understanding and working with [`BuiltinData`/`Data`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx.html#t:Data). It's primarily meant for Pluto users and Plutarch developers/contributors.
This document serves as a guide for understanding and working with [`BuiltinData`/`Data`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx.html#t:Data). It's primarily meant for Pluto users and Plutarch developers/contributors.

> Note: If you spot any mistakes/have any related questions that this guide lacks the answer to, please don't hesitate to raise an issue. The goal is to have high quality documentation for Pluto and Plutarch users!

Expand Down Expand Up @@ -238,7 +238,7 @@ import PlutusTx (Data (Constr))
## What is `Map`?
The `Map` constructor is for """Haskell maps""". In the Plutus world, maps are apparently just assoc lists. You've seen assoc lists already; they're just a list of pairs. These pairs consist of two `Data` values.

The common example of this is [`Value`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V1-Ledger-Value.html#t:Value). But anytime you see [Plutus Assoc Maps](https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-AssocMap.html#t:Map) - you can be sure that it's actually going to end up as a `Map` data.
The common example of this is [`Value`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V1-Ledger-Value.html#t:Value). But anytime you see [Plutus Assoc Maps](https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-AssocMap.html#t:Map) - you can be sure that it's actually going to end up as a `Map` data.

## Working with `Map`
You can unwrap the `Map` data value to obtain the inner builtin list of builtin pairs with the `UnMapData` builtin function. You can then work with the resulting builtin lists. It contains pairs of `Data`. See [Working with Builtin Lists](builtin-lists.md).
Expand Down Expand Up @@ -441,6 +441,6 @@ It works all the same as above!
* [Builtin functions](builtin-functions.md)
* [Pluto guide](https://github.com/Plutonomicon/pluto/blob/main/GUIDE.md)
* [Plutarch guide](https://github.com/Plutonomicon/plutarch/blob/master/docs/GUIDE.md)
* [Plutus builtin functions and types](https://staging.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
* [Plutus builtin functions and types](https://playground.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
10 changes: 5 additions & 5 deletions builtin-functions.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Plutus Core Builtin Functions Reference
This document serves as a reference to the Plutus Core builtin functions, aka [`DefaultFun`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun). It is primarily meant for Pluto users and Plutarch developers/contributors. As such, it contains information about *forcing*. That is, how many times each of these builtins need to be forced to actually use them.
This document serves as a reference to the Plutus Core builtin functions, aka [`DefaultFun`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun). It is primarily meant for Pluto users and Plutarch developers/contributors. As such, it contains information about *forcing*. That is, how many times each of these builtins need to be forced to actually use them.

> Note: If you spot any mistakes/have any related questions that this guide lacks the answer to, please don't hesitate to raise an issue. The goal is to have high quality documentation for Pluto and Plutarch users!

[Cross Reference](https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html)
[Cross Reference](https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html)

> Note: The "Type" column of the table below is primarily for documentation reasons. After all, it's all *Untyped* Plutus Core. However, most of these types *do* need to be adhered to. There are a few cases where some flexibility allowed. These cases will be noted on the table itself.

Expand Down Expand Up @@ -77,6 +77,6 @@ This document serves as a reference to the Plutus Core builtin functions, aka [`
* [Builtin pairs](builtin-pairs.md)
* [Pluto guide](https://github.com/Plutonomicon/pluto/blob/main/GUIDE.md)
* [Plutarch guide](https://github.com/Plutonomicon/plutarch/blob/master/docs/GUIDE.md)
* [Plutus builtin functions and types](https://staging.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
* [Plutus builtin functions and types](https://playground.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
8 changes: 4 additions & 4 deletions builtin-lists.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ Where `xs` is of type `PBuiltinList a`, and `a` and `b` are the two branches of
## `MkNilData`
You're probably wondering, "All those functions above take in builtin lists. That's cool, but where can I get me one of these builtin lists you speak of?". Good question! Here's the first of several ways to obtain a builtin list.

`MkNilData` takes in a `BuiltinUnit` and returns an empty list (`nil`) of [`BuiltinData`/`Data`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx.html#t:Data). So, its return type is like `BuiltinList Data`.
`MkNilData` takes in a `BuiltinUnit` and returns an empty list (`nil`) of [`BuiltinData`/`Data`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx.html#t:Data). So, its return type is like `BuiltinList Data`.

More often than not, you'll actually be working on builtin lists of `Data`. You rarely need to use builtin lists with elements of other type (except `BuiltinPair`). Convenient!

Expand Down Expand Up @@ -229,6 +229,6 @@ There is no truly polymorphic `nil` in Plutus Core. When you create a `nil` cons
* [Builtin functions](builtin-functions.md)
* [Pluto guide](https://github.com/Plutonomicon/pluto/blob/main/GUIDE.md)
* [Plutarch guide](https://github.com/Plutonomicon/plutarch/blob/master/docs/GUIDE.md)
* [Plutus builtin functions and types](https://staging.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
* [Plutus builtin functions and types](https://playground.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
6 changes: 3 additions & 3 deletions builtin-pairs.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,6 @@ Of course, this is a Haskell level function, operating on Haskell data types - t
* [Builtin functions](builtin-functions.md)
* [Pluto guide](https://github.com/Plutonomicon/pluto/blob/main/GUIDE.md)
* [Plutarch guide](https://github.com/Plutonomicon/plutarch/blob/master/docs/GUIDE.md)
* [Plutus builtin functions and types](https://staging.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://staging.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
* [Plutus builtin functions and types](https://playground.plutus.iohkdev.io/doc/haddock//plutus-tx/html/PlutusTx-Builtins-Internal.html)
* [Plutus Core builtin function identifiers, aka `DefaultFun`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultFun)
* [Plutus Core types, aka `DefaultUni`](https://playground.plutus.iohkdev.io/doc/haddock/plutus-core/html/PlutusCore.html#t:DefaultUni)
4 changes: 2 additions & 2 deletions fundamentals.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ There are two big parts to Cardano: The consensus algorithm and ledger model. Wh

NB: We are currently in Alonzo.

1. [https://staging.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V2-Ledger-Contexts.html#t:TxInfo](https://staging.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V2-Ledger-Contexts.html#t:TxInfo)
1. [https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V2-Ledger-Contexts.html#t:TxInfo](https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V2-Ledger-Contexts.html#t:TxInfo)
1. [https://iohk.io/en/research/library/papers/native-custom-tokens-in-the-extended-utxo-model/](https://iohk.io/en/research/library/papers/native-custom-tokens-in-the-extended-utxo-model/)
1. [https://github.com/input-output-hk/cardano-ledger/tree/master/eras/alonzo/test-suite/cddl-files](https://github.com/input-output-hk/cardano-ledger/tree/master/eras/alonzo/test-suite/cddl-files)
1. [https://hydra.iohk.io/job/Cardano/cardano-ledger-specs/specs.alonzo-ledger/latest/download-by-type/doc-pdf/alonzo-changes](https://hydra.iohk.io/job/Cardano/cardano-ledger-specs/specs.alonzo-ledger/latest/download-by-type/doc-pdf/alonzo-changes)
1. [https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/index.html](https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/index.html)
1. [https://plutus-apps.readthedocs.io/en/latest/](https://plutus-apps.readthedocs.io/en/latest/)
1. [https://github.com/input-output-hk/plutus/blob/master/plutus-core/cost-model/CostModelGeneration.md](https://github.com/input-output-hk/plutus/blob/master/plutus-core/cost-model/CostModelGeneration.md)
1. [https://github.com/input-output-hk/plutus/blob/master/plutus-core/cost-model/data/builtinCostModel.json](https://github.com/input-output-hk/plutus/blob/master/plutus-core/cost-model/data/builtinCostModel.json)
1. [https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html](https://staging.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html)
1. [https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html](https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/PlutusTx-Builtins-Internal.html)

## Overview

Expand Down
Loading