diff --git a/doc/CHEATSHEET.md b/doc/CHEATSHEET.md index ec4aac37..c31211a7 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` 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 txSkelTemplate @@ -295,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 @@ -542,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, + ... + } +```