From 43f6de20de7215ef7e25da3be95a4373c36dba2e Mon Sep 17 00:00:00 2001 From: mmontin Date: Thu, 12 Sep 2024 17:20:27 +0200 Subject: [PATCH 1/3] updating cheatsheet --- doc/CHEATSHEET.md | 52 +++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/doc/CHEATSHEET.md b/doc/CHEATSHEET.md index ec4aac37..5e55c65b 100644 --- a/doc/CHEATSHEET.md +++ b/doc/CHEATSHEET.md @@ -34,7 +34,7 @@ initDist :: InitialDistribution initDist = InitialDistribution [ paysPK (wallet 3) (ada 6) - , paysScript fooTypedValidator FooTypedDatum (ada 6) + , paysScript fooTypedValidator FooTypedDatum (ada 6) , paysPK (wallet 2) (ada 2) `withDatum` fooDatum , paysPK (wallet 1) (ada 2) `withReferenceScript` fooValidator ] @@ -118,9 +118,7 @@ foo = do validateTxSkel $ txSkelTemplate { txSkelIns = ..., - txSkelOuts = ..., - txSkelMints = ..., - txSkelSigners = ... + ... } ... ``` @@ -133,12 +131,22 @@ foo = do validateTxSkel' $ txSkelTemplate { txSkelIns = ..., - txSkelOuts = ..., - txSkelMints = ..., - txSkelSigners = ... + ... } ... ``` +* ... ignore any returned value + ```haskell + foo :: MonadBlockChain m => m () + foo = do + ... + validateTxSkel_ $ + txSkelTemplate + { txSkelIns = ..., + ... + } + ... + ``` ### Use wallets @@ -171,19 +179,29 @@ txSkelTemplate ### Spend some UTxOs -* No redeemer: `txSkelEmptyRedeemer` -* With a given redeemer: `txSkelSomeRedeemer` -* A redeemer and a reference script: `txSkelSomeRedeemerAndReferenceScript` -* No redeemer but a reference script: `txSkelEmptyRedeemerAndReferenceScript` +* No redeemer: `emptyTxSkelRedeemer` +* With a given redeemer: `someTxSkelRedeemer myRedeemer` +* Attach a reference input (with a reference script): `redeemer \`withReferenceInput\` txOutRef` ```haskell txSkelTemplate { ... - txSkelIns = Map.fromList [(txOutRef1, myRedeemer1), (txOutRef2, myRedeemer2] + txSkelIns = Map.fromList [(txOutRef1, myRedeemer1), (txOutRef2, myRedeemer2 `withReferenceInput` txOutRef)] + ... + } +``` + +* Allow automatic attachment of reference scripts: +``` +txSkelTemplate + { ... + txSkelIns = Map.fromList [(txOutRef1, myRedeemer1), (txOutRef2, myRedeemer2)], + txSkelOpts = def { txOptAutoReferenceScript = True }, ... } ``` + ### Return `TxOutRef`s from transaction outputs from... * ... the Cardano transaction @@ -194,7 +212,7 @@ txSkelTemplate let (txOutRef1, _) : (txOutRef2, _) : _ = utxosFromCardanoTx cTx return (txOutRef1, txOutRef2) ``` -* ... the returns `TxOutRef`s +* ... the returned `TxOutRef`s ```haskell endpointFoo :: MonadBlockChain m => m (Api.TxOutRef, Api.TxOutRef) endpointFoo = do @@ -225,10 +243,10 @@ foo txOutRef = do * Mint tokens: positive amount * Burn tokens: negative amount -* No redeemer: `(Script.Versioned fooPolicy Script.PlutusV3, txSkelEmptyRedeemer, "fooName", 3)` -* With redeemer: `(Script.Versioned barPolicy Script.PlutusV3, txSkelSomeRedeemer typedRedeemer, "barName", -3)` -* With a redeemer and reference script: `(Script.Versioned barPolicy Script.PlutusV3, txSkelSomeRedeemerAndReferenceScript txOutRef typedRedeemer, "barName", 12)` -* With no redeemer but a reference scrip: `(Script.Versioned barPolicy Script.PlutusV3, txSkelEmptyRedeemerAndReferenceScript txOutRef, "fooName", -6)` +* No redeemer: `(Script.Versioned fooPolicy Script.PlutusV3, emptyTxSkelRedeemer, "fooName", 3)` +* With redeemer: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer, "barName", -3)` +* With a redeemer and explicit reference script: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer \`withReferenceInput\`, "barName", 12)` +* With a redeemer and implicit reference script: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer, "fooName", -6)`, and turn on option `txOptAutoReferenceScript` ```haskell txSkelTemplate From a4c89b1daa89774b5abd694f76a43536720386b0 Mon Sep 17 00:00:00 2001 From: mmontin Date: Thu, 12 Sep 2024 17:25:24 +0200 Subject: [PATCH 2/3] escaping backticks properly --- doc/CHEATSHEET.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/CHEATSHEET.md b/doc/CHEATSHEET.md index 5e55c65b..c175095c 100644 --- a/doc/CHEATSHEET.md +++ b/doc/CHEATSHEET.md @@ -181,7 +181,7 @@ txSkelTemplate * No redeemer: `emptyTxSkelRedeemer` * With a given redeemer: `someTxSkelRedeemer myRedeemer` -* Attach a reference input (with a reference script): `redeemer \`withReferenceInput\` txOutRef` +* Attach a reference input (with a reference script): ``redeemer `withReferenceInput` txOutRef`` ```haskell txSkelTemplate @@ -245,7 +245,7 @@ foo txOutRef = do * No redeemer: `(Script.Versioned fooPolicy Script.PlutusV3, emptyTxSkelRedeemer, "fooName", 3)` * With redeemer: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer, "barName", -3)` -* With a redeemer and explicit reference script: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer \`withReferenceInput\`, "barName", 12)` +* With a redeemer and explicit reference script: ``(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer `withReferenceInput` oRef, "barName", 12)`` * With a redeemer and implicit reference script: `(Script.Versioned barPolicy Script.PlutusV3, someTxSkelRedeemer typedRedeemer, "fooName", -6)`, and turn on option `txOptAutoReferenceScript` ```haskell From 7cb4b6ba5c49097fbfc5a1a7519e6cb4f8903dfd Mon Sep 17 00:00:00 2001 From: mmontin Date: Thu, 12 Sep 2024 17:51:00 +0200 Subject: [PATCH 3/3] withdrawals --- doc/CHEATSHEET.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/CHEATSHEET.md b/doc/CHEATSHEET.md index c175095c..c31211a7 100644 --- a/doc/CHEATSHEET.md +++ b/doc/CHEATSHEET.md @@ -313,16 +313,6 @@ txSkelTemplate * ``paysPK ... `withStakingCredential` ...`` * ``paysScript... ... `withStakingCredential` ...`` -### Spend a referenced script output - -```haskell -txSkelTemplate - { ... - txSkelIns = Map.fromList [(scriptTxOutRefToSpend, txSkelSomeRedeemerForReferencedScript txOutRefCarryingReferenceScript redeemer), ...], - ... - } -``` - ## Balancing ### Choose which wallet provides UTxOs to balance a transaction @@ -560,3 +550,15 @@ txSkelTemplate { txOptAnchorResolution = AnchorResolutionHttp } ``` + +## Withdrawals + +Withdrawals allow to execute scripts with the "rewarding" purpose but do not +work properly in terms of withdrawn values. + +```haskell + txSkelTemplate + { txSkelWithdrawals = scriptWithdrawal withdrawalScript someRedeemer someAdaValue, + ... + } +```