From 36e573df5a57873230326987fabf964f95239a40 Mon Sep 17 00:00:00 2001 From: Amir Rad <44954417+amirmrad@users.noreply.github.com> Date: Thu, 5 Sep 2024 16:40:48 +0100 Subject: [PATCH] Add mintSimpleScriptAssets & change getTxs signature (#202) --- .pre-commit-config.yaml | 1 + src/base/lib/Convex/BuildTx.hs | 14 ++++++++++++++ src/base/lib/Convex/Class.hs | 10 ++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) create mode 120000 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 120000 index 00000000..758affe7 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1 @@ +/nix/store/3byva98dv9ps7yx41q8yc0a44dysrqi4-pre-commit-config.json \ No newline at end of file diff --git a/src/base/lib/Convex/BuildTx.hs b/src/base/lib/Convex/BuildTx.hs index 7c41417d..4892241b 100644 --- a/src/base/lib/Convex/BuildTx.hs +++ b/src/base/lib/Convex/BuildTx.hs @@ -55,6 +55,7 @@ module Convex.BuildTx( spendPlutusV2RefWithoutInRef, spendPlutusV2RefWithoutInRefInlineDatum, spendPlutusV2InlineDatum, + spendSimpleScript, -- ** Adding outputs payToAddress, @@ -81,6 +82,7 @@ module Convex.BuildTx( mintPlutusV1, mintPlutusV2, mintPlutusV2Ref, + mintSimpleScriptAssets, -- ** Constructing script witness buildV1ScriptWitness, @@ -124,6 +126,7 @@ import Convex.Class (MonadBlockchain (..), import Convex.MonadLog (MonadLog (..), MonadLogIgnoreT, MonadLogKatipT) import Convex.Scripts (toHashableScriptData) +import Data.Foldable (traverse_) import Data.Functor.Identity (Identity (..)) import Data.List (nub) import qualified Data.Map as Map @@ -475,6 +478,17 @@ mintPlutusV2Ref refTxIn sh red assetName quantity = >> addBtx (over (L.txMintValue . L._TxMintValue) (over _1 (<> v) . over _2 (Map.insert policyId wit))) >> addReference refTxIn +mintSimpleScriptAssets :: MonadBuildTx m => C.SimpleScript -> [(C.AssetName, C.Quantity)] -> m () +mintSimpleScriptAssets sscript assets = + let wit = C.SimpleScriptWitness C.SimpleScriptInBabbage (C.SScript sscript) + policyId = C.scriptPolicyId . C.SimpleScript $ sscript + in traverse_ (\(an,q) -> addMintWithTxBody policyId an q (const wit)) assets + +spendSimpleScript :: MonadBuildTx m => C.TxIn -> C.SimpleScript -> m () +spendSimpleScript txIn sscript = + let wit = C.SimpleScriptWitness C.SimpleScriptInBabbage (C.SScript sscript) + in addBtx (over L.txIns ((txIn, C.BuildTxWith $ C.ScriptWitness C.ScriptWitnessForSpending wit) :)) + addCollateral :: MonadBuildTx m => C.TxIn -> m () addCollateral i = addBtx $ over (L.txInsCollateral . L._TxInsCollateralIso) ((:) i) diff --git a/src/base/lib/Convex/Class.hs b/src/base/lib/Convex/Class.hs index 246c9bb4..2cf98319 100644 --- a/src/base/lib/Convex/Class.hs +++ b/src/base/lib/Convex/Class.hs @@ -88,7 +88,8 @@ import Cardano.Ledger.Shelley.API (ApplyTxError MempoolEnv, MempoolState, UTxO (..), - Validated, extractTx) + Validated, + extractTx) import Cardano.Ledger.Shelley.LedgerState (certDStateL, dsUnifiedL, lsCertStateL, @@ -98,7 +99,8 @@ import Cardano.Ledger.UMap (RDPair (..), compactCoinOrError) import Cardano.Slotting.Time (SlotLength, SystemStart) -import Control.Lens (_1, set, view, (^.), to) +import Control.Lens (_1, set, to, + view, (^.)) import Control.Lens.TH (makeLensesFor, makePrisms) import Control.Monad.Except (MonadError, @@ -355,8 +357,8 @@ setUtxo :: MonadMockchain m => UTxO ERA -> m () setUtxo u = modifyUtxo (const (u, ())) {-| Return all Tx's from the ledger state -} -getTxs :: MonadMockchain m => m [Core.Tx ERA] -getTxs = getMockChainState <&> view (transactions . traverse . _1 . to ((: []) . extractTx)) +getTxs :: MonadMockchain m => m [C.Tx C.BabbageEra] -- [Core.Tx ERA] +getTxs = getMockChainState <&> view (transactions . traverse . _1 . to ((: []) . C.ShelleyTx C.ShelleyBasedEraBabbage . extractTx)) {-| Return all Tx's from the ledger state -}