Skip to content

Commit

Permalink
Merge the "Plutus language changes" into other pages (#6537)
Browse files Browse the repository at this point in the history
  • Loading branch information
zliu41 authored Oct 8, 2024
1 parent a44dd05 commit 5a7010a
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 108 deletions.
96 changes: 0 additions & 96 deletions doc/docusaurus/docs/delve-deeper/plutus-language-changes.md

This file was deleted.

45 changes: 45 additions & 0 deletions doc/docusaurus/docs/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ See [_The Extended UTXO Model_](https://iohk.io/en/research/library/papers/the-e
A guardrail script, sometimes referred to as a constitution script or a proposing script, is a Plutus V3 script used to validate two kinds of governance actions: parameter change and treasury withdrawal.
See [Script Purposes](./working-with-scripts/script-purposes.md).

### Inline Datum

Inline datums are a feature introduced in the Babbage era.
Before babbage, a UTXO could only contain a datum hash, not the datum itself.
To spend such a UTXO, the corresponding datum must be provided in the transaction.
Inline datums allow datums to be directly attached to UTXOs.

For more details, see [CIP-32](https://cips.cardano.org/cip/CIP-32).

### Hard Fork

A hard fork is an update of the major protocol version, i.e., transitioning the protocol version from `x.y` to `x+1.0`.
Expand Down Expand Up @@ -144,12 +153,48 @@ A piece of data included in a transaction that serves as an input to a Plutus sc

If a smart contract is regarded as a state machine, the redeemer would be the input that ticks the state machine.

### Reference Input

Reference inputs are a feature introduced in the Babbage era.
A reference input is a UTXO that a transaction can inspect without having to consume it.
Recall that a UTXO can only be consumed once.
Since a UTXO can only be consumed once, reference inputs help avoid the need to keep consuming and recreating similar UTXOs.

For more details, see [CIP-31](https://cips.cardano.org/cip/CIP-31).

### Reference Script

Reference scripts are a feature introduced in the Babbage era.
Before Babbage, a UTXO could not contain scripts, so spending a UTXO with a script address required the script to be included in the transaction.
Reference scripts allow scripts to be attached to UTXOs, which can then be used as reference inputs.
This reduces transaction sizes, and avoids the need to include the same scripts in multiple transactions.

For more details, see [CIP-33](https://cips.cardano.org/cip/CIP-33).

### Scott Encoding

Scott encoding is a method for encoding datatypes in lambda calculus.
The Plutus Tx compiler adopts Scott encoding for Plutus Tx datatypes when compiling to Plutus Core 1.0.0.
When compiling to Plutus Core 1.1.0, sums of products is used instead, which makes scripts smaller and cheaper compared to Scott encoding.
Currently, Plutus V1 and V2 are only compatible with Plutus Core 1.0.0, whereas Plutus V3 is also compatible with Plutus Core 1.1.0.
However, we plan to make all Plutus ledger language versions compatible with all Plutus Core versions in the future.

For more details, see the [Wikipedia page](https://en.wikipedia.org/wiki/Mogensen%E2%80%93Scott_encoding) on Scott encoding.

### Script Context

An input to a Plutus script created by the ledger.
It includes details of the transaction being validated.
Additionally, since a transaction may do multiple things, each of which needs to be validated by a separate script, the script context also specifies what exactly the current script is responsible for validating.

### Sums of Products

Sums of products is an alternative method to Scott encoding for encoding datatypes.
The Plutus Core language supports sums of products since version 1.1.0.
Currently, Plutus Core 1.1.0 is only compatible with Plutus V3, but we plan to make it compatible with Plutus V1 and V2 in the future.

For more details, see [CIP-85](https://cips.cardano.org/cip/CIP-0085).

### Typed Plutus Core

The typed counterpart of Untyped Plutus Core, and can serve as a low-level IR for compilers targeting Untyped Plutus Core.
Expand Down
45 changes: 33 additions & 12 deletions doc/docusaurus/docs/working-with-scripts/ledger-language-version.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,20 @@ As a result, The script contexts for Plutus V1, V2 and V3 also have different fi
We cannot modify the script context fields of an existing ledger language version once it is published, since it would break existing scripts.

In general, a ledger language version cannot be used in a transaction, if the ledger language version was introduced in ledger era A, the transaction uses features in ledger era B, and A is earlier than B.
For instance, Plutus V1 (introduced in the Alonzo era) scripts cannot be used in a transaction which utilizes inline datum (a Babbage era feature); Plutus V2 (introduced in the Babbage era) scripts cannot be used in a transaction that registers a DRep (introduced in the Conway era)[^1].
For instance, Plutus V1 (introduced in the Alonzo era) scripts cannot be used in a transaction which utilizes inline datums (a Babbage era feature); Plutus V2 (introduced in the Babbage era) scripts cannot be used in a transaction that registers a DRep (introduced in the Conway era)[^1].


## Plutus V1 and Plutus V2
## Plutus V1

Plutus V1 and Plutus V2 scripts have four [script purposes](https://plutus.cardano.intersectmbo.org/haddock/master/plutus-ledger-api/PlutusLedgerApi-V1-Contexts.html#t:ScriptPurpose): spending, minting, certifying, and rewarding[^2].
The arguments a Plutus V1 or V2 script receives depend on the script purpose.
There is no requirement on the return value of a Plutus V1 and V2 script: script evaluation succeeds as long as the evaluation terminates without error, and the execution budget is not exceeded.
Plutus V1 is the initial ledger language version, enabled at the Alonzo hard fork, a hard fork that introduced the Alonzo era.

Plutus V1 scripts have four [script purposes](https://plutus.cardano.intersectmbo.org/haddock/master/plutus-ledger-api/PlutusLedgerApi-V1-Contexts.html#t:ScriptPurpose): spending, minting, certifying, and rewarding[^2].
The arguments a Plutus V1 script receives depend on the script purpose.
There is no requirement on the return value of a Plutus V1 script: script evaluation succeeds as long as the evaluation terminates without error, and the execution budget is not exceeded.

### Spending Scripts

A Plutus V1/V2 spending script receives three arguments corresponding to datum, redeemer and script context.
A Plutus V1 spending script receives three arguments corresponding to datum, redeemer and script context.
All arguments are encoded as `BuiltinData`.
Thus in Plutus Tx, a spending script has the following type:

Expand All @@ -49,7 +51,6 @@ myV1SpendingScriptTyped :: MyDatum -> MyRedeemer -> PlutusLedgerApi.V1.ScriptCon
```

where `MyDatum` and `MyRedeemer` are your user-defined Haskell types specific to your contract.
If you are writing a Plutus V2 script, use `PlutusLedgerApi.V2.ScriptContext`.

From `myV1SpendingScriptTyped`, you can obtain `BuiltinData -> BuiltinData -> BuiltinData -> any`, and subsequently compile it to UPLC, via

Expand All @@ -72,11 +73,11 @@ Each call to `unsafeFromBuiltinData` decodes a `BuiltinData` into a value of a H
The `check` function takes a `Bool` and returns a `BuiltinUnit`, throwing an error if the input is `False`.
It is needed because returning `False` does not cause the validation to fail; to fail the validation, an error needs to be thrown.

In this example the script happens to return `BuiltinUnit`, but this is not a requirement for Plutus V1 or V2.
In this example the script happens to return `BuiltinUnit`, but this is not a requirement for Plutus V1.

### Minting, Certifying and Rewarding Scripts

Unlike spending scripts, Plutus V1 and V2 scripts for minting, certifying and rewarding purposes take one fewer argument: there is no datum argument.
Unlike spending scripts, Plutus V1 scripts for minting, certifying and rewarding purposes take one fewer argument: there is no datum argument.
Thus in Plutus Tx, a minting, certifying or rewarding script should have the following type:

```haskell
Expand All @@ -102,20 +103,40 @@ As said before, evaluating a Plutus V1 and V2 script succeeds as long as the eva
This means, crucially, that an unsaturated script (a script expecting more arguments than it receives) succeeds trivially, since the evaluation terminates almost immediately and returns a lambda.
Thus be careful: if, for example, you accidentally use a spending script (which expects three arguments) as a minting script (which will receive two arguments), it will always succeed, which is obviously not what you want.

## Plutus V2

Plutus V2 was enabled at the Vasil hard fork, which introduced the Babbage era.

Plutus V2 shares several similarities with Plutus V1:
- It supports the same four script purposes.
- The number of arguments a Plutus V2 script receives is identical to Plutus V1: three for minting scripts, and two for other script purposes.
- Script evaluation succeeds as long as no errors occur and the budget is not exceeded.

The differences between Plutus V1 and Plutus V2 include:
- Plutus V2 can be used in transactions that utilizes Babbage era features like [inline datums](https://cips.cardano.org/cip/CIP-0032) and [collateral output](https://cips.cardano.org/cip/CIP-0040), while Plutus V1 cannot (except for reference scripts, as noted earlier).
- Plutus V2's script context contains more fields than Plutus V1 due to new transaction features.
When writing a Plutus V2 script, you should use the `ScriptContext` data type from `PlutusLedgerApi.V2`.
- For now, Plutus V2 supports more builtin functions than Plutus V1, including `serialiseData`, `verifyEcdsaSecp256k1Signature` and `verifySchnorrSecp256k1Signature`.
However, as explained in [Different Notions of Version](../essential-concepts/versions.md), we plan to enable all builtin functions across all ledger language versions in the future.

## Plutus V3

Plutus V3 was enabled at the Chang hard fork, which introduced the Conway era.

Plutus V3 has two additional [script purposes](https://plutus.cardano.intersectmbo.org/haddock/master/plutus-ledger-api/PlutusLedgerApi-V3-Contexts.html#t:ScriptPurpose) for validating governance actions: voting and proposing.

Besides the usual differences between different Plutus ledger language versions, there are three additional key differences between Plutus V3 and V1/V2:
Additional key differences between Plutus V3 and V1/V2 include:

1. All Plutus V3 scripts, regardless of script purpose, take a single argument: the script context.
The datum (for spending scripts) and the redeemer are part of the Plutus V3 script context.
This means the same script can be used for spending validation and for different purposes.
2. The datum is now optional for spending scripts.
The script context may or may not contain a datum, depending on whether the UTXO being spent has a datum associated with it.
3. There is an additional condition for the evaluation of a Plutus V3 script to be considered successful: the return value must be a `BuiltinUnit`.
4. For now, Plutus V3 supports Plutus Core 1.1.0, a Plutus Core language version that introduced [sums-of-products](https://cips.cardano.org/cip/CIP-0085), as well as more builtin functions than Plutus V2.
However, we plan to enable all Plutus Core versions and all builtin functions across all ledger language versions in the future.

The first two points are attributed to [CIP-69](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0069/), whereas the third point is attributed to [CIP-117](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0117/).
The first two points above are attributed to [CIP-69](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0069/), whereas the third point is attributed to [CIP-117](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0117/).

In other words, all Plutus V3 scripts should have the following type in Plutus Tx:

Expand All @@ -127,6 +148,6 @@ Updating a Plutus V1/V2 script to turn it into a Plutus V3 script mostly involve

---

[^1]: There is one exception to this: Plutus V1 can be used in transactions with reference inputs, even though reference inputs were introduced in the Babbage era.
[^1]: There is one exception to this: Plutus V1 can be used in transactions with reference scripts, even though reference scripts were introduced in the Babbage era.

[^2]: For more information on script purposes, refer to [Script Purposes](script-purposes.md).

1 comment on commit 5a7010a

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Plutus Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.05.

Benchmark suite Current: 5a7010a Previous: a44dd05 Ratio
validation-auction_2-3 1188 μs 1063 μs 1.12
validation-auction_2-4 901.5 μs 650.7 μs 1.39
validation-auction_2-5 327.4 μs 266.2 μs 1.23
validation-escrow-redeem_2-1 579.2 μs 429.4 μs 1.35
validation-escrow-redeem_2-2 578.4 μs 444.3 μs 1.30
validation-game-sm-success_1-1 551.1 μs 443.7 μs 1.24
validation-prism-2 453.5 μs 416.6 μs 1.09
validation-prism-3 521.6 μs 367.5 μs 1.42
validation-pubkey-1 202 μs 145 μs 1.39
validation-stablecoin_1-1 1289 μs 910.2 μs 1.42
validation-stablecoin_1-2 277.5 μs 196 μs 1.42
validation-stablecoin_1-3 1492 μs 1056 μs 1.41
validation-uniswap-4 480.6 μs 444.7 μs 1.08
validation-uniswap-6 454.4 μs 320.4 μs 1.42
validation-vesting-1 496.2 μs 358.1 μs 1.39
validation-decode-future-increase-margin-2 439 μs 371.8 μs 1.18
validation-decode-future-pay-out-1 332.2 μs 281.4 μs 1.18
validation-decode-future-pay-out-2 439.4 μs 309.1 μs 1.42
validation-decode-future-pay-out-3 439.9 μs 306.7 μs 1.43
validation-decode-future-pay-out-4 937.5 μs 673.1 μs 1.39
validation-decode-future-settle-early-1 315.7 μs 233.2 μs 1.35
validation-decode-future-settle-early-2 426.6 μs 308.5 μs 1.38
validation-decode-pubkey-1 228 μs 216.1 μs 1.06
validation-decode-stablecoin_2-4 226.5 μs 204.1 μs 1.11
validation-decode-token-account-1 324.5 μs 285.2 μs 1.14
nofib-clausify/formula1 4282 μs 2953 μs 1.45
nofib-clausify/formula2 5733 μs 3949 μs 1.45
nofib-clausify/formula3 15720 μs 11770 μs 1.34
nofib-queens4x4/bjbt1 9208 μs 7494 μs 1.23
marlowe-semantics/5e2c68ac9f62580d626636679679b97109109df7ac1a8ce86d3e43dfb5e4f6bc 733.7 μs 515.2 μs 1.42
marlowe-semantics/5f130d19918807b60eab4c03119d67878fb6c6712c28c54f5a25792049294acc 431.8 μs 323.7 μs 1.33
marlowe-semantics/64c3d5b43f005855ffc4d0950a02fd159aa1575294ea39061b81a194ebb9eaae 939.1 μs 660.8 μs 1.42
marlowe-semantics/65bc4b69b46d18fdff0fadbf00dd5ec2b3e03805fac9d5fb4ff2d3066e53fc7e 3326 μs 2358 μs 1.41
marlowe-semantics/66af9e473d75e3f464971f6879cc0f2ef84bafcb38fbfa1dbc31ac2053628a38 1766 μs 1240 μs 1.42
marlowe-semantics/675d63836cad11b547d1b4cddd498f04c919d4342612accf40913f9ae9419fac 1474 μs 1036 μs 1.42
marlowe-semantics/67ba5a9a0245ee3aff4f34852b9889b8c810fccd3dce2a23910bddd35c503b71 7746 μs 5604 μs 1.38
marlowe-semantics/6d88f7294dd2b5ce02c3dc609bc7715bd508009738401d264bf9b3eb7c6f49c1 696.7 μs 523.3 μs 1.33
marlowe-semantics/c4bb185380df6e9b66fc1ee0564f09a8d1253a51a0c0c7890f2214df9ac19274 1051 μs 842.4 μs 1.25
marlowe-semantics/d1c03759810747b7cab38c4296593b38567e11195d161b5bb0a2b58f89b2c65a 1456 μs 1020.9999999999999 μs 1.43
marlowe-semantics/d64607eb8a1448595081547ea8780886fcbd9e06036460eea3705c88ea867e33 426.2 μs 300.1 μs 1.42
marlowe-semantics/dc241ac6ad1e04fb056d555d6a4f2d08a45d054c6f7f34355fcfeefebef479f3 665.4 μs 467.5 μs 1.42
marlowe-semantics/dd11ae574eaeab0e9925319768989313a93913fdc347c704ddaa27042757d990 1076 μs 762.9 μs 1.41
marlowe-semantics/e34b48f80d49360e88c612f4016f7d68cb5678dd8cd5ddb981375a028b3a40a5 555.7 μs 391 μs 1.42
marlowe-semantics/e3afd22d01ff12f381cf915fd32358634e6c413f979f2492cf3339319d8cc079 431.9 μs 303.6 μs 1.42
marlowe-semantics/e9234d2671760874f3f660aae5d3416d18ce6dfd7af4231bdd41b9ec268bc7e1 1346 μs 948.4 μs 1.42
marlowe-semantics/eb4a605ed3a64961e9e66ad9631c2813dadf7131740212762ae4483ec749fe1d 427.1 μs 301.2 μs 1.42
marlowe-semantics/ecb5e8308b57724e0f8533921693f111eba942123cf8660aac2b5bac21ec28f0 943 μs 664.1 μs 1.42
marlowe-semantics/f2a8fd2014922f0d8e01541205d47e9bb2d4e54333bdd408cbe7c47c55e73ae4 1055 μs 744.9 μs 1.42
marlowe-semantics/f339f59bdf92495ed2b14e2e4d3705972b4dda59aa929cffe0f1ff5355db8d79 6390 μs 4560 μs 1.40
marlowe-semantics/ffdd68a33afd86f8844c9f5e45b2bda5b035aa02274161b23d57709c0f8b8de6 1359 μs 959.4 μs 1.42
marlowe-role-payout/0004000402010401030101030100040000010104020201030001000204020401 260.2 μs 182.9 μs 1.42
marlowe-role-payout/0100000100010000000001000100010101000101000001000000010000010000 366.3 μs 257.9 μs 1.42
marlowe-role-payout/0101000100000101010000010101000100010101000001000001000000010101 276 μs 194.8 μs 1.42
marlowe-role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 228.5 μs 160.7 μs 1.42
marlowe-role-payout/0201020201020000020000010201020001020200000002010200000101010100 260.2 μs 183.6 μs 1.42
marlowe-role-payout/0202010002010100020102020102020001010101020102010001010101000100 242.7 μs 171 μs 1.42
marlowe-role-payout/0303020000020001010201060303040208070100050401080304020801030001 239.2 μs 168.5 μs 1.42
marlowe-role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 293.9 μs 207.1 μs 1.42
marlowe-role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 273 μs 192.8 μs 1.42
marlowe-role-payout/0403020000030204010000030001000202010101000304030001040404030100 254.9 μs 179.7 μs 1.42
marlowe-role-payout/0405010105020401010304080005050800040301010800080207080704020206 278.8 μs 196.5 μs 1.42
marlowe-role-payout/041a2c3b111139201a3a2c173c392b170e16370d300f2d28342d0f2f0e182e01 279.3 μs 197.1 μs 1.42
marlowe-role-payout/04f592afc6e57c633b9c55246e7c82e87258f04e2fb910c37d8e2417e9db46e5 327.6 μs 231.6 μs 1.41
marlowe-role-payout/057ebc80922f16a5f4bf13e985bf586b8cff37a2f6fe0f3ce842178c16981027 234.4 μs 165.9 μs 1.41
marlowe-role-payout/06317060a8e488b1219c9dae427f9ce27918a9e09ee8ac424afa33ca923f7954 253.9 μs 179 μs 1.42
marlowe-role-payout/07658a6c898ad6d624c37df1e49e909c2e9349ba7f4c0a6be5f166fe239bfcae 228.6 μs 161.4 μs 1.42
marlowe-role-payout/0bdca1cb8fa7e38e09062557b82490714052e84e2054e913092cd84ac071b961 277.1 μs 196 μs 1.41
marlowe-role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 248.9 μs 175.6 μs 1.42
marlowe-role-payout/0d0f01050a0a0a0b0b050d0404090e0d0506000d0a041003040e0f100e0a0408 247.4 μs 173.7 μs 1.42
marlowe-role-payout/0dbb692d2bf22d25eeceac461cfebf616f54003077a8473abc0457f18e025960 281.6 μs 198.3 μs 1.42
marlowe-role-payout/0e00171d0f1e1f14070d0a00091f07101808021d081e1b120219081312081e15 242.9 μs 171.5 μs 1.42
marlowe-role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 268.1 μs 189.5 μs 1.41
marlowe-role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 261 μs 183.9 μs 1.42
marlowe-role-payout/0f010d040810040b10020e040f0e030b0a0d100f0c080c0c05000d04100c100f 265.5 μs 195.5 μs 1.36
marlowe-role-payout/1138a04a83edc0579053f9ffa9394b41df38230121fbecebee8c039776a88c0c 240.3 μs 169.4 μs 1.42
marlowe-role-payout/121a0a1b12030616111f02121a0e070716090a0e031c071419121f141409031d 232.8 μs 164.1 μs 1.42
marlowe-role-payout/159e5a1bf16fe984b5569be7011b61b5e98f5d2839ca7e1b34c7f2afc7ffb58e 239.6 μs 170.6 μs 1.40
marlowe-role-payout/195f522b596360690d04586a2563470f2214163435331a6622311f7323433f1c 234.9 μs 165.8 μs 1.42
marlowe-role-payout/1a20b465d48a585ffd622bd8dc26a498a3c12f930ab4feab3a5064cfb3bc536a 261.8 μs 184.4 μs 1.42
marlowe-role-payout/211e1b6c10260c4620074d2e372c260d38643a3d605f63772524034f0a4a7632 251.2 μs 177.5 μs 1.42
marlowe-role-payout/21a1426fb3fb3019d5dc93f210152e90b0a6e740ef509b1cdd423395f010e0ca 264.5 μs 186.5 μs 1.42
marlowe-role-payout/224ce46046fab9a17be4197622825f45cc0c59a6bd1604405148e43768c487ef 240.2 μs 169.5 μs 1.42
marlowe-role-payout/332c2b1c11383d1b373e1315201f1128010e0e1518332f273f141b23243f2a07 229.2 μs 162.1 μs 1.41
marlowe-role-payout/3565ee025317e065e8555eef288080276716366769aad89e03389f5ec4ce26d7 220.9 μs 178.8 μs 1.24
marlowe-role-payout/4299c7fcf093a5dbfe114c188e32ca199b571a7c25cb7f766bf49f12dab308be 260 μs 183.7 μs 1.42
marlowe-role-payout/452e17d16222a427707fa83f63ffb79f606cc25c755a18b1e3274c964ed5ec99 287.3 μs 204.3 μs 1.41
marlowe-role-payout/47364cfaf2c00f7d633283dce6cf84e4fd4e8228c0a0aa50e7c55f35c3ecaa1c 237.3 μs 167.2 μs 1.42
marlowe-role-payout/49b8275d0cb817be40865694ab05e3cfe5fc35fb43b78e7de68c1f3519b536bd 246.7 μs 173.6 μs 1.42
marlowe-role-payout/4dd7755b6ca1f0c9747c1fc0ee4da799f6f1c07108e980bd9f820911ad711ff2 317.2 μs 223.4 μs 1.42
marlowe-role-payout/5a0725d49c733130eda8bc6ed5234f7f6ff8c9dd2d201e8806125e5fbcc081f9 250.8 μs 225.5 μs 1.11
marlowe-role-payout/5a2aae344e569a2c644dd9fa8c7b1f129850937eb562b7748c275f9e40bed596 237.4 μs 167.1 μs 1.42
marlowe-role-payout/5ade103e9530dd0d572fe1b053ea65ad925c6ebbe321e873ace8b804363fa82c 330.8 μs 233.5 μs 1.42
marlowe-role-payout/5d4c62a0671c65a14f6a15093e3efc4f1816d95a5a58fd92486bedaae8d9526b 277.2 μs 195.8 μs 1.42
marlowe-role-payout/5efe992e306e31cc857c64a62436ad2f9325acc5b4a74a8cebccdfd853ce63d2 245.3 μs 206.1 μs 1.19
marlowe-role-payout/622a7f3bc611b5149253c9189da022a9ff296f60a5b7c172a6dc286faa7284fa 286.5 μs 201.2 μs 1.42
marlowe-role-payout/6621a69217f09d91f42876a9c0cecf79de0e29bdd5b16c82c6c52cf959092ec4 262.4 μs 184.6 μs 1.42
marlowe-role-payout/674b0577409957172ad85223c765d17e94c27714276c49c38dfae0a47a561a1e 234.7 μs 165.7 μs 1.42
marlowe-role-payout/6b7bc2b9002a71b33cfd535d43f26334a283d0b9ad189b7cd74baac232c3b9fc 229.5 μs 161 μs 1.43
marlowe-role-payout/6c364699767a84059ffd99cf718562a8c09d96e343f23dc481e8ffda13af424f 238 μs 167.3 μs 1.42
marlowe-role-payout/6d66bddb4269bdf77392d3894da5341cf019d39787522af4f83f01285991e93c 242.3 μs 170.1 μs 1.42
marlowe-role-payout/73f044f34a30f26639c58bafe952047f74c7bf1eafebab5aadf5b73cfb9024ed 237.7 μs 167.2 μs 1.42
marlowe-role-payout/7b1dd76edc27f00eb382bf996378155baf74d6a7c6f3d5ec837c39d29784aade 242 μs 170.4 μs 1.42
marlowe-role-payout/803eae94d62e2afc0e835c204af8362170301bc329e2d849d5f5a47dddf479ec 267.9 μs 188.4 μs 1.42
marlowe-role-payout/87167fc5469adac97c1be749326fa79a6b7862ce68aa4abcb438e3c034bd0899 279.9 μs 197.5 μs 1.42
marlowe-role-payout/8c0fa5d9d6724c5c72c67e055d4bfc36a385ded7c3c81c08cdbd8705829af6e6 281.9 μs 198.5 μs 1.42
marlowe-role-payout/962c2c658b19904372984a56409707401e64e9b03c1986647134cfd329ec5139 259 μs 181.5 μs 1.43
marlowe-role-payout/996804e90f2c75fe68886fc8511304b8ab9b36785f8858f5cb098e91c159dde9 247.8 μs 174.1 μs 1.42
marlowe-role-payout/a004a989c005d59043f996500e110fa756ad1b85800b889d5815a0106388e1d7 256.3 μs 180.3 μs 1.42
marlowe-role-payout/a0fba5740174b5cd24036c8b008cb1efde73f1edae097b9325c6117a0ff40d3b 265.7 μs 186.8 μs 1.42
marlowe-role-payout/a1b25347409c3993feca1a60b6fcaf93d1d4bbaae19ab06fdf50cedc26cee68d 230.1 μs 161.7 μs 1.42
marlowe-role-payout/bcdbc576d63b0454100ad06893812edafc2e7e4934fec1b44e2d06eb34f36eb8 225.5 μs 170.3 μs 1.32
marlowe-role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 274.6 μs 193.7 μs 1.42
marlowe-role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 221.3 μs 194.4 μs 1.14
marlowe-role-payout/eabeeae18131af89fa57936c0e9eb8d2c7adba534f7e1a517d75410028fa0d6c 242 μs 170.6 μs 1.42
marlowe-role-payout/ec4712ee820eb959a43ebedfab6735f2325fa52994747526ffd2a4f4f84dd58e 273.6 μs 192.9 μs 1.42
marlowe-role-payout/ee3962fbd7373360f46decef3c9bda536a0b1daf6cda3b8a4bcfd6deeb5b4c53 277.1 μs 194.5 μs 1.42
marlowe-role-payout/f1a1e6a487f91feca5606f72bbb1e948c71abf043c6a0ea83bfea9ec6a0f08d8 237.1 μs 167.7 μs 1.41
marlowe-role-payout/f2932e4ca4bbb94b0a9ffbe95fcb7bd5639d9751d75d56d5e14efa5bbed981df 235.3 μs 166.6 μs 1.41
marlowe-role-payout/f53e8cafe26647ccce51e4c31db13608aea1f39034c0f52dee2e5634ef66e747 260.7 μs 184 μs 1.42
marlowe-role-payout/f7275afb60e33a550df13a132102e7e925dd28965a4efbe510a89b077ff9417f 241.4 μs 170.3 μs 1.42
marlowe-role-payout/fc8c5f45ffcdb024c21e0f34b22c23de8045a94d5e1a5bda1555c45ddb059f82 251.3 μs 177 μs 1.42
marlowe-role-payout/ff38b1ec89952d0247630f107a90cbbeb92ecbfcd19b284f60255718e4ec7548 288.2 μs 203.2 μs 1.42

This comment was automatically generated by workflow using github-action-benchmark.

CC: @IntersectMBO/plutus-core

Please sign in to comment.