Skip to content

Commit 3164887

Browse files
authored
Use HSet instead of CombinedEnv (#98)
* Use HSet instead of CombinedEnv * Add utils module for HSet * Move runtime env to common library * Delete comment * Use exported functions from ProgrammableTokens.OffChain.Env.Utils
1 parent bd2f9bc commit 3164887

File tree

26 files changed

+270
-347
lines changed

26 files changed

+270
-347
lines changed

src/examples/aiken/haskell/aiken-example.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ library
6262
Wst.Cli
6363
Wst.Cli.App
6464
Wst.Cli.Command
65-
Wst.Cli.Env
6665

6766
hs-source-dirs: lib
6867
build-depends:
@@ -80,6 +79,7 @@ library
8079
, convex-coin-selection
8180
, convex-optics
8281
, convex-wallet
82+
, hset
8383
, lens
8484
, mtl
8585
, optparse-applicative

src/examples/aiken/haskell/lib/Wst/Cli.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import PlutusLedgerApi.V1 qualified as PV1
2929
import ProgrammableTokens.OffChain.Endpoints qualified as Endpoints
3030
import ProgrammableTokens.OffChain.Env qualified as Env
3131
import ProgrammableTokens.OffChain.Env.Directory qualified as Directory
32+
import ProgrammableTokens.OffChain.Env.Runtime qualified as Env
3233
import ProgrammableTokens.OffChain.Error qualified as Error
3334
import ProgrammableTokens.OffChain.Query qualified as Query
3435
import ProgrammableTokens.OffChain.Scripts as Scripts
@@ -38,7 +39,6 @@ import Wst.Aiken.Error qualified as Error
3839
import Wst.Cli.App (runWstApp)
3940
import Wst.Cli.Command (Command (..), PolicyCommand (..), parseCommand)
4041
import Wst.Cli.Command qualified as Command
41-
import Wst.Cli.Env qualified as Env
4242

4343
runMain :: IO ()
4444
runMain = do
@@ -126,8 +126,8 @@ runCommand com = do
126126
Register operatorConfig submitTx -> do
127127
logInfo "cip-143-cli policy register"
128128
operator <- loadOperator operatorConfig
129-
opEnv <- Env.loadConvexOperatorEnv operator
130-
flip runReaderT (Env.combinedEnv dir opEnv transferPolicy) $ do
129+
opEnv <- Env.loadConvexOperatorEnv @_ @C.ConwayEra operator
130+
flip runReaderT (Env.addEnv dir $ Env.addEnv opEnv $ Env.singleton transferPolicy) $ do
131131
tx <- Endpoints.registerCip143PolicyTransferScripts
132132
polId <- Env.programmableTokenPolicyId
133133
logInfo $ "Created policy stake script registration tx" :#
@@ -139,8 +139,8 @@ runCommand com = do
139139
Issue operatorConfig assetName quantity redeemer submitTx -> do
140140
logInfo "cip-143-cli policy issue"
141141
operator <- loadOperator operatorConfig
142-
opEnv <- Env.loadConvexOperatorEnv operator
143-
flip runReaderT (Env.combinedEnv dir opEnv transferPolicy) $ do
142+
opEnv <- Env.loadConvexOperatorEnv @_ @C.ConwayEra operator
143+
flip runReaderT (Env.addEnv dir $ Env.addEnv opEnv $ Env.singleton transferPolicy) $ do
144144
let red = PV1.toBuiltin redeemer
145145
tx <- Endpoints.registerCip143PolicyTx assetName quantity red
146146
polId <- Env.programmableTokenPolicyId
@@ -156,8 +156,8 @@ runCommand com = do
156156
Transfer operatorConfig receiverAddr assetName quantity redeemer submitTx -> do
157157
logInfo "cip-143-cli policy transfer"
158158
operator <- loadOperator operatorConfig
159-
opEnv <- Env.loadConvexOperatorEnv operator
160-
flip runReaderT (Env.combinedEnv dir opEnv transferPolicy) $ do
159+
opEnv <- Env.loadConvexOperatorEnv @_ @C.ConwayEra operator
160+
flip runReaderT (Env.addEnv dir $ Env.addEnv opEnv $ Env.singleton transferPolicy) $ do
161161
let red = PV1.toBuiltin redeemer
162162
receiver <- getReceiverPaymentCredential receiverAddr
163163
tx <- Endpoints.transferTokens assetName quantity receiver red

src/examples/aiken/haskell/lib/Wst/Cli/App.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import Control.Monad.IO.Class (MonadIO (..))
1010
import Control.Monad.Reader (MonadReader, ReaderT, runReaderT)
1111
import Convex.Blockfrost (BlockfrostT (..), evalBlockfrostT)
1212
import Convex.Class (MonadBlockchain, MonadUtxoQuery)
13+
import ProgrammableTokens.OffChain.Env.Runtime (RuntimeEnv (..))
14+
import ProgrammableTokens.OffChain.Env.Runtime qualified as Env
1315
import Wst.Aiken.Error (AikenError (..))
14-
import Wst.Cli.Env (RuntimeEnv (..))
15-
import Wst.Cli.Env qualified as Env
1616

1717
newtype WstApp env era a = WstApp { unWstApp :: ReaderT env (ExceptT (AikenError era) (BlockfrostT IO)) a }
1818
deriving newtype (Monad, Applicative, Functor, MonadIO, MonadReader env, MonadError (AikenError era), MonadUtxoQuery, MonadBlockchain C.ConwayEra)

src/examples/aiken/haskell/test/Wst/Aiken/Test.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ registerAikenPolicy :: forall era err m.
8484
registerAikenPolicy step' = do
8585
blueprint <- liftIO loadExample >>= flip Offchain.lookupScripts_ Offchain.blueprintKeys >>= Offchain.extractV3Scripts_
8686
scriptRoot <- runReaderT (Test.deployDirectorySet Test.admin) Production
87-
let runAsAdmin = Env.runAs Test.admin (Env.mkDirectoryEnv scriptRoot) (Offchain.transferLogic blueprint)
87+
let runAsAdmin action = runReaderT (Env.runAs @_ @era Test.admin action) (Env.addEnv (Offchain.transferLogic blueprint) $ Env.singleton $ Env.mkDirectoryEnv scriptRoot)
8888
step = liftIO . step'
8989

9090
step "Registering stake scripts"
@@ -120,7 +120,7 @@ transferAikenPolicy :: forall era err m.
120120
transferAikenPolicy = do
121121
blueprint <- liftIO loadExample >>= flip Offchain.lookupScripts_ Offchain.blueprintKeys >>= Offchain.extractV3Scripts_
122122
scriptRoot <- runReaderT (Test.deployDirectorySet Test.admin) Production
123-
let runAsAdmin = Env.runAs Test.admin (Env.mkDirectoryEnv scriptRoot) (Offchain.transferLogic blueprint)
123+
let runAsAdmin action = runReaderT (Env.runAs @_ @era Test.admin action) (Env.addEnv (Offchain.transferLogic blueprint) $ Env.singleton $ Env.mkDirectoryEnv scriptRoot)
124124

125125
_ <- runAsAdmin
126126
$ Endpoints.registerCip143PolicyTransferScripts

src/examples/regulated-stablecoin/lib/Wst/App.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import Control.Monad.Reader (MonadReader, ReaderT, runReaderT)
1515
import Convex.Blockfrost (BlockfrostT (..), evalBlockfrostT)
1616
import Convex.Class (MonadBlockchain, MonadUtxoQuery)
1717
import Data.String (IsString (..))
18+
import ProgrammableTokens.OffChain.Env.Runtime (RuntimeEnv (..))
19+
import ProgrammableTokens.OffChain.Env.Runtime qualified as Env
1820
import Servant.Server (Handler (..))
1921
import Servant.Server qualified as S
2022
import Wst.AppError (AppError (..))
21-
import Wst.Offchain.Env (RuntimeEnv (..))
22-
import Wst.Offchain.Env qualified as Env
2323

2424
newtype WstApp env era a = WstApp { unWstApp :: ReaderT env (ExceptT (AppError era) (BlockfrostT IO)) a }
2525
deriving newtype (Monad, Applicative, Functor, MonadIO, MonadReader env, MonadError (AppError era), MonadUtxoQuery, MonadBlockchain C.ConwayEra)
@@ -29,8 +29,8 @@ newtype WstApp env era a = WstApp { unWstApp :: ReaderT env (ExceptT (AppError e
2929

3030
runWstApp :: forall env era a. (Env.HasRuntimeEnv env) => env -> WstApp env era a -> IO (Either (AppError era) a)
3131
runWstApp env WstApp{unWstApp} = do
32-
let RuntimeEnv{envBlockfrost} = Env.runtimeEnv env
33-
evalBlockfrostT envBlockfrost (runExceptT (runReaderT unWstApp env)) >>= \case
32+
let RuntimeEnv{ceBlockfrost} = Env.runtimeEnv env
33+
evalBlockfrostT ceBlockfrost (runExceptT (runReaderT unWstApp env)) >>= \case
3434
Left e -> pure (Left $ BlockfrostErr e)
3535
Right a -> pure a
3636

src/examples/regulated-stablecoin/lib/Wst/Cli.hs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ import Convex.Wallet.Operator (Operator (Operator, oPaymentKey),
1616
PaymentExtendedKey (PESigningEx), signTxOperator,
1717
verificationKey)
1818
import Convex.Wallet.Operator qualified as Operator
19-
import Data.Functor.Identity (Identity)
2019
import Data.Maybe (fromMaybe)
2120
import Data.Proxy (Proxy (..))
2221
import Data.String (IsString (..))
2322
import Options.Applicative (customExecParser, disambiguate, helper, idm, info,
2423
prefs, showHelpOnEmpty, showHelpOnError)
2524
import ProgrammableTokens.OffChain.Env.Operator qualified as Env
25+
import ProgrammableTokens.OffChain.Env.Runtime qualified as Env
26+
import ProgrammableTokens.OffChain.Env.Utils qualified as Utils
2627
import SmartTokens.Core.Scripts (ScriptTarget (Production))
2728
import Wst.App (runWstApp)
2829
import Wst.AppError (AppError)
@@ -42,7 +43,7 @@ runMain = do
4243

4344
runCommand :: Command -> IO ()
4445
runCommand com = do
45-
env <- Env.addRuntimeEnv <$> Env.loadRuntimeEnv <*> pure Env.empty
46+
env <- Env.addRuntimeEnv <$> Env.loadRuntimeEnv <*> pure Utils.empty
4647
result <- case com of
4748
Deploy config -> runWstApp env (deploy config)
4849
Manage txIn issuanceCborHexTxIn com_ -> do
@@ -76,7 +77,7 @@ deploy config = do
7677
opEnv <- Env.loadOperatorEnv @_ @C.ConwayEra operatorPaymentHash C.NoStakeAddress
7778
runEnv <- asks Env.runtimeEnv
7879

79-
let env = Env.addOperatorEnv opEnv $ Env.addRuntimeEnv runEnv Env.empty
80+
let env = Env.addOperatorEnv opEnv $ Utils.singleton runEnv
8081

8182
-- Use blockfrost backend to run Wst.Offchain.Endpoints.Deployment with the operator's funds
8283
(tx, root) <- liftIO (runWstApp env $ do
@@ -95,7 +96,7 @@ deploy config = do
9596
logInfo $ "Tx submitted successfully" :# ["txid" .= show txid]
9697
(liftIO $ C.writeFileJSON "deployment-root.json" root) >>= either (error . show) pure
9798

98-
startServer :: (MonadIO m, MonadLogger m) => Env.CombinedEnv Proxy Identity Proxy Identity b w -> Server.ServerArgs -> m ()
99+
startServer :: (Utils.Elem Env.RuntimeEnv els, Utils.Elem Env.DirectoryEnv els, Utils.HMonoModifiable els Env.RuntimeEnv, MonadIO m, MonadLogger m) => Utils.HSet els -> Server.ServerArgs -> m ()
99100
startServer env' serverArgs@ServerArgs{saPort, saStaticFiles} = do
100101
logInfo $ "starting server" :# ["port" .= saPort, "static_files" .= fromMaybe "(no static files)" saStaticFiles]
101102
liftIO (Server.runServer env' serverArgs)

src/examples/regulated-stablecoin/lib/Wst/Offchain/BuildTx/Failing.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ data BlacklistedTransferPolicy
4646
-}
4747
balanceTxEnvFailing :: forall era env err m. (MonadBlockchain era m, MonadReader env m, HasOperatorEnv era env, MonadError err m, C.IsBabbageBasedEra era, CoinSelection.AsCoinSelectionError err, CoinSelection.AsBalancingError err era, AsRegulatedStablecoinError err) => BlacklistedTransferPolicy -> BuildTxT era m (FindProofResult era) -> m (C.BalancedTxBody era, BalanceChanges)
4848
balanceTxEnvFailing policy btx = do
49-
OperatorEnv{bteOperatorUtxos, bteOperator} <- asks operatorEnv
49+
OperatorEnv{bteOperatorUtxos, bteOperator} <- asks (operatorEnv @era)
5050
params <- queryProtocolParameters
5151
(r, txBuilder) <- BuildTx.runBuildTxT $ btx <* BuildTx.setMinAdaDepositAll params
5252
-- TODO: change returnOutputFor to consider the stake address reference

src/examples/regulated-stablecoin/lib/Wst/Offchain/BuildTx/ProgrammableLogic.hs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
{-# LANGUAGE NamedFieldPuns #-}
21
{-# LANGUAGE OverloadedStrings #-}
32
{-# LANGUAGE TypeApplications #-}
43
{-# LANGUAGE TypeFamilies #-}
@@ -14,29 +13,21 @@ where
1413
import Cardano.Api qualified as C
1514
import Cardano.Api.Shelley qualified as C
1615
import Control.Lens ((^.))
17-
import Control.Monad (unless)
1816
import Control.Monad.Reader (MonadReader, asks)
1917
import Convex.BuildTx (MonadBuildTx, addReference, addWithdrawalWithTxBody,
2018
buildScriptWitness, findIndexReference,
21-
findIndexSpending, mintPlutus, prependTxOut,
22-
spendPlutusInlineDatum)
19+
findIndexSpending, prependTxOut, spendPlutusInlineDatum)
2320
import Convex.CardanoApi.Lenses as L
2421
import Convex.Class (MonadBlockchain (queryNetworkId))
25-
import Convex.PlutusLedger.V1 (transPolicyId, transPubKeyHash, transScriptHash)
22+
import Convex.PlutusLedger.V1 (transPolicyId)
2623
import Convex.Utils qualified as Utils
27-
import Data.Foldable (find, traverse_)
24+
import Data.Foldable (find)
2825
import Data.List (partition)
2926
import Data.Maybe (fromJust)
3027
import GHC.Exts (IsList (..))
3128
import PlutusLedgerApi.V3 (CurrencySymbol (..))
32-
import PlutusLedgerApi.V3 qualified as PV3
33-
import ProgrammableTokens.OffChain.BuildTx.Directory (insertDirectoryNode)
34-
import ProgrammableTokens.OffChain.Env (TransferLogicEnv (..))
3529
import ProgrammableTokens.OffChain.Env qualified as Env
36-
import SmartTokens.Contracts.Issuance (SmartTokenMintingAction (..))
37-
import SmartTokens.Contracts.IssuanceCborHex (IssuanceCborHex (..))
38-
import SmartTokens.Contracts.ProgrammableLogicBase (ProgrammableLogicGlobalRedeemer (..),
39-
TokenProof (..))
30+
import SmartTokens.Contracts.ProgrammableLogicBase (ProgrammableLogicGlobalRedeemer (..))
4031
import SmartTokens.Types.ProtocolParams
4132
import SmartTokens.Types.PTokenDirectory (DirectorySetNode (..))
4233
import Wst.Offchain.Query (UTxODat (..))

src/examples/regulated-stablecoin/lib/Wst/Offchain/BuildTx/TransferLogic.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ initBlacklist = Utils.inBabbage @era $ do
100100
prependTxOut txout
101101

102102
-- add operator signature
103-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
103+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
104104
addRequiredSignature opPkh
105105

106106
{-| Reason for adding an address to the blacklist
@@ -162,12 +162,12 @@ insertBlacklistNode reason cred blacklistNodes = Utils.inBabbage @era $ do
162162
addBlacklistReason reason
163163

164164
-- add operator signature
165-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
165+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
166166
addRequiredSignature opPkh
167167

168168
removeBlacklistNode :: forall era env err m. (MonadReader env m, Env.HasOperatorEnv era env, Env.HasBlacklistEnv env, C.IsBabbageBasedEra era, C.HasScriptLanguageInEra C.PlutusScriptV3 era, MonadBuildTx era m, MonadError err m, AsRegulatedStablecoinError err) => C.PaymentCredential -> [UTxODat era BlacklistNode]-> m ()
169169
removeBlacklistNode cred blacklistNodes = Utils.inBabbage @era $ do
170-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
170+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
171171
blacklistSpendingScript <- asks (Env.bleSpendingScript . Env.blacklistEnv)
172172
blacklistMintingScript <- asks (Env.bleMintingScript . Env.blacklistEnv)
173173
blacklistPolicyId <- asks (Env.blacklistNodePolicyId . Env.blacklistEnv)
@@ -217,7 +217,7 @@ issueSmartTokens paramsTxOut issuanceCborHexTxOut (an, q) directoryNode destinat
217217
transferSmartTokens :: forall env era err a m. (MonadReader env m, Env.HasTransferLogicEnv env, Env.HasDirectoryEnv env, C.IsBabbageBasedEra era, MonadBlockchain era m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, MonadBuildTx era m, Env.HasOperatorEnv era env, MonadError err m) => UTxODat era ProgrammableLogicGlobalParams -> [UTxODat era BlacklistNode] -> UTxODat era DirectorySetNode -> [UTxODat era a] -> (C.AssetId, C.Quantity) -> C.PaymentCredential -> m (FindProofResult era)
218218
transferSmartTokens paramsTxIn blacklistNodes directoryNode spendingUserOutputs (assetId, q) destinationCred = Utils.inBabbage @era $ do
219219
nid <- queryNetworkId
220-
userCred <- Env.operatorPaymentCredential
220+
userCred <- Env.operatorPaymentCredential @env @era
221221
progLogicBaseCred <- asks (Env.programmableLogicBaseCredential . Env.directoryEnv)
222222

223223
-- Find sufficient inputs to cover the transfer
@@ -299,7 +299,7 @@ seizeSmartTokens reason paramsTxIn seizingTxo destinationCred directoryList = Ut
299299

300300
addIssueWitness :: forall era env m. (MonadReader env m, Env.HasOperatorEnv era env, Env.HasTransferLogicEnv env, C.IsBabbageBasedEra era, MonadBlockchain era m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, MonadBuildTx era m) => m ()
301301
addIssueWitness = Utils.inBabbage @era $ do
302-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
302+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
303303
mintingScript <- asks (Env.tleMintingScript . Env.transferLogicEnv)
304304
let sh = C.hashScript $ C.PlutusScript C.PlutusScriptV3 mintingScript
305305
addRequiredSignature opPkh
@@ -351,7 +351,7 @@ Uses the user from 'HasOperatorEnv env'. Fails if the user is blacklisted.
351351
-}
352352
addTransferWitness :: forall env era err m. (MonadError err m, MonadReader env m, Env.HasOperatorEnv era env, Env.HasTransferLogicEnv env, C.IsBabbageBasedEra era, MonadBlockchain era m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, MonadBuildTx era m) => [UTxODat era BlacklistNode] -> m (FindProofResult era)
353353
addTransferWitness blacklistNodes = Utils.inBabbage @era $ do
354-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv) -- In this case 'operator' is the user
354+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era) -- In this case 'operator' is the user
355355
nid <- queryNetworkId
356356
transferScript <- asks (Env.tleTransferScript . Env.transferLogicEnv)
357357

@@ -392,7 +392,7 @@ addReferencesWithTxBody f =
392392

393393
addSeizeWitness :: forall env era m. (MonadReader env m, Env.HasOperatorEnv era env, Env.HasTransferLogicEnv env, C.IsBabbageBasedEra era, MonadBlockchain era m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, MonadBuildTx era m) => m ()
394394
addSeizeWitness = Utils.inBabbage @era $ do
395-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
395+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
396396
seizeScript <- asks (Env.tleIssuerScript . Env.transferLogicEnv)
397397
let sh = C.hashScript $ C.PlutusScript C.PlutusScriptV3 seizeScript
398398
addRequiredSignature opPkh

src/examples/regulated-stablecoin/lib/Wst/Offchain/Endpoints/Deployment.hs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ import Wst.Offchain.Query qualified as Query
4242
the relevant stablecoin transfer logic scripts and registrations. Returns the
4343
transaction and the 'TxIn' that was selected for the one-shot NFTs.
4444
-}
45-
deployFullTx :: (MonadReader env m, C.IsConwayBasedEra era, Env.HasOperatorEnv era env, MonadBlockchain era m, MonadError err m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, AsProgrammableTokensError err, AsCoinSelectionError err, AsBalancingError err era) => ScriptTarget -> m (C.Tx era, DirectoryScriptRoot)
45+
deployFullTx :: forall env era err m. (MonadReader env m, C.IsConwayBasedEra era, Env.HasOperatorEnv era env, MonadBlockchain era m, MonadError err m, C.HasScriptLanguageInEra C.PlutusScriptV3 era, AsProgrammableTokensError err, AsCoinSelectionError err, AsBalancingError err era) => ScriptTarget -> m (C.Tx era, DirectoryScriptRoot)
4646
deployFullTx target = do
47-
((txi, _), (issuanceCborHexTxIn, _)) <- Env.selectTwoOperatorOutputs
48-
opEnv <- asks Env.operatorEnv
47+
((txi, _), (issuanceCborHexTxIn, _)) <- Env.selectTwoOperatorOutputs @env @_ @era
48+
opEnv <- asks (Env.operatorEnv @era)
4949
let root = DirectoryScriptRoot txi issuanceCborHexTxIn target
50-
(tx, _) <- Env.withEnv $ Env.withOperator opEnv $ Env.withDirectoryFor root $ Env.withTransferFromOperator
50+
(tx, _) <- Env.withEnv $ Env.withOperator opEnv $ Env.withDirectoryFor root $ Env.withTransferFromOperator @era
5151
$ Env.balanceDeployTxEnv_
5252
$ BuildTx.mintProtocolParams
5353
>> BuildTx.initDirectorySet
@@ -85,11 +85,11 @@ issueSmartTokensTx assetName quantity destinationCred = do
8585
BuildTx.issueSmartTokens paramsNode cborHexTxIn (assetName, quantity) directory destinationCred
8686
pure (Convex.CoinSelection.signBalancedTxBody [] tx, aid)
8787

88-
deployBlacklistTx :: (MonadReader env m, Env.HasOperatorEnv era env, MonadBlockchain era m, MonadError err m, C.IsBabbageBasedEra era, C.HasScriptLanguageInEra C.PlutusScriptV3 era, Env.HasDirectoryEnv env, AsCoinSelectionError err, AsBalancingError err era) => m (C.Tx era)
88+
deployBlacklistTx :: forall env era err m. (MonadReader env m, Env.HasOperatorEnv era env, MonadBlockchain era m, MonadError err m, C.IsBabbageBasedEra era, C.HasScriptLanguageInEra C.PlutusScriptV3 era, Env.HasDirectoryEnv env, AsCoinSelectionError err, AsBalancingError err era) => m (C.Tx era)
8989
deployBlacklistTx = do
90-
opEnv <- asks Env.operatorEnv
90+
opEnv <- asks (Env.operatorEnv @era)
9191
dirEnv <- asks Env.directoryEnv
92-
(tx, _) <- Env.withEnv $ Env.withOperator opEnv $ Env.withDirectory dirEnv $ Env.withTransferFromOperator
92+
(tx, _) <- Env.withEnv $ Env.withOperator opEnv $ Env.withDirectory dirEnv $ Env.withTransferFromOperator @era
9393
$ Env.balanceTxEnv_ BuildTx.initBlacklist
9494
pure (Convex.CoinSelection.signBalancedTxBody [] tx)
9595

@@ -132,7 +132,7 @@ transferSmartTokensTx :: forall era env err m.
132132
transferSmartTokensTx policy assetId quantity destCred = do
133133
directory <- Query.registryNodeForReference @era
134134
blacklist <- Query.blacklistNodes @era
135-
userOutputsAtProgrammable <- Env.operatorPaymentCredential >>= Query.userProgrammableOutputs
135+
userOutputsAtProgrammable <- Env.operatorPaymentCredential @_ @era >>= Query.userProgrammableOutputs
136136
paramsTxIn <- Query.globalParamsNode @era
137137
(tx, _) <- balanceTxEnvFailing policy $ do
138138
BuildTx.transferSmartTokens paramsTxIn blacklist directory userOutputsAtProgrammable (assetId, quantity) destCred
@@ -158,7 +158,7 @@ seizeCredentialAssetsTx :: forall era env err m.
158158
-> C.PaymentCredential -- ^ Source/User credential
159159
-> m (C.Tx era)
160160
seizeCredentialAssetsTx reason sanctionedCred = do
161-
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv)
161+
opPkh <- asks (fst . Env.bteOperator . Env.operatorEnv @era)
162162
directory <- Query.registryNodes @era
163163
let getTxOutValue (C.TxOut _a v _d _r) = v
164164
-- simple fold to choose the UTxO with the most total assets

0 commit comments

Comments
 (0)