From c1450f6d5c58b416448af8ad81d8fdf15d90b1d4 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Tue, 14 Nov 2023 09:41:59 -0500 Subject: [PATCH 01/11] WIP --- .../Marlowe/Runtime/Transaction/Gen.hs | 25 +++-- marlowe-runtime/marlowe-runtime.cabal | 4 + .../Runtime/Transaction/ConstraintsSpec.hs | 82 +++++++++++--- .../Marlowe/Runtime/Transaction/Api.hs | 59 +++++++++-- .../Runtime/Transaction/BuildConstraints.hs | 62 +++++------ .../Runtime/Transaction/Constraints.hs | 100 ++++++++++-------- .../Runtime/Transaction/Query/Helper.hs | 21 ++-- .../Marlowe/Runtime/Transaction/Safety.hs | 29 ++--- .../Marlowe/Runtime/Transaction/Server.hs | 10 +- 9 files changed, 253 insertions(+), 139 deletions(-) diff --git a/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs b/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs index 4780367d2b..770b285c8d 100644 --- a/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs +++ b/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs @@ -1,17 +1,18 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} +{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Wno-orphans #-} module Language.Marlowe.Runtime.Transaction.Gen where import Cardano.Api (CardanoEra (..), IsCardanoEra, cardanoEra) -import Cardano.Api.Shelley ( - ReferenceTxInsScriptsInlineDatumsSupportedInEra (..), - ) +import Cardano.Api.Shelley (ReferenceTxInsScriptsInlineDatumsSupportedInEra (..)) import Control.Applicative (liftA2) import qualified Data.ByteString.Char8 as BS import Data.Foldable (fold) import qualified Data.List.NonEmpty as NE +import Data.Map.NonEmpty (NEMap) +import qualified Data.Map.NonEmpty as NEMap import Data.Semigroup (Semigroup (..)) import Language.Marlowe.Runtime.ChainSync.Gen () import qualified Language.Marlowe.Runtime.Core.Api as Core @@ -116,17 +117,29 @@ instance Arbitrary Destination where ] shrink = genericShrink +instance (Ord k, Arbitrary k, Arbitrary v) => Arbitrary (NEMap k v) where + arbitrary = NEMap.insertMap <$> arbitrary <*> arbitrary <*> arbitrary + shrink (NEMap.deleteFindMin -> ((k, v), m)) = + fold + [ NEMap.insertMap <$> shrink k <*> pure v <*> pure m + , NEMap.insertMap k <$> shrink v <*> pure m + , NEMap.insertMap k v <$> shrink m + ] + +instance Arbitrary MintRole where + arbitrary = MintRole <$> arbitrary <*> arbitrary + shrink = genericShrink + instance Arbitrary Mint where - arbitrary = mkMint <$> arbitrary + arbitrary = Mint <$> arbitrary shrink = genericShrink instance Arbitrary RoleTokensConfig where arbitrary = frequency [ (1, pure RoleTokensNone) - , (10, RoleTokensUsePolicy <$> arbitrary) + , (10, RoleTokensUsePolicy <$> arbitrary <*> arbitrary) , (10, RoleTokensMint <$> arbitrary) - , (10, RoleTokensUsePolicyWithOpenRoles <$> arbitrary <*> arbitrary <*> arbitrary) ] shrink = genericShrink diff --git a/marlowe-runtime/marlowe-runtime.cabal b/marlowe-runtime/marlowe-runtime.cabal index 05ae2ccfb0..bce142f69e 100644 --- a/marlowe-runtime/marlowe-runtime.cabal +++ b/marlowe-runtime/marlowe-runtime.cabal @@ -241,6 +241,7 @@ library gen , marlowe-runtime:{marlowe-runtime, discovery-api, history-api, tx-api} ==0.0.5 , marlowe-test ==0.2.0.0 , network-uri >=2.6 && <3 + , nonempty-containers ^>=0.3.4 , QuickCheck >=2.14 && <3 , quickcheck-instances ^>=0.3.29 @@ -520,6 +521,7 @@ library tx-api , marlowe-protocols ==0.2.1.0 , marlowe-runtime:{marlowe-runtime, history-api} ==0.0.5 , network-uri >=2.6 && <3 + , nonempty-containers ^>=0.3.4 , plutus-core ^>=1.5 , plutus-ledger-api ^>=1.5 , text ^>=1.2 @@ -560,6 +562,7 @@ library tx , marlowe-chain-sync:{marlowe-chain-sync, plutus-compat} ==0.0.5 , marlowe-protocols ==0.2.1.0 , marlowe-runtime:{marlowe-runtime, contract-api, history-api, tx-api} ==0.0.5 + , nonempty-containers ^>=0.3.4 , ouroboros-consensus ^>=0.7 , ouroboros-network-api ^>=0.5 , plutus-ledger-api ^>=1.5 @@ -869,6 +872,7 @@ test-suite marlowe-runtime-test , marlowe-runtime:{marlowe-runtime, contract, contract-api, discovery-api, gen, history-api, sync, sync-api, tx, tx-api} ==0.0.5 , marlowe-test ==0.2.0.0 , network-uri >=2.6 && <3 + , nonempty-containers ^>=0.3.4 , ouroboros-consensus ^>=0.7 , plutus-ledger-api ^>=1.5 , plutus-tx ^>=1.5 diff --git a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs index 6bc35c1176..6b38e44b4b 100644 --- a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs +++ b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs @@ -3,6 +3,7 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE TupleSections #-} +{-# LANGUAGE ViewPatterns #-} module Language.Marlowe.Runtime.Transaction.ConstraintsSpec where @@ -23,6 +24,7 @@ import Data.ByteString (ByteString) import qualified Data.ByteString as BS import Data.Either (fromLeft, isRight) import Data.Foldable (fold) +import Data.Function (on) import Data.Functor (($>), (<&>)) import Data.List (find, isPrefixOf) import Data.Map (Map) @@ -1083,7 +1085,10 @@ violations -> [String] violations marloweVersion scriptCtx utxos constraints txBodyContent = fold - [ ("mustMintRoleToken: " <>) <$> mustMintRoleTokenViolations marloweVersion constraints txBodyContent + [ case scriptCtx of + Left marloweContext -> + ("mustMintRoleToken: " <>) <$> mustMintRoleTokenViolations marloweVersion marloweContext constraints txBodyContent + _ -> [] , ("mustSpendRoleToken: " <>) <$> mustSpendRoleTokenViolations marloweVersion utxos constraints txBodyContent , ("mustPayToAddress: " <>) <$> mustPayToAddressViolations marloweVersion constraints txBodyContent , case scriptCtx of @@ -1112,11 +1117,11 @@ check :: (Alternative m) => Bool -> a -> m a check condition msg = msg <$ guard (not condition) mustMintRoleTokenViolations - :: MarloweVersion v -> TxConstraints BabbageEra v -> TxBodyContent BuildTx BabbageEra -> [String] -mustMintRoleTokenViolations MarloweV1 TxConstraints{..} TxBodyContent{..} = + :: MarloweVersion v -> MarloweContext v -> TxConstraints BabbageEra v -> TxBodyContent BuildTx BabbageEra -> [String] +mustMintRoleTokenViolations MarloweV1 MarloweContext{..} TxConstraints{..} TxBodyContent{..} = fold - [ mintsOneToken - , sendsOneTokenAndOnlyToken + [ mintsTheCorrectNumberOfTokens + , distributesTokensCorrectly , consumesUtxo ] where @@ -1127,16 +1132,16 @@ mustMintRoleTokenViolations MarloweV1 TxConstraints{..} TxBodyContent{..} = ("UTxO not consumed: " <> show (Chain.renderTxOutRef txOutRef)) _ -> [] - sendsOneTokenAndOnlyToken = case roleTokenConstraints of + distributesTokensCorrectly = case roleTokenConstraints of MintRoleTokens _ _ distribution -> do - (assetId, address) <- Map.toList distribution + (assetId, distribution) <- Map.toList distribution (("roleToken: " <> show assetId <> ": ") <>) <$> do let cardanoAssetId = toCardanoAssetId assetId matches (TxOut outAddress (TxOutValue MultiAssetInBabbageEra value) _ _) - | selectAsset value cardanoAssetId > 0 = Just (outAddress, value) + | selectAsset value cardanoAssetId > 0 = Just (fromCardanoAddressInEra BabbageEra outAddress, value) | otherwise = Nothing matches (TxOut _ (TxOutAdaOnly era _) _ _) = case era of {} - let matchingOuts = mapMaybe matches txOuts + let matchingOuts = Map.fromList $ mapMaybe matches txOuts case matchingOuts of [(outAddress, value)] -> do fold @@ -1154,17 +1159,17 @@ mustMintRoleTokenViolations MarloweV1 TxConstraints{..} TxBodyContent{..} = _ -> pure "Multiple outputs contain role token" _ -> [] - mintsOneToken = case roleTokenConstraints of + mintsTheCorrectNumberOfTokens = case roleTokenConstraints of MintRoleTokens _ _ distribution -> case txMintValue of TxMintNone | Map.null distribution -> [] | otherwise -> ["No tokens minted"] TxMintValue MultiAssetInBabbageEra value _ -> do - assetId <- Map.keys distribution + (assetId, quantity) <- Map.toList $ sum <$> distribution (("roleToken: " <> show assetId <> ": ") <>) <$> do let cardanoAssetId = toCardanoAssetId assetId - let quantityMinted = selectAsset value cardanoAssetId - check (quantityMinted == 1) ("Expected to mint 1 token, found " <> show quantityMinted) + let quantityMinted = fromCardanoQuantity $ selectAsset value cardanoAssetId + check (quantityMinted == quantity) ("Expected to mint " <> show quantity <> " token(s), found " <> show quantityMinted) _ -> [] mustSpendRoleTokenViolations @@ -1391,8 +1396,8 @@ shrinkMarloweInputConstraints = \case MarloweInputConstraintsNone -> [] MarloweInput s1 s2 redeemer -> MarloweInputConstraintsNone : (MarloweInput s1 s2 <$> shrinkList shrinkNothing redeemer) -shrinkSet :: (a -> [a]) -> Set.Set a -> [Set.Set a] -shrinkSet shrinkItem = fmap Set.fromDistinctAscList . shrinkList shrinkItem . Set.toAscList +shrinkSet :: (Ord a) => (a -> [a]) -> Set.Set a -> [Set.Set a] +shrinkSet shrinkItem = fmap Set.fromList . shrinkList shrinkItem . Set.toList shrinkMap :: (v -> [v]) -> Map k v -> [Map k v] shrinkMap shrinkItem = fmap Map.fromDistinctAscList . shrinkList (traverse shrinkItem) . Map.toAscList @@ -1402,11 +1407,21 @@ shrinkRoleTokenConstraints = \case RoleTokenConstraintsNone -> [] MintRoleTokens ref witness distribution -> RoleTokenConstraintsNone - : (MintRoleTokens ref witness <$> shrinkMap shrinkNothing distribution) + : DistributeRoleTokens distribution + : (MintRoleTokens ref witness <$> shrinkMap shrinkDistribution distribution) + DistributeRoleTokens distribution -> + RoleTokenConstraintsNone + : (DistributeRoleTokens <$> shrinkMap shrinkDistribution distribution) SpendRoleTokens roleTokens -> RoleTokenConstraintsNone : (SpendRoleTokens <$> shrinkSet shrinkNothing roleTokens) +shrinkDistribution :: Map Destination Chain.Quantity -> [Map Destination Chain.Quantity] +shrinkDistribution = shrinkMap \q -> do + q' <- shrink q + guard $ q' > 0 + pure q' + shrinkMarloweOutputConstraints :: MarloweOutputConstraints 'V1 -> [MarloweOutputConstraints 'V1] shrinkMarloweOutputConstraints = \case MarloweOutputConstraintsNone -> [] @@ -1421,7 +1436,15 @@ genV1MarloweConstraints = sized \n -> frequency [ (n, resize (n `div` 2) $ (<>) <$> genV1MarloweConstraints <*> genV1MarloweConstraints) , (1, pure mempty) - , (1, mustMintRoleToken <$> arbitrary <*> genMintScriptWitness <*> genRoleToken False <*> (ToAddress <$> arbitrary)) + , + ( 1 + , mustMintRoleToken + <$> arbitrary + <*> genMintScriptWitness + <*> genRoleToken False + <*> (ToAddress <$> arbitrary) + <*> arbitrary `suchThat` (> 0) + ) , (1, mustSpendRoleToken <$> genRoleToken True) , (1, mustPayToAddress <$> arbitrary <*> arbitrary) , (1, mustSendMarloweOutput <$> arbitrary <*> genDatum) @@ -1602,12 +1625,36 @@ shrinkWalletUtxos TxConstraints{..} collateralUtxos = filter (isValid . Chain.un hasRoleTokens = case roleTokenConstraints of RoleTokenConstraintsNone -> const True MintRoleTokens txOutRef _ _ -> Map.member txOutRef + DistributeRoleTokens distribution -> \availableUtxos -> case Chain.Tokens $ sum <$> distribution of + requiredTotals -> case foldMap Chain.assets availableUtxos of + walletAssets -> walletAssets `sufficient` assetsFromTokens requiredTotals SpendRoleTokens roleTokens -> Set.null . Set.difference roleTokens . foldMap (Map.keysSet . Chain.unTokens . (.assets.tokens)) hasCollateralUtxos = Set.null . Set.difference collateralUtxos . Map.keysSet +sufficient :: Chain.Assets -> Chain.Assets -> Bool +sufficient available required = + on (>=) Chain.ada available required + && on sufficientTokens Chain.tokens available required + +sufficientTokens :: Chain.Tokens -> Chain.Tokens -> Bool +sufficientTokens (Chain.unTokens -> available) (Chain.unTokens -> required) = + Map.null $ Map.differenceWith sufficientQuantity required available + +sufficientQuantity :: Chain.Quantity -> Chain.Quantity -> Maybe Chain.Quantity +sufficientQuantity required available + | available >= required = Nothing + | otherwise = Just $ required - available + +assetsFromTokens :: Chain.Tokens -> Chain.Assets +assetsFromTokens (Chain.Tokens tokens) = + Chain.Assets + { ada = maybe 0 (Chain.Lovelace . Chain.unQuantity) $ Map.lookup (Chain.AssetId "" "") tokens + , tokens = Chain.Tokens $ Map.delete (Chain.AssetId "" "") tokens + } + genWalletContext :: MarloweVersion v -> TxConstraints BabbageEra v -> Gen WalletContext genWalletContext MarloweV1 constraints = WalletContext @@ -1621,6 +1668,7 @@ genWalletUtxos TxConstraints{..} = (<>) <$> required <*> extra required = case roleTokenConstraints of RoleTokenConstraintsNone -> pure mempty MintRoleTokens txOutRef _ _ -> Chain.UTxOs . Map.singleton txOutRef <$> genTransactionOutput arbitrary (pure Nothing) + MintRoleTokens txOutRef _ _ -> Chain.UTxOs . Map.singleton txOutRef <$> genTransactionOutput arbitrary (pure Nothing) SpendRoleTokens roleTokens -> fold <$> for (Set.toList roleTokens) \roleToken -> do txOutRef <- arbitrary diff --git a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs index 7aea6dbac0..284f21701a 100644 --- a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs +++ b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs @@ -17,14 +17,15 @@ module Language.Marlowe.Runtime.Transaction.Api ( ContractCreatedInEra (..), CreateBuildupError (..), CreateError (..), + Destination (..), InputsApplied (..), InputsAppliedInEra (..), JobId (..), - LoadMarloweContextError (..), LoadHelpersContextError (..), + LoadMarloweContextError (..), MarloweTxCommand (..), - Mint (unMint), - Destination (..), + Mint (..), + MintRole (..), NFTMetadataFile (..), RoleTokenMetadata (..), RoleTokensConfig (..), @@ -37,6 +38,8 @@ module Language.Marlowe.Runtime.Transaction.Api ( WithdrawTxInEra (..), decodeRoleTokenMetadata, encodeRoleTokenMetadata, + getTokenQuantities, + hasRecipient, mkMint, ) where @@ -70,7 +73,6 @@ import Data.Binary.Put (Put, putWord8) import Data.ByteString (ByteString) import qualified Data.ByteString as BS import Data.List.NonEmpty (NonEmpty) -import qualified Data.List.NonEmpty as NonEmpty import Data.Map (Map) import qualified Data.Map.Strict as Map import Data.Maybe (fromJust, fromMaybe, maybeToList) @@ -116,6 +118,9 @@ import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript) import Language.Marlowe.Runtime.History.Api (ExtractCreationError, ExtractMarloweTransactionError) import Network.HTTP.Media (MediaType) +import Data.Function (on) +import Data.Map.NonEmpty (NEMap) +import qualified Data.Map.NonEmpty as NEMap import Network.Protocol.Codec.Spec (Variations (..), varyAp) import Network.Protocol.Handshake.Types (HasSignature (..)) import Network.Protocol.Job.Types @@ -274,21 +279,53 @@ data Destination deriving stock (Show, Eq, Ord, Generic) deriving anyclass (Binary, ToJSON, Variations) +data MintRole = MintRole + { roleMetadata :: Maybe RoleTokenMetadata + , roleTokenRecipients :: NEMap Destination Chain.Quantity + } + deriving stock (Show, Eq, Ord, Generic) + deriving anyclass (Binary, Variations) + +instance (Binary k, Binary v) => Binary (NEMap k v) where + put = put . NEMap.toMap + get = maybe (fail "Unexpected empty map") pure . NEMap.nonEmptyMap =<< get + +instance (Variations k, Variations v) => Variations (NEMap k v) where + variations = NEMap.singleton <$> variations `varyAp` variations + +instance Semigroup MintRole where + a <> b = + MintRole + { roleMetadata = on (<|>) roleMetadata a b + , roleTokenRecipients = on (NEMap.unionWith (+)) roleTokenRecipients a b + } + +getTokenQuantities :: Mint -> NEMap TokenName Chain.Quantity +getTokenQuantities = fmap (sum . roleTokenRecipients) . unMint + +hasRecipient :: Destination -> Mint -> Bool +hasRecipient destination = any (NEMap.member destination . roleTokenRecipients) . unMint + -- | Non empty mint request. -newtype Mint = Mint {unMint :: Map TokenName (Destination, Maybe RoleTokenMetadata)} +newtype Mint = Mint {unMint :: NEMap TokenName MintRole} deriving stock (Show, Eq, Ord, Generic) - deriving newtype (Binary, Semigroup, Monoid, ToJSON, Variations) + deriving newtype (Binary, Variations) + +instance Semigroup Mint where + a <> b = + Mint + { unMint = on (NEMap.unionWith (<>)) unMint a b + } -mkMint :: NonEmpty (TokenName, (Destination, Maybe RoleTokenMetadata)) -> Mint -mkMint = Mint . Map.fromList . NonEmpty.toList +mkMint :: NonEmpty (TokenName, MintRole) -> Mint +mkMint = Mint . NEMap.fromList data RoleTokensConfig = RoleTokensNone - | RoleTokensUsePolicy PolicyId + | RoleTokensUsePolicy PolicyId (Map TokenName (Map Destination Chain.Quantity)) | RoleTokensMint Mint - | RoleTokensUsePolicyWithOpenRoles PolicyId TokenName [TokenName] deriving stock (Show, Eq, Ord, Generic) - deriving anyclass (Binary, ToJSON, Variations) + deriving anyclass (Binary, Variations) data ContractCreated v where ContractCreated diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs index 298b747612..6127ef9094 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs @@ -25,11 +25,11 @@ import Control.Monad.Trans.Writer (WriterT (runWriterT), tell) import Data.Bifunctor (first) import Data.Foldable (for_, traverse_) import Data.Function (on) -import Data.Functor ((<&>)) import Data.List (find, sortBy) import Data.Map (Map) import qualified Data.Map as Map -import Data.Maybe (catMaybes, fromMaybe, listToMaybe, maybeToList) +import qualified Data.Map.NonEmpty as NEMap +import Data.Maybe (fromMaybe, listToMaybe, maybeToList) import Data.SOP.Counting (NonEmpty (..)) import Data.Set (Set) import qualified Data.Set as Set @@ -93,9 +93,11 @@ import Language.Marlowe.Runtime.Transaction.Api ( CreateError (..), Destination (..), Mint (unMint), + MintRole (..), RoleTokensConfig (..), WithdrawError (..), encodeRoleTokenMetadata, + getTokenQuantities, ) import Language.Marlowe.Runtime.Transaction.Constraints ( TxConstraints (..), @@ -191,7 +193,7 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m -- Output constraints. -- Role tokens minting and distribution. - policyId <- mintRoleTokens + policyId <- buildRoleTokenConstraints tell . requiresMetadata $ metadata{transactionMetadata = nftsMetadata policyId <> transactionMetadata metadata} @@ -199,21 +201,17 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m (datum, assets) <- sendMarloweOutput policyId -- Open-role script output. - when hasOpenRoles $ - sendOpenRoleOutputs policyId + sendOpenRoleOutputs policyId pure (datum, assets, policyId) where nftsMetadata (PolicyId policyId) = case roles of - RoleTokensMint (Map.toList . unMint -> minting) -> do - let tokensMetadata = - catMaybes $ - minting <&> \case - (tokenName, (_, Just roleTokenMetadata)) -> do - let tokenName' = unTokenName tokenName - -- From CIP-25: In version 2 the the raw bytes of the asset_name are used. - Just (MetadataBytes tokenName', encodeRoleTokenMetadata roleTokenMetadata) - _ -> Nothing + RoleTokensMint (unMint -> minting) -> do + let tokensMetadata = flip NEMap.foldMapWithKey minting \tokenName MintRole{..} -> + flip foldMap roleMetadata \roleTokenMetadata -> do + let tokenName' = unTokenName tokenName + -- From CIP-25: In version 2 the the raw bytes of the asset_name are used. + pure (MetadataBytes tokenName', encodeRoleTokenMetadata roleTokenMetadata) case tokensMetadata of [] -> mempty metadata' -> TransactionMetadata (Map.singleton 721 (MetadataMap [(MetadataBytes policyId, MetadataMap metadata')])) @@ -238,19 +236,19 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m adaAsset (Assets amount _) = Assets amount mempty -- Role token distribution constraints - mintRoleTokens :: TxConstraintsBuilderM CreateError era 'V1 m PolicyId - mintRoleTokens = case roles of - RoleTokensUsePolicy policyId -> pure policyId - RoleTokensUsePolicyWithOpenRoles policyId _ _ -> pure policyId - RoleTokensMint (unMint -> minting) -> do + buildRoleTokenConstraints :: TxConstraintsBuilderM CreateError era 'V1 m PolicyId + buildRoleTokenConstraints = case roles of + RoleTokensUsePolicy policyId _ -> pure policyId + RoleTokensMint mint -> do let WalletContext{availableUtxos} = walletCtx + tokenQuantities = NEMap.toMap $ getTokenQuantities mint txLovelaceRequirementEstimate = adaAsset . adjustMinUtxo . Assets safeLovelace . Tokens - . Map.fromList - $ (,1) . AssetId "" <$> Map.keys minting + . Map.mapKeysMonotonic (AssetId "") + $ tokenQuantities utxoAssets UTxO{transactionOutput = TransactionOutput{assets}} = assets possibleInput = ( find ((<) txLovelaceRequirementEstimate . utxoAssets) . sortBy (compare `on` utxoAssets) . toUTxOsList $ availableUtxos @@ -258,7 +256,7 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m <|> listToMaybe (toUTxOsList availableUtxos) UTxO txOutRef _ <- liftMaybe MintingUtxoSelectionFailed possibleInput - plutusScript <- lift $ lift $ mkRoleTokenMintingPolicy txOutRef $ 1 <$ minting + plutusScript <- lift $ lift $ mkRoleTokenMintingPolicy txOutRef $ fromIntegral <$> tokenQuantities (script, scriptHash) <- liftMaybe (MintingScriptDecodingFailed plutusScript) do script <- toCardanoPlutusScript plutusScript @@ -278,8 +276,9 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m (C.ExecutionUnits 0 0) policyId = PolicyId . unScriptHash $ scriptHash - for_ (Map.toList minting) \(tokenName, (destination, _)) -> - tell $ mustMintRoleToken txOutRef witness (AssetId policyId tokenName) destination + for_ (NEMap.toList $ unMint mint) \(tokenName, MintRole{..}) -> + for_ (NEMap.toList roleTokenRecipients) \(destination, quantity) -> + tell $ mustMintRoleToken txOutRef witness (AssetId policyId tokenName) destination quantity pure policyId RoleTokensNone -> do let -- We use ADA currency symbol as a placeholder which @@ -287,12 +286,6 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m uselessRolePolicyId = PolicyId . PV2.fromBuiltin . PV2.unCurrencySymbol $ PV2.adaSymbol pure uselessRolePolicyId - hasOpenRoles = - case roles of - RoleTokensUsePolicyWithOpenRoles{} -> True - RoleTokensMint (unMint -> minting) -> any ((== ToScript OpenRoleScript) . fst . snd) $ Map.toList minting - _ -> False - sendOpenRoleOutputs policyId = do threadTokenName <- case threadTokenNames of @@ -370,11 +363,10 @@ initialMarloweStateV1 adjustMinUtxo roles policyId minAda walletCtx = roleNamesForDestination :: RoleTokensConfig -> Destination -> [TokenName] roleNamesForDestination roles destination = - case (destination, roles) of - (_, RoleTokensMint (unMint -> minting)) -> fmap fst $ filter ((== destination) . fst . snd) $ Map.toList minting - (ToSelf, RoleTokensUsePolicyWithOpenRoles _ selfName _) -> pure selfName - (ToScript OpenRoleScript, RoleTokensUsePolicyWithOpenRoles _ _ openRoleNames) -> openRoleNames - _ -> mempty + case roles of + RoleTokensNone -> [] + RoleTokensMint (unMint -> minting) -> Map.keys $ NEMap.filter (NEMap.member destination . roleTokenRecipients) minting + (RoleTokensUsePolicy _ distribution) -> Map.keys $ Map.filter (Map.member destination) distribution type ApplyResults v = (UTCTime, UTCTime, Maybe (Assets, Datum v), Inputs v) diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs index 893a800e51..3692449806 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs @@ -25,6 +25,7 @@ module Language.Marlowe.Runtime.Transaction.Constraints ( mustConsumeMarloweOutput, mustConsumePayout, mustMintRoleToken, + mustDistributeRoleToken, mustPayToAddress, mustPayToRole, mustSendMarloweOutput, @@ -49,18 +50,7 @@ import Data.Function (on) import Data.Functor ((<&>)) import Data.List (delete, find, minimumBy, nub) import Data.Map (Map) -import qualified Data.Map as Map ( - elems, - fromSet, - keysSet, - lookup, - mapWithKey, - member, - null, - singleton, - toList, - unionWith, - ) +import qualified Data.Map as Map import qualified Data.Map.Strict as SMap (fromList, toList) import Data.Maybe (catMaybes, mapMaybe, maybeToList) import Data.Monoid (First (..), getFirst) @@ -127,26 +117,28 @@ deriving instance Eq (TxConstraints era 'V1) -- | Constraints related to role tokens. data RoleTokenConstraints era = RoleTokenConstraintsNone - | MintRoleTokens Chain.TxOutRef (C.ScriptWitness C.WitCtxMint era) (Map Chain.AssetId Destination) + | MintRoleTokens Chain.TxOutRef (C.ScriptWitness C.WitCtxMint era) (Map Chain.AssetId (Map Destination Chain.Quantity)) + | DistributeRoleTokens (Map Chain.AssetId (Map Destination Chain.Quantity)) | SpendRoleTokens (Set Chain.AssetId) deriving (Eq, Show) instance Semigroup (RoleTokenConstraints era) where a <> RoleTokenConstraintsNone = a - MintRoleTokens _ _ a <> MintRoleTokens ref witness b = MintRoleTokens ref witness $ a <> b + MintRoleTokens _ _ a <> MintRoleTokens ref witness b = + MintRoleTokens ref witness $ Map.unionWith (Map.unionWith (+)) a b SpendRoleTokens a <> SpendRoleTokens b = SpendRoleTokens $ a <> b _ <> b = b instance Monoid (RoleTokenConstraints era) where mempty = RoleTokenConstraintsNone --- | Require the transaction to mint 1 role token with the specified assetId and --- send it to the given address. Additionally, require that the given UTXO is --- consumed. +-- | Require the transaction to mint the specified number of role tokens with the +-- specified assetId and send them to the given destinations. Additionally, require that +-- the given UTXO is consumed. -- -- Requires that: --- 1. The transaction mints one token with the given assetId. --- 2. The transaction sends one token with the given assetId to the given address. +-- 1. The transaction mints at least n tokens with the given assetId. +-- 2. The transaction sends n tokens with the given assetId to the given destination. -- 3. The output in rule 2 does not contain any other tokens aside from ADA. -- 4. The transaction consumes the given TxOutRef. mustMintRoleToken @@ -155,9 +147,28 @@ mustMintRoleToken -> C.ScriptWitness C.WitCtxMint era -> Chain.AssetId -> Destination + -> Chain.Quantity + -> TxConstraints era v +mustMintRoleToken txOutRef witness assetId destination quantity = + mempty + { roleTokenConstraints = MintRoleTokens txOutRef witness $ Map.singleton assetId $ Map.singleton destination quantity + } + +-- | Require the transaction to send the specified number of role tokens with the +-- specified assetId to the given destinations. +-- +-- Requires that: +-- 1. The transaction sends n tokens with the given assetId to the given destination. +mustDistributeRoleToken + :: (Core.IsMarloweVersion v) + => Chain.AssetId + -> Destination + -> Chain.Quantity -> TxConstraints era v -mustMintRoleToken txOutRef witness assetId destination = - mempty{roleTokenConstraints = MintRoleTokens txOutRef witness $ Map.singleton assetId destination} +mustDistributeRoleToken assetId destination quantity = + mempty + { roleTokenConstraints = DistributeRoleTokens $ Map.singleton assetId $ Map.singleton destination quantity + } -- | Require the transaction to spend a UTXO with 1 role token of the specified -- assetID. It also needs to send an identical output (same assets) to the @@ -1063,6 +1074,7 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. :: Set Chain.AssetId -> Either ConstraintError [(C.TxIn, C.BuildTxWith C.BuildTx (C.Witness C.WitCtxTxIn era))] getWalletInputs helperRoles = case roleTokenConstraints of RoleTokenConstraintsNone -> pure [] + DistributeRoleTokens _ -> pure [] -- Coin selection will handle these inputs. MintRoleTokens txOutRef _ _ -> do txIn <- note ToCardanoError $ toCardanoTxIn txOutRef _ <- note (MintingUtxoNotFound txOutRef) $ lookupUTxO txOutRef availableUtxos @@ -1221,6 +1233,7 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. getHelperInputs = case roleTokenConstraints of RoleTokenConstraintsNone -> pure [] MintRoleTokens{} -> pure [] + DistributeRoleTokens{} -> pure [] SpendRoleTokens roleTokens -> catMaybes <$> mapM getHelperInput (Set.toList roleTokens) getHelperInput @@ -1277,32 +1290,31 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. getRoleTokenOutputs :: Set Chain.AssetId -> Either ConstraintError [Chain.TransactionOutput] - getRoleTokenOutputs helperRoles = case roleTokenConstraints of - RoleTokenConstraintsNone -> pure [] - MintRoleTokens _ _ distribution -> - pure . mapMaybe snd . Map.toList $ flip - Map.mapWithKey - distribution - \assetId -> - \case - (ToAddress address) -> - Just $ - Chain.TransactionOutput + getRoleTokenOutputs helperRoles = go roleTokenConstraints + where + go = \case + RoleTokenConstraintsNone -> pure [] + MintRoleTokens _ _ distribution -> go $ DistributeRoleTokens distribution + DistributeRoleTokens distribution -> pure $ flip Map.foldMapWithKey distribution \assetId -> + Map.foldMapWithKey \case + (ToAddress address) -> \quantity -> + [ Chain.TransactionOutput address - (Chain.Assets 0 $ Chain.Tokens $ Map.singleton assetId 1) + (Chain.Assets 0 $ Chain.Tokens $ Map.singleton assetId quantity) Nothing Nothing - _ -> Nothing -- Output to self or to a helper script is handled elsewhere above. - SpendRoleTokens roleTokens -> do - let availTuples = map toUTxOTuple . toUTxOsList $ availableUtxos - roleTokens' = roleTokens Set.\\ helperRoles - -- Ignore ada role tokens because we don't specifically select an input for it, and balancing will refund all - -- spent Ada. - nub <$> forM (filter (not . isAda) $ Set.toList roleTokens') \token -> do - -- Find an element from availTuples where 'token' is in the assets. - let containsToken :: Chain.TransactionOutput -> Bool - containsToken = Map.member token . Chain.unTokens . Chain.tokens . Chain.assets - note (RoleTokenNotFound token) $ snd <$> find (containsToken . snd) availTuples + ] + _ -> const [] -- Output to self or to a helper script is handled elsewhere above. + SpendRoleTokens roleTokens -> do + let availTuples = map toUTxOTuple . toUTxOsList $ availableUtxos + roleTokens' = roleTokens Set.\\ helperRoles + -- Ignore ada role tokens because we don't specifically select an input for it, and balancing will refund all + -- spent Ada. + nub <$> forM (filter (not . isAda) $ Set.toList roleTokens') \token -> do + -- Find an element from availTuples where 'token' is in the assets. + let containsToken :: Chain.TransactionOutput -> Bool + containsToken = Map.member token . Chain.unTokens . Chain.tokens . Chain.assets + note (RoleTokenNotFound token) $ snd <$> find (containsToken . snd) availTuples getPayoutOutputs :: Either ConstraintError [Chain.TransactionOutput] getPayoutOutputs = traverse (uncurry getPayoutOutput) $ Map.toList payToRoles diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Query/Helper.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Query/Helper.hs index e2e77f735c..ebed6d6a45 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Query/Helper.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Query/Helper.hs @@ -19,6 +19,7 @@ import Control.Monad.Event.Class ( withEventFields, ) import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (fromJust, mapMaybe) import Data.Set (Set) import qualified Data.Set as Set @@ -64,6 +65,7 @@ import Language.Marlowe.Runtime.Plutus.V2.Api (fromPlutusCurrencySymbol) import Language.Marlowe.Runtime.Transaction.Api ( Destination (..), LoadHelpersContextError (..), + MintRole (roleTokenRecipients), RoleTokensConfig (..), unMint, ) @@ -120,25 +122,24 @@ loadHelpersContext getCurrentScripts _ networkId _ desiredVersion (Right Nothing , helperScriptStates = mempty } loadHelpersContext getCurrentScripts _ networkId _ desiredVersion (Left (rolesCurrency, roleTokens)) = - -- TODO: Generalize beyoned open roles when other helper script types are supported. + -- TODO: Generalize beyond open roles when other helper script types are supported. case (OpenRoleScript `Map.lookup` current, roleTokens) of (Just _, RoleTokensNone) -> pure . Right $ HelpersContext current rolesCurrency mempty - (Just _, RoleTokensUsePolicy _) -> - pure . Right $ HelpersContext current rolesCurrency mempty - (Just helperScriptInfo, RoleTokensMint mint) -> + (Just helperScriptInfo, RoleTokensUsePolicy _ distribution) -> pure . Right . HelpersContext current rolesCurrency . Map.map (const $ HelperScriptState helperScriptInfo Nothing) - . Map.filter ((== ToScript OpenRoleScript) . fst) - $ unMint mint - (Just helperScriptInfo, RoleTokensUsePolicyWithOpenRoles policyId _ openRoleNames) -> + . Map.filter (Map.member (ToScript OpenRoleScript)) + $ distribution + (Just helperScriptInfo, RoleTokensMint mint) -> pure . Right - . HelpersContext current policyId - . Map.fromList - $ (,HelperScriptState helperScriptInfo Nothing) <$> openRoleNames + . HelpersContext current rolesCurrency + . Map.map (const $ HelperScriptState helperScriptInfo Nothing) + . NEMap.filter (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) + $ unMint mint (Nothing, _) -> pure . Right $ HelpersContext current "" mempty where current = getHelperInfos helperScript networkId $ getCurrentScripts desiredVersion diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs index 297a66e906..5363eaf20d 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs @@ -16,7 +16,6 @@ module Language.Marlowe.Runtime.Transaction.Safety ( import Control.Monad (forM) import Control.Monad.Trans.Except (runExceptT, throwE) import Data.Bifunctor (bimap, first) -import Data.Foldable (toList) import Data.Maybe (fromJust) import Data.SOP.Strict (K (..), NP (..)) import Data.String (fromString) @@ -39,7 +38,7 @@ import Language.Marlowe.Runtime.Core.Api ( MarloweVersion (MarloweV1), TransactionScriptOutput (..), ) -import Language.Marlowe.Runtime.Transaction.Api (Destination (ToSelf), Mint (..), RoleTokensConfig (..)) +import Language.Marlowe.Runtime.Transaction.Api (Mint (..), RoleTokensConfig (..)) import Language.Marlowe.Runtime.Transaction.BuildConstraints (buildApplyInputsConstraints, safeLovelace) import Language.Marlowe.Runtime.Transaction.Constraints ( HelperScriptInfo (helperAddress), @@ -64,15 +63,14 @@ import qualified Cardano.Api.Shelley as Shelley ( ) import Control.Monad.IO.Class (MonadIO) import Data.Functor.Identity (runIdentity) +import qualified Data.Map.NonEmpty as NEMap import qualified Data.Map.Strict as M ( Map, elems, empty, - filter, fromList, fromSet, intersection, - keys, keysSet, map, mapKeys, @@ -82,6 +80,8 @@ import qualified Data.Map.Strict as M ( ) import qualified Data.SOP.Counting as Ouroboros import qualified Data.Set as S (Set, intersection, map, singleton) +import qualified Data.Set as Set +import qualified Data.Set.NonEmpty as NESet import qualified Language.Marlowe.Core.V1.Merkle as V1 (MerkleizedContract (..)) import qualified Language.Marlowe.Core.V1.Plate as V1 (extractAllWithContinuations) import qualified Language.Marlowe.Core.V1.Semantics as V1 ( @@ -234,8 +234,8 @@ minAdaBound era pps MarloweV1 assets = (Cardano.TxOutValue multiAssetSupported value) (Cardano.TxOutDatumHash scriptDataSupported "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0") C.ReferenceScriptNone - bpps <- either (const Nothing) Just $ C.bundleProtocolParams cardanoEra pps - pure $ Cardano.calculateMinimumUTxO shelleyBasedEra txOut bpps + params <- either (const Nothing) Just $ C.bundleProtocolParams cardanoEra pps + pure $ Cardano.calculateMinimumUTxO shelleyBasedEra txOut params -- | Check a contract for design errors and ledger violations. checkContract @@ -247,20 +247,21 @@ checkContract -> [SafetyError] checkContract network config MarloweV1 contract continuations = let continuations' = remapContinuations continuations - roles = toList $ V1.extractAllWithContinuations contract continuations' + roles = V1.extractAllWithContinuations contract continuations' mintCheck = - case (config, null roles) of + case (config, Set.null roles) of (RoleTokensNone, False) -> pure MissingRolesCurrency (RoleTokensNone, True) -> mempty (_, True) -> pure ContractHasNoRoles (RoleTokensMint mint, False) -> - let minted = Chain.toPlutusTokenName <$> M.keys (M.filter ((/= ToSelf) . fst) $ unMint mint) - missing = MissingRoleToken <$> filter (`notElem` minted) roles - extra = ExtraRoleToken <$> filter (`notElem` roles) minted + let minted = Set.map Chain.toPlutusTokenName $ NESet.toSet $ NEMap.keysSet $ unMint mint + missing = MissingRoleToken <$> Set.toList (Set.difference minted roles) + extra = ExtraRoleToken <$> Set.toList (Set.difference roles minted) in missing <> extra - (RoleTokensUsePolicy _, False) -> mempty - (RoleTokensUsePolicyWithOpenRoles _ _ openRoles, False) -> - ExtraRoleToken <$> filter (`notElem` roles) (Chain.toPlutusTokenName <$> openRoles) + (RoleTokensUsePolicy _ distribution, False) -> do + let distributedRoles = Set.map Chain.toPlutusTokenName $ M.keysSet distribution + extraRole <- Set.toList $ Set.difference roles distributedRoles + pure $ ExtraRoleToken extraRole avoidDuplicateReport = True nameCheck = checkRoleNames avoidDuplicateReport Nothing contract continuations' tokenCheck = checkTokens Nothing contract continuations' diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs index 36f5a6b98e..6dabbefecb 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs @@ -57,6 +57,7 @@ import Data.Foldable (foldl') import Data.List (find) import Data.Map (Map) import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (fromJust, fromMaybe) import Data.Set (Set) import qualified Data.Set as Set @@ -110,6 +111,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( JobId (..), MarloweTxCommand (..), Mint (unMint), + MintRole (roleTokenRecipients), RoleTokensConfig (..), SubmitError (..), SubmitStatus (..), @@ -392,11 +394,15 @@ execCreate mkRoleTokenMintingPolicy era contractQueryConnector getCurrentScripts threadRole <- case roleTokens of RoleTokensMint (unMint -> mint) -> - case Set.toList . Map.keysSet $ Map.filter ((== ToSelf) . fst) mint of + case Set.toList . Map.keysSet $ NEMap.filter (NEMap.member ToSelf . roleTokenRecipients) mint of + [] -> pure Nothing + [role] -> pure $ Just role + _ -> throwE RequiresSingleThreadToken + RoleTokensUsePolicy _ distribution -> + case Set.toList . Map.keysSet $ Map.filter (Map.member ToSelf) distribution of [] -> pure Nothing [role] -> pure $ Just role _ -> throwE RequiresSingleThreadToken - RoleTokensUsePolicyWithOpenRoles _ role _ -> pure $ Just role _ -> pure Nothing let -- Fast analysis of safety: examines bounds for transactions. contractSafetyErrors = checkContract networkId roleTokens version contract' continuations From abfa837c54f29c2c4d0c83c60cd05c574993c3a7 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Wed, 15 Nov 2023 11:19:08 -0500 Subject: [PATCH 02/11] Add support for multiple tokens per role --- .../Language/Marlowe/Runtime/ChainSync/Gen.hs | 2 +- .../.golden/Job MarloweTxCommand/golden | 1642 ++++++++--------- .../Marlowe/Runtime/Transaction/Gen.hs | 27 +- .../Transaction/BuildConstraintsSpec.hs | 248 ++- .../Runtime/Transaction/ConstraintsSpec.hs | 232 ++- .../Marlowe/Runtime/Transaction/SafetySpec.hs | 48 +- .../Marlowe/Runtime/Transaction/Api.hs | 88 +- .../Runtime/Transaction/BuildConstraints.hs | 140 +- .../Runtime/Transaction/Constraints.hs | 189 +- .../Marlowe/Runtime/Transaction/Safety.hs | 6 +- .../Marlowe/Runtime/Transaction/Server.hs | 32 +- 11 files changed, 1394 insertions(+), 1260 deletions(-) diff --git a/marlowe-chain-sync/gen/Language/Marlowe/Runtime/ChainSync/Gen.hs b/marlowe-chain-sync/gen/Language/Marlowe/Runtime/ChainSync/Gen.hs index 22767cd26d..87d0e3d9ea 100644 --- a/marlowe-chain-sync/gen/Language/Marlowe/Runtime/ChainSync/Gen.hs +++ b/marlowe-chain-sync/gen/Language/Marlowe/Runtime/ChainSync/Gen.hs @@ -163,7 +163,7 @@ instance Arbitrary PolicyId where arbitrary = PolicyId . unScriptHash <$> arbitrary instance Arbitrary TokenName where - arbitrary = TokenName <$> genBytes + arbitrary = TokenName . BS.take 32 <$> genBytes shrink = genericShrink instance Arbitrary Datum where diff --git a/marlowe-runtime/.golden/Job MarloweTxCommand/golden b/marlowe-runtime/.golden/Job MarloweTxCommand/golden index 8b95206797..a5e41ff4e1 100644 --- a/marlowe-runtime/.golden/Job MarloweTxCommand/golden +++ b/marlowe-runtime/.golden/Job MarloweTxCommand/golden @@ -918,826 +918,826 @@ Show: MsgExec (ApplyInputs MarloweV1 (WalletAddresses {changeAddress = "", extra Binary: 010200000001000000000000000000000000000000000000000000000000000000000000000161000100000000000000000000020000000000000000 Show: MsgExec (ApplyInputs MarloweV1 (WalletAddresses {changeAddress = "61", extraAddresses = fromList [], collateralUtxos = fromList []}) (ContractId {unContractId = TxOutRef {txId = "", txIx = TxIx {unTxIx = 1}}}) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing Nothing []) Binary: 010200000001000000000000000161000000000000000000000000000000000000000000000000000100000000000000000000020000000000000000 -Show: MsgExec (Create (Just (StakeKeyCredential "")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create (Just (StakeKeyCredential "61")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010100000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create (Just (StakeScriptCredential "")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create (Just (StakeScriptCredential "61")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010101000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [""], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList ["61"], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList [TxOutRef {txId = "", txIx = TxIx {unTxIx = 1}}]}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010000000000000000000000000000000000000000000000000100000000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList [TxOutRef {txId = "61", txIx = TxIx {unTxIx = 1}}]}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000010000000000000001610001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Just text/plain, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000a746578742f706c61696e0000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Just "", files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010000000000000000000000000000000000000000000000000002000000000000000100000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Just "a", files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000016100000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000001000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000001000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = }]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "a", mediaType = text/plain, src = }]})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000a746578742f706c61696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = //, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000010000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000100000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000100000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Just (RoleTokenMetadata {name = "a", image = , mediaType = Nothing, description = Nothing, files = []})))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "",Nothing))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000010000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToAddress "61",Nothing))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000161000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToScript OpenRoleScript,Nothing))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000002000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("",(ToSelf,Nothing))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList [("a",(ToAddress "",Nothing))]})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000020000000000000001000000000000000161000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensMint (Mint {unMint = fromList []})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicy "") (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicy "61") (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicyWithOpenRoles "" "" [""]) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000100000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicyWithOpenRoles "" "" ["a"]) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000010000000000000001610000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicyWithOpenRoles "" "" []) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicyWithOpenRoles "" "a" []) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010000000000000000000000000000000000000000000000000003000000000000000000000000000000016100000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (RoleTokensUsePolicyWithOpenRoles "61" "" []) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010000000000000000000000000000000000000000000000000003000000000000000161000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataBytes ""))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000030000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataBytes "a"))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000204000000000000000003000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataList [MetadataMap []]))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000010000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataList []))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataMap [(MetadataMap [],MetadataMap [])]))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000000000000000000001000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataMap []))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataNumber 1))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000020000000001000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataText ""))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000040000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataText "a"))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000204000000000000000004000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Nothing)], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000001040000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("a",Nothing)], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000104000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Just ""}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000003020000000002010000000000000000040000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Just "a"}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000302000000000201000000000000000004000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataBytes "")]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001030000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataBytes "a")]}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000000103000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataList [MetadataMap []])]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001010000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataList [])]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataMap [(MetadataMap [],MetadataMap [])])]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000001000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataMap [])]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataNumber 1)]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001020000000001000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataText "")]}}) Nothing (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000010000000000000001040000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataText "a")]}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000001000000000000000104000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) (Just (Lovelace {unLovelace = 1})) (Left Close)) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000100000000000000010000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (AndObs FalseObs FalseObs) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000005000a0a00 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000005030000000000000000000000000000000000000001000000000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000010000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000000100000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000005030000000000000000000000000000000000000001000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000000010001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "a")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000016100000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (NotObs FalseObs) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000005020a00 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (OrObs FalseObs FalseObs) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000005010a0a00 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueEQ TimeIntervalStart TimeIntervalStart) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000508080800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueGE TimeIntervalStart TimeIntervalStart) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000504080800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueGT TimeIntervalStart TimeIntervalStart) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000505080800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueLE TimeIntervalStart TimeIntervalStart) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000507080800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueLT TimeIntervalStart TimeIntervalStart) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000506080800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert FalseObs Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050a00 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert TrueObs Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000050900 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (AndObs FalseObs FalseObs) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002000a0a0000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "")) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000100000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\"")) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000100000000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\"")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000001000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\"")) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000001000000000000000161000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000100010000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000001000100000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "a")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000010000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002030000000000000001610000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (NotObs FalseObs) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002020a0000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (OrObs FalseObs FalseObs) Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002010a0a0000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueEQ TimeIntervalStart TimeIntervalStart) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020808080000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueGE TimeIntervalStart TimeIntervalStart) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020408080000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueGT TimeIntervalStart TimeIntervalStart) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020508080000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueLE TimeIntervalStart TimeIntervalStart) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020708080000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueLT TimeIntervalStart TimeIntervalStart) Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020608080000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If FalseObs Close Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000020a0000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If TrueObs Close Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000002090000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AddValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000301000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000100000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000001000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000161000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000161000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000001000000000000000161000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000010000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "a" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000010000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000070000000000000000000000000000000000000001000000000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000010000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000000100000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000070000000000000000000000000000000000000001000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000000010001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "a")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000016100000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (Cond FalseObs (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000b0a01000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (Constant 1) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000001000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (DivValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000601000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (MulValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000501000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (NegValue (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000201000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (SubValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000401000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (UseValue "") Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000a000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (UseValue "a") Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000a00000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" TimeIntervalEnd Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000900 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" TimeIntervalStart Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "a" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000004000000000000000161000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr1vy5ecqvg\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1qpsst6vycv\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1qqjwq357\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vpssccjchz\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr1vy5ecqvg\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1qpsst6vycv\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1qqjwq357\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vpssccjchz\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AddValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000301000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "a" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000001610000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000100000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010001000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "a")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000016100000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (Cond FalseObs (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a01000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (Constant 1) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (DivValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000601000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (MulValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000501000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (NegValue (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000201000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (SubValue (Constant 1) (Constant 1)) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000401000000000101000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (UseValue "") Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (UseValue "a") Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000016100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") TimeIntervalEnd Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000900 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") TimeIntervalStart Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000800 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1wpssnqh9pc\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1wq6vgsdn\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1ypssarxha3\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1yq8p4z3x\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "a") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr1vy5ecqvg\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1qpsst6vycv\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1qqjwq357\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1vpssccjchz\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1wpssnqh9pc\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1wq6vgsdn\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1ypssarxha3\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1yq8p4z3x\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "a") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1wpssnqh9pc\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1wq6vgsdn\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1ypssarxha3\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1yq8p4z3x\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "a" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000010000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr1vy5ecqvg\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000100000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1qpsst6vycv\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000100000000000000000000000000000000000000010000000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1qqjwq357\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000100000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vpssccjchz\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000016100000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") [Bound 1 1]) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000000000000000000010000000001000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1wpssnqh9pc\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000100000000000000016100000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1wq6vgsdn\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000001000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1ypssarxha3\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000100000000000000000000000000000000000000010001000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1yq8p4z3x\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000100010000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "a") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000001000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "a" "\"addr_test1vqylkdml\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000161000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr1vy5ecqvg\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1qpsst6vycv\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1qqjwq357\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vpssccjchz\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr1vy5ecqvg\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qpsst6vycv\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qqjwq357\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vpssccjchz\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AddValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000301000000000101000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "a" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000001000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000010000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000001610000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000001610000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000100000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010001000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000016100000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Cond FalseObs (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a01000000000101000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Constant 1)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (DivValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000601000000000101000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (MulValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000501000000000101000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (NegValue (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000201000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (SubValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000401000000000101000000000100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "")) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "a")) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalEnd) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalStart) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wpssnqh9pc\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wq6vgsdn\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1ypssarxha3\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1yq8p4z3x\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "a" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1wpssnqh9pc\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1wq6vgsdn\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1ypssarxha3\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1yq8p4z3x\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "a" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (AndObs FalseObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002000a0a00000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000001000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000010000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002030000000000000000000000000000000000000001000000000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000000010000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000001610000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000010000000000000001610000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000000100000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002030000000000000000000000000000000000000001000100000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000000010001000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000100000000000000016100000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000016100000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (NotObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002020a00000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (OrObs FalseObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002010a0a00000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueEQ TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000208080800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueGE TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000204080800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueGT TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000205080800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueLE TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000207080800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueLT TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000206080800000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify FalseObs) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020a00000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify TrueObs) Close] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020900000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000001000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr1vy5ecqvg\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000010000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1qpsst6vycv\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101010000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1qqjwq357\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vpssccjchz\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000001610000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") [Bound 1 1]) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000000000000000000001000000000100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1wpssnqh9pc\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000010000000000000001610000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1wq6vgsdn\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000000100000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1ypssarxha3\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101010000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1yq8p4z3x\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "a") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000100000000000000016100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "a" "\"addr_test1vqylkdml\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000016100000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr1vy5ecqvg\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1qpsst6vycv\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1qqjwq357\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vpssccjchz\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr1vy5ecqvg\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qpsst6vycv\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qqjwq357\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vpssccjchz\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AddValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000030100000000010100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000161000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) "a"] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000161000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "a" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000001000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000100000000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000001000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000100010000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000010000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000001610000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Cond FalseObs (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a0100000000010100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Constant 1)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (DivValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000060100000000010100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (MulValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000050100000000010100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (NegValue (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000020100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (SubValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000040100000000010100000000010000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "")) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "a")) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalEnd) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalStart) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wpssnqh9pc\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wq6vgsdn\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1ypssarxha3\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1yq8p4z3x\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "a" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1wpssnqh9pc\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1wq6vgsdn\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1ypssarxha3\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1yq8p4z3x\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "a" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (AndObs FalseObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102000a0a0000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000001000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010203000000000000000000000000000000000000000100000000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000001000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000001000000000000000161000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000000010000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010203000000000000000000000000000000000000000100010000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000001000100000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000010000000000000001610000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000001610000000000000000000000000000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (NotObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102020a0000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (OrObs FalseObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102010a0a0000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueEQ TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020808080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueGE TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020408080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueGT TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020508080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueLE TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020708080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueLT TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020608080000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify FalseObs) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020a0000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify TrueObs) ""] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102090000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [] (POSIXTime {getPOSIXTime = 1}) Close))) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000100 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Right "")) -Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Right "61")) -Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161 -Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "61", extraAddresses = fromList [], collateralUtxos = fromList []}) RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) -Binary: 0101000000010000000000000000016100000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create (Just (StakeKeyCredential "")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create (Just (StakeKeyCredential "61")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001010000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create (Just (StakeScriptCredential "")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create (Just (StakeScriptCredential "61")) MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001010100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [""], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList ["61"], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList [TxOutRef {txId = "", txIx = TxIx {unTxIx = 1}}]}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000010000000000000000000100000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList [TxOutRef {txId = "61", txIx = TxIx {unTxIx = 1}}]}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000001000000000000000161000100000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (Just "") RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) (Just "a") RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Just text/plain, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000a746578742f706c61696e000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Just "", files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Just "a", files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000100000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000100000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = //}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000000000000000000000000000000000000000000000000000161000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000000000000000000000000000000000001610000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000000000000000000000016100000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = a}]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e00000000000000016100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "", mediaType = text/plain, src = }]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000200000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000a746578742f706c61696e000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = [NFTMetadataFile {name = "a", mediaType = text/plain, src = }]}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000a746578742f706c61696e000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = , mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = //, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000001000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000010000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000010000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = //a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "", image = a, mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Just (RoleTokenMetadata {name = "a", image = , mediaType = Nothing, description = Nothing, files = []}), roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Nothing, roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000020000000000000001000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Nothing, roleTokenRecipients = fromList ((ToAddress "61",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000000000000000000010000000000000000016100000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("",MintRole {roleMetadata = Nothing, roleTokenRecipients = fromList ((ToScript OpenRoleScript,Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000000000000000000000010100000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensMint (Mint {unMint = fromList (("a",MintRole {roleMetadata = Nothing, roleTokenRecipients = fromList ((ToAddress "",Quantity {unQuantity = 1}) :| [])}) :| [])})) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000002000000000000000100000000000000016100000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [("",fromList [(ToAddress "",Quantity {unQuantity = 1})])])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [("",fromList [(ToAddress "61",Quantity {unQuantity = 1})])])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000100000000000000000000000000000001000000000000000000000000000000010000000000000000016100000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [("",fromList [(ToScript OpenRoleScript,Quantity {unQuantity = 1})])])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000100000000000000000000000000000001000000000000000000000000000000010100000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "" (fromList [])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing (UnsafeRoleTokensUsePolicy "61" (fromList [])) (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000100000000000000016100000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataBytes ""))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000030000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataBytes "a"))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000204000000000000000003000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataList [MetadataMap []]))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000010000000000000001000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataList []))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataMap [(MetadataMap [],MetadataMap [])]))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000000000000000000001000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataMap []))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataNumber 1))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000020000000001000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataText ""))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000002040000000000000000040000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Just (MetadataText "a"))], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000204000000000000000004000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("",Nothing)], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000001010000000000000001040000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [("a",Nothing)], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000202000000000201000000000000000101000000000000000104000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Just ""}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000003020000000002010000000000000000040000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Just "a"}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c01000000000000000302000000000201000000000000000004000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Just (MarloweMetadata {tags = fromList [], continuations = Nothing}), transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000061c010000000000000002020000000002010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataBytes "")]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001030000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataBytes "a")]}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000103000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataList [MetadataMap []])]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001010000000000000001000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataList [])]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataMap [(MetadataMap [],MetadataMap [])])]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000001000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataMap [])]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataNumber 1)]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001020000000001000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataText "")]}}) Nothing (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000010000000000000001040000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList [(1,MetadataText "a")]}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000104000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) (Just (Lovelace {unLovelace = 1})) (Left Close)) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000000010000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (AndObs FalseObs FalseObs) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000005000a0a00 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000005030000000000000000000000000000000000000001000000000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000010000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000503000000000000000000000100000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000005030000000000000000000000000000000000000001000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000000000000000000000000010001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "" "a")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050300000000000000016100000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (NotObs FalseObs) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000005020a00 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (OrObs FalseObs FalseObs) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000005010a0a00 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueEQ TimeIntervalStart TimeIntervalStart) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000508080800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueGE TimeIntervalStart TimeIntervalStart) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000504080800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueGT TimeIntervalStart TimeIntervalStart) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000505080800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueLE TimeIntervalStart TimeIntervalStart) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000507080800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert (ValueLT TimeIntervalStart TimeIntervalStart) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000506080800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert FalseObs Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050a00 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Assert TrueObs Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000050900 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (AndObs FalseObs FalseObs) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002000a0a0000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "")) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000100000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\"")) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000001000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000100000000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\"")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000001000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\"")) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000001000000000000000161000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020300000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000100010000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000000000000000000000000001000100000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "" "a")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000000010000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002030000000000000001610000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (NotObs FalseObs) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002020a0000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (OrObs FalseObs FalseObs) Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002010a0a0000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueEQ TimeIntervalStart TimeIntervalStart) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020808080000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueGE TimeIntervalStart TimeIntervalStart) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020408080000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueGT TimeIntervalStart TimeIntervalStart) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020508080000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueLE TimeIntervalStart TimeIntervalStart) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020708080000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If (ValueLT TimeIntervalStart TimeIntervalStart) Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020608080000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If FalseObs Close Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000020a0000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (If TrueObs Close Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000002090000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AddValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000301000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000100000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000161000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000161000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000001000000000000000161000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000010000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (AvailableMoney "a" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000010000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000070000000000000000000000000000000000000001000000000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000010000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000007000000000000000000000100000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000070000000000000000000000000000000000000001000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000000000000000000000000010001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "" "a")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000700000000000000016100000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (Cond FalseObs (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000b0a01000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (Constant 1) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000001000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (DivValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000601000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (MulValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000501000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (NegValue (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000201000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (SubValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000401000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (UseValue "") Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000a000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" (UseValue "a") Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000a00000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" TimeIntervalEnd Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000900 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "" TimeIntervalStart Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Let "a" (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000161000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr1vy5ecqvg\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1qpsst6vycv\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1qqjwq357\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vpssccjchz\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr1vy5ecqvg\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1qpsst6vycv\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1qqjwq357\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vpssccjchz\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AddValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000301000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "a" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000001610000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\"")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000100000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\"")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010001000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "" "a")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\"")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000016100000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (Cond FalseObs (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a01000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (Constant 1) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (DivValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000601000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (MulValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000501000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (NegValue (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000201000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (SubValue (Constant 1) (Constant 1)) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000401000000000101000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (UseValue "") Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (UseValue "a") Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000016100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") TimeIntervalEnd Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000900 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") TimeIntervalStart Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000800 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1vqylkdml\"") (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1wpssnqh9pc\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1wq6vgsdn\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1ypssarxha3\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "\"addr_test1yq8p4z3x\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Account "a") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr1vy5ecqvg\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1qpsst6vycv\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1qqjwq357\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1vpssccjchz\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1wpssnqh9pc\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1wq6vgsdn\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1ypssarxha3\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "\"addr_test1yq8p4z3x\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1vqylkdml\"" (Party "a") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000010100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1wpssnqh9pc\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1wq6vgsdn\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1ypssarxha3\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "\"addr_test1yq8p4z3x\"" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (Pay "a" (Account "\"addr_test1vqylkdml\"") (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "")) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000010000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr1vy5ecqvg\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000100000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1qpsst6vycv\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000100000000000000000000000000000000000000010000000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1qqjwq357\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000100000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vpssccjchz\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000016100000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") [Bound 1 1]) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000000000000000000010000000001000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1wpssnqh9pc\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000100000000000000016100000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1wq6vgsdn\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100010000000000000000000001000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1ypssarxha3\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000100000000000000000000000000000000000000010001000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "\"addr_test1yq8p4z3x\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000000000000000000000000000100010000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "" "a") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000001000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Choice (ChoiceId "a" "\"addr_test1vqylkdml\"") []) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010001000000000000000161000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr1vy5ecqvg\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1qpsst6vycv\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1qqjwq357\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vpssccjchz\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr1vy5ecqvg\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qpsst6vycv\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qqjwq357\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vpssccjchz\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AddValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000301000000000101000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "a" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000001000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000010000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000001610000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000001610000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000100000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000010001000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000016100000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Cond FalseObs (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a01000000000101000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Constant 1)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (DivValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000601000000000101000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (MulValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000501000000000101000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (NegValue (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000201000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (SubValue (Constant 1) (Constant 1))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000401000000000101000000000100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "")) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "a")) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalEnd) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalStart) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wpssnqh9pc\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wq6vgsdn\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1ypssarxha3\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1yq8p4z3x\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1vqylkdml\"" "a" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1wpssnqh9pc\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1wq6vgsdn\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1ypssarxha3\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "\"addr_test1yq8p4z3x\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Deposit "a" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100000100000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (AndObs FalseObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002000a0a00000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" ""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000001000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000010000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002030000000000000000000000000000000000000001000000000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000000010000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000001610000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000010000000000000001610000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000203000000000000000000000100000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002030000000000000000000000000000000000000001000100000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000000000000000000000000010001000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "" "a"))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000000100000000000000016100000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\""))) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020300000000000000016100000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (NotObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002020a00000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (OrObs FalseObs FalseObs)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010002010a0a00000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueEQ TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000208080800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueGE TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000204080800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueGT TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000205080800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueLE TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000207080800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify (ValueLT TimeIntervalStart TimeIntervalStart)) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001000206080800000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify FalseObs) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020a00000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [Case (Notify TrueObs) Close] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000100020900000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000001000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr1vy5ecqvg\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000010000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1qpsst6vycv\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101010000000000000000000000000000000000000001000000000000000000016100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1qqjwq357\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vpssccjchz\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000001610000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") [Bound 1 1]) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000000000000000000001000000000100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1vqylkdml\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1wpssnqh9pc\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000010000000000000001610000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1wq6vgsdn\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010101000000000000000000000100000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1ypssarxha3\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101010000000000000000000000000000000000000001000100000000000000016100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "\"addr_test1yq8p4z3x\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "" "a") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000000100000000000000016100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Choice (ChoiceId "a" "\"addr_test1vqylkdml\"") []) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010100000000000000016100000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr1vy5ecqvg\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1qpsst6vycv\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1qqjwq357\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vpssccjchz\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr1vy5ecqvg\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qpsst6vycv\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000100000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1qqjwq357\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vpssccjchz\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AddValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000030100000000010100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr1vy5ecqvg\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qpsst6vycv\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000161000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1qqjwq357\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vpssccjchz\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) "a"] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "61" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wpssnqh9pc\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000016100000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1wq6vgsdn\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1ypssarxha3\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000161000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1yq8p4z3x\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "a" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr1vy5ecqvg\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000001000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qpsst6vycv\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000100000000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1qqjwq357\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vpssccjchz\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000001000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1wq6vgsdn\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000010000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1ypssarxha3\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000100010000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "\"addr_test1yq8p4z3x\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000001000100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000010000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (ChoiceValue (ChoiceId "a" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000001610000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Cond FalseObs (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000b0a0100000000010100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (Constant 1)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (DivValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000060100000000010100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (MulValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000050100000000010100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (NegValue (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000020100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (SubValue (Constant 1) (Constant 1))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000040100000000010100000000010000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "")) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") (UseValue "a")) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalEnd) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "") TimeIntervalStart) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "" "a") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1vqylkdml\"" (Token "61" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wpssnqh9pc\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1wq6vgsdn\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1ypssarxha3\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "\"addr_test1yq8p4z3x\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1vqylkdml\"" "a" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000000010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1wpssnqh9pc\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000001000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1wq6vgsdn\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1ypssarxha3\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010000000000000000000000000100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "\"addr_test1yq8p4z3x\"" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Deposit "a" "\"addr_test1vqylkdml\"" (Token "" "") (AvailableMoney "\"addr_test1vqylkdml\"" (Token "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010100010000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (AndObs FalseObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102000a0a0000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" ""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr1vy5ecqvg\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000001000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qpsst6vycv\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010203000000000000000000000000000000000000000100000000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1qqjwq357\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000001000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vpssccjchz\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wpssnqh9pc\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000001000000000000000161000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1wq6vgsdn\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020300000000000000000000010000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1ypssarxha3\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000001010203000000000000000000000000000000000000000100010000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "\"addr_test1yq8p4z3x\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000000000000000000000000001000100000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "" "a"))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000000010000000000000001610000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ChoseSomething (ChoiceId "a" "\"addr_test1vqylkdml\""))) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102030000000000000001610000000000000000000000000000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (NotObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102020a0000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (OrObs FalseObs FalseObs)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102010a0a0000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueEQ TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020808080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueGE TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020408080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueGT TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020508080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueLE TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020708080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify (ValueLT TimeIntervalStart TimeIntervalStart)) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020608080000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify FalseObs) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000101020a0000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [MerkleizedCase (Notify TrueObs) ""] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000010102090000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left (When [] (POSIXTime {getPOSIXTime = 1}) Close))) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000100 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 0101000000010000000000000000000000000000000000000000000000000000000000000000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Right "")) +Binary: 010100000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Right "61")) +Binary: 01010000000100000000000000000000000000000000000000000000000000000000000000000000000001000000000000000161 +Show: MsgExec (Create Nothing MarloweV1 (WalletAddresses {changeAddress = "61", extraAddresses = fromList [], collateralUtxos = fromList []}) Nothing RoleTokensNone (MarloweTransactionMetadata {marloweMetadata = Nothing, transactionMetadata = TransactionMetadata {unTransactionMetadata = fromList []}}) Nothing (Left Close)) +Binary: 010100000001000000000000000001610000000000000000000000000000000000000000000000000000000000 Show: MsgExec (Submit ReferenceTxInsScriptsInlineDatumsInBabbageEra (ShelleyTx ShelleyBasedEraBabbage (AlonzoTx {body = TxBodyConstr BabbageTxBodyRaw {btbrSpendInputs = fromList [TxIn (TxId {unTxId = SafeHash "0000000000000000000000000000000000000000000000000000000000000000"}) (TxIx 0)], btbrCollateralInputs = fromList [], btbrReferenceInputs = fromList [], btbrOutputs = StrictSeq {fromStrict = fromList [Sized {sizedValue = (Addr Mainnet (KeyHashObj (KeyHash "0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07")) StakeRefNull,MaryValue 1 (MultiAsset (fromList [])),NoDatum,SNothing), sizedSize = 35}]}, btbrCollateralReturn = SNothing, btbrTotalCollateral = SNothing, btbrCerts = StrictSeq {fromStrict = fromList []}, btbrWithdrawals = Withdrawals {unWithdrawals = fromList []}, btbrTxFee = Coin 1, btbrValidityInterval = ValidityInterval {invalidBefore = SNothing, invalidHereafter = SNothing}, btbrUpdate = SNothing, btbrReqSignerHashes = fromList [], btbrMint = MultiAsset (fromList []), btbrScriptIntegrityHash = SNothing, btbrAuxDataHash = SNothing, btbrTxNetworkId = SNothing} (blake2b_256: SafeHash "1c382f05a565671aa21e4bbf16c20cab0dcae845485bc69685e36a5bff86d8aa"), wits = AlonzoTxWitsRaw {atwrAddrTxWits = fromList [], atwrBootAddrTxWits = fromList [], atwrScriptTxWits = fromList [], atwrDatsTxWits = TxDatsConstr TxDatsRaw (fromList []) (blake2b_256: SafeHash "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0"), atwrRdmrsTxWits = RedeemersConstr RedeemersRaw (fromList []) (blake2b_256: SafeHash "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0")} (blake2b_256: SafeHash "d36a2619a672494604e11bb447cbcf5231e9f2ba25c2169177edc941bd50ad6c"), isValid = IsValid True, auxiliaryData = SNothing}))) Binary: 010400000000000000005284a300818258200000000000000000000000000000000000000000000000000000000000000000000181a200581d610a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e0701010201a0f5f6 Show: MsgExec (Submit ReferenceTxInsScriptsInlineDatumsInConwayEra (ShelleyTx ShelleyBasedEraConway (AlonzoTx {body = TxBodyConstr ConwayTxBodyRaw {ctbrSpendInputs = fromList [TxIn (TxId {unTxId = SafeHash "0000000000000000000000000000000000000000000000000000000000000000"}) (TxIx 0)], ctbrCollateralInputs = fromList [], ctbrReferenceInputs = fromList [], ctbrOutputs = StrictSeq {fromStrict = fromList [Sized {sizedValue = (Addr Mainnet (KeyHashObj (KeyHash "0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07")) StakeRefNull,MaryValue 1 (MultiAsset (fromList [])),NoDatum,SNothing), sizedSize = 35}]}, ctbrCollateralReturn = SNothing, ctbrTotalCollateral = SNothing, ctbrCerts = StrictSeq {fromStrict = fromList []}, ctbrWithdrawals = Withdrawals {unWithdrawals = fromList []}, ctbrTxfee = Coin 1, ctbrVldt = ValidityInterval {invalidBefore = SNothing, invalidHereafter = SNothing}, ctbrReqSignerHashes = fromList [], ctbrMint = MultiAsset (fromList []), ctbrScriptIntegrityHash = SNothing, ctbrAuxDataHash = SNothing, ctbrTxNetworkId = SNothing, ctbrVotingProcedures = StrictSeq {fromStrict = fromList []}, ctbrProposalProcedures = StrictSeq {fromStrict = fromList []}} (blake2b_256: SafeHash "1c382f05a565671aa21e4bbf16c20cab0dcae845485bc69685e36a5bff86d8aa"), wits = AlonzoTxWitsRaw {atwrAddrTxWits = fromList [], atwrBootAddrTxWits = fromList [], atwrScriptTxWits = fromList [], atwrDatsTxWits = TxDatsConstr TxDatsRaw (fromList []) (blake2b_256: SafeHash "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0"), atwrRdmrsTxWits = RedeemersConstr RedeemersRaw (fromList []) (blake2b_256: SafeHash "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0")} (blake2b_256: SafeHash "d36a2619a672494604e11bb447cbcf5231e9f2ba25c2169177edc941bd50ad6c"), isValid = IsValid True, auxiliaryData = SNothing}))) @@ -2328,8 +2328,6 @@ Show: MsgFail EmptyPayouts Binary: 03030000000102 Show: MsgFail ProtocolParamNoUTxOCostPerByte Binary: 03010000000108 -Show: MsgFail RequiresSingleThreadToken -Binary: 0301000000010a Show: MsgFail ScriptOutputNotFound Binary: 03020000000102 Show: MsgFail TipAtGenesis diff --git a/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs b/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs index 770b285c8d..3479e0496c 100644 --- a/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs +++ b/marlowe-runtime/gen/Language/Marlowe/Runtime/Transaction/Gen.hs @@ -111,8 +111,7 @@ instance Arbitrary HelperScript where instance Arbitrary Destination where arbitrary = frequency - [ (30, ToAddress <$> arbitrary) - , (2, pure ToSelf) + [ (15, ToAddress <$> arbitrary) , (1, ToScript <$> arbitrary) ] shrink = genericShrink @@ -141,7 +140,10 @@ instance Arbitrary RoleTokensConfig where , (10, RoleTokensUsePolicy <$> arbitrary <*> arbitrary) , (10, RoleTokensMint <$> arbitrary) ] - shrink = genericShrink + shrink = \case + RoleTokensNone -> [] + RoleTokensUsePolicy policy dist -> uncurry RoleTokensUsePolicy <$> shrink (policy, dist) + RoleTokensMint mint -> RoleTokensMint <$> shrink mint instance Arbitrary SubmitStatus where arbitrary = elements [Submitting, Accepted] @@ -201,7 +203,6 @@ instance Arbitrary CreateError where , CreateLoadMarloweContextFailed <$> arbitrary , CreateBuildupFailed <$> arbitrary , pure CreateToCardanoError - , pure RequiresSingleThreadToken ] shrink = genericShrink @@ -347,6 +348,7 @@ instance ArbitraryCommand MarloweTxCommand where <*> arbitrary <*> arbitrary <*> arbitrary + <*> arbitrary TagApplyInputs Core.MarloweV1 -> ApplyInputs Core.MarloweV1 <$> arbitrary @@ -385,35 +387,43 @@ instance ArbitraryCommand MarloweTxCommand where TagWithdraw Core.MarloweV1 -> arbitrary TagSubmit -> arbitrary shrinkCommand = \case - Create staking Core.MarloweV1 wallet roleConfig meta minAda contract -> + Create staking Core.MarloweV1 wallet thread roleConfig meta minAda contract -> concat [ Create <$> shrink staking <*> pure Core.MarloweV1 <*> pure wallet + <*> pure thread <*> pure roleConfig <*> pure meta <*> pure minAda <*> pure contract , Create staking Core.MarloweV1 <$> shrink wallet + <*> pure thread <*> pure roleConfig <*> pure meta <*> pure minAda <*> pure contract , Create staking Core.MarloweV1 wallet + <$> shrink thread + <*> pure roleConfig + <*> pure meta + <*> pure minAda + <*> pure contract + , Create staking Core.MarloweV1 wallet thread <$> shrink roleConfig <*> pure meta <*> pure minAda <*> pure contract - , Create staking Core.MarloweV1 wallet roleConfig + , Create staking Core.MarloweV1 wallet thread roleConfig <$> shrink meta <*> pure minAda <*> pure contract - , Create staking Core.MarloweV1 wallet roleConfig meta + , Create staking Core.MarloweV1 wallet thread roleConfig meta <$> shrink minAda <*> pure contract - , Create staking Core.MarloweV1 wallet roleConfig meta minAda + , Create staking Core.MarloweV1 wallet thread roleConfig meta minAda <$> shrink contract ] ApplyInputs Core.MarloweV1 wallet contractId meta minValid maxValid inputs -> @@ -486,6 +496,7 @@ instance CommandVariations MarloweTxCommand where `varyAp` variations `varyAp` variations `varyAp` variations + `varyAp` variations TagApplyInputs Core.MarloweV1 -> ApplyInputs Core.MarloweV1 <$> variations diff --git a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/BuildConstraintsSpec.hs b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/BuildConstraintsSpec.hs index 3bc3585553..0281400659 100644 --- a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/BuildConstraintsSpec.hs +++ b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/BuildConstraintsSpec.hs @@ -8,19 +8,17 @@ module Language.Marlowe.Runtime.Transaction.BuildConstraintsSpec ( ) where import Cardano.Api (BabbageEra, ConsensusMode (..), EraHistory (EraHistory), SlotNo (SlotNo)) +import qualified Cardano.Api as C import Cardano.Api.Shelley (ReferenceTxInsScriptsInlineDatumsSupportedInEra (..)) import Control.Monad.Trans.Except (runExcept, runExceptT) -import Data.Bifunctor (second) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS import Data.Function (on) import Data.Functor ((<&>)) import Data.Functor.Identity (Identity (..)) -import Data.List (isPrefixOf, nub) -import qualified Data.List.NonEmpty as NE +import Data.List (isPrefixOf) import Data.Map (Map) import qualified Data.Map as Map -import Data.Maybe (maybeToList) +import qualified Data.Map.NonEmpty as NEMap +import Data.Maybe (fromJust, maybeToList) import Data.SOP.Counting (Exactly (..)) import Data.SOP.Strict (K (..), NP (..)) import qualified Data.Set as Set @@ -31,6 +29,7 @@ import GHC.Generics (Generic) import qualified Language.Marlowe.Core.V1.Semantics as Semantics import qualified Language.Marlowe.Core.V1.Semantics.Types as Semantics import qualified Language.Marlowe.Core.V1.Semantics.Types.Address as Semantics +import Language.Marlowe.Runtime.Cardano.Api (fromCardanoPolicyId, toCardanoPlutusScript) import Language.Marlowe.Runtime.ChainSync.Api (Lovelace, PlutusScript (..), toUTxOsList) import qualified Language.Marlowe.Runtime.ChainSync.Api as Chain import Language.Marlowe.Runtime.Core.Api ( @@ -50,9 +49,9 @@ import Language.Marlowe.Runtime.Transaction.Api ( ApplyInputsError (..), CreateError, Destination (..), + Mint (..), + MintRole (..), RoleTokensConfig (..), - mkMint, - unMint, ) import qualified Language.Marlowe.Runtime.Transaction.Api as Transaction.Api import Language.Marlowe.Runtime.Transaction.BuildConstraints ( @@ -62,7 +61,7 @@ import Language.Marlowe.Runtime.Transaction.BuildConstraints ( ) import qualified Language.Marlowe.Runtime.Transaction.BuildConstraints as BuildConstraints import Language.Marlowe.Runtime.Transaction.Constraints ( - HelperOutputConstraints (..), + Distribution (..), MarloweInputConstraints (..), MarloweOutputConstraints (..), PayoutContext (..), @@ -71,7 +70,7 @@ import Language.Marlowe.Runtime.Transaction.Constraints ( WalletContext (..), ) import qualified Language.Marlowe.Runtime.Transaction.Constraints as TxConstraints -import Language.Marlowe.Runtime.Transaction.ConstraintsSpec (genRole) +import qualified Language.Marlowe.Runtime.Transaction.Gen () import Ouroboros.Consensus.BlockchainTime (RelativeTime (..), SystemStart (..), mkSlotLength) import Ouroboros.Consensus.HardFork.History ( Bound (..), @@ -84,7 +83,6 @@ import Ouroboros.Consensus.HardFork.History ( ) import PlutusLedgerApi.V1 (Address (Address), Credential (PubKeyCredential), PubKeyHash (PubKeyHash), fromBuiltin) import PlutusLedgerApi.V1.Time (POSIXTime (POSIXTime)) -import qualified PlutusLedgerApi.V2 as Plutus import qualified PlutusTx.AssocMap as AM import Spec.Marlowe.Semantics.Arbitrary () import Test.Hspec (Spec, shouldBe) @@ -95,28 +93,23 @@ import Test.QuickCheck ( Property, chooseInteger, counterexample, - discard, elements, forAllShrink, genericShrink, listOf, - listOf1, oneof, suchThat, (===), + (==>), ) import qualified Test.QuickCheck as QuickCheck import Test.QuickCheck.Instances () -byteStringGen :: QuickCheck.Gen ByteString -byteStringGen = BS.pack <$> QuickCheck.arbitrary - spec :: Spec spec = do createSpec withdrawSpec buildApplyInputsConstraintsSpec - openRolesSpec createSpec :: Spec createSpec = Hspec.describe "buildCreateConstraints" do @@ -129,19 +122,16 @@ createSpec = Hspec.describe "buildCreateConstraints" do MarloweV1 -> (fmap Semantics.marloweContract <$> result) === (Right $ Just $ contract args) :: Property Hspec.QuickCheck.prop "sends the minAda deposit to the marlowe output" \(SomeCreateArgs args) -> - let result = extractMarloweAssets <$> runBuildCreateConstraints args + let result = fmap Chain.ada . extractMarloweAssets <$> runBuildCreateConstraints args + in case version args of + MarloweV1 -> result === (Right $ Just $ minAda args) + :: Property + Hspec.QuickCheck.prop "sends minted role tokens to the right destinations" \(SomeCreateArgs args) -> + let result = extractSentRoleTokens <$> runBuildCreateConstraints args + expected = getRolesForAddresses $ roleTokensConfig args in case version args of - MarloweV1 -> result === (Right $ Just $ Chain.Assets (minAda args) mempty) + MarloweV1 -> result === Right expected :: Property - Hspec.QuickCheck.prop "sends minted role tokens" \(SomeCreateArgs args) -> - case roleTokensConfig args of - RoleTokensMint mint -> - let result = extractSentRoleTokens <$> runBuildCreateConstraints args - expected = fst <$> unMint mint - in case version args of - MarloweV1 -> result === Right expected - :: Property - _ -> discard Hspec.QuickCheck.prop "total balance == marlowe output assets" \(SomeCreateArgs args) -> let result = runBuildCreateConstraints args mDatum = extractMarloweDatum <$> result @@ -180,6 +170,19 @@ createSpec = Hspec.describe "buildCreateConstraints" do in case version args of MarloweV1 -> result === Right (metadata args) :: Property + Hspec.QuickCheck.prop "Adds thread tokens to the initial state" \(SomeCreateArgs args) -> + hasOpenRoles args ==> + let threadTokenAssetId = Chain.AssetId (getPolicyId args) $ threadName args + constraints = runBuildCreateConstraints args + assets = extractMarloweAssets <$> constraints + result = (Map.lookup threadTokenAssetId . Chain.unTokens . Chain.tokens =<<) <$> assets + in case version args of + MarloweV1 -> + counterexample (show threadTokenAssetId) + . counterexample (show constraints) + . counterexample (show assets) + $ result === Right (Just 1) + :: Property where emptyStateProp :: (Eq a, Show a) => String -> (CreateArgs 'V1 -> Semantics.State -> a) -> Spec emptyStateProp name f = Hspec.QuickCheck.prop name \(SomeCreateArgs args) -> @@ -193,16 +196,67 @@ createSpec = Hspec.describe "buildCreateConstraints" do (Right (Just $ Semantics.emptyState 0)) :: Property +hasOpenRoles :: CreateArgs v -> Bool +hasOpenRoles CreateArgs{..} = case roleTokensConfig of + RoleTokensNone -> False + RoleTokensMint (Mint mint) -> any (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) mint + RoleTokensUsePolicy _ dist -> any (Map.member (ToScript OpenRoleScript)) dist + +testMintingValidator :: PlutusScript +testMintingValidator = PlutusScript mempty + +getPolicyId :: CreateArgs v -> Chain.PolicyId +getPolicyId CreateArgs{..} = case roleTokensConfig of + RoleTokensNone -> "" + RoleTokensUsePolicy p _ -> p + RoleTokensMint _ -> testRoleTokensPolicyId + +testRoleTokensPolicyId :: Chain.PolicyId +testRoleTokensPolicyId = + fromCardanoPolicyId + . C.PolicyId + . C.hashScript + . C.PlutusScript C.PlutusScriptV2 + . fromJust + $ toCardanoPlutusScript testMintingValidator + +getRolesForAddresses :: RoleTokensConfig -> Map (Chain.TokenName, Destination) Chain.Quantity +getRolesForAddresses = + Map.filter (> 0) . \case + RoleTokensNone -> mempty + RoleTokensUsePolicy _ dist -> flattenMap dist + RoleTokensMint (Mint mint) -> flattenMap $ NEMap.toMap $ NEMap.toMap . roleTokenRecipients <$> mint + +flattenMap :: Map a (Map b c) -> Map (a, b) c +flattenMap abc = Map.fromDistinctAscList do + (a, bc) <- Map.toAscList abc + (b, c) <- Map.toAscList bc + pure ((a, b), c) + +extractSentRoleTokens + :: TxConstraints BabbageEra v + -> Map (Chain.TokenName, Destination) Chain.Quantity +extractSentRoleTokens TxConstraints{..} = case roleTokenConstraints of + RoleTokenConstraintsNone -> mempty + SpendRoleTokens{} -> mempty + MintRoleTokens _ _ mintPlan -> go mintPlan + DistributeRoleTokens mintPlan -> go mintPlan + where + go = \case + SendToScripts _ dist -> Map.fromList do + (Chain.AssetId _ token, dist') <- Map.toList dist + (dest, q) <- Map.toList dist' + pure ((token, dest), q) + SendToAddresses dist -> Map.fromList do + (Chain.AssetId _ token, dist') <- Map.toList dist + (addr, q) <- Map.toList dist' + pure ((token, ToAddress addr), q) + extractMarloweDatum :: TxConstraints BabbageEra v -> Maybe (Datum v) extractMarloweDatum TxConstraints{..} = case marloweOutputConstraints of MarloweOutput _ datum -> Just datum _ -> Nothing -extractSentRoleTokens :: TxConstraints BabbageEra v -> Map Chain.TokenName Destination -extractSentRoleTokens TxConstraints{..} = case roleTokenConstraints of - MintRoleTokens _ _ distribution -> Map.mapKeys Chain.tokenName distribution - _ -> mempty - extractMarloweAssets :: TxConstraints BabbageEra v -> Maybe Chain.Assets extractMarloweAssets TxConstraints{..} = case marloweOutputConstraints of MarloweOutput assets _ -> Just assets @@ -214,10 +268,11 @@ runBuildCreateConstraints CreateArgs{..} = <$> runIdentity ( buildCreateConstraints -- Since we don't actually run the script, we can just return empty bytes - (\_ _ -> pure $ PlutusScript mempty) + (\_ _ -> pure testMintingValidator) ReferenceTxInsScriptsInlineDatumsInBabbageEra version walletContext + threadName roleTokensConfig metadata minAda @@ -228,6 +283,7 @@ runBuildCreateConstraints CreateArgs{..} = data CreateArgs v = CreateArgs { version :: MarloweVersion v , walletContext :: WalletContext + , threadName :: Chain.TokenName , roleTokensConfig :: RoleTokensConfig , metadata :: MarloweTransactionMetadata , minAda :: Lovelace @@ -236,38 +292,35 @@ data CreateArgs v = CreateArgs deriving (Generic) instance Arbitrary (CreateArgs 'V1) where - arbitrary = + arbitrary = do CreateArgs MarloweV1 <$> arbitrary `suchThat` notEmptyWalletContext <*> arbitrary + <*> (noMetadata <$> arbitrary) <*> arbitrary <*> ((+ safeLovelace) . Chain.Lovelace <$> arbitrary) <*> arbitrary shrink args@CreateArgs{..} = concat - [ [args{walletContext = x} | x <- shrink walletContext] + [ [args{contract = x} | x <- shrink contract] + , [args{walletContext = x} | x <- shrink walletContext] + , [args{threadName = x} | x <- shrink threadName] , [args{roleTokensConfig = x} | x <- shrink roleTokensConfig] , [args{metadata = x} | x <- shrink metadata] - , [args{contract = x} | x <- shrink contract] ] +noMetadata :: RoleTokensConfig -> RoleTokensConfig +noMetadata = \case + RoleTokensMint (Mint mint) -> RoleTokensMint $ Mint $ noMetadata' <$> mint + x -> x + +noMetadata' :: MintRole -> MintRole +noMetadata' MintRole{..} = MintRole{roleMetadata = Nothing, ..} + instance Arbitrary WalletContext where arbitrary = WalletContext <$> arbitrary <*> arbitrary <*> arbitrary shrink = genericShrink -instance Arbitrary RoleTokensConfig where - arbitrary = - oneof - [ pure RoleTokensNone - , RoleTokensUsePolicy . Chain.PolicyId <$> byteStringGen - , RoleTokensMint . mkMint . NE.fromList <$> listOf1 ((,) <$> genRole <*> ((,Nothing) . ToAddress <$> arbitrary)) - ] - shrink = \case - RoleTokensNone -> [] - RoleTokensUsePolicy _ -> [RoleTokensNone] - RoleTokensMint _ -> [RoleTokensNone] - RoleTokensUsePolicyWithOpenRoles{} -> [RoleTokensNone] - notEmptyWalletContext :: WalletContext -> Bool notEmptyWalletContext WalletContext{..} = not $ null $ toUTxOsList availableUtxos @@ -302,7 +355,6 @@ withdrawSpec = Hspec.describe "buildWithdrawConstraints" do , payToAddresses = Map.empty , payToRoles = Map.empty , marloweOutputConstraints = TxConstraints.MarloweOutputConstraintsNone - , helperOutputConstraints = mempty , signatureConstraints = Set.empty , metadataConstraints = emptyMarloweTransactionMetadata } @@ -772,97 +824,3 @@ buildApplyInputsConstraintsSpec = Left _ -> counterexample "Unexpected transaction failure" False :: QuickCheck.Gen Property - -openRolesSpec :: Spec -openRolesSpec = Hspec.describe "Open Role Constraints" do - let runBuild CreateArgs{..} = - do - roleTokensConfig' <- genOpenRolesConfig - let result = - fmap snd . runIdentity $ - buildCreateConstraints - (\_ _ -> pure $ PlutusScript mempty) - ReferenceTxInsScriptsInlineDatumsInBabbageEra - version - walletContext - roleTokensConfig' - metadata - minAda - (\(Chain.Assets ada tokens) -> Chain.Assets ada tokens) - contract - policyId = - case (version, extractMarloweDatum <$> result) of - (MarloweV1, Right (Just datum)) -> Semantics.rolesCurrency $ Semantics.marloweParams datum - _ -> "" - filterRoles destination = - case roleTokensConfig' of - RoleTokensMint mint -> - Set.fromList - . fmap (Chain.AssetId . Chain.PolicyId . Plutus.fromBuiltin $ Plutus.unCurrencySymbol policyId) - . Map.keys - . Map.filter ((== destination) . fst) - $ unMint mint - _ -> mempty - pure (policyId, filterRoles ToSelf, filterRoles $ ToScript OpenRoleScript, result) - toChainPolicyId = Chain.PolicyId . Plutus.fromBuiltin . Plutus.unCurrencySymbol - toChainAssetId (Semantics.Token p n) = - Chain.AssetId - (toChainPolicyId p) - (Chain.TokenName . Plutus.fromBuiltin . Plutus.unTokenName $ n) - Hspec.QuickCheck.prop "adds thread tokens to initial state" \(SomeCreateArgs args) -> - do - (policyId, threadTokens, _, result) <- fmap (second extractMarloweDatum) <$> runBuild args - let isRoleToken ((_, Semantics.Token policy _), 1) = policy == policyId - isRoleToken _ = False - getThreadTokens = - Set.fromList - . fmap (toChainAssetId . snd . fst) - . filter isRoleToken - . AM.toList - . Semantics.accounts - . Semantics.marloweState - pure $ - case version args of - MarloweV1 -> (maybe mempty getThreadTokens <$> result) === Right threadTokens - :: QuickCheck.Gen Property - Hspec.QuickCheck.prop "includes constraints for all open-role tokens" \(SomeCreateArgs args) -> - do - (policyId, _, openRoleTokens, result) <- fmap (second helperOutputConstraints) <$> runBuild args - let actual = Set.map (Chain.AssetId $ toChainPolicyId policyId) . Map.keysSet <$> result - pure $ - case version args of - MarloweV1 -> actual === Right openRoleTokens - :: QuickCheck.Gen Property - Hspec.QuickCheck.prop "open-role datum references thread token" \(SomeCreateArgs args) -> - do - (_, threadTokens, _, result) <- fmap (second helperOutputConstraints) <$> runBuild args - let expected = - if result == Right mempty - then mempty - else Set.map (Chain.B . Chain.unTokenName . Chain.tokenName) threadTokens - actual = Set.fromList . foldr (\(HelperOutput _ datum) -> (datum :)) mempty <$> result - pure $ - case version args of - MarloweV1 -> actual === Right expected - :: QuickCheck.Gen Property - Hspec.QuickCheck.prop "open-role validator UTxO contains open-role token" \(SomeCreateArgs args) -> - do - (_, _, openRoleTokens, result) <- fmap (second helperOutputConstraints) <$> runBuild args - let expected = - Map.fromList - . fmap (\token@(Chain.AssetId _ name) -> (name, Chain.Assets 0 . Chain.Tokens $ Map.singleton token 1)) - $ Set.toList openRoleTokens - actual = fmap (\(HelperOutput (Chain.Assets _ tokens) _) -> Chain.Assets 0 tokens) <$> result - pure $ - case version args of - MarloweV1 -> actual === Right expected - :: QuickCheck.Gen Property - -genOpenRolesConfig :: QuickCheck.Gen RoleTokensConfig -genOpenRolesConfig = - do - roles <- nub <$> listOf1 genRole - destinations <- (ToSelf :) <$> listOf (oneof [pure $ ToScript OpenRoleScript, ToAddress <$> arbitrary]) - pure $ - RoleTokensMint . mkMint . NE.fromList $ - zip roles ((,Nothing) <$> destinations) diff --git a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs index 6b38e44b4b..419f0d5eeb 100644 --- a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs +++ b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs @@ -64,9 +64,10 @@ import Language.Marlowe.Runtime.Core.Api ( toChainPayoutDatum, ) import qualified Language.Marlowe.Runtime.Core.Gen () -import Language.Marlowe.Runtime.Core.ScriptRegistry (ReferenceScriptUtxo (..)) -import Language.Marlowe.Runtime.Transaction.Api (Destination (ToAddress)) +import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript (OpenRoleScript), ReferenceScriptUtxo (..)) +import Language.Marlowe.Runtime.Transaction.Api (Destination (..)) import Language.Marlowe.Runtime.Transaction.Constraints +import qualified Language.Marlowe.Runtime.Transaction.Gen () import qualified Language.Marlowe.Scripts.Types as V1 import Ouroboros.Consensus.BlockchainTime (RelativeTime (..), mkSlotLength) import Ouroboros.Consensus.HardFork.History ( @@ -102,8 +103,8 @@ spec = do protocol <- hedgehog genProtocolParameters scriptCtx <- genScriptContext marloweVersion constraints walletContext <- genWalletContext marloweVersion constraints - let (scriptContextStr, walletContextStr) = case marloweVersion of MarloweV1 -> (show scriptCtx, show walletContext) - marloweUtxo = case scriptCtx of + helpersContext <- genHelperContext constraints + let marloweUtxo = case scriptCtx of Left MarloweContext{scriptOutput = Just TransactionScriptOutput{..}} -> Chain.UTxOs $ Map.singleton utxo $ @@ -128,17 +129,14 @@ spec = do marloweVersion scriptCtx walletContext - (HelpersContext mempty "" mempty) + helpersContext constraints - mViolations = violations marloweVersion scriptCtx utxos constraints <$> result + mViolations = violations marloweVersion scriptCtx helpersContext utxos constraints <$> result theProperty :: Property theProperty = case marloweVersion of MarloweV1 -> Right [] === mViolations pure $ - counterexample scriptContextStr $ - counterexample walletContextStr $ - counterexample (show utxos) $ - either (const theProperty) (flip counterexample theProperty . show) result + either (const theProperty) (flip counterexample theProperty . show) result describe "adjustTxForMinUtxo" do prop "Marlowe output is NOT adjusted" do @@ -851,6 +849,31 @@ spec = do else label "non-balanceable test cases" True Left _ -> label "non-balanceable test cases" True +genHelperContext :: TxConstraints BabbageEra v -> Gen HelpersContext +genHelperContext TxConstraints{..} = do + scriptHash <- hedgehog genScriptHash + let address = + fromCardanoAddressAny $ + AddressShelley $ + makeShelleyAddress Mainnet (PaymentCredentialByScript scriptHash) NoStakeAddress + utxo <- genReferenceScriptUtxo address + let openRoleInfo = HelperScriptInfo OpenRoleScript address utxo $ fromCardanoScriptHash scriptHash + pure + HelpersContext + { currentHelperScripts = Map.singleton OpenRoleScript openRoleInfo + , helperPolicyId = case roleTokenConstraints of + MintRoleTokens _ _ dist -> go dist + DistributeRoleTokens dist -> go dist + _ -> "" + , helperScriptStates = mempty + } + where + go = \case + SendToAddresses dist -> case Map.keys dist of + Chain.AssetId p _ : _ -> p + [] -> "" + SendToScripts (Chain.AssetId p _) _ -> p + -- Generate a wallet that always has a pure ADA value of 7 and a value -- with a minimum ADA plus zero or more "nuisance" tokens genWalletWithNuisance :: MarloweVersion v -> TxConstraints BabbageEra v -> Word64 -> Gen WalletContext @@ -1079,16 +1102,15 @@ emptyTxBodyContent = violations :: MarloweVersion v -> Either (MarloweContext v) PayoutContext + -> HelpersContext -> Chain.UTxOs -> TxConstraints BabbageEra v -> TxBodyContent BuildTx BabbageEra -> [String] -violations marloweVersion scriptCtx utxos constraints txBodyContent = +violations marloweVersion scriptCtx helpersContext utxos constraints txBodyContent = fold - [ case scriptCtx of - Left marloweContext -> - ("mustMintRoleToken: " <>) <$> mustMintRoleTokenViolations marloweVersion marloweContext constraints txBodyContent - _ -> [] + [ ("mustMintRoleToken: " <>) + <$> mustMintRoleTokenViolations marloweVersion helpersContext constraints txBodyContent , ("mustSpendRoleToken: " <>) <$> mustSpendRoleTokenViolations marloweVersion utxos constraints txBodyContent , ("mustPayToAddress: " <>) <$> mustPayToAddressViolations marloweVersion constraints txBodyContent , case scriptCtx of @@ -1117,8 +1139,12 @@ check :: (Alternative m) => Bool -> a -> m a check condition msg = msg <$ guard (not condition) mustMintRoleTokenViolations - :: MarloweVersion v -> MarloweContext v -> TxConstraints BabbageEra v -> TxBodyContent BuildTx BabbageEra -> [String] -mustMintRoleTokenViolations MarloweV1 MarloweContext{..} TxConstraints{..} TxBodyContent{..} = + :: MarloweVersion v + -> HelpersContext + -> TxConstraints BabbageEra v + -> TxBodyContent BuildTx BabbageEra + -> [String] +mustMintRoleTokenViolations MarloweV1 HelpersContext{..} TxConstraints{..} TxBodyContent{..} = fold [ mintsTheCorrectNumberOfTokens , distributesTokensCorrectly @@ -1132,44 +1158,58 @@ mustMintRoleTokenViolations MarloweV1 MarloweContext{..} TxConstraints{..} TxBod ("UTxO not consumed: " <> show (Chain.renderTxOutRef txOutRef)) _ -> [] + checkDistribution expected = do + (assetId, roleDistribution) <- Map.toList expected + let tally = \case + TxOut address (TxOutValue MultiAssetInBabbageEra value) datum _ -> + case fromCardanoQuantity $ selectAsset value (toCardanoAssetId assetId) of + 0 -> id + q -> Map.insert (fromCardanoAddressInEra BabbageEra address) (q, snd $ fromCardanoTxOutDatum datum) + _ -> id + let actualDistribution = foldr tally mempty txOuts + (("roleToken: " <> show assetId <> ": ") <>) <$> do + address <- Set.toList $ Set.union (Map.keysSet roleDistribution) (Map.keysSet actualDistribution) + (("address: " <> show address <> ": ") <>) <$> do + case (Map.lookup address roleDistribution, Map.lookup address actualDistribution) of + (Nothing, Nothing) -> [] + (Just q, Nothing) -> pure $ "Expected to receive " <> show q <> " tokens, nothing sent" + (Nothing, Just q) -> pure $ "Not expected to receive tokens, got " <> show q + (Just q, Just q') -> check (q == q') ("Expected to receive " <> show q <> " tokens, got " <> show q') + + resolveDestination = \case + ToAddress addr -> addr + ToScript script -> maybe (error "open roles script not found") helperAddress $ Map.lookup script currentHelperScripts + + addDatum (Chain.AssetId _ (Chain.TokenName thread)) = \case + ToAddress _ -> (,Nothing) + ToScript _ -> (,Just $ Chain.B thread) + + expectedDistribution = \case + SendToAddresses dist -> fmap (,Nothing) <$> dist + SendToScripts thread dist -> + Map.mapKeys resolveDestination . Map.mapWithKey (addDatum thread) <$> dist + distributesTokensCorrectly = case roleTokenConstraints of - MintRoleTokens _ _ distribution -> do - (assetId, distribution) <- Map.toList distribution - (("roleToken: " <> show assetId <> ": ") <>) <$> do - let cardanoAssetId = toCardanoAssetId assetId - matches (TxOut outAddress (TxOutValue MultiAssetInBabbageEra value) _ _) - | selectAsset value cardanoAssetId > 0 = Just (fromCardanoAddressInEra BabbageEra outAddress, value) - | otherwise = Nothing - matches (TxOut _ (TxOutAdaOnly era _) _ _) = case era of {} - let matchingOuts = Map.fromList $ mapMaybe matches txOuts - case matchingOuts of - [(outAddress, value)] -> do - fold - [ check - (fmap fst (valueToList value) == [cardanoAssetId]) - ("Output contains extra tokens: " <> show (fmap fst (valueToList value))) - , check - (selectAsset value cardanoAssetId == 1) - ("Output quantity for token expected to equal 1, was: " <> show (selectAsset value cardanoAssetId)) - , check - (ToAddress (fromCardanoAddressInEra BabbageEra outAddress) == address) - ("Output sent to wrong address: " <> show outAddress) - ] - [] -> pure "No outputs contain role token" - _ -> pure "Multiple outputs contain role token" - _ -> [] + MintRoleTokens _ _ dist -> checkDistribution $ expectedDistribution dist + DistributeRoleTokens dist -> checkDistribution $ expectedDistribution dist + SpendRoleTokens{} -> [] + RoleTokenConstraintsNone -> [] mintsTheCorrectNumberOfTokens = case roleTokenConstraints of - MintRoleTokens _ _ distribution -> case txMintValue of - TxMintNone - | Map.null distribution -> [] - | otherwise -> ["No tokens minted"] - TxMintValue MultiAssetInBabbageEra value _ -> do - (assetId, quantity) <- Map.toList $ sum <$> distribution - (("roleToken: " <> show assetId <> ": ") <>) <$> do - let cardanoAssetId = toCardanoAssetId assetId - let quantityMinted = fromCardanoQuantity $ selectAsset value cardanoAssetId - check (quantityMinted == quantity) ("Expected to mint " <> show quantity <> " token(s), found " <> show quantityMinted) + MintRoleTokens _ _ dist -> do + let mintedQuantities = case dist of + SendToAddresses dist' -> sum <$> dist' + SendToScripts _ dist' -> sum <$> dist' + case txMintValue of + TxMintNone + | Map.null mintedQuantities -> [] + | otherwise -> ["No tokens minted"] + TxMintValue MultiAssetInBabbageEra value _ -> do + (assetId, quantity) <- Map.toList mintedQuantities + (("roleToken: " <> show assetId <> ": ") <>) <$> do + let cardanoAssetId = toCardanoAssetId assetId + let quantityMinted = fromCardanoQuantity $ selectAsset value cardanoAssetId + check (quantityMinted == quantity) ("Expected to mint " <> show quantity <> " token(s), found " <> show quantityMinted) _ -> [] mustSpendRoleTokenViolations @@ -1371,7 +1411,7 @@ instance Show SomeTxConstraints where instance Arbitrary SomeTxConstraints where arbitrary = oneof - [ SomeTxConstraints MarloweV1 <$> genV1MarloweConstraints + [ SomeTxConstraints MarloweV1 <$> (genV1MarloweConstraints =<< arbitrary) , SomeTxConstraints MarloweV1 <$> genV1PayoutConstraints ] shrink (SomeTxConstraints marloweVersion constraints) = @@ -1405,22 +1445,27 @@ shrinkMap shrinkItem = fmap Map.fromDistinctAscList . shrinkList (traverse shrin shrinkRoleTokenConstraints :: RoleTokenConstraints BabbageEra -> [RoleTokenConstraints BabbageEra] shrinkRoleTokenConstraints = \case RoleTokenConstraintsNone -> [] - MintRoleTokens ref witness distribution -> - RoleTokenConstraintsNone - : DistributeRoleTokens distribution - : (MintRoleTokens ref witness <$> shrinkMap shrinkDistribution distribution) - DistributeRoleTokens distribution -> - RoleTokenConstraintsNone - : (DistributeRoleTokens <$> shrinkMap shrinkDistribution distribution) - SpendRoleTokens roleTokens -> - RoleTokenConstraintsNone - : (SpendRoleTokens <$> shrinkSet shrinkNothing roleTokens) - -shrinkDistribution :: Map Destination Chain.Quantity -> [Map Destination Chain.Quantity] -shrinkDistribution = shrinkMap \q -> do - q' <- shrink q - guard $ q' > 0 - pure q' + MintRoleTokens ref witness dist -> + DistributeRoleTokens dist : (MintRoleTokens ref witness <$> shrinkDistribution dist) + DistributeRoleTokens dist -> DistributeRoleTokens <$> shrinkDistribution dist + SpendRoleTokens roleTokens -> SpendRoleTokens <$> shrinkSet shrinkNothing roleTokens + +shrinkDistribution :: Distribution -> [Distribution] +shrinkDistribution = \case + SendToAddresses dist -> SendToAddresses <$> shrinkMap (shrinkMap shrink) dist + SendToScripts thread dist -> + fold + [ do + thread' <- shrink thread + pure $ SendToScripts thread' $ Map.delete thread' dist + , do + dist' <- shrinkMap (shrinkMap shrink) dist + pure $ SendToScripts thread $ Map.delete thread dist' + ] + +demoteDestination :: (Destination, a) -> Maybe (Chain.Address, a) +demoteDestination (ToAddress addr, a) = Just (addr, a) +demoteDestination _ = Nothing shrinkMarloweOutputConstraints :: MarloweOutputConstraints 'V1 -> [MarloweOutputConstraints 'V1] shrinkMarloweOutputConstraints = \case @@ -1431,24 +1476,27 @@ shrinkMarloweOutputConstraints = \case , [MarloweOutput assets datum' | datum' <- shrink datum] ] -genV1MarloweConstraints :: Gen (TxConstraints BabbageEra 'V1) -genV1MarloweConstraints = sized \n -> +genV1MarloweConstraints :: Chain.AssetId -> Gen (TxConstraints BabbageEra 'V1) +genV1MarloweConstraints threadToken = sized \n -> frequency - [ (n, resize (n `div` 2) $ (<>) <$> genV1MarloweConstraints <*> genV1MarloweConstraints) + [ (n, resize (n `div` 2) $ (<>) <$> genV1MarloweConstraints threadToken <*> genV1MarloweConstraints threadToken) , (1, pure mempty) , ( 1 , mustMintRoleToken <$> arbitrary <*> genMintScriptWitness - <*> genRoleToken False - <*> (ToAddress <$> arbitrary) - <*> arbitrary `suchThat` (> 0) + <*> genRoleToken threadToken False + <*> frequency + [ (15, Left <$> arbitrary) + , (1, Right . (threadToken,) <$> arbitrary) + ] + <*> arbitrary ) - , (1, mustSpendRoleToken <$> genRoleToken True) + , (1, mustSpendRoleToken <$> genRoleToken threadToken True) , (1, mustPayToAddress <$> arbitrary <*> arbitrary) , (1, mustSendMarloweOutput <$> arbitrary <*> genDatum) - , (1, mustPayToRole <$> arbitrary <*> genRoleToken True) + , (1, mustPayToRole <$> arbitrary <*> genRoleToken threadToken True) , (1, uncurry mustConsumeMarloweOutput <$> genValidityInterval <*> genInputs) , (1, requiresSignature <$> arbitrary) , (1, requiresMetadata <$> arbitrary) @@ -1459,7 +1507,7 @@ genV1PayoutConstraints = sized \n -> frequency [ (n, resize (n `div` 2) $ (<>) <$> genV1PayoutConstraints <*> genV1PayoutConstraints) , (1, pure mempty) - , (1, mustSpendRoleToken <$> genRoleToken True) + , (1, mustSpendRoleToken <$> (flip genRoleToken True =<< arbitrary)) , (1, mustPayToAddress <$> arbitrary <*> arbitrary) , (1, mustConsumePayout <$> arbitrary) , (1, requiresSignature <$> arbitrary) @@ -1499,14 +1547,11 @@ genMintScriptWitness = <*> (ExecutionUnits <$> (fromIntegral @Word32 <$> arbitrary) <*> (fromIntegral @Word32 <$> arbitrary)) ] -genRoleToken :: Bool -> Gen Chain.AssetId -genRoleToken includeAda = +genRoleToken :: Chain.AssetId -> Bool -> Gen Chain.AssetId +genRoleToken (Chain.AssetId p _) includeAda = oneof $ catMaybes - [ pure $ - Chain.AssetId - <$> (hedgehog $ fromCardanoPolicyId . PolicyId <$> genScriptHash) - <*> genRole + [ pure $ Chain.AssetId p <$> genRole , guard includeAda $> pure (Chain.AssetId "" "") ] @@ -1589,7 +1634,9 @@ genPayoutOutputs scriptAddresses TxConstraints{..} = (<>) <$> required <*> arbit required = Map.fromList <$> for (Set.toList payoutInputConstraints) \payout -> (payout,) - <$> genTransactionOutput (elements scriptAddresses) (Just . toChainPayoutDatum MarloweV1 <$> genRoleToken True) + <$> genTransactionOutput + (elements scriptAddresses) + (Just . toChainPayoutDatum MarloweV1 <$> (flip genRoleToken True =<< arbitrary)) genReferenceScriptUtxo :: Chain.Address -> Gen ReferenceScriptUtxo genReferenceScriptUtxo address = @@ -1625,7 +1672,7 @@ shrinkWalletUtxos TxConstraints{..} collateralUtxos = filter (isValid . Chain.un hasRoleTokens = case roleTokenConstraints of RoleTokenConstraintsNone -> const True MintRoleTokens txOutRef _ _ -> Map.member txOutRef - DistributeRoleTokens distribution -> \availableUtxos -> case Chain.Tokens $ sum <$> distribution of + DistributeRoleTokens distribution -> \availableUtxos -> case toTokens distribution of requiredTotals -> case foldMap Chain.assets availableUtxos of walletAssets -> walletAssets `sufficient` assetsFromTokens requiredTotals SpendRoleTokens roleTokens -> @@ -1634,6 +1681,12 @@ shrinkWalletUtxos TxConstraints{..} collateralUtxos = filter (isValid . Chain.un . foldMap (Map.keysSet . Chain.unTokens . (.assets.tokens)) hasCollateralUtxos = Set.null . Set.difference collateralUtxos . Map.keysSet +toTokens :: Distribution -> Chain.Tokens +toTokens = + Chain.Tokens . \case + SendToAddresses dist -> sum <$> dist + SendToScripts thread dist -> Map.insert thread 1 $ sum <$> dist + sufficient :: Chain.Assets -> Chain.Assets -> Bool sufficient available required = on (>=) Chain.ada available required @@ -1668,7 +1721,12 @@ genWalletUtxos TxConstraints{..} = (<>) <$> required <*> extra required = case roleTokenConstraints of RoleTokenConstraintsNone -> pure mempty MintRoleTokens txOutRef _ _ -> Chain.UTxOs . Map.singleton txOutRef <$> genTransactionOutput arbitrary (pure Nothing) - MintRoleTokens txOutRef _ _ -> Chain.UTxOs . Map.singleton txOutRef <$> genTransactionOutput arbitrary (pure Nothing) + DistributeRoleTokens distribution -> + fold <$> for (Map.toList $ Chain.unTokens $ toTokens distribution) \(roleToken, q) -> do + txOutRef <- arbitrary + txOut <- genTransactionOutput arbitrary (pure Nothing) + let roleTokenAssets = Chain.Assets 0 $ Chain.Tokens $ Map.singleton roleToken q + pure $ Chain.UTxOs $ Map.singleton txOutRef $ txOut{Chain.assets = Chain.assets txOut <> roleTokenAssets} SpendRoleTokens roleTokens -> fold <$> for (Set.toList roleTokens) \roleToken -> do txOutRef <- arbitrary diff --git a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/SafetySpec.hs b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/SafetySpec.hs index 6dafedec17..61be79935b 100644 --- a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/SafetySpec.hs +++ b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/SafetySpec.hs @@ -25,6 +25,7 @@ import qualified Cardano.Api.Shelley as Shelley (ReferenceScript (..), StakeAddr import Data.Either (fromRight) import Data.Foldable (for_) import Data.List (isInfixOf, nub) +import qualified Data.Map.NonEmpty as NEMap import qualified Data.Map.Strict as M (empty, fromList, keys, lookup, mapKeys, singleton, toList, (!)) import Data.Maybe (fromJust) import Language.Marlowe.Analysis.Safety.Types (SafetyError (..)) @@ -49,6 +50,7 @@ import qualified Language.Marlowe.Runtime.ChainSync.Api as Chain ( ) import Language.Marlowe.Runtime.Core.Api (MarloweVersion (MarloweV1)) import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript (..), MarloweScripts (..), getCurrentScripts) +import Language.Marlowe.Runtime.Plutus.V2.Api (fromPlutusTokenName) import Language.Marlowe.Runtime.Transaction.Api (Mint (..), RoleTokensConfig (..)) import Language.Marlowe.Runtime.Transaction.BuildConstraintsSpec () import Language.Marlowe.Runtime.Transaction.Constraints ( @@ -78,7 +80,7 @@ import Spec.Marlowe.Reference (readReferenceContracts) import Spec.Marlowe.Semantics.Arbitrary () import Test.Hspec (Spec, describe, expectationFailure, it, runIO) import Test.Hspec.QuickCheck (prop) -import Test.QuickCheck (counterexample, discard, elements, generate, sublistOf, suchThat, (===)) +import Test.QuickCheck (counterexample, discard, elements, generate, sublistOf, suchThat, (===), (==>)) import Test.QuickCheck.Arbitrary (arbitrary) spec :: Spec @@ -142,34 +144,32 @@ spec = case roleTokensConfig of RoleTokensNone -> actual === [] _ -> actual === [ContractHasNoRoles] - prop "Contract with roles from minting" $ \roleTokensConfig -> - case roleTokensConfig of - RoleTokensMint mint -> - let roles = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (unMint mint) - contract = foldr payRole V1.Close roles - actual = checkContract testnet roleTokensConfig version contract continuations - in counterexample ("Contract = " <> show contract) $ - actual === mempty - _ -> discard + prop "Contract with roles from minting" $ \mint -> + let roles = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (NEMap.toMap $ unMint mint) + contract = foldr payRole V1.Close roles + actual = checkContract testnet (RoleTokensMint mint) version contract continuations + in counterexample ("Contract = " <> show contract) $ + actual === mempty prop "Contract with roles missing from minting" $ \roleTokensConfig extra -> case roleTokensConfig of RoleTokensMint mint -> - let roles = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (unMint mint) - contract = foldr payRole V1.Close $ extra <> roles - actual = checkContract testnet roleTokensConfig version contract continuations - expected = - (MissingRoleToken <$> nub extra) - <> [RoleNameTooLong role | role@(Plutus.TokenName name) <- nub extra, Plutus.lengthOfByteString name > 32] - in counterexample ("Contract = " <> show contract) - . counterexample ("Actual = " <> show actual) - . counterexample ("Expected = " <> show expected) - $ actual `same` expected + all (\t -> not (NEMap.member (fromPlutusTokenName t) $ unMint mint)) extra ==> + let roles = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (NEMap.toMap $ unMint mint) + contract = foldr payRole V1.Close $ extra <> roles + actual = checkContract testnet roleTokensConfig version contract continuations + expected = + (MissingRoleToken <$> nub extra) + <> [RoleNameTooLong role | role@(Plutus.TokenName name) <- nub extra, Plutus.lengthOfByteString name > 32] + in counterexample ("Contract = " <> show contract) + . counterexample ("Actual = " <> show actual) + . counterexample ("Expected = " <> show expected) + $ actual `same` expected _ -> discard prop "Contract with extra roles for minting" $ \roleTokensConfig -> case roleTokensConfig of RoleTokensMint mint -> do - let roles' = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (unMint mint) + let roles' = Plutus.TokenName . Plutus.toBuiltin . Chain.unTokenName <$> M.keys (NEMap.toMap $ unMint mint) roles <- sublistOf roles' `suchThat` (not . null) let extra = filter (`notElem` roles) roles' contract = foldr payRole V1.Close roles @@ -183,7 +183,7 @@ spec = _ -> discard prop "Contract with role name too long" $ \roles -> let contract = foldr payRole V1.Close roles - actual = checkContract testnet (RoleTokensUsePolicy "") version contract continuations + actual = checkContract testnet (RoleTokensUsePolicy "" mempty) version contract continuations expected = if null roles then [ContractHasNoRoles] @@ -194,7 +194,7 @@ spec = $ actual `same` expected prop "Contract with illegal token" $ \tokens -> let contract = foldr payToken V1.Close tokens - actual = checkContract testnet (RoleTokensUsePolicy "") version contract continuations + actual = checkContract testnet (RoleTokensUsePolicy "" mempty) version contract continuations expected = if contract == V1.Close then [ContractHasNoRoles] @@ -230,7 +230,7 @@ spec = relevant (InvalidCurrencySymbol _) = False relevant (TokenNameTooLong _) = False relevant _ = True - actual = filter relevant $ checkContract testnet (RoleTokensUsePolicy "") version mcContract (M.fromList remaining) + actual = filter relevant $ checkContract testnet (RoleTokensUsePolicy "" mempty) version mcContract (M.fromList remaining) expected = MissingContinuation . Plutus.DatumHash . Plutus.toBuiltin . Chain.unDatumHash . fst <$> missing pure . counterexample ("Contract = " <> show mcContract) diff --git a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs index 284f21701a..a973921110 100644 --- a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs +++ b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs @@ -5,6 +5,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedLists #-} +{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Wno-orphans #-} @@ -28,7 +29,7 @@ module Language.Marlowe.Runtime.Transaction.Api ( MintRole (..), NFTMetadataFile (..), RoleTokenMetadata (..), - RoleTokensConfig (..), + RoleTokensConfig (RoleTokensNone, RoleTokensUsePolicy, RoleTokensMint), SubmitError (..), SubmitStatus (..), Tag (..), @@ -118,7 +119,11 @@ import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript) import Language.Marlowe.Runtime.History.Api (ExtractCreationError, ExtractMarloweTransactionError) import Network.HTTP.Media (MediaType) +import Control.Monad (join) +import Data.Binary.Get (label) import Data.Function (on) +import Data.List (nub) +import qualified Data.List.NonEmpty as NE import Data.Map.NonEmpty (NEMap) import qualified Data.Map.NonEmpty as NEMap import Network.Protocol.Codec.Spec (Variations (..), varyAp) @@ -274,7 +279,6 @@ encodeRoleTokenMetadata = encodeNFTMetadataDetails data Destination = ToAddress Address - | ToSelf | ToScript HelperScript deriving stock (Show, Eq, Ord, Generic) deriving anyclass (Binary, ToJSON, Variations) @@ -322,10 +326,62 @@ mkMint = Mint . NEMap.fromList data RoleTokensConfig = RoleTokensNone - | RoleTokensUsePolicy PolicyId (Map TokenName (Map Destination Chain.Quantity)) - | RoleTokensMint Mint - deriving stock (Show, Eq, Ord, Generic) - deriving anyclass (Binary, Variations) + | UnsafeRoleTokensUsePolicy PolicyId (Map TokenName (Map Destination Chain.Quantity)) + | UnsafeRoleTokensMint Mint + deriving stock (Show, Eq, Ord) + +instance Binary RoleTokensConfig where + put RoleTokensNone = putWord8 0 + put (RoleTokensUsePolicy policy dist) = do + putWord8 1 + put policy + put dist + put (RoleTokensMint mint) = do + putWord8 2 + put mint + get = label "RoleTokensConfig" do + ctorIx <- getWord8 + case ctorIx of + 0 -> pure RoleTokensNone + 1 -> label "RoleTokensUsePolicy" $ RoleTokensUsePolicy <$> get <*> get + 2 -> label "RoleTokensMint" $ RoleTokensMint <$> get + _ -> fail $ "Unknown constructor index " <> show ctorIx + +instance Variations RoleTokensConfig where + variations = + join $ + NE.fromList $ + nub + [ pure RoleTokensNone + , RoleTokensUsePolicy <$> variations `varyAp` variations + , RoleTokensMint <$> variations + ] + +{-# COMPLETE RoleTokensNone, RoleTokensUsePolicy, RoleTokensMint #-} + +pattern RoleTokensUsePolicy + :: PolicyId + -> Map TokenName (Map Destination Chain.Quantity) + -> RoleTokensConfig +pattern RoleTokensUsePolicy policy dist <- UnsafeRoleTokensUsePolicy policy dist + where + RoleTokensUsePolicy policy dist = + UnsafeRoleTokensUsePolicy policy $ + Map.filter (not . Map.null) $ + Map.filter (> 0) <$> dist + +pattern RoleTokensMint :: Mint -> RoleTokensConfig +pattern RoleTokensMint mint <- UnsafeRoleTokensMint mint + where + RoleTokensMint (Mint mint) = + maybe RoleTokensNone (UnsafeRoleTokensMint . Mint) + . NEMap.nonEmptyMap + . NEMap.mapMaybe + ( \MintRole{..} -> do + recipients <- NEMap.nonEmptyMap $ NEMap.filter (> 0) roleTokenRecipients + pure MintRole{roleTokenRecipients = recipients, ..} + ) + $ mint data ContractCreated v where ContractCreated @@ -664,6 +720,8 @@ data MarloweTxCommand status err result where -- ^ The Marlowe version to use -> WalletAddresses -- ^ The wallet addresses to use when constructing the transaction + -> Maybe TokenName + -- ^ An optional thread token name that gets sent to the contract using the roles policy ID. Defaults to @""@. -> RoleTokensConfig -- ^ How to initialize role tokens -> MarloweTransactionMetadata @@ -743,7 +801,7 @@ instance Command MarloweTxCommand where JobIdSubmit :: TxId -> JobId MarloweTxCommand SubmitStatus SubmitError BlockHeader tagFromCommand = \case - Create _ version _ _ _ _ _ -> TagCreate version + Create _ version _ _ _ _ _ _ -> TagCreate version ApplyInputs version _ _ _ _ _ _ -> TagApplyInputs version Withdraw version _ _ -> TagWithdraw version Submit _ _ -> TagSubmit @@ -792,9 +850,10 @@ instance Command MarloweTxCommand where TagSubmit -> JobIdSubmit <$> get putCommand = \case - Create mStakeCredential MarloweV1 walletAddresses roles metadata minAda contract -> do + Create mStakeCredential MarloweV1 walletAddresses threadName roles metadata minAda contract -> do put mStakeCredential put walletAddresses + put threadName put roles put metadata put minAda @@ -821,10 +880,11 @@ instance Command MarloweTxCommand where TagCreate MarloweV1 -> do mStakeCredential <- get walletAddresses <- get + threadName <- get roles <- get metadata <- get minAda <- get - Create mStakeCredential MarloweV1 walletAddresses roles metadata minAda <$> get + Create mStakeCredential MarloweV1 walletAddresses threadName roles metadata minAda <$> get TagApplyInputs version -> do walletAddresses <- get contractId <- get @@ -951,7 +1011,6 @@ data CreateError | CreateContractNotFound | ProtocolParamNoUTxOCostPerByte | InsufficientMinAdaDeposit Lovelace - | RequiresSingleThreadToken deriving (Generic) deriving instance Eq CreateError @@ -1039,10 +1098,11 @@ data SubmitStatus instance CommandEq MarloweTxCommand where commandEq = \case - Create stake MarloweV1 wallet roleTokenConfig metadata minAda contract -> \case - Create stake' MarloweV1 wallet' roleTokenConfig' metadata' minAda' contract' -> + Create stake MarloweV1 wallet threadName roleTokenConfig metadata minAda contract -> \case + Create stake' MarloweV1 wallet' threadName' roleTokenConfig' metadata' minAda' contract' -> stake == stake' && wallet == wallet' + && threadName == threadName' && roleTokenConfig == roleTokenConfig' && metadata == metadata' && minAda == minAda' @@ -1115,7 +1175,7 @@ instance ShowCommand MarloweTxCommand where showsPrecCommand p = showParen (p >= 11) . \case - Create stake MarloweV1 wallet roleTokenConfig metadata minAda contract -> + Create stake MarloweV1 wallet threadName roleTokenConfig metadata minAda contract -> ( showString "Create" . showSpace . showsPrec 11 stake @@ -1124,6 +1184,8 @@ instance ShowCommand MarloweTxCommand where . showSpace . showsPrec 11 wallet . showSpace + . showsPrec 11 threadName + . showSpace . showsPrec 11 roleTokenConfig . showSpace . showsPrec 11 metadata diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs index 6127ef9094..f3342d2e18 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs @@ -18,7 +18,7 @@ import qualified Cardano.Api.Shelley as C import qualified Cardano.Ledger.BaseTypes as CL (Network (..)) import Control.Category ((>>>)) import Control.Error (ExceptT, note) -import Control.Monad (unless, when, (>=>)) +import Control.Monad (guard, unless, when, (>=>)) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Except (except, runExceptT, throwE, withExceptT) import Control.Monad.Trans.Writer (WriterT (runWriterT), tell) @@ -103,10 +103,10 @@ import Language.Marlowe.Runtime.Transaction.Constraints ( TxConstraints (..), WalletContext (WalletContext), mustConsumeMarloweOutput, + mustDistributeRoleToken, mustMintRoleToken, mustPayToAddress, mustPayToRole, - mustSendHelperOutput, mustSendMarloweOutput, mustSpendRoleToken, requiresMetadata, @@ -149,6 +149,8 @@ buildCreateConstraints -- ^ The Marlowe version to build the transaction for. -> WalletContext -- ^ The wallet used to mint tokens. + -> TokenName + -- ^ The thread token name for the contract. -> RoleTokensConfig -- ^ The initial distribution of the role tokens. -> MarloweTransactionMetadata @@ -160,10 +162,10 @@ buildCreateConstraints -> Contract v -- ^ The contract being instantiated. -> m (Either CreateError ((Datum v, Assets, PolicyId), TxConstraints era v)) -buildCreateConstraints mkRoleTokenMintingPolicy era version walletCtx roles metadata minAda adjustMinUtxo contract = case version of +buildCreateConstraints mkRoleTokenMintingPolicy era version walletCtx roles threadName metadata minAda adjustMinUtxo contract = case version of MarloweV1 -> runTxConstraintsBuilder version $ - buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata minAda adjustMinUtxo contract + buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles threadName metadata minAda adjustMinUtxo contract type MkRoleTokenMintingPolicy m = TxOutRef -> Map TokenName Integer -> m CS.PlutusScript @@ -178,6 +180,8 @@ buildCreateConstraintsV1 -- ^ The era in which the transaction is being built. Requires reference scripts. -> WalletContext -- ^ The wallet used to mint tokens. + -> TokenName + -- ^ The thread token name for the contract. -> RoleTokensConfig -- ^ The initial distribution of the role tokens. -> MarloweTransactionMetadata @@ -189,19 +193,16 @@ buildCreateConstraintsV1 -> Contract 'V1 -- ^ The contract being instantiated. -> TxConstraintsBuilderM CreateError era 'V1 m (Datum 'V1, Assets, PolicyId) -buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata minAda adjustMinUtxo contract = do +buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx threadTokenName roles metadata minAda adjustMinUtxo contract = do -- Output constraints. -- Role tokens minting and distribution. - policyId <- buildRoleTokenConstraints + (policyId, threadToken) <- buildRoleTokenConstraints tell . requiresMetadata $ metadata{transactionMetadata = nftsMetadata policyId <> transactionMetadata metadata} -- Marlowe script output. - (datum, assets) <- sendMarloweOutput policyId - - -- Open-role script output. - sendOpenRoleOutputs policyId + (datum, assets) <- sendMarloweOutput policyId threadToken pure (datum, assets, policyId) where @@ -219,10 +220,10 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m liftMaybe err = lift . except . note (CreateBuildupFailed err) - sendMarloweOutput policyId = do + sendMarloweOutput policyId threadToken = do (assets, marloweState) <- lift . except $ - initialMarloweStateV1 adjustMinUtxo roles policyId minAda walletCtx + initialMarloweStateV1 adjustMinUtxo threadToken minAda walletCtx datum <- mkMarloweDatum policyId marloweState tell $ mustSendMarloweOutput assets datum pure (datum, assets) @@ -236,9 +237,19 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m adaAsset (Assets amount _) = Assets amount mempty -- Role token distribution constraints - buildRoleTokenConstraints :: TxConstraintsBuilderM CreateError era 'V1 m PolicyId + buildRoleTokenConstraints :: TxConstraintsBuilderM CreateError era 'V1 m (PolicyId, Maybe AssetId) buildRoleTokenConstraints = case roles of - RoleTokensUsePolicy policyId _ -> pure policyId + RoleTokensUsePolicy policyId distribution -> do + for_ (Map.toList distribution) \(tokenName, dist') -> + for_ (Map.toList dist') \(destination, quantity) -> do + let destination' = case destination of + ToScript script' -> Right (AssetId policyId threadTokenName, script') + ToAddress addr -> Left addr + tell $ mustDistributeRoleToken (AssetId policyId tokenName) destination' quantity + pure + ( policyId + , AssetId policyId threadTokenName <$ guard (any (Map.member (ToScript OpenRoleScript)) distribution) + ) RoleTokensMint mint -> do let WalletContext{availableUtxos} = walletCtx tokenQuantities = NEMap.toMap $ getTokenQuantities mint @@ -277,31 +288,21 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx roles metadata m policyId = PolicyId . unScriptHash $ scriptHash for_ (NEMap.toList $ unMint mint) \(tokenName, MintRole{..}) -> - for_ (NEMap.toList roleTokenRecipients) \(destination, quantity) -> - tell $ mustMintRoleToken txOutRef witness (AssetId policyId tokenName) destination quantity - pure policyId + for_ (NEMap.toList roleTokenRecipients) \(destination, quantity) -> do + let destination' = case destination of + ToScript script' -> Right (AssetId policyId threadTokenName, script') + ToAddress addr -> Left addr + tell $ mustMintRoleToken txOutRef witness (AssetId policyId tokenName) destination' quantity + pure + ( policyId + , AssetId policyId threadTokenName + <$ guard (any (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) $ unMint mint) + ) RoleTokensNone -> do let -- We use ADA currency symbol as a placeholder which -- carries really no semantics in this context. uselessRolePolicyId = PolicyId . PV2.fromBuiltin . PV2.unCurrencySymbol $ PV2.adaSymbol - pure uselessRolePolicyId - - sendOpenRoleOutputs policyId = do - threadTokenName <- - case threadTokenNames of - [name] -> pure name - _ -> lift $ throwE RequiresSingleThreadToken - mapM_ (sendOpenRoleOutput policyId threadTokenName) - . roleNamesForDestination roles - $ ToScript OpenRoleScript - - sendOpenRoleOutput policyId threadTokenName openRoleName = - let assets = adjustMinUtxo . Assets safeLovelace . Tokens $ Map.fromList [(AssetId policyId openRoleName, 1)] - datum = CS.B $ unTokenName threadTokenName - in tell $ mustSendHelperOutput openRoleName assets datum - - -- In principal, there may be use cases involving multiple thread tokens. - threadTokenNames = roleNamesForDestination roles ToSelf + pure (uselessRolePolicyId, Nothing) toMarloweNetwork :: Address -> Maybe V1.Network toMarloweNetwork = @@ -317,56 +318,45 @@ initialMarloweState :: forall v . (Assets -> Assets) -> MarloweVersion v - -> RoleTokensConfig - -> PolicyId + -> Maybe AssetId -> Lovelace -> WalletContext -> Either CreateError (Assets, V1.State) -initialMarloweState adjustMinUtxo version roles policyId minAda walletCtx = case version of +initialMarloweState adjustMinUtxo version threadToken minAda walletCtx = case version of MarloweV1 -> - initialMarloweStateV1 adjustMinUtxo roles policyId minAda walletCtx + initialMarloweStateV1 adjustMinUtxo threadToken minAda walletCtx initialMarloweStateV1 :: (Assets -> Assets) - -> RoleTokensConfig - -> PolicyId + -> Maybe AssetId -> Lovelace -> WalletContext -> Either CreateError (Assets, V1.State) -initialMarloweStateV1 adjustMinUtxo roles policyId minAda walletCtx = - do - let minAda' = max safeLovelace minAda - threadTokenNames = roleNamesForDestination roles ToSelf - initialAssets = - adjustMinUtxo - . Assets minAda' - . Tokens - . Map.fromList - $ (,1) . AssetId policyId <$> threadTokenNames - WalletContext{changeAddress = minAdaProvider} = walletCtx - liftMaybe err = maybe (Left $ CreateBuildupFailed err) Right - (net, addr) <- liftMaybe (AddressDecodingFailed minAdaProvider) do - address <- toPlutusAddress minAdaProvider - network <- toMarloweNetwork minAdaProvider - pure (network, address) - let accountId = V1.Address net addr - Assets{..} = initialAssets - adaToken = V1.Token PV2.adaSymbol PV2.adaToken - initialAccounts :: V1.Accounts - initialAccounts = - AM.fromList $ - ((accountId, adaToken), toInteger ada) - : [ ((accountId, V1.Token (toPlutusCurrencySymbol cs) (toPlutusTokenName tn)), toInteger i) - | (AssetId cs tn, i) <- Map.toList $ unTokens tokens - ] - pure (initialAssets, (V1.emptyState (PV2.POSIXTime 0)){V1.accounts = initialAccounts}) - -roleNamesForDestination :: RoleTokensConfig -> Destination -> [TokenName] -roleNamesForDestination roles destination = - case roles of - RoleTokensNone -> [] - RoleTokensMint (unMint -> minting) -> Map.keys $ NEMap.filter (NEMap.member destination . roleTokenRecipients) minting - (RoleTokensUsePolicy _ distribution) -> Map.keys $ Map.filter (Map.member destination) distribution +initialMarloweStateV1 adjustMinUtxo threadToken minAda walletCtx = do + let minAda' = max safeLovelace minAda + initialAssets = + adjustMinUtxo + . Assets minAda' + . Tokens + . foldMap (flip Map.singleton 1) + $ threadToken + WalletContext{changeAddress = minAdaProvider} = walletCtx + liftMaybe err = maybe (Left $ CreateBuildupFailed err) Right + (net, addr) <- liftMaybe (AddressDecodingFailed minAdaProvider) do + address <- toPlutusAddress minAdaProvider + network <- toMarloweNetwork minAdaProvider + pure (network, address) + let accountId = V1.Address net addr + Assets{..} = initialAssets + adaToken = V1.Token PV2.adaSymbol PV2.adaToken + initialAccounts :: V1.Accounts + initialAccounts = + AM.fromList $ + ((accountId, adaToken), toInteger ada) + : [ ((accountId, V1.Token (toPlutusCurrencySymbol cs) (toPlutusTokenName tn)), toInteger i) + | (AssetId cs tn, i) <- Map.toList $ unTokens tokens + ] + pure (initialAssets, (V1.emptyState (PV2.POSIXTime 0)){V1.accounts = initialAccounts}) type ApplyResults v = (UTCTime, UTCTime, Maybe (Assets, Datum v), Inputs v) diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs index 3692449806..22a1736248 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs @@ -2,7 +2,9 @@ {-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} +{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} +{-# LANGUAGE ViewPatterns #-} module Language.Marlowe.Runtime.Transaction.Constraints ( ConstraintError (..), @@ -11,10 +13,10 @@ module Language.Marlowe.Runtime.Transaction.Constraints ( HelpersContext (..), HelperScriptState (..), HelperScriptInfo (..), - HelperOutputConstraints (..), MarloweInputConstraints (..), MarloweOutputConstraints (..), - RoleTokenConstraints (..), + RoleTokenConstraints (RoleTokenConstraintsNone, MintRoleTokens, DistributeRoleTokens, SpendRoleTokens), + Distribution (..), SolveConstraints, TxConstraints (..), WalletContext (..), @@ -29,7 +31,6 @@ module Language.Marlowe.Runtime.Transaction.Constraints ( mustPayToAddress, mustPayToRole, mustSendMarloweOutput, - mustSendHelperOutput, mustSpendRoleToken, requiresMetadata, requiresSignature, @@ -42,8 +43,9 @@ import Cardano.Api (IsCardanoEra (..), IsShelleyBasedEra (..), MultiAssetSupport import qualified Cardano.Api as C import qualified Cardano.Api.Shelley as C import Control.Applicative ((<|>)) -import Control.Error (note) +import Control.Error (hoistMaybe, note, noteT, runExceptT) import Control.Monad (forM, unless, when, (<=<)) +import Control.Monad.Trans.Class (MonadTrans (..)) import Data.Aeson (ToJSON) import Data.Crosswalk (Crosswalk (sequenceL)) import Data.Function (on) @@ -51,11 +53,15 @@ import Data.Functor ((<&>)) import Data.List (delete, find, minimumBy, nub) import Data.Map (Map) import qualified Data.Map as Map +import Data.Map.NonEmpty (NEMap) +import qualified Data.Map.NonEmpty as NEMap import qualified Data.Map.Strict as SMap (fromList, toList) import Data.Maybe (catMaybes, mapMaybe, maybeToList) import Data.Monoid (First (..), getFirst) import Data.Set (Set) import qualified Data.Set as Set +import Data.Set.NonEmpty (NESet) +import qualified Data.Set.NonEmpty as NESet import Data.Traversable (for) import GHC.Generics (Generic) import qualified Language.Marlowe.Core.V1.Semantics.Types as V1 @@ -106,7 +112,6 @@ data TxConstraints era v = TxConstraints , payToAddresses :: Map Chain.Address Chain.Assets , payToRoles :: Map (Core.PayoutDatum v) Chain.Assets , marloweOutputConstraints :: MarloweOutputConstraints v - , helperOutputConstraints :: Map Chain.TokenName HelperOutputConstraints , signatureConstraints :: Set Chain.PaymentKeyHash , metadataConstraints :: Core.MarloweTransactionMetadata } @@ -117,41 +122,107 @@ deriving instance Eq (TxConstraints era 'V1) -- | Constraints related to role tokens. data RoleTokenConstraints era = RoleTokenConstraintsNone - | MintRoleTokens Chain.TxOutRef (C.ScriptWitness C.WitCtxMint era) (Map Chain.AssetId (Map Destination Chain.Quantity)) - | DistributeRoleTokens (Map Chain.AssetId (Map Destination Chain.Quantity)) - | SpendRoleTokens (Set Chain.AssetId) + | NEMintRoleTokens Chain.TxOutRef (C.ScriptWitness C.WitCtxMint era) NEDistribution + | NEDistributeRoleTokens NEDistribution + | NESpendRoleTokens (NESet Chain.AssetId) deriving (Eq, Show) +{-# COMPLETE RoleTokenConstraintsNone, MintRoleTokens, DistributeRoleTokens, SpendRoleTokens #-} + +pattern DistributeRoleTokens :: Distribution -> RoleTokenConstraints era +pattern DistributeRoleTokens dist <- NEDistributeRoleTokens (toDistribution -> dist) + where + DistributeRoleTokens dist = + maybe RoleTokenConstraintsNone NEDistributeRoleTokens $ nonEmptyDistribution dist + +pattern MintRoleTokens + :: Chain.TxOutRef + -> C.ScriptWitness C.WitCtxMint era + -> Distribution + -> RoleTokenConstraints era +pattern MintRoleTokens out wit dist <- NEMintRoleTokens out wit (toDistribution -> dist) + where + MintRoleTokens out wit dist = + maybe RoleTokenConstraintsNone (NEMintRoleTokens out wit) $ nonEmptyDistribution dist + +pattern SpendRoleTokens :: Set Chain.AssetId -> RoleTokenConstraints era +pattern SpendRoleTokens roles <- NESpendRoleTokens (NESet.toSet -> roles) + where + SpendRoleTokens roles = + maybe RoleTokenConstraintsNone NESpendRoleTokens $ NESet.nonEmptySet roles + instance Semigroup (RoleTokenConstraints era) where a <> RoleTokenConstraintsNone = a - MintRoleTokens _ _ a <> MintRoleTokens ref witness b = - MintRoleTokens ref witness $ Map.unionWith (Map.unionWith (+)) a b + MintRoleTokens _ _ a <> MintRoleTokens ref witness b = MintRoleTokens ref witness $ a <> b + DistributeRoleTokens a <> DistributeRoleTokens b = DistributeRoleTokens $ a <> b SpendRoleTokens a <> SpendRoleTokens b = SpendRoleTokens $ a <> b _ <> b = b instance Monoid (RoleTokenConstraints era) where mempty = RoleTokenConstraintsNone +data NEDistribution + = NESendToAddresses (NEMap Chain.AssetId (NEMap Chain.Address Chain.Quantity)) + | NESendToScripts Chain.AssetId (NEMap Chain.AssetId (NEMap Destination Chain.Quantity)) + deriving (Eq, Show) + +nonEmptyDistribution :: Distribution -> Maybe NEDistribution +nonEmptyDistribution = \case + SendToAddresses dist -> + fmap NESendToAddresses + . NEMap.nonEmptyMap + . Map.mapMaybe (NEMap.nonEmptyMap . Map.filter (> 0)) + $ dist + SendToScripts thread dist -> + fmap (NESendToScripts thread) + . NEMap.nonEmptyMap + . Map.mapMaybe (NEMap.nonEmptyMap . Map.filter (> 0)) + $ dist + +toDistribution :: NEDistribution -> Distribution +toDistribution = \case + NESendToAddresses dist -> SendToAddresses $ NEMap.toMap $ NEMap.toMap <$> dist + NESendToScripts thread dist -> SendToScripts thread $ NEMap.toMap $ NEMap.toMap <$> dist + +data Distribution + = SendToAddresses (Map Chain.AssetId (Map Chain.Address Chain.Quantity)) + | SendToScripts Chain.AssetId (Map Chain.AssetId (Map Destination Chain.Quantity)) + deriving (Eq, Show) + +instance Semigroup Distribution where + SendToAddresses dist <> SendToAddresses dist' = + SendToAddresses $ Map.unionWith (Map.unionWith (+)) dist dist' + SendToScripts _ dist <> SendToScripts thread dist' = + SendToScripts thread $ Map.unionWith (Map.unionWith (+)) dist dist' + SendToScripts thread dist <> SendToAddresses dist' = + SendToScripts thread $ Map.unionWith (Map.unionWith (+)) dist (Map.mapKeysMonotonic ToAddress <$> dist') + SendToAddresses dist <> SendToScripts thread dist' = + SendToScripts thread $ Map.unionWith (Map.unionWith (+)) (Map.mapKeysMonotonic ToAddress <$> dist) dist' + -- | Require the transaction to mint the specified number of role tokens with the -- specified assetId and send them to the given destinations. Additionally, require that --- the given UTXO is consumed. +-- the given UTXO is consumed. Additionally, mint one of the given thread tokens if specified. -- -- Requires that: -- 1. The transaction mints at least n tokens with the given assetId. -- 2. The transaction sends n tokens with the given assetId to the given destination. -- 3. The output in rule 2 does not contain any other tokens aside from ADA. -- 4. The transaction consumes the given TxOutRef. +-- 5. The transaction mints 1 of thread token with the specified name if specified. mustMintRoleToken :: (Core.IsMarloweVersion v) => Chain.TxOutRef -> C.ScriptWitness C.WitCtxMint era -> Chain.AssetId - -> Destination + -> Either Chain.Address (Chain.AssetId, HelperScript) -> Chain.Quantity -> TxConstraints era v mustMintRoleToken txOutRef witness assetId destination quantity = mempty - { roleTokenConstraints = MintRoleTokens txOutRef witness $ Map.singleton assetId $ Map.singleton destination quantity + { roleTokenConstraints = + MintRoleTokens txOutRef witness case destination of + Left addr -> SendToAddresses $ Map.singleton assetId $ Map.singleton addr quantity + Right (thread, script) -> SendToScripts thread $ Map.singleton assetId $ Map.singleton (ToScript script) quantity } -- | Require the transaction to send the specified number of role tokens with the @@ -162,12 +233,14 @@ mustMintRoleToken txOutRef witness assetId destination quantity = mustDistributeRoleToken :: (Core.IsMarloweVersion v) => Chain.AssetId - -> Destination + -> Either Chain.Address (Chain.AssetId, HelperScript) -> Chain.Quantity -> TxConstraints era v mustDistributeRoleToken assetId destination quantity = mempty - { roleTokenConstraints = DistributeRoleTokens $ Map.singleton assetId $ Map.singleton destination quantity + { roleTokenConstraints = DistributeRoleTokens case destination of + Left addr -> SendToAddresses $ Map.singleton assetId $ Map.singleton addr quantity + Right (thread, script) -> SendToScripts thread $ Map.singleton assetId $ Map.singleton (ToScript script) quantity } -- | Require the transaction to spend a UTXO with 1 role token of the specified @@ -196,12 +269,6 @@ instance Semigroup (MarloweOutputConstraints v) where instance Monoid (MarloweOutputConstraints v) where mempty = MarloweOutputConstraintsNone -data HelperOutputConstraints - = HelperOutput Chain.Assets Chain.Datum - -deriving instance Show HelperOutputConstraints -deriving instance Eq HelperOutputConstraints - -- | Require the transaction to send the specified assets to the address. -- -- Requires that: @@ -232,11 +299,6 @@ mustSendMarloweOutput :: (Core.IsMarloweVersion v) => Chain.Assets -> Core.Datum mustSendMarloweOutput assets datum = mempty{marloweOutputConstraints = MarloweOutput assets datum} -mustSendHelperOutput - :: (Core.IsMarloweVersion v) => Chain.TokenName -> Chain.Assets -> Chain.Datum -> TxConstraints era v -mustSendHelperOutput helper assets datum = - mempty{helperOutputConstraints = Map.singleton helper $ HelperOutput assets datum} - -- | Require the transaction to send an output to the payout script address -- with the given assets and the given datum. -- @@ -326,7 +388,6 @@ instance (Core.IsMarloweVersion v) => Semigroup (TxConstraints era v) where , payToAddresses = on (Map.unionWith (<>)) payToAddresses a b , payToRoles = on (Map.unionWith (<>)) payToRoles a b , marloweOutputConstraints = on (<>) marloweOutputConstraints a b - , helperOutputConstraints = on (<>) helperOutputConstraints a b , signatureConstraints = on (<>) signatureConstraints a b , metadataConstraints = MarloweTransactionMetadata @@ -345,7 +406,6 @@ instance (Core.IsMarloweVersion v) => Monoid (TxConstraints era v) where , payToAddresses = mempty , payToRoles = mempty , marloweOutputConstraints = mempty - , helperOutputConstraints = mempty , signatureConstraints = mempty , metadataConstraints = emptyMarloweTransactionMetadata } @@ -1007,7 +1067,7 @@ solveInitialTxBodyContent -> HelpersContext -> TxConstraints era v -> Either ConstraintError (C.TxBodyContent C.BuildTx era) -solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{..} HelpersContext{helperPolicyId, helperScriptStates} TxConstraints{..} = do +solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{..} HelpersContext{..} TxConstraints{..} = do (txIns, requiredPayoutScriptHashes, helperTxInReferences, helperRoles) <- solveTxIns txInsReference <- solveTxInsReference requiredPayoutScriptHashes helperTxInReferences txOuts <- solveTxOuts helperRoles @@ -1266,15 +1326,6 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. pure ((txIn, C.BuildTxWith $ C.ScriptWitness C.ScriptWitnessForSpending scriptWitness), (role, referenceScriptTxIn)) _ -> pure Nothing - getHelperOutputs :: Either ConstraintError [Chain.TransactionOutput] - getHelperOutputs = uncurry getHelperOutput `mapM` Map.toList helperOutputConstraints - - getHelperOutput :: Chain.TokenName -> HelperOutputConstraints -> Either ConstraintError Chain.TransactionOutput - getHelperOutput helperRole (HelperOutput assets datum) = - case helperScriptInfo <$> helperRole `Map.lookup` helperScriptStates of - Just HelperScriptInfo{..} -> Right $ Chain.TransactionOutput helperAddress assets Nothing $ Just datum - Nothing -> Left $ HelperScriptNotFound helperRole - getMerkleizedContinuationOutputs :: [Chain.TransactionOutput] getMerkleizedContinuationOutputs = case marloweInputConstraints of MarloweInput _ _ inputs -> case marloweVersion of @@ -1294,17 +1345,28 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. where go = \case RoleTokenConstraintsNone -> pure [] - MintRoleTokens _ _ distribution -> go $ DistributeRoleTokens distribution - DistributeRoleTokens distribution -> pure $ flip Map.foldMapWithKey distribution \assetId -> - Map.foldMapWithKey \case - (ToAddress address) -> \quantity -> - [ Chain.TransactionOutput - address - (Chain.Assets 0 $ Chain.Tokens $ Map.singleton assetId quantity) - Nothing - Nothing - ] - _ -> const [] -- Output to self or to a helper script is handled elsewhere above. + MintRoleTokens _ _ dist -> go $ DistributeRoleTokens dist + DistributeRoleTokens (SendToAddresses distribution) -> + go $ DistributeRoleTokens $ SendToScripts (Chain.AssetId "" "") $ Map.mapKeysMonotonic ToAddress <$> distribution + DistributeRoleTokens (SendToScripts (Chain.AssetId _ threadToken) dist) -> sequence $ runExceptT do + (assetId, dist') <- lift $ Map.toList dist + (dest, q) <- lift $ Map.toList dist' + address <- case dest of + ToAddress a -> pure a + ToScript script -> + noteT (HelperScriptNotFound $ Chain.tokenName assetId) + . hoistMaybe + . Map.lookup script + $ helperAddress <$> currentHelperScripts + pure + Chain.TransactionOutput + { address + , assets = Chain.Assets 0 $ Chain.Tokens $ Map.singleton assetId q + , datumHash = Nothing + , datum = case dest of + ToAddress _ -> Nothing + ToScript _ -> Just $ Chain.B $ Chain.unTokenName threadToken + } SpendRoleTokens roleTokens -> do let availTuples = map toUTxOTuple . toUTxOsList $ availableUtxos roleTokens' = roleTokens Set.\\ helperRoles @@ -1337,14 +1399,12 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. roleTokenOutputs <- getRoleTokenOutputs helperRoles marloweOutput <- getMarloweOutput payoutOutputs <- getPayoutOutputs - helperOutputs <- getHelperOutputs pure $ concat [ maybeToList marloweOutput , getMerkleizedContinuationOutputs , roleTokenOutputs , payoutOutputs - , helperOutputs , getAddressOutputs ] @@ -1377,19 +1437,22 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. solveTxMintValue :: Either ConstraintError (C.TxMintValue C.BuildTx era) solveTxMintValue = case roleTokenConstraints of - MintRoleTokens _ witness distribution -> do - let assetIds = Map.keysSet distribution - let tokens = Map.fromSet (const 1) assetIds - policyIds <- - note ToCardanoError $ - Set.fromAscList - <$> traverse (toCardanoPolicyId . Chain.policyId) (Set.toAscList assetIds) - value <- note ToCardanoError $ tokensToCardanoValue $ Chain.Tokens tokens - pure $ - C.TxMintValue multiAssetSupported value $ - C.BuildTxWith $ - Map.fromSet (const witness) policyIds + MintRoleTokens _ witness (SendToScripts thread distribution) -> go witness (Just thread) distribution + MintRoleTokens _ witness (SendToAddresses distribution) -> go witness Nothing (Map.mapKeysMonotonic ToAddress <$> distribution) _ -> pure C.TxMintNone + where + go witness thread distribution = do + let tokens = maybe id (flip Map.insert 1) thread $ sum <$> distribution + let assetIds = Map.keysSet tokens + policyIds <- + note ToCardanoError $ + Set.fromAscList + <$> traverse (toCardanoPolicyId . Chain.policyId) (Set.toAscList assetIds) + value <- note ToCardanoError $ tokensToCardanoValue $ Chain.Tokens tokens + pure $ + C.TxMintValue multiAssetSupported value $ + C.BuildTxWith $ + Map.fromSet (const witness) policyIds isAda :: Chain.AssetId -> Bool isAda (Chain.AssetId "" "") = True diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs index 5363eaf20d..403278b45b 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Safety.hs @@ -255,12 +255,12 @@ checkContract network config MarloweV1 contract continuations = (_, True) -> pure ContractHasNoRoles (RoleTokensMint mint, False) -> let minted = Set.map Chain.toPlutusTokenName $ NESet.toSet $ NEMap.keysSet $ unMint mint - missing = MissingRoleToken <$> Set.toList (Set.difference minted roles) - extra = ExtraRoleToken <$> Set.toList (Set.difference roles minted) + missing = MissingRoleToken <$> Set.toList (Set.difference roles minted) + extra = ExtraRoleToken <$> Set.toList (Set.difference minted roles) in missing <> extra (RoleTokensUsePolicy _ distribution, False) -> do let distributedRoles = Set.map Chain.toPlutusTokenName $ M.keysSet distribution - extraRole <- Set.toList $ Set.difference roles distributedRoles + extraRole <- Set.toList $ Set.difference distributedRoles roles pure $ ExtraRoleToken extraRole avoidDuplicateReport = True nameCheck = checkRoleNames avoidDuplicateReport Nothing contract continuations' diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs index 6dabbefecb..82c63afd9c 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Server.hs @@ -99,13 +99,13 @@ import Language.Marlowe.Runtime.Core.Api ( fromChainPayoutDatum, withMarloweVersion, ) -import Language.Marlowe.Runtime.Core.ScriptRegistry (MarloweScripts (..)) +import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript (..), MarloweScripts (..)) import Language.Marlowe.Runtime.Transaction.Api ( ApplyInputsError (..), ContractCreated (..), ContractCreatedInEra (..), CreateError (..), - Destination (ToSelf), + Destination (..), InputsApplied (..), InputsAppliedInEra (..), JobId (..), @@ -228,7 +228,7 @@ transactionServer = component "tx-job-server" \TransactionServerDependencies{..} (toLedgerEpochInfo eraHistory) protocolParameters case command of - Create mStakeCredential version addresses roles metadata minAda contract -> + Create mStakeCredential version addresses threadRole roles metadata minAda contract -> withEvent ExecCreate \_ -> execCreate mkRoleTokenMintingPolicy @@ -243,6 +243,7 @@ transactionServer = component "tx-job-server" \TransactionServerDependencies{..} mStakeCredential version addresses + threadRole roles metadata minAda @@ -311,23 +312,28 @@ execCreate -> Maybe Chain.StakeCredential -> MarloweVersion v -> WalletAddresses + -> Maybe Chain.TokenName -> RoleTokensConfig -> MarloweTransactionMetadata -> Maybe Chain.Lovelace -> Either (Contract v) DatumHash -> NominalDiffTime -> m (ServerStCmd MarloweTxCommand Void CreateError (ContractCreated v) m ()) -execCreate mkRoleTokenMintingPolicy era contractQueryConnector getCurrentScripts solveConstraints protocolParameters loadWalletContext loadHelpersContext networkId mStakeCredential version addresses roleTokens metadata optMinAda contract analysisTimeout = execExceptT do +execCreate mkRoleTokenMintingPolicy era contractQueryConnector getCurrentScripts solveConstraints protocolParameters loadWalletContext loadHelpersContext networkId mStakeCredential version addresses threadRole roleTokens metadata optMinAda contract analysisTimeout = execExceptT do referenceInputsSupported <- referenceInputsSupportedInEra (CreateEraUnsupported $ AnyCardanoEra era) era let adjustMinUtxo = mkAdjustMinimumUtxo referenceInputsSupported protocolParameters version + let threadRole' = fromMaybe "" threadRole walletContext <- lift $ loadWalletContext addresses (_, dummyState) <- except $ initialMarloweState adjustMinUtxo version - roleTokens - "00000000000000000000000000000000000000000000000000000000" + ( Chain.AssetId "00000000000000000000000000000000000000000000000000000000" threadRole' <$ guard case roleTokens of + RoleTokensNone -> False + RoleTokensMint (unMint -> mint) -> any (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) mint + RoleTokensUsePolicy _ distribution -> any (Map.member (ToScript OpenRoleScript)) distribution + ) (fromMaybe 0 optMinAda) walletContext (contract', continuations) <- case contract of @@ -352,6 +358,7 @@ execCreate mkRoleTokenMintingPolicy era contractQueryConnector getCurrentScripts referenceInputsSupported version walletContext + threadRole' roleTokens metadata minAda @@ -391,19 +398,6 @@ execCreate mkRoleTokenMintingPolicy era contractQueryConnector getCurrentScripts ExceptT $ loadHelpersContext version $ Left (rolesCurrency, roleTokens) - threadRole <- - case roleTokens of - RoleTokensMint (unMint -> mint) -> - case Set.toList . Map.keysSet $ NEMap.filter (NEMap.member ToSelf . roleTokenRecipients) mint of - [] -> pure Nothing - [role] -> pure $ Just role - _ -> throwE RequiresSingleThreadToken - RoleTokensUsePolicy _ distribution -> - case Set.toList . Map.keysSet $ Map.filter (Map.member ToSelf) distribution of - [] -> pure Nothing - [role] -> pure $ Just role - _ -> throwE RequiresSingleThreadToken - _ -> pure Nothing let -- Fast analysis of safety: examines bounds for transactions. contractSafetyErrors = checkContract networkId roleTokens version contract' continuations limitAnalysisTime = From d7ac124cf4a9c76d4f4f35061eb97728a50eec02 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Wed, 15 Nov 2023 14:00:07 -0500 Subject: [PATCH 03/11] Update downstream packages for multi tokens per role changes --- marlowe-apps/marlowe-apps.cabal | 1 + .../src/Language/Marlowe/Runtime/App/Build.hs | 9 ++++-- .../Marlowe/CLI/Test/Runtime/Interpret.hs | 3 +- .../src/Control/Monad/Trans/Marlowe/Class.hs | 6 +++- .../marlowe-integration-tests.cabal | 1 + .../test/Language/Marlowe/Runtime/CliSpec.hs | 22 ++++++++++----- .../Runtime/Integration/ApplyInputs.hs | 23 ++++++++++++++- .../Marlowe/Runtime/Integration/Basic.hs | 3 +- .../Marlowe/Runtime/Integration/Create.hs | 11 ++++++-- .../Marlowe/Runtime/Integration/OpenRoles.hs | 7 +++-- .../Runtime/Integration/StandardContract.hs | 28 +++++++++++++++---- .../Language/Marlowe/Runtime/Web/Common.hs | 1 + .../Runtime/Web/Contracts/Contract/Post.hs | 13 +++++---- .../Runtime/Web/Contracts/Contract/Put.hs | 1 + .../Transactions/Transaction/Post.hs | 1 + .../Contracts/Transactions/Transaction/Put.hs | 1 + .../Marlowe/Runtime/Web/StandardContract.hs | 1 + marlowe-integration/app/Main.hs | 1 + .../Marlowe/Runtime/CLI/Command/Create.hs | 14 +++++++--- marlowe-runtime-cli/marlowe-runtime-cli.cabal | 1 + marlowe-runtime-web/marlowe-runtime-web.cabal | 1 + .../Marlowe/Runtime/Web/Server/DTO.hs | 20 ++++++------- .../Marlowe/Runtime/Web/Server/Monad.hs | 4 +-- .../Runtime/Web/Server/REST/ApiError.hs | 1 - .../Runtime/Web/Server/REST/Contracts.hs | 2 ++ .../Marlowe/Runtime/Web/Server/TxClient.hs | 7 +++-- .../src/Language/Marlowe/Runtime/Web/Types.hs | 14 ++++------ marlowe-runtime-web/test/Spec.hs | 4 +-- .../Runtime/Transaction/ConstraintsSpec.hs | 4 --- .../Runtime/Transaction/BuildConstraints.hs | 11 ++++---- .../Runtime/Transaction/Constraints.hs | 10 ++++++- 31 files changed, 153 insertions(+), 73 deletions(-) diff --git a/marlowe-apps/marlowe-apps.cabal b/marlowe-apps/marlowe-apps.cabal index ab2da35353..40049ce857 100644 --- a/marlowe-apps/marlowe-apps.cabal +++ b/marlowe-apps/marlowe-apps.cabal @@ -45,6 +45,7 @@ library , monad-control , mtl , network + , nonempty-containers ^>=0.3.4 , optparse-applicative , random , stm diff --git a/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs b/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs index 71593e4ed5..cb12d55f85 100644 --- a/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs +++ b/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs @@ -4,7 +4,6 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeFamilies #-} module Language.Marlowe.Runtime.App.Build ( @@ -28,6 +27,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( InputsApplied (..), InputsAppliedInEra (..), MarloweTxCommand (ApplyInputs, Create, Withdraw), + MintRole (..), RoleTokensConfig (..), WalletAddresses (WalletAddresses), WithdrawTx (..), @@ -37,6 +37,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( import Network.Protocol.Job.Client (liftCommand) import qualified Data.List.NonEmpty as NE (fromList) +import qualified Data.Map.NonEmpty as NEMap import qualified Data.Map.Strict as M (Map, null, toList) import Data.Set (Set) import qualified Data.Set as S (fromList) @@ -56,9 +57,11 @@ buildCreation version' contract roles minUtxo metadata' = let roles' = if M.null roles then RoleTokensNone - else RoleTokensMint . mkMint . fmap (second $ (,Nothing) . ToAddress) . NE.fromList . M.toList $ roles + else + RoleTokensMint . mkMint . fmap (second $ MintRole Nothing . flip NEMap.singleton 1 . ToAddress) . NE.fromList . M.toList $ + roles in build show (\(ContractCreated era ContractCreatedInEra{..}) -> (contractId, TxBodyInEraWithReferenceScripts era txBody)) $ - \w -> Create Nothing version' w roles' metadata' minUtxo $ Left contract + \w -> Create Nothing version' w Nothing roles' metadata' minUtxo $ Left contract buildApplication :: MarloweVersion v diff --git a/marlowe-cli/cli-test/Language/Marlowe/CLI/Test/Runtime/Interpret.hs b/marlowe-cli/cli-test/Language/Marlowe/CLI/Test/Runtime/Interpret.hs index 40846b4b7e..31dca524d3 100644 --- a/marlowe-cli/cli-test/Language/Marlowe/CLI/Test/Runtime/Interpret.hs +++ b/marlowe-cli/cli-test/Language/Marlowe/CLI/Test/Runtime/Interpret.hs @@ -465,7 +465,7 @@ interpret ro@RuntimeCreateContract{..} = do Just roleCurrency -> do Currency{ccPolicyId = cardanoPolicyId} <- getCurrency roleCurrency let policyId = MRCA.fromCardanoPolicyId cardanoPolicyId - pure $ RoleTokensUsePolicy policyId + pure $ RoleTokensUsePolicy policyId mempty Nothing -> pure RoleTokensNone let (contract, possibleContinuations) = case roMerkleize of @@ -513,6 +513,7 @@ interpret ro@RuntimeCreateContract{..} = do Nothing MarloweV1 walletAddresses + Nothing roleTokensConfig marloweTransactionMetadata minLovelace diff --git a/marlowe-client/src/Control/Monad/Trans/Marlowe/Class.hs b/marlowe-client/src/Control/Monad/Trans/Marlowe/Class.hs index 64d33560ce..f0ed79bded 100644 --- a/marlowe-client/src/Control/Monad/Trans/Marlowe/Class.hs +++ b/marlowe-client/src/Control/Monad/Trans/Marlowe/Class.hs @@ -30,6 +30,7 @@ import Language.Marlowe.Runtime.ChainSync.Api ( DatumHash, Lovelace, StakeCredential, + TokenName, TxId, TxOutRef, ) @@ -214,6 +215,8 @@ createContract -- ^ The Marlowe version to use -> WalletAddresses -- ^ The wallet addresses to use when constructing the transaction + -> Maybe TokenName + -- ^ An optional thread token name. Defaults to an empty string. -> RoleTokensConfig -- ^ How to initialize role tokens -> MarloweTransactionMetadata @@ -223,13 +226,14 @@ createContract -> Either (Contract v) DatumHash -- ^ The contract to run, or the hash of the contract to look up in the store. -> m (Either CreateError (ContractCreated v)) -createContract mStakeCredential version wallet roleTokens metadata lovelace contract = +createContract mStakeCredential version wallet threadName roleTokens metadata lovelace contract = runMarloweTxClient $ liftCommand $ Create mStakeCredential version wallet + threadName roleTokens metadata lovelace diff --git a/marlowe-integration-tests/marlowe-integration-tests.cabal b/marlowe-integration-tests/marlowe-integration-tests.cabal index 3fccc9b01a..ec1130971b 100644 --- a/marlowe-integration-tests/marlowe-integration-tests.cabal +++ b/marlowe-integration-tests/marlowe-integration-tests.cabal @@ -113,6 +113,7 @@ executable marlowe-integration-tests , marlowe-test , mtl , network-uri + , nonempty-containers ^>=0.3.4 , pipes ^>=4.3.16 , plutus-ledger-api , QuickCheck diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs index 57e3581261..81e36f278c 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs @@ -21,6 +21,7 @@ import Data.Foldable (for_) import Data.Function (on) import Data.Map (Map) import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (maybeToList) import qualified Data.Maybe as Maybe import qualified Data.Set as Set @@ -64,6 +65,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( InputsApplied (..), InputsAppliedInEra (..), MarloweTxCommand (..), + MintRole (..), WalletAddresses (..), WithdrawTx (..), ) @@ -119,7 +121,7 @@ serializeAddress = Text.unpack . Maybe.fromJust . ChainSync.Api.toBech32 toCliArgs :: MarloweTxCommand Void err result -> [String] toCliArgs = \case - Create _ MarloweV1 WalletAddresses{changeAddress, extraAddresses} _ _ minAdaDeposit _ -> + Create _ MarloweV1 WalletAddresses{changeAddress, extraAddresses} _ _ _ minAdaDeposit _ -> ["create", "--change-address", serializeAddress changeAddress] <> do address <- Set.toList extraAddresses; ["--address", serializeAddress address] <> do @@ -162,7 +164,7 @@ toCliArgs = \case marloweRuntimeJobClient :: MarloweTxCommand Void err result -> Integration result marloweRuntimeJobClient = \case - cmd@(Create _ MarloweV1 _ _ _ _ _) -> + cmd@(Create _ MarloweV1 _ _ _ _ _ _) -> runMarloweTxClient (JobClient.liftCommand cmd) >>= \case Left err -> error ("Some JobClient create error: " <> show err) Right result -> pure result @@ -269,6 +271,7 @@ createSpec = describe "create" $ Nothing MarloweV1 addresses + Nothing Runtime.Transaction.Api.RoleTokensNone md Nothing @@ -300,9 +303,10 @@ depositSpec = describe "deposit" $ Nothing MarloweV1 (addresses partyAWallet) + Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing)) + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) ) (standardMetadata tags) Nothing @@ -355,9 +359,10 @@ chooseSpec = describe "choose" $ Nothing MarloweV1 (addresses partyAWallet) + Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing)) + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) ) (standardMetadata tags) Nothing @@ -407,9 +412,10 @@ notifySpec = describe "notify" $ Nothing MarloweV1 (addresses partyAWallet) + Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing)) + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) ) (standardMetadata tags) Nothing @@ -482,9 +488,10 @@ applySpec = describe "apply" $ Nothing MarloweV1 (addresses partyAWallet) + Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing)) + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) ) (standardMetadata tags) Nothing @@ -541,9 +548,10 @@ withdrawSpec = describe "withdraw" $ Nothing MarloweV1 (addresses partyAWallet) + Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing)) + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) ) (standardMetadata tags) Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs index 34fdd6cd0e..9df9a6e815 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs @@ -18,6 +18,7 @@ import Control.Monad.Reader (ask) import Data.Functor (void) import qualified Data.List.NonEmpty as NE import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (fromJust) import qualified Data.Set as Set import Data.Time (UTCTime, addUTCTime, getCurrentTime, secondsToNominalDiffTime) @@ -85,6 +86,7 @@ closedSpec = parallel $ describe "Closed contract" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -134,6 +136,7 @@ closeSpec = parallel $ describe "Close contract" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -279,6 +282,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role", wallet2)]) emptyMarloweTransactionMetadata (Just 2_000_000) @@ -290,6 +294,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing RoleTokensNone emptyMarloweTransactionMetadata (Just 2_000_000) @@ -301,6 +306,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role", wallet2)]) emptyMarloweTransactionMetadata (Just 2_000_000) @@ -312,6 +318,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing RoleTokensNone emptyMarloweTransactionMetadata (Just 2_000_000) @@ -323,6 +330,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role", wallet2)]) emptyMarloweTransactionMetadata (Just 2_000_000) @@ -341,6 +349,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role", wallet2)]) emptyMarloweTransactionMetadata (Just 10_000_000) @@ -364,6 +373,7 @@ paySpec = parallel $ describe "Pay contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role", wallet2)]) emptyMarloweTransactionMetadata (Just 10_000_000) @@ -509,6 +519,7 @@ whenTimeoutSpec = parallel $ describe "Timed out contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -520,6 +531,7 @@ whenTimeoutSpec = parallel $ describe "Timed out contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -534,6 +546,7 @@ whenTimeoutSpec = parallel $ describe "Timed out contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -630,6 +643,7 @@ whenEmptySpec = parallel $ describe "Empty When contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -898,6 +912,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se Nothing MarloweV1 (addresses wallet1) + Nothing (mkRoleTokens [("Role1", wallet1), ("Role2", wallet2)]) emptyMarloweTransactionMetadata Nothing @@ -954,6 +969,7 @@ merkleizedSpec = parallel $ describe "Merkleized contracts" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing RoleTokensNone emptyMarloweTransactionMetadata Nothing @@ -1019,6 +1035,7 @@ multiInputsSpec = parallel $ describe "Multi inputs" $ aroundAll setup do Nothing MarloweV1 (addresses wallet) + Nothing (mkRoleTokens [("role", wallet)]) emptyMarloweTransactionMetadata Nothing @@ -1037,7 +1054,11 @@ utcTimeToPOSIXTime :: UTCTime -> POSIXTime utcTimeToPOSIXTime = POSIXTime . floor . (* 1000) . utcTimeToPOSIXSeconds mkRoleTokens :: [(TokenName, Wallet)] -> RoleTokensConfig -mkRoleTokens = RoleTokensMint . mkMint . (fmap . fmap) ((,Nothing) . ToAddress . changeAddress . addresses) . NE.fromList +mkRoleTokens = + RoleTokensMint + . mkMint + . (fmap . fmap) (MintRole Nothing . flip NEMap.singleton 1 . ToAddress . changeAddress . addresses) + . NE.fromList submitCreate :: Wallet -> ContractCreated 'V1 -> Integration () submitCreate wallet (ContractCreated era ContractCreatedInEra{..}) = void $ submit wallet era txBody diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Basic.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Basic.hs index 328be6daba..7fa33d0c49 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Basic.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Basic.hs @@ -232,7 +232,8 @@ spec = describe "Basic scenarios" do Nothing MarloweV1 (wallet.addresses) - (RoleTokensUsePolicy "") + Nothing + (RoleTokensUsePolicy "" mempty) emptyMarloweTransactionMetadata Nothing (Left contract) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs index c37eb61f05..92c8898804 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs @@ -29,6 +29,7 @@ import Data.Functor (($>), (<&>)) import Data.List.NonEmpty (NonEmpty) import qualified Data.List.NonEmpty as NE import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (catMaybes, fromJust) import qualified Data.Set as Set import Data.Void (Void) @@ -332,6 +333,7 @@ mkCreateCommand testData (CreateCase stakeCredential wallet (roleTokens, metadat (mkStakeCredential testData stakeCredential) MarloweV1 (mkWalletAddresses testData wallet) + Nothing (mkRoleTokensConfig testData roleTokens) (mkMarloweTxMetadata metadata) (mkMinLovelace minLovelace) @@ -360,18 +362,21 @@ mkWalletAddresses TestData{..} = \case mkRoleTokensConfig :: TestData -> RoleTokenCase -> RoleTokensConfig mkRoleTokensConfig TestData{..} = \case NoRoleTokens -> RoleTokensNone - ExistingPolicyRoleTokens -> RoleTokensUsePolicy existingRoleTokenPolicy + ExistingPolicyRoleTokens -> RoleTokensUsePolicy existingRoleTokenPolicy mempty MintRoleTokensSimple -> RoleTokensMint $ mkMint $ NE.fromList - [ ("Role", (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, Nothing)) + [ ("Role", MintRole Nothing $ NEMap.singleton (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet) 1) ] MintRoleTokensMetadata -> RoleTokensMint $ mkMint $ NE.fromList - [ ("Role", (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, Just testNftMetadata)) + [ + ( "Role" + , MintRole (Just testNftMetadata) $ NEMap.singleton (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet) 1 + ) ] testNftMetadata :: RoleTokenMetadata diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs index 5d4be606d6..69eaf0a7e1 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs @@ -1,10 +1,12 @@ module Language.Marlowe.Runtime.Integration.OpenRoles where +import qualified Data.Map.NonEmpty as NEMap import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript (OpenRoleScript)) import Language.Marlowe.Runtime.Integration.Basic (basicScenarioWithCreator) import Language.Marlowe.Runtime.Integration.StandardContract (createStandardContractWithRolesConfig) import Language.Marlowe.Runtime.Transaction.Api ( Destination (..), + MintRole (..), RoleTokensConfig (..), mkMint, ) @@ -13,8 +15,7 @@ import Test.Hspec (Spec, describe) spec :: Spec spec = describe "Open roles" do basicScenarioWithCreator - . createStandardContractWithRolesConfig + . createStandardContractWithRolesConfig (Just "Thread") . RoleTokensMint . mkMint - $ pure ("Thread", (ToSelf, Nothing)) - <> pure ("Party A", (ToScript OpenRoleScript, Nothing)) + $ pure ("Party A", MintRole Nothing $ NEMap.singleton (ToScript OpenRoleScript) 1) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs index 41da253a40..0f75bea32b 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs @@ -6,6 +6,7 @@ module Language.Marlowe.Runtime.Integration.StandardContract where import Cardano.Api (getTxId) import Control.Monad.IO.Class (liftIO) import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.Set (Set) import qualified Data.Set as Set import Data.Time (NominalDiffTime, UTCTime, addUTCTime, getCurrentTime, secondsToNominalDiffTime) @@ -17,6 +18,7 @@ import Language.Marlowe.Protocol.Load.Client (pushContract) import Language.Marlowe.Protocol.Query.Types (PayoutHeader (..)) import Language.Marlowe.Runtime.Cardano.Api (fromCardanoTxId) import Language.Marlowe.Runtime.ChainSync.Api (BlockHeader, TxId) +import qualified Language.Marlowe.Runtime.ChainSync.Api as Chain import Language.Marlowe.Runtime.Client (createContract, runMarloweLoadClient) import Language.Marlowe.Runtime.Core.Api ( ContractId, @@ -49,6 +51,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( Destination (ToAddress), InputsApplied (..), InputsAppliedInEra (..), + MintRole (..), RoleTokensConfig (..), WalletAddresses (changeAddress), WithdrawTx (..), @@ -113,16 +116,30 @@ createStandardContract = createStandardContractWithTags mempty createStandardContractWithTags :: Set MarloweMetadataTag -> Wallet -> Wallet -> Integration (StandardContractInit 'V1) createStandardContractWithTags tags partyAWallet = createStandardContractWithTagsAndRolesConfig - (RoleTokensMint $ mkMint $ pure ("Party A", (ToAddress . changeAddress $ addresses partyAWallet, Nothing))) + Nothing + ( RoleTokensMint $ + mkMint $ + pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + ) tags partyAWallet -createStandardContractWithRolesConfig :: RoleTokensConfig -> Wallet -> Wallet -> Integration (StandardContractInit 'V1) -createStandardContractWithRolesConfig rolesConfig = createStandardContractWithTagsAndRolesConfig rolesConfig mempty +createStandardContractWithRolesConfig + :: Maybe Chain.TokenName + -> RoleTokensConfig + -> Wallet + -> Wallet + -> Integration (StandardContractInit 'V1) +createStandardContractWithRolesConfig threadName rolesConfig = createStandardContractWithTagsAndRolesConfig threadName rolesConfig mempty createStandardContractWithTagsAndRolesConfig - :: RoleTokensConfig -> Set MarloweMetadataTag -> Wallet -> Wallet -> Integration (StandardContractInit 'V1) -createStandardContractWithTagsAndRolesConfig rolesConfig tags partyAWallet partyBWallet = do + :: Maybe Chain.TokenName + -> RoleTokensConfig + -> Set MarloweMetadataTag + -> Wallet + -> Wallet + -> Integration (StandardContractInit 'V1) +createStandardContractWithTagsAndRolesConfig threadName rolesConfig tags partyAWallet partyBWallet = do partyBAddress <- expectJust "Failed to convert party B address" $ toPlutusAddress $ changeAddress $ addresses partyBWallet now <- liftIO getCurrentTime @@ -133,6 +150,7 @@ createStandardContractWithTagsAndRolesConfig rolesConfig tags partyAWallet party Nothing MarloweV1 (addresses partyAWallet) + threadName rolesConfig ( if Set.null tags then emptyMarloweTransactionMetadata diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Common.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Common.hs index c8b26f671f..acce2805c8 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Common.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Common.hs @@ -70,6 +70,7 @@ createCloseContract Wallet{..} = do { metadata = mempty , version = Web.V1 , roles = Nothing + , threadTokenName = Nothing , contract = ContractOrSourceId $ Left V1.Close , minUTxODeposit = Nothing , tags = mempty diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs index f74002ecfc..bb8ed9e3cf 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs @@ -5,6 +5,7 @@ import Control.Monad.IO.Class (MonadIO (liftIO)) import Data.Functor (void) import qualified Data.Map.Strict as Map import qualified Data.Set as Set +import Data.Text (Text) import Data.Time (getCurrentTime, secondsToNominalDiffTime) import Language.Marlowe.Runtime.Integration.Common import Language.Marlowe.Runtime.Integration.StandardContract (standardContract) @@ -20,19 +21,18 @@ import Test.Integration.Marlowe.Local (withLocalMarloweRuntime) spec :: Spec spec = describe "Valid POST /contracts" do it "returns the contract header" - . specWithRolesConfig + . specWithRolesConfig Nothing $ Web.Mint . Map.singleton "PartyA" . flip Web.RoleTokenConfig Nothing . Web.ClosedRole it "returns the contract header (open roles)" - . specWithRolesConfig + . specWithRolesConfig (Just "Thread") . const . Web.Mint $ Map.fromList - [ ("Thread", Web.RoleTokenConfig Web.ThreadRole Nothing) - , ("PartyA", Web.RoleTokenConfig Web.OpenRole Nothing) + [ ("PartyA", Web.RoleTokenConfig Web.OpenRole Nothing) ] -specWithRolesConfig :: (Web.Address -> Web.RolesConfig) -> IO () -specWithRolesConfig roles = +specWithRolesConfig :: Maybe Text -> (Web.Address -> Web.RolesConfig) -> IO () +specWithRolesConfig threadTokenName roles = withLocalMarloweRuntime $ runIntegrationTest do partyAWallet <- getGenesisWallet 0 partyBWallet <- getGenesisWallet 1 @@ -59,6 +59,7 @@ specWithRolesConfig roles = Web.PostContractsRequest { metadata = mempty , version = Web.V1 + , threadTokenName , roles = Just $ roles partyAWebChangeAddress , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs index c475db05ca..287c810f1f 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs @@ -45,6 +45,7 @@ spec = describe "POST /contracts/{contractId}/transactions" do Web.PostContractsRequest { metadata = mempty , version = Web.V1 + , threadTokenName = Nothing , roles = Just $ Web.Mint $ Map.singleton "PartyA" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs index 7991f30020..081aaef5f6 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs @@ -48,6 +48,7 @@ spec = describe "POST /contracts/{contractId}/transactions" do Web.PostContractsRequest { metadata = mempty , version = Web.V1 + , threadTokenName = Nothing , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs index 82407e1274..b59a75b32c 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs @@ -53,6 +53,7 @@ spec = describe "PUT /contracts/{contractId}/transactions/{transaction}" do Web.PostContractsRequest { metadata = mempty , version = Web.V1 + , threadTokenName = Nothing , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs index 75f208ccba..eb3e842196 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs @@ -106,6 +106,7 @@ createStandardContractWithTags tags partyAWallet partyBWallet = do Web.PostContractsRequest { metadata = mempty , version = Web.V1 + , threadTokenName = Nothing , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing , contract = ContractOrSourceId $ Right contractSourceId , minUTxODeposit = Nothing diff --git a/marlowe-integration/app/Main.hs b/marlowe-integration/app/Main.hs index 7c1d566510..a72ab0cdfc 100644 --- a/marlowe-integration/app/Main.hs +++ b/marlowe-integration/app/Main.hs @@ -56,6 +56,7 @@ main = withLocalMarloweRuntime \MarloweRuntime{..} -> do Web.PostContractsRequest { metadata = mempty , tags = mempty + , threadTokenName = Nothing , version = Web.V1 , roles = Nothing , contract = ContractOrSourceId $ Left V1.Close diff --git a/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs b/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs index 41a87302d0..aeea3c58d7 100644 --- a/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs +++ b/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs @@ -16,6 +16,7 @@ import qualified Data.ByteString.Char8 as BS8 import Data.List.NonEmpty (NonEmpty (..)) import Data.Map (Map) import qualified Data.Map as Map +import qualified Data.Map.NonEmpty as NEMap import Data.String (fromString) import Data.Text (pack) import qualified Data.Yaml as Yaml @@ -53,6 +54,7 @@ import Language.Marlowe.Runtime.Transaction.Api ( ContractCreatedInEra (..), CreateError, Destination (ToAddress), + MintRole (..), RoleTokenMetadata, RoleTokensConfig (..), mkMint, @@ -236,14 +238,18 @@ runCreateCommand TxCommand{walletAddresses, signingMethod, tagsFile, metadataFil minting' <- case roles of Nothing -> pure RoleTokensNone Just (MintSimple tokens) -> do - let toNFT addr = (ToAddress addr, Nothing) + let toNFT addr = MintRole Nothing $ NEMap.singleton (ToAddress addr) 1 pure $ RoleTokensMint $ mkMint $ fmap toNFT <$> tokens - Just (UseExistingPolicyId policyId) -> pure $ RoleTokensUsePolicy policyId + Just (UseExistingPolicyId policyId) -> pure $ RoleTokensUsePolicy policyId mempty Just (MintConfig roleTokensConfigFilePath) -> do configMap <- ExceptT $ liftIO $ first RolesConfigFileDecodingError <$> A.eitherDecodeFileStrict roleTokensConfigFilePath case Map.toList configMap of [] -> throwE $ RolesConfigFileDecodingError "Empty role token config" - (x : xs) -> pure $ RoleTokensMint $ mkMint $ fmap (\RoleConfig{..} -> (ToAddress address, Just metadata)) <$> x :| xs + (x : xs) -> + pure $ + RoleTokensMint $ + mkMint $ + fmap (\RoleConfig{..} -> MintRole (Just metadata) $ NEMap.singleton (ToAddress address) 1) <$> x :| xs (ContractId contractId, safetyErrors) <- run MarloweV1 minting' liftIO $ if null safetyErrors @@ -285,7 +291,7 @@ runCreateCommand TxCommand{walletAddresses, signingMethod, tagsFile, metadataFil ContractCreated era ContractCreatedInEra{contractId, txBody, safetyErrors} <- ExceptT $ first CreateFailed - <$> createContract stakeCredential version walletAddresses rolesDistribution metadata minUTxO contract + <$> createContract stakeCredential version walletAddresses Nothing rolesDistribution metadata minUTxO contract case signingMethod of Manual outputFile -> do ExceptT @_ @_ @() $ diff --git a/marlowe-runtime-cli/marlowe-runtime-cli.cabal b/marlowe-runtime-cli/marlowe-runtime-cli.cabal index 4e20a3f4e4..561ccf35bc 100644 --- a/marlowe-runtime-cli/marlowe-runtime-cli.cabal +++ b/marlowe-runtime-cli/marlowe-runtime-cli.cabal @@ -87,6 +87,7 @@ executable marlowe-runtime-cli , monad-control , mtl , network + , nonempty-containers ^>=0.3.4 , optparse-applicative , pipes , plutus-ledger-api diff --git a/marlowe-runtime-web/marlowe-runtime-web.cabal b/marlowe-runtime-web/marlowe-runtime-web.cabal index 7fad32f38d..46eec00238 100644 --- a/marlowe-runtime-web/marlowe-runtime-web.cabal +++ b/marlowe-runtime-web/marlowe-runtime-web.cabal @@ -144,6 +144,7 @@ library server , marlowe-runtime:{marlowe-runtime, contract-api, discovery-api, proxy-api, sync-api, tx-api} ==0.0.5 , monad-control ^>=1 , mtl >=2.2 && <3 + , nonempty-containers ^>=0.3.4 , openapi3 >=3.2 && <4 , pipes ^>=4.3.16 , plutus-ledger-api ^>=1.5 diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs index d234a93902..0644b5eb94 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs @@ -90,6 +90,7 @@ import Data.Bitraversable (Bitraversable (..)) import Data.Function (on) import Data.Kind (Type) import Data.List (groupBy) +import qualified Data.Map.NonEmpty as NEMap import Data.Set (Set) import qualified Language.Marlowe.Protocol.Query.Types as Query import Language.Marlowe.Runtime.Cardano.Api (cardanoEraToAsType, fromCardanoTxId) @@ -791,8 +792,11 @@ instance HasDTO Tx.RoleTokensConfig where instance FromDTO Tx.RoleTokensConfig where fromDTO = \case Nothing -> pure Tx.RoleTokensNone - Just (Web.UsePolicy policy) -> Tx.RoleTokensUsePolicy <$> fromDTO policy - Just (Web.UsePolicyWithOpenRoles policy threadRoleName openRoleNames) -> Tx.RoleTokensUsePolicyWithOpenRoles <$> fromDTO policy <*> fromDTO threadRoleName <*> fromDTO openRoleNames + Just (Web.UsePolicy policy) -> Tx.RoleTokensUsePolicy <$> fromDTO policy <*> pure mempty + Just (Web.UsePolicyWithOpenRoles policy openRoleNames) -> + Tx.RoleTokensUsePolicy + <$> fromDTO policy + <*> (Map.fromList . fmap (,Map.singleton (Tx.ToScript OpenRoleScript) 1) <$> fromDTO openRoleNames) Just (Web.Mint mint) -> Tx.RoleTokensMint <$> fromDTO mint instance HasDTO Tx.Mint where @@ -805,16 +809,12 @@ instance FromDTO Tx.Mint where <=< toNonEmpty . Map.toList where - convertConfig (Web.RoleTokenConfig role metadata) = - flip (,) <$> fromDTO metadata <*> case role of + convertConfig (Web.RoleTokenConfig role metadata) = do + destination <- case role of Web.ClosedRole address -> Tx.ToAddress <$> fromDTO address - Web.ThreadRole -> pure Tx.ToSelf Web.OpenRole -> pure $ Tx.ToScript Tx.OpenRoleScript - --- convertConfig = \case --- (Web.RoleTokenConfig (Web.ClosedRole address) metadata) -> (,) <$> (Tx.ToAddress <$> fromDTO address) <*> fromDTO metadata --- (Web.RoleTokenConfig Web.ThreadRole metadata) -> (Tx.ToSelf, ) <$> fromDTO metadata --- (Web.RoleTokenConfig Web.OpenRole metadata) -> (Tx.ToScript Tx.OpenRoleScript, ) <$> fromDTO metadata + metadata' <- fromDTO metadata + pure $ Tx.MintRole metadata' $ NEMap.singleton destination 1 instance HasDTO Tx.RoleTokenMetadata where type DTO Tx.RoleTokenMetadata = Web.TokenMetadata diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/Monad.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/Monad.hs index ecdc17f873..0737062c1f 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/Monad.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/Monad.hs @@ -137,9 +137,9 @@ loadTransaction contractId txId = do -- | Create a contract. createContract :: CreateContract ServerM -createContract stakeCredential version addresses roles metadata minUTxODeposit contract = do +createContract stakeCredential version addresses threadName roles metadata minUTxODeposit contract = do AppEnv{_eventBackend = backend, _createContract = create} <- ask - liftBackendM backend $ create stakeCredential version addresses roles metadata minUTxODeposit contract + liftBackendM backend $ create stakeCredential version addresses threadName roles metadata minUTxODeposit contract -- | Apply inputs to a contract. applyInputs :: ApplyInputs ServerM diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/ApiError.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/ApiError.hs index 80f4b59269..9e53a654e6 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/ApiError.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/ApiError.hs @@ -139,7 +139,6 @@ instance ToDTO CreateError where CreateContractNotFound -> ApiError "Contract not found" "Not found" Null 404 ProtocolParamNoUTxOCostPerByte -> ApiError "Unable to compute min Ada deposit bound" "Internal error" Null 500 InsufficientMinAdaDeposit required -> ApiError "Min Ada deposit insufficient." "Bad Request" (object ["minimumRequiredDeposit" .= required]) 400 - RequiresSingleThreadToken -> ApiError "Exactly one thread token name is required." "RequiresSingleThreadToken" Null 400 CreateLoadHelpersContextFailed err -> ApiError ("Failed to load helper-script context: " <> show err) "CreateLoadHelperContextFailed" Null 503 instance HasDTO ApplyInputsError where diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/Contracts.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/Contracts.hs index 6648d0e6c6..3e53b39b98 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/Contracts.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/REST/Contracts.hs @@ -74,6 +74,7 @@ postCreateTxBody PostContractsRequest{..} stakeAddressDTO changeAddressDTO mAddr collateralUtxos <- Set.fromList <$> fromDTOThrow (badRequest' "Invalid collateral header UTxO value") (maybe [] unCommaList mCollateralUtxos) + threadTokenName' <- fromDTOThrow (badRequest' "Invalid thread token name") threadTokenName roles' <- fromDTOThrow (badRequest' "Invalid roles value") roles transactionMetadata <- fromDTOThrow (badRequest' "Invalid metadata value") metadata marloweMetadata <- @@ -85,6 +86,7 @@ postCreateTxBody PostContractsRequest{..} stakeAddressDTO changeAddressDTO mAddr stakeAddress v WalletAddresses{..} + threadTokenName' roles' MarloweTransactionMetadata{..} (Lovelace <$> minUTxODeposit) diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/TxClient.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/TxClient.hs index 17f1565662..2a8da0f2a8 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/TxClient.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/TxClient.hs @@ -38,7 +38,7 @@ import Data.Set (Set) import Data.Time (UTCTime) import Language.Marlowe.Protocol.Client (MarloweRuntimeClient (..)) import Language.Marlowe.Runtime.Cardano.Api (fromCardanoTxId) -import Language.Marlowe.Runtime.ChainSync.Api (DatumHash, Lovelace, StakeCredential, TxId, TxOutRef) +import Language.Marlowe.Runtime.ChainSync.Api (DatumHash, Lovelace, StakeCredential, TokenName, TxId, TxOutRef) import Language.Marlowe.Runtime.Core.Api ( Contract, ContractId, @@ -76,6 +76,7 @@ type CreateContract m = . Maybe StakeCredential -> MarloweVersion v -> WalletAddresses + -> Maybe TokenName -> RoleTokensConfig -> MarloweTransactionMetadata -> Maybe Lovelace @@ -214,12 +215,12 @@ txClient = component "web-tx-client" \TxClientDependencies{..} -> do pure ( runTxClient , TxClient - { createContract = \stakeCredential version addresses roles metadata minUTxODeposit contract -> do + { createContract = \stakeCredential version addresses threadName roles metadata minUTxODeposit contract -> do response <- runConnector connector $ RunTxClient $ liftCommand $ - Create stakeCredential version addresses roles metadata minUTxODeposit contract + Create stakeCredential version addresses threadName roles metadata minUTxODeposit contract liftIO $ for_ response \(ContractCreated era creation@ContractCreatedInEra{contractId}) -> atomically $ modifyTVar tempContracts $ diff --git a/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs b/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs index 96e993c123..045e4db12c 100644 --- a/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs +++ b/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs @@ -783,6 +783,7 @@ data PostContractsRequest = PostContractsRequest , metadata :: Map Word64 Metadata , version :: MarloweVersion , roles :: Maybe RolesConfig + , threadTokenName :: Maybe Text , contract :: ContractOrSourceId , minUTxODeposit :: Maybe Word64 } @@ -818,7 +819,7 @@ instance ToSchema ContractOrSourceId where data RolesConfig = UsePolicy PolicyId - | UsePolicyWithOpenRoles PolicyId Text [Text] + | UsePolicyWithOpenRoles PolicyId [Text] | Mint (Map Text RoleTokenConfig) deriving (Show, Eq, Ord, Generic) @@ -833,18 +834,17 @@ instance FromJSON RolesConfig where do script <- obj .: "script" unless (script == ("OpenRole" :: String)) $ fail "AllowedValues: \"OpenRole\"" - UsePolicyWithOpenRoles <$> obj .: "policyId" <*> obj .: "threadRoleName" <*> obj .: "openRoleNames" + UsePolicyWithOpenRoles <$> obj .: "policyId" <*> obj .: "openRoleNames" in parseOpen <|> parseMint ) value instance ToJSON RolesConfig where toJSON (UsePolicy policy) = toJSON policy - toJSON (UsePolicyWithOpenRoles policy threadRoleName openRoleNames) = + toJSON (UsePolicyWithOpenRoles policy openRoleNames) = object [ "script" .= ("OpenRole" :: String) , "policyId" .= policy - , "threadRoleName" .= threadRoleName , "openRoleNames" .= openRoleNames ] toJSON (Mint configs) = toJSON configs @@ -867,7 +867,6 @@ data RoleTokenConfig = RoleTokenConfig data Role = ClosedRole Address | OpenRole - | ThreadRole deriving (Show, Eq, Ord, Generic) instance FromJSON RoleTokenConfig where @@ -880,9 +879,8 @@ instance FromJSON RoleTokenConfig where mScriptRole <- do mScript :: Maybe String <- obj .:? "script" for mScript \case - "ThreadRole" -> pure ThreadRole "OpenRole" -> pure OpenRole - _ -> fail "Expected one of \"ThreadRole\" or \'OpenRole\"" + _ -> fail "Expected \'OpenRole\"" metadata <- obj .:? "metadata" role <- case (mAddress, mScriptRole) of (Just address, _) -> pure $ ClosedRole address @@ -924,7 +922,7 @@ instance ToSchema RoleTokenConfig where mempty & type_ ?~ OpenApiString & OpenApi.description ?~ "The type of script receiving the role token." - & enum_ ?~ ["ThreadRole", "OpenRole"] + & enum_ ?~ ["OpenRole"] openSchema = mempty & type_ ?~ OpenApiObject diff --git a/marlowe-runtime-web/test/Spec.hs b/marlowe-runtime-web/test/Spec.hs index 5ab8822863..4cc1ab26ff 100644 --- a/marlowe-runtime-web/test/Spec.hs +++ b/marlowe-runtime-web/test/Spec.hs @@ -218,8 +218,7 @@ instance Arbitrary Web.PostContractsRequest where <*> arbitrary <*> arbitrary <*> arbitrary - -- size of 6 will result in a 1-layer deep contract being generated (this is - -- all we care about for the purposes of schema checking). + <*> arbitrary <*> arbitrary <*> arbitrary shrink = genericShrink @@ -271,7 +270,6 @@ instance Arbitrary Web.Role where oneof [ Web.ClosedRole <$> arbitrary , pure Web.OpenRole - , pure Web.ThreadRole ] shrink = genericShrink diff --git a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs index 419f0d5eeb..f50dcbc2de 100644 --- a/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs +++ b/marlowe-runtime/test/Language/Marlowe/Runtime/Transaction/ConstraintsSpec.hs @@ -1463,10 +1463,6 @@ shrinkDistribution = \case pure $ SendToScripts thread $ Map.delete thread dist' ] -demoteDestination :: (Destination, a) -> Maybe (Chain.Address, a) -demoteDestination (ToAddress addr, a) = Just (addr, a) -demoteDestination _ = Nothing - shrinkMarloweOutputConstraints :: MarloweOutputConstraints 'V1 -> [MarloweOutputConstraints 'V1] shrinkMarloweOutputConstraints = \case MarloweOutputConstraintsNone -> [] diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs index f3342d2e18..7313553266 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/BuildConstraints.hs @@ -252,7 +252,10 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx threadTokenName ) RoleTokensMint mint -> do let WalletContext{availableUtxos} = walletCtx - tokenQuantities = NEMap.toMap $ getTokenQuantities mint + threadTokenName' = + threadTokenName + <$ guard (any (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) $ unMint mint) + tokenQuantities = maybe id (flip Map.insert 1) threadTokenName' $ NEMap.toMap $ getTokenQuantities mint txLovelaceRequirementEstimate = adaAsset . adjustMinUtxo @@ -293,11 +296,7 @@ buildCreateConstraintsV1 mkRoleTokenMintingPolicy era walletCtx threadTokenName ToScript script' -> Right (AssetId policyId threadTokenName, script') ToAddress addr -> Left addr tell $ mustMintRoleToken txOutRef witness (AssetId policyId tokenName) destination' quantity - pure - ( policyId - , AssetId policyId threadTokenName - <$ guard (any (NEMap.member (ToScript OpenRoleScript) . roleTokenRecipients) $ unMint mint) - ) + pure (policyId, AssetId policyId <$> threadTokenName') RoleTokensNone -> do let -- We use ADA currency symbol as a placeholder which -- carries really no semantics in this context. diff --git a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs index 22a1736248..9f27913a5e 100644 --- a/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs +++ b/marlowe-runtime/tx/Language/Marlowe/Runtime/Transaction/Constraints.hs @@ -1437,7 +1437,9 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. solveTxMintValue :: Either ConstraintError (C.TxMintValue C.BuildTx era) solveTxMintValue = case roleTokenConstraints of - MintRoleTokens _ witness (SendToScripts thread distribution) -> go witness (Just thread) distribution + MintRoleTokens _ witness (SendToScripts thread distribution) -> go witness (Just thread) case traverse demoteDestination distribution of + Nothing -> distribution + Just distribution' -> Map.mapKeysMonotonic ToAddress <$> distribution' MintRoleTokens _ witness (SendToAddresses distribution) -> go witness Nothing (Map.mapKeysMonotonic ToAddress <$> distribution) _ -> pure C.TxMintNone where @@ -1454,6 +1456,12 @@ solveInitialTxBodyContent era protocol marloweVersion scriptCtx WalletContext{.. C.BuildTxWith $ Map.fromSet (const witness) policyIds +demoteDestination :: Map Destination Chain.Quantity -> Maybe (Map Chain.Address Chain.Quantity) +demoteDestination dist = + Map.fromDistinctAscList <$> for (Map.toAscList dist) \case + (ToAddress addr, q) -> Just (addr, q) + _ -> Nothing + isAda :: Chain.AssetId -> Bool isAda (Chain.AssetId "" "") = True isAda _ = False From ac5338965e82db5947f8e18d7852d22aef3d9dc4 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Wed, 15 Nov 2023 15:04:52 -0500 Subject: [PATCH 04/11] Update runtime web golden tests --- marlowe-runtime-web/.golden/OpenApi/golden | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/marlowe-runtime-web/.golden/OpenApi/golden b/marlowe-runtime-web/.golden/OpenApi/golden index a945ac5723..b899c3dc3d 100644 --- a/marlowe-runtime-web/.golden/OpenApi/golden +++ b/marlowe-runtime-web/.golden/OpenApi/golden @@ -2119,6 +2119,9 @@ }, "type": "object" }, + "threadTokenName": { + "type": "string" + }, "version": { "$ref": "#/components/schemas/MarloweVersion" } @@ -2212,7 +2215,6 @@ "script": { "description": "The type of script receiving the role token.", "enum": [ - "ThreadRole", "OpenRole" ], "type": "string" From 9966c1cf345ae4ce573965a603f31766b12c48d9 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Wed, 15 Nov 2023 17:07:04 -0500 Subject: [PATCH 05/11] Add support for multiple tokens per role in runtime web --- marlowe-runtime-web/.golden/OpenApi/golden | 23 ++++- .../Marlowe/Runtime/Web/Server/DTO.hs | 39 +++++--- .../src/Language/Marlowe/Runtime/Web/Types.hs | 90 ++++++++++++++----- marlowe-runtime-web/test/Spec.hs | 2 +- 4 files changed, 115 insertions(+), 39 deletions(-) diff --git a/marlowe-runtime-web/.golden/OpenApi/golden b/marlowe-runtime-web/.golden/OpenApi/golden index b899c3dc3d..a426e48487 100644 --- a/marlowe-runtime-web/.golden/OpenApi/golden +++ b/marlowe-runtime-web/.golden/OpenApi/golden @@ -2189,6 +2189,26 @@ }, "RoleTokenConfig": { "oneOf": [ + { + "properties": { + "metadata": { + "$ref": "#/components/schemas/TokenMetadata" + }, + "recipients": { + "additionalProperties": { + "format": "int64", + "maximum": 1.8446744073709551615e19, + "minimum": 0, + "type": "integer" + }, + "type": "object" + } + }, + "required": [ + "recipients" + ], + "type": "object" + }, { "$ref": "#/components/schemas/Address" }, @@ -2202,8 +2222,7 @@ } }, "required": [ - "address", - "metadata" + "address" ], "type": "object" }, diff --git a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs index 0644b5eb94..2fcc49c6a4 100644 --- a/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs +++ b/marlowe-runtime-web/server/Language/Marlowe/Runtime/Web/Server/DTO.hs @@ -49,7 +49,6 @@ import Control.Error.Util (hush) import Control.Monad ((<=<)) import Control.Monad.Except (MonadError, throwError) import Data.Aeson (Value (..)) -import Data.Bifunctor (bimap) import qualified Data.ByteString.Lazy as BSL import Data.Coerce (coerce) import Data.List.NonEmpty (NonEmpty (..)) @@ -232,6 +231,15 @@ instance FromDTO Chain.Tokens where . fmap Map.toAscList . Web.unTokens +instance HasDTO Chain.Quantity where + type DTO Chain.Quantity = Word64 + +instance ToDTO Chain.Quantity where + toDTO = Chain.unQuantity + +instance FromDTO Chain.Quantity where + fromDTO = pure . Chain.Quantity + instance HasDTO Chain.Assets where type DTO Chain.Assets = Web.Assets @@ -803,18 +811,23 @@ instance HasDTO Tx.Mint where type DTO Tx.Mint = Map Text Web.RoleTokenConfig instance FromDTO Tx.Mint where - fromDTO = - fmap Tx.mkMint - . traverse (sequence . bimap tokenNameToText convertConfig) - <=< toNonEmpty - . Map.toList - where - convertConfig (Web.RoleTokenConfig role metadata) = do - destination <- case role of - Web.ClosedRole address -> Tx.ToAddress <$> fromDTO address - Web.OpenRole -> pure $ Tx.ToScript Tx.OpenRoleScript - metadata' <- fromDTO metadata - pure $ Tx.MintRole metadata' $ NEMap.singleton destination 1 + fromDTO = fmap Tx.Mint . NEMap.nonEmptyMap <=< fromDTO + +instance HasDTO Tx.Destination where + type DTO Tx.Destination = Web.RoleTokenRecipient + +instance FromDTO Tx.Destination where + fromDTO = \case + Web.ClosedRole addr -> Tx.ToAddress <$> fromDTO addr + Web.OpenRole -> pure $ Tx.ToScript Tx.OpenRoleScript + +instance HasDTO Tx.MintRole where + type DTO Tx.MintRole = Web.RoleTokenConfig + +instance FromDTO Tx.MintRole where + fromDTO (Web.RoleTokenConfig recipients metadata) = do + recipients' <- NEMap.nonEmptyMap =<< fromDTO recipients + Tx.MintRole <$> fromDTO metadata <*> pure recipients' instance HasDTO Tx.RoleTokenMetadata where type DTO Tx.RoleTokenMetadata = Web.TokenMetadata diff --git a/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs b/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs index 045e4db12c..c93e4f55d4 100644 --- a/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs +++ b/marlowe-runtime-web/src/Language/Marlowe/Runtime/Web/Types.hs @@ -25,7 +25,10 @@ import Data.ByteString.Base16 (decodeBase16, encodeBase16) import Data.Char (isSpace) import Data.Foldable (fold) import Data.Map (Map) +import qualified Data.Map as Map import Data.OpenApi ( + AdditionalProperties (..), + HasAdditionalProperties (..), HasType (..), NamedSchema (..), OpenApiType (..), @@ -827,7 +830,7 @@ instance FromJSON RolesConfig where parseJSON (String s) = UsePolicy <$> parseJSON (String s) parseJSON value = withObject - "RoleConfig" + "RolesConfig" ( \obj -> let parseMint = Mint <$> parseJSON value parseOpen = @@ -859,22 +862,56 @@ instance ToSchema RolesConfig where & oneOf ?~ [policySchema, mintSchema] data RoleTokenConfig = RoleTokenConfig - { role :: Role + { recipients :: RoleTokenRecipients , metadata :: Maybe TokenMetadata } deriving (Show, Eq, Ord, Generic) -data Role +type RoleTokenRecipients = Map RoleTokenRecipient Word64 + +data RoleTokenRecipient = ClosedRole Address | OpenRole deriving (Show, Eq, Ord, Generic) +roleTokenRecipientToText :: RoleTokenRecipient -> Text +roleTokenRecipientToText = \case + ClosedRole addr -> unAddress addr + OpenRole -> "OpenRole" + +roleTokenRecipientFromText :: Text -> RoleTokenRecipient +roleTokenRecipientFromText = \case + "OpenRole" -> OpenRole + addr -> ClosedRole $ Address addr + +instance ToJSON RoleTokenRecipient where + toJSON = String . roleTokenRecipientToText + +instance ToJSONKey RoleTokenRecipient where + toJSONKey = toJSONKeyText roleTokenRecipientToText + +instance FromJSON RoleTokenRecipient where + parseJSON = withText "RoleTokenRecipient" $ pure . roleTokenRecipientFromText + +instance FromJSONKey RoleTokenRecipient where + fromJSONKey = FromJSONKeyText roleTokenRecipientFromText + instance FromJSON RoleTokenConfig where - parseJSON (String s) = pure . flip RoleTokenConfig Nothing . ClosedRole $ Address s + parseJSON (String "OpenRole") = + pure + . flip RoleTokenConfig Nothing + $ Map.singleton OpenRole 1 + parseJSON (String s) = + pure + . flip RoleTokenConfig Nothing + . flip Map.singleton 1 + . ClosedRole + $ Address s parseJSON value = withObject "RoleTokenConfig" ( \obj -> do + mRecipients <- obj .:? "recipients" mAddress <- obj .:? "address" mScriptRole <- do mScript :: Maybe String <- obj .:? "script" @@ -882,38 +919,45 @@ instance FromJSON RoleTokenConfig where "OpenRole" -> pure OpenRole _ -> fail "Expected \'OpenRole\"" metadata <- obj .:? "metadata" - role <- case (mAddress, mScriptRole) of - (Just address, _) -> pure $ ClosedRole address - (_, Just scriptRole) -> pure scriptRole - _ -> fail "one of address or script required" + recipients <- case (mRecipients, mAddress, mScriptRole) of + (Just recipients, _, _) -> pure recipients + (_, Just address, _) -> pure $ Map.singleton (ClosedRole address) 1 + (_, _, Just scriptRole) -> pure $ Map.singleton scriptRole 1 + _ -> fail "one of recipients, address, or script required" pure RoleTokenConfig{..} ) value instance ToJSON RoleTokenConfig where - toJSON (RoleTokenConfig (ClosedRole address) Nothing) = toJSON address - toJSON (RoleTokenConfig (ClosedRole address) config) = + toJSON (RoleTokenConfig recipients metadata) = object - [ "address" .= address - , "metadata" .= config - ] - toJSON (RoleTokenConfig scriptRole Nothing) = - object - ["script" .= show scriptRole] - toJSON (RoleTokenConfig scriptRole config) = - object - [ "script" .= show scriptRole - , "metadata" .= config + [ "recipients" .= recipients + , "metadata" .= metadata ] instance ToSchema RoleTokenConfig where declareNamedSchema _ = do simpleSchema <- declareSchemaRef (Proxy @Address) metadataSchema <- declareSchemaRef (Proxy @TokenMetadata) - let advancedSchema = + quantitySchema <- declareSchemaRef (Proxy @Word64) + let multiSchema = + mempty + & type_ ?~ OpenApiObject + & required .~ ["recipients"] + & properties + .~ [ + ( "recipients" + , Inline $ + mempty + & type_ ?~ OpenApiObject + & additionalProperties ?~ AdditionalPropertiesSchema quantitySchema + ) + , ("metadata", metadataSchema) + ] + advancedSchema = mempty & type_ ?~ OpenApiObject - & required .~ ["address", "metadata"] + & required .~ ["address"] & properties .~ [ ("address", simpleSchema) , ("metadata", metadataSchema) @@ -934,7 +978,7 @@ instance ToSchema RoleTokenConfig where pure $ NamedSchema (Just "RoleTokenConfig") $ mempty - & oneOf ?~ [simpleSchema, Inline advancedSchema, Inline openSchema] + & oneOf ?~ [Inline multiSchema, simpleSchema, Inline advancedSchema, Inline openSchema] data TokenMetadata = TokenMetadata { name :: Text diff --git a/marlowe-runtime-web/test/Spec.hs b/marlowe-runtime-web/test/Spec.hs index 4cc1ab26ff..2a8e2d3cf5 100644 --- a/marlowe-runtime-web/test/Spec.hs +++ b/marlowe-runtime-web/test/Spec.hs @@ -265,7 +265,7 @@ instance Arbitrary Web.RoleTokenConfig where arbitrary = Web.RoleTokenConfig <$> arbitrary <*> arbitrary shrink = genericShrink -instance Arbitrary Web.Role where +instance Arbitrary Web.RoleTokenRecipient where arbitrary = oneof [ Web.ClosedRole <$> arbitrary From 111eba69eeb285c265c2308e1c1ef4519fb9e112 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Wed, 15 Nov 2023 17:08:55 -0500 Subject: [PATCH 06/11] Show test log always --- .github/workflows/test.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ad6bb1369f..7391eded40 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,9 +76,8 @@ jobs: path: | /tmp/workspaces !/tmp/workspaces/**/*.socket - - if: ${{ steps.cache-results.outputs.cache-hit == 'true' }} - name: Display cached test results + - name: Display test results run: | - echo "Using cached test results. Test log:" + echo "Test log:" cat ~/integration-tests.log exit $(cat ~/integration-tests.status) From bca272fd2f78fa291338e76e03e5657a8c180d08 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Thu, 16 Nov 2023 07:52:15 -0500 Subject: [PATCH 07/11] Update integration tests --- .../Marlowe/Runtime/Web/Contracts/Contract/Post.hs | 4 ++-- .../Marlowe/Runtime/Web/Contracts/Contract/Put.hs | 8 ++++++-- .../Web/Contracts/Transactions/Transaction/Post.hs | 8 ++++++-- .../Runtime/Web/Contracts/Transactions/Transaction/Put.hs | 8 ++++++-- .../test/Language/Marlowe/Runtime/Web/StandardContract.hs | 8 ++++++-- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs index bb8ed9e3cf..7d21241ade 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Post.hs @@ -22,13 +22,13 @@ spec :: Spec spec = describe "Valid POST /contracts" do it "returns the contract header" . specWithRolesConfig Nothing - $ Web.Mint . Map.singleton "PartyA" . flip Web.RoleTokenConfig Nothing . Web.ClosedRole + $ Web.Mint . Map.singleton "PartyA" . flip Web.RoleTokenConfig Nothing . flip Map.singleton 1 . Web.ClosedRole it "returns the contract header (open roles)" . specWithRolesConfig (Just "Thread") . const . Web.Mint $ Map.fromList - [ ("PartyA", Web.RoleTokenConfig Web.OpenRole Nothing) + [ ("PartyA", Web.RoleTokenConfig (Map.singleton Web.OpenRole 1) Nothing) ] specWithRolesConfig :: Maybe Text -> (Web.Address -> Web.RolesConfig) -> IO () diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs index 287c810f1f..352120e068 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Contract/Put.hs @@ -8,7 +8,7 @@ import Language.Marlowe.Runtime.Integration.Common import Language.Marlowe.Runtime.Integration.StandardContract (standardContract) import Language.Marlowe.Runtime.Plutus.V2.Api (toPlutusAddress) import Language.Marlowe.Runtime.Transaction.Api (WalletAddresses (..)) -import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), Role (ClosedRole), RoleTokenConfig (..)) +import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), RoleTokenConfig (..), RoleTokenRecipient (ClosedRole)) import qualified Language.Marlowe.Runtime.Web as Web import Language.Marlowe.Runtime.Web.Client (postContract, putContract) import Language.Marlowe.Runtime.Web.Common (signShelleyTransaction') @@ -46,7 +46,11 @@ spec = describe "POST /contracts/{contractId}/transactions" do { metadata = mempty , version = Web.V1 , threadTokenName = Nothing - , roles = Just $ Web.Mint $ Map.singleton "PartyA" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing + , roles = + Just + . Web.Mint + . Map.singleton "PartyA" + $ RoleTokenConfig (Map.singleton (ClosedRole partyAWebChangeAddress) 1) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing , tags = mempty diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs index 081aaef5f6..01b9f2c8f3 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Post.hs @@ -11,7 +11,7 @@ import Language.Marlowe.Runtime.Integration.Common import Language.Marlowe.Runtime.Integration.StandardContract (standardContract) import Language.Marlowe.Runtime.Plutus.V2.Api (toPlutusAddress) import Language.Marlowe.Runtime.Transaction.Api (WalletAddresses (..)) -import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), Role (ClosedRole), RoleTokenConfig (..)) +import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), RoleTokenConfig (..), RoleTokenRecipient (ClosedRole)) import qualified Language.Marlowe.Runtime.Web as Web import Language.Marlowe.Runtime.Web.Client (postContract, postTransaction) import Language.Marlowe.Runtime.Web.Common (submitContract) @@ -49,7 +49,11 @@ spec = describe "POST /contracts/{contractId}/transactions" do { metadata = mempty , version = Web.V1 , threadTokenName = Nothing - , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing + , roles = + Just + . Web.Mint + . Map.singleton "Party A" + $ RoleTokenConfig (Map.singleton (ClosedRole partyAWebChangeAddress) 1) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing , tags = mempty diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs index b59a75b32c..f6ae075c4e 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/Contracts/Transactions/Transaction/Put.hs @@ -16,7 +16,7 @@ import Language.Marlowe.Runtime.Integration.Common ( import Language.Marlowe.Runtime.Integration.StandardContract (standardContract) import Language.Marlowe.Runtime.Plutus.V2.Api (toPlutusAddress) import Language.Marlowe.Runtime.Transaction.Api (WalletAddresses (..)) -import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), Role (ClosedRole), RoleTokenConfig (..)) +import Language.Marlowe.Runtime.Web (ContractOrSourceId (..), RoleTokenConfig (..), RoleTokenRecipient (ClosedRole)) import qualified Language.Marlowe.Runtime.Web as Web import Language.Marlowe.Runtime.Web.Client (postContract, postTransaction, putTransaction) import Language.Marlowe.Runtime.Web.Common (signShelleyTransaction', submitContract) @@ -54,7 +54,11 @@ spec = describe "PUT /contracts/{contractId}/transactions/{transaction}" do { metadata = mempty , version = Web.V1 , threadTokenName = Nothing - , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing + , roles = + Just + . Web.Mint + . Map.singleton "Party A" + $ RoleTokenConfig (Map.singleton (ClosedRole partyAWebChangeAddress) 1) Nothing , contract = ContractOrSourceId $ Left contract , minUTxODeposit = Nothing , tags = mempty diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs index eb3e842196..fd41e5feae 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Web/StandardContract.hs @@ -27,8 +27,8 @@ import Language.Marlowe.Runtime.Web ( CreateTxEnvelope, PayoutHeader (..), PayoutStatus (..), - Role (ClosedRole), RoleTokenConfig (..), + RoleTokenRecipient (ClosedRole), WithdrawTxEnvelope, ) import qualified Language.Marlowe.Runtime.Web as Web @@ -107,7 +107,11 @@ createStandardContractWithTags tags partyAWallet partyBWallet = do { metadata = mempty , version = Web.V1 , threadTokenName = Nothing - , roles = Just $ Web.Mint $ Map.singleton "Party A" $ RoleTokenConfig (ClosedRole partyAWebChangeAddress) Nothing + , roles = + Just + . Web.Mint + . Map.singleton "Party A" + $ RoleTokenConfig (Map.singleton (ClosedRole partyAWebChangeAddress) 1) Nothing , contract = ContractOrSourceId $ Right contractSourceId , minUTxODeposit = Nothing , tags = tags From 27df92d6dcc4dac2675c7b8687ba28420b9bc5f5 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Thu, 16 Nov 2023 14:06:56 -0500 Subject: [PATCH 08/11] Change signature of mkMint to support tabular input --- marlowe-apps/marlowe-apps.cabal | 1 - .../src/Language/Marlowe/Runtime/App/Build.hs | 6 ++---- .../marlowe-integration-tests.cabal | 1 - .../test/Language/Marlowe/Runtime/CliSpec.hs | 12 +++++------- .../Runtime/Integration/ApplyInputs.hs | 3 +-- .../Marlowe/Runtime/Integration/Create.hs | 8 ++------ .../Marlowe/Runtime/Integration/OpenRoles.hs | 19 ++++++++++++------- .../Runtime/Integration/StandardContract.hs | 4 +--- .../Marlowe/Runtime/CLI/Command/Create.hs | 8 +++----- marlowe-runtime-cli/marlowe-runtime-cli.cabal | 1 - marlowe-runtime/marlowe-runtime.cabal | 1 + .../Marlowe/Runtime/Transaction/Api.hs | 7 +++++-- 12 files changed, 32 insertions(+), 39 deletions(-) diff --git a/marlowe-apps/marlowe-apps.cabal b/marlowe-apps/marlowe-apps.cabal index 40049ce857..ab2da35353 100644 --- a/marlowe-apps/marlowe-apps.cabal +++ b/marlowe-apps/marlowe-apps.cabal @@ -45,7 +45,6 @@ library , monad-control , mtl , network - , nonempty-containers ^>=0.3.4 , optparse-applicative , random , stm diff --git a/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs b/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs index cb12d55f85..a46f2d693e 100644 --- a/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs +++ b/marlowe-apps/src/Language/Marlowe/Runtime/App/Build.hs @@ -12,7 +12,7 @@ module Language.Marlowe.Runtime.App.Build ( buildWithdrawal, ) where -import Data.Bifunctor (bimap, second) +import Data.Bifunctor (bimap) import Data.Time (UTCTime, secondsToNominalDiffTime) import Data.Time.Clock.POSIX (posixSecondsToUTCTime) import Data.Void (Void) @@ -27,7 +27,6 @@ import Language.Marlowe.Runtime.Transaction.Api ( InputsApplied (..), InputsAppliedInEra (..), MarloweTxCommand (ApplyInputs, Create, Withdraw), - MintRole (..), RoleTokensConfig (..), WalletAddresses (WalletAddresses), WithdrawTx (..), @@ -37,7 +36,6 @@ import Language.Marlowe.Runtime.Transaction.Api ( import Network.Protocol.Job.Client (liftCommand) import qualified Data.List.NonEmpty as NE (fromList) -import qualified Data.Map.NonEmpty as NEMap import qualified Data.Map.Strict as M (Map, null, toList) import Data.Set (Set) import qualified Data.Set as S (fromList) @@ -58,7 +56,7 @@ buildCreation version' contract roles minUtxo metadata' = if M.null roles then RoleTokensNone else - RoleTokensMint . mkMint . fmap (second $ MintRole Nothing . flip NEMap.singleton 1 . ToAddress) . NE.fromList . M.toList $ + RoleTokensMint . mkMint . fmap (\(token, addr) -> (token, Nothing, ToAddress addr, 1)) . NE.fromList . M.toList $ roles in build show (\(ContractCreated era ContractCreatedInEra{..}) -> (contractId, TxBodyInEraWithReferenceScripts era txBody)) $ \w -> Create Nothing version' w Nothing roles' metadata' minUtxo $ Left contract diff --git a/marlowe-integration-tests/marlowe-integration-tests.cabal b/marlowe-integration-tests/marlowe-integration-tests.cabal index ec1130971b..3fccc9b01a 100644 --- a/marlowe-integration-tests/marlowe-integration-tests.cabal +++ b/marlowe-integration-tests/marlowe-integration-tests.cabal @@ -113,7 +113,6 @@ executable marlowe-integration-tests , marlowe-test , mtl , network-uri - , nonempty-containers ^>=0.3.4 , pipes ^>=4.3.16 , plutus-ledger-api , QuickCheck diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs index 81e36f278c..9a444c3770 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/CliSpec.hs @@ -21,7 +21,6 @@ import Data.Foldable (for_) import Data.Function (on) import Data.Map (Map) import qualified Data.Map as Map -import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (maybeToList) import qualified Data.Maybe as Maybe import qualified Data.Set as Set @@ -65,7 +64,6 @@ import Language.Marlowe.Runtime.Transaction.Api ( InputsApplied (..), InputsAppliedInEra (..), MarloweTxCommand (..), - MintRole (..), WalletAddresses (..), WithdrawTx (..), ) @@ -306,7 +304,7 @@ depositSpec = describe "deposit" $ Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress $ changeAddress $ addresses partyAWallet, 1) ) (standardMetadata tags) Nothing @@ -362,7 +360,7 @@ chooseSpec = describe "choose" $ Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress $ changeAddress $ addresses partyAWallet, 1) ) (standardMetadata tags) Nothing @@ -415,7 +413,7 @@ notifySpec = describe "notify" $ Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress $ changeAddress $ addresses partyAWallet, 1) ) (standardMetadata tags) Nothing @@ -491,7 +489,7 @@ applySpec = describe "apply" $ Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress $ changeAddress $ addresses partyAWallet, 1) ) (standardMetadata tags) Nothing @@ -551,7 +549,7 @@ withdrawSpec = describe "withdraw" $ Nothing ( Runtime.Transaction.Api.RoleTokensMint $ Runtime.Transaction.Api.mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress $ changeAddress $ addresses partyAWallet, 1) ) (standardMetadata tags) Nothing diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs index 9df9a6e815..ba3b1e1635 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs @@ -18,7 +18,6 @@ import Control.Monad.Reader (ask) import Data.Functor (void) import qualified Data.List.NonEmpty as NE import qualified Data.Map as Map -import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (fromJust) import qualified Data.Set as Set import Data.Time (UTCTime, addUTCTime, getCurrentTime, secondsToNominalDiffTime) @@ -1057,7 +1056,7 @@ mkRoleTokens :: [(TokenName, Wallet)] -> RoleTokensConfig mkRoleTokens = RoleTokensMint . mkMint - . (fmap . fmap) (MintRole Nothing . flip NEMap.singleton 1 . ToAddress . changeAddress . addresses) + . fmap (\(token, Wallet{..}) -> (token, Nothing, ToAddress $ changeAddress addresses, 1)) . NE.fromList submitCreate :: Wallet -> ContractCreated 'V1 -> Integration () diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs index 92c8898804..6bb26962e9 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs @@ -29,7 +29,6 @@ import Data.Functor (($>), (<&>)) import Data.List.NonEmpty (NonEmpty) import qualified Data.List.NonEmpty as NE import qualified Data.Map as Map -import qualified Data.Map.NonEmpty as NEMap import Data.Maybe (catMaybes, fromJust) import qualified Data.Set as Set import Data.Void (Void) @@ -367,16 +366,13 @@ mkRoleTokensConfig TestData{..} = \case RoleTokensMint $ mkMint $ NE.fromList - [ ("Role", MintRole Nothing $ NEMap.singleton (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet) 1) + [ ("Role", Nothing, ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, 1) ] MintRoleTokensMetadata -> RoleTokensMint $ mkMint $ NE.fromList - [ - ( "Role" - , MintRole (Just testNftMetadata) $ NEMap.singleton (ToAddress $ changeAddress singleAddressInsufficientBalanceWallet) 1 - ) + [ ("Role", Just testNftMetadata, ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, 1) ] testNftMetadata :: RoleTokenMetadata diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs index 69eaf0a7e1..c4be3cefea 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/OpenRoles.hs @@ -1,12 +1,10 @@ module Language.Marlowe.Runtime.Integration.OpenRoles where -import qualified Data.Map.NonEmpty as NEMap import Language.Marlowe.Runtime.Core.ScriptRegistry (HelperScript (OpenRoleScript)) import Language.Marlowe.Runtime.Integration.Basic (basicScenarioWithCreator) import Language.Marlowe.Runtime.Integration.StandardContract (createStandardContractWithRolesConfig) import Language.Marlowe.Runtime.Transaction.Api ( Destination (..), - MintRole (..), RoleTokensConfig (..), mkMint, ) @@ -14,8 +12,15 @@ import Test.Hspec (Spec, describe) spec :: Spec spec = describe "Open roles" do - basicScenarioWithCreator - . createStandardContractWithRolesConfig (Just "Thread") - . RoleTokensMint - . mkMint - $ pure ("Party A", MintRole Nothing $ NEMap.singleton (ToScript OpenRoleScript) 1) + describe "single token" do + basicScenarioWithCreator + . createStandardContractWithRolesConfig (Just "Thread") + . RoleTokensMint + . mkMint + $ pure ("Party A", Nothing, ToScript OpenRoleScript, 1) + describe "multiple tokens" do + basicScenarioWithCreator + . createStandardContractWithRolesConfig (Just "Thread") + . RoleTokensMint + . mkMint + $ pure ("Party A", Nothing, ToScript OpenRoleScript, 2) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs index 0f75bea32b..2c345a0e5f 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/StandardContract.hs @@ -6,7 +6,6 @@ module Language.Marlowe.Runtime.Integration.StandardContract where import Cardano.Api (getTxId) import Control.Monad.IO.Class (liftIO) import qualified Data.Map as Map -import qualified Data.Map.NonEmpty as NEMap import Data.Set (Set) import qualified Data.Set as Set import Data.Time (NominalDiffTime, UTCTime, addUTCTime, getCurrentTime, secondsToNominalDiffTime) @@ -51,7 +50,6 @@ import Language.Marlowe.Runtime.Transaction.Api ( Destination (ToAddress), InputsApplied (..), InputsAppliedInEra (..), - MintRole (..), RoleTokensConfig (..), WalletAddresses (changeAddress), WithdrawTx (..), @@ -119,7 +117,7 @@ createStandardContractWithTags tags partyAWallet = Nothing ( RoleTokensMint $ mkMint $ - pure ("Party A", MintRole Nothing $ NEMap.singleton (ToAddress . changeAddress $ addresses partyAWallet) 1) + pure ("Party A", Nothing, ToAddress . changeAddress $ addresses partyAWallet, 1) ) tags partyAWallet diff --git a/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs b/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs index aeea3c58d7..2919fcc88c 100644 --- a/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs +++ b/marlowe-runtime-cli/app/Language/Marlowe/Runtime/CLI/Command/Create.hs @@ -16,7 +16,6 @@ import qualified Data.ByteString.Char8 as BS8 import Data.List.NonEmpty (NonEmpty (..)) import Data.Map (Map) import qualified Data.Map as Map -import qualified Data.Map.NonEmpty as NEMap import Data.String (fromString) import Data.Text (pack) import qualified Data.Yaml as Yaml @@ -54,7 +53,6 @@ import Language.Marlowe.Runtime.Transaction.Api ( ContractCreatedInEra (..), CreateError, Destination (ToAddress), - MintRole (..), RoleTokenMetadata, RoleTokensConfig (..), mkMint, @@ -238,8 +236,8 @@ runCreateCommand TxCommand{walletAddresses, signingMethod, tagsFile, metadataFil minting' <- case roles of Nothing -> pure RoleTokensNone Just (MintSimple tokens) -> do - let toNFT addr = MintRole Nothing $ NEMap.singleton (ToAddress addr) 1 - pure $ RoleTokensMint $ mkMint $ fmap toNFT <$> tokens + let toNFT (token, addr) = (token, Nothing, ToAddress addr, 1) + pure $ RoleTokensMint $ mkMint $ toNFT <$> tokens Just (UseExistingPolicyId policyId) -> pure $ RoleTokensUsePolicy policyId mempty Just (MintConfig roleTokensConfigFilePath) -> do configMap <- ExceptT $ liftIO $ first RolesConfigFileDecodingError <$> A.eitherDecodeFileStrict roleTokensConfigFilePath @@ -249,7 +247,7 @@ runCreateCommand TxCommand{walletAddresses, signingMethod, tagsFile, metadataFil pure $ RoleTokensMint $ mkMint $ - fmap (\RoleConfig{..} -> MintRole (Just metadata) $ NEMap.singleton (ToAddress address) 1) <$> x :| xs + (\(token, RoleConfig{..}) -> (token, Just metadata, ToAddress address, 1)) <$> x :| xs (ContractId contractId, safetyErrors) <- run MarloweV1 minting' liftIO $ if null safetyErrors diff --git a/marlowe-runtime-cli/marlowe-runtime-cli.cabal b/marlowe-runtime-cli/marlowe-runtime-cli.cabal index 561ccf35bc..4e20a3f4e4 100644 --- a/marlowe-runtime-cli/marlowe-runtime-cli.cabal +++ b/marlowe-runtime-cli/marlowe-runtime-cli.cabal @@ -87,7 +87,6 @@ executable marlowe-runtime-cli , monad-control , mtl , network - , nonempty-containers ^>=0.3.4 , optparse-applicative , pipes , plutus-ledger-api diff --git a/marlowe-runtime/marlowe-runtime.cabal b/marlowe-runtime/marlowe-runtime.cabal index bce142f69e..be4cfc9798 100644 --- a/marlowe-runtime/marlowe-runtime.cabal +++ b/marlowe-runtime/marlowe-runtime.cabal @@ -524,6 +524,7 @@ library tx-api , nonempty-containers ^>=0.3.4 , plutus-core ^>=1.5 , plutus-ledger-api ^>=1.5 + , semigroupoids ^>=5.3 , text ^>=1.2 , time >=1.9 && <2 diff --git a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs index a973921110..a8081fb206 100644 --- a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs +++ b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs @@ -126,6 +126,7 @@ import Data.List (nub) import qualified Data.List.NonEmpty as NE import Data.Map.NonEmpty (NEMap) import qualified Data.Map.NonEmpty as NEMap +import Data.Semigroup.Foldable (Foldable1 (foldMap1)) import Network.Protocol.Codec.Spec (Variations (..), varyAp) import Network.Protocol.Handshake.Types (HasSignature (..)) import Network.Protocol.Job.Types @@ -321,8 +322,10 @@ instance Semigroup Mint where { unMint = on (NEMap.unionWith (<>)) unMint a b } -mkMint :: NonEmpty (TokenName, MintRole) -> Mint -mkMint = Mint . NEMap.fromList +mkMint :: NonEmpty (TokenName, Maybe RoleTokenMetadata, Destination, Chain.Quantity) -> Mint +mkMint = + Mint . foldMap1 \(token, metadata, dest, quantity) -> + NEMap.singleton token $ MintRole metadata $ NEMap.singleton dest quantity data RoleTokensConfig = RoleTokensNone From 2391b598c699e9bb0f47a198d371715d17496076 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Thu, 16 Nov 2023 14:48:57 -0500 Subject: [PATCH 09/11] Add create and apply tests for multiple tokens per role --- .../Runtime/Integration/ApplyInputs.hs | 67 ++++++++++--------- .../Marlowe/Runtime/Integration/Create.hs | 29 ++++++-- .../Marlowe/Runtime/Transaction/Api.hs | 5 +- 3 files changed, 62 insertions(+), 39 deletions(-) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs index ba3b1e1635..68da50aea2 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/ApplyInputs.hs @@ -675,7 +675,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput INotify] liftIO $ scriptOutput output `shouldBe` Nothing - it "should accept the correct deposit from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role1 deposit from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 0 InputsApplied _ InputsAppliedInEra{output} <- expectRight "Failed to apply inputs" @@ -686,7 +686,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IDeposit (Role "Role1") (Role "Role1") ada 1_000_000] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet2's deposit from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should reject a Role2 deposit from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 0 result <- applyInputs @@ -710,7 +710,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se [NormalInput $ IDeposit address address ada 1_000_000] SubmitFailed msg <- expectLeft "Expected a failure" =<< submit' wallet era txBody liftIO $ msg `shouldContain` "MissingRequiredSigners" - it "should accept the correct deposit from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role2 deposit from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 1 InputsApplied _ InputsAppliedInEra{output} <- expectRight "Failed to apply inputs" @@ -721,7 +721,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IDeposit (Role "Role2") (Role "Role2") ada 1_000_000] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet1's deposit from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should reject a Role1 deposit from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 1 result <- applyInputs @@ -745,7 +745,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se [NormalInput $ IDeposit address address ada 1_000_000] SubmitFailed msg <- expectLeft "Expected a failure" =<< submit' wallet era txBody liftIO $ msg `shouldContain` "MissingRequiredSigners" - it "should accept the correct deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{contractId}) -> do + it "should accept wallet3's deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{contractId}) -> do wallet <- getGenesisWallet 2 let address = Types.Address Address.testnet $ fromJust $ toPlutusAddress $ changeAddress $ addresses wallet InputsApplied _ InputsAppliedInEra{output} <- @@ -757,17 +757,18 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IDeposit address address ada 1_000_000] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet1's deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role1 deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 2 - result <- - applyInputs - MarloweV1 - (addresses wallet) - contractId - emptyMarloweTransactionMetadata - [NormalInput $ IDeposit (Role "Role1") (Role "Role1") ada 1_000_000] - liftIO $ result `shouldBe` Left (ApplyInputsConstraintError $ RoleTokenNotFound $ AssetId rolesCurrency "Role1") - it "should reject wallet2's deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + InputsApplied _ InputsAppliedInEra{output} <- + expectRight "Failed to apply inputs" + =<< applyInputs + MarloweV1 + (addresses wallet) + contractId + emptyMarloweTransactionMetadata + [NormalInput $ IDeposit (Role "Role1") (Role "Role1") ada 1_000_000] + liftIO $ scriptOutput output `shouldBe` Nothing + it "should reject a Role2 deposit from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 2 result <- applyInputs @@ -777,7 +778,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IDeposit (Role "Role2") (Role "Role2") ada 1_000_000] liftIO $ result `shouldBe` Left (ApplyInputsConstraintError $ RoleTokenNotFound $ AssetId rolesCurrency "Role2") - it "should accept the correct choice from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role1 choice from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 0 InputsApplied _ InputsAppliedInEra{output} <- expectRight "Failed to apply inputs" @@ -788,7 +789,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IChoice (ChoiceId "choice1" (Role "Role1")) 0] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet2's choice from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should reject a Role2 choice from wallet 1" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 0 result <- applyInputs @@ -812,7 +813,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se [NormalInput $ IChoice (ChoiceId "choice3" address) 0] SubmitFailed msg <- expectLeft "Expected a failure" =<< submit' wallet era txBody liftIO $ msg `shouldContain` "MissingRequiredSigners" - it "should accept the correct choice from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role2 choice from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 1 InputsApplied _ InputsAppliedInEra{output} <- expectRight "Failed to apply inputs" @@ -823,7 +824,7 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IChoice (ChoiceId "choice2" (Role "Role2")) 0] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet1's choice from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should reject a Role1 choice from wallet 2" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 1 result <- applyInputs @@ -859,17 +860,18 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se emptyMarloweTransactionMetadata [NormalInput $ IChoice (ChoiceId "choice3" address) 0] liftIO $ scriptOutput output `shouldBe` Nothing - it "should reject wallet1's choice from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + it "should accept a Role1 choice from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 2 - result <- - applyInputs - MarloweV1 - (addresses wallet) - contractId - emptyMarloweTransactionMetadata - [NormalInput $ IChoice (ChoiceId "choice1" (Role "Role1")) 0] - liftIO $ result `shouldBe` Left (ApplyInputsConstraintError $ RoleTokenNotFound $ AssetId rolesCurrency "Role1") - it "should reject wallet2's choice from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do + InputsApplied _ InputsAppliedInEra{output} <- + expectRight "Failed to apply inputs" + =<< applyInputs + MarloweV1 + (addresses wallet) + contractId + emptyMarloweTransactionMetadata + [NormalInput $ IChoice (ChoiceId "choice1" (Role "Role1")) 0] + liftIO $ scriptOutput output `shouldBe` Nothing + it "should reject a Role2 choice from wallet 3" $ runAsIntegration \(ContractCreated _ ContractCreatedInEra{..}) -> do wallet <- getGenesisWallet 2 result <- applyInputs @@ -912,7 +914,12 @@ whenNonEmptySpec = parallel $ describe "Non-Empty When contracts" $ aroundAll se MarloweV1 (addresses wallet1) Nothing - (mkRoleTokens [("Role1", wallet1), ("Role2", wallet2)]) + ( mkRoleTokens + [ ("Role1", wallet1) + , ("Role1", wallet3) + , ("Role2", wallet2) + ] + ) emptyMarloweTransactionMetadata Nothing (Left $ When cases (utcTimeToPOSIXTime $ addUTCTime (secondsToNominalDiffTime 100) startTime) Close) diff --git a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs index 6bb26962e9..10cfccca8e 100644 --- a/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs +++ b/marlowe-integration-tests/test/Language/Marlowe/Runtime/Integration/Create.hs @@ -254,13 +254,16 @@ roleTokenSpec = \case TxOutValue _ value' -> Set.fromList $ fst <$> valueToList value' tokensOutput `shouldBe` Set.singleton C.AdaAssetId -- Metadata checks done with other metadata checks. - _ -> Just do + testCase -> Just do it "Should mint the required tokens" \(_, ContractCreated _ ContractCreatedInEra{..}) -> do - let mintedTokenNames = case txBody of + let mintedTokens = case txBody of TxBody TxBodyContent{..} -> case txMintValue of TxMintNone -> mempty - TxMintValue _ value _ -> Map.keysSet $ unTokens $ tokens $ assetsFromCardanoValue value - mintedTokenNames `shouldBe` Set.singleton (AssetId rolesCurrency "Role") + TxMintValue _ value _ -> tokens $ assetsFromCardanoValue value + expectedTokens = case testCase of + MintRoleTokensMultiple -> Tokens $ Map.singleton (AssetId rolesCurrency "Role") 3 + _ -> Tokens $ Map.singleton (AssetId rolesCurrency "Role") 1 + mintedTokens `shouldBe` expectedTokens it "Should distribute the role tokens" \(TestData{..}, ContractCreated era ContractCreatedInEra{..}) -> do let tokenDistribution = case txBody of TxBody TxBodyContent{..} -> @@ -275,8 +278,14 @@ roleTokenSpec = \case $ unTokens $ tokens $ fromCardanoTxOutValue value - tokenDistribution - `shouldBe` Map.singleton (changeAddress singleAddressInsufficientBalanceWallet, AssetId rolesCurrency "Role") 1 + expectedDistribution = case testCase of + MintRoleTokensMultiple -> + Map.fromList + [ ((changeAddress singleAddressInsufficientBalanceWallet, AssetId rolesCurrency "Role"), 2) + , ((changeAddress multiAddressInsufficientBalanceWallet, AssetId rolesCurrency "Role"), 1) + ] + _ -> Map.singleton (changeAddress singleAddressInsufficientBalanceWallet, AssetId rolesCurrency "Role") 1 + tokenDistribution `shouldBe` expectedDistribution metadataSpec :: RoleTokenCase -> MetadataCase -> Maybe (SpecWith (TestData, ContractCreated 'V1)) metadataSpec roleTokens metadataCase = Just do @@ -374,6 +383,13 @@ mkRoleTokensConfig TestData{..} = \case NE.fromList [ ("Role", Just testNftMetadata, ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, 1) ] + MintRoleTokensMultiple -> + RoleTokensMint $ + mkMint $ + NE.fromList + [ ("Role", Nothing, ToAddress $ changeAddress singleAddressInsufficientBalanceWallet, 2) + , ("Role", Nothing, ToAddress $ changeAddress multiAddressInsufficientBalanceWallet, 1) + ] testNftMetadata :: RoleTokenMetadata testNftMetadata = @@ -490,6 +506,7 @@ data RoleTokenCase = NoRoleTokens | ExistingPolicyRoleTokens | MintRoleTokensSimple + | MintRoleTokensMultiple | MintRoleTokensMetadata deriving (Show, Eq, Enum, Bounded) diff --git a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs index a8081fb206..eb15360a65 100644 --- a/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs +++ b/marlowe-runtime/tx-api/Language/Marlowe/Runtime/Transaction/Api.hs @@ -323,9 +323,8 @@ instance Semigroup Mint where } mkMint :: NonEmpty (TokenName, Maybe RoleTokenMetadata, Destination, Chain.Quantity) -> Mint -mkMint = - Mint . foldMap1 \(token, metadata, dest, quantity) -> - NEMap.singleton token $ MintRole metadata $ NEMap.singleton dest quantity +mkMint = foldMap1 \(token, metadata, dest, quantity) -> + Mint $ NEMap.singleton token $ MintRole metadata $ NEMap.singleton dest quantity data RoleTokensConfig = RoleTokensNone From 822b2b52f76261eee68b350b3e77c6834b6d7633 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Thu, 16 Nov 2023 15:11:09 -0500 Subject: [PATCH 10/11] Update changelog --- ...1116_150717_jhbertra_plt_8244_multiple_tokens_per_role.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 marlowe-runtime/changelog.d/20231116_150717_jhbertra_plt_8244_multiple_tokens_per_role.md diff --git a/marlowe-runtime/changelog.d/20231116_150717_jhbertra_plt_8244_multiple_tokens_per_role.md b/marlowe-runtime/changelog.d/20231116_150717_jhbertra_plt_8244_multiple_tokens_per_role.md new file mode 100644 index 0000000000..7a8ff82a61 --- /dev/null +++ b/marlowe-runtime/changelog.d/20231116_150717_jhbertra_plt_8244_multiple_tokens_per_role.md @@ -0,0 +1,5 @@ +### Added + +- Support for advanced role token distribution. + - Mint multiple tokens per role + - Send tokens to multiple recipients. From e97f60bd4cf9da63320e51d43393384d640522f8 Mon Sep 17 00:00:00 2001 From: Jamie Bertram Date: Thu, 16 Nov 2023 15:51:16 -0500 Subject: [PATCH 11/11] Show test log after running tests --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7391eded40..11846a0776 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,7 +63,8 @@ jobs: run: | result/bin/marlowe-integration-tests --strict > ~/integration-tests.log echo $? > ~/integration-tests.status - exit $? + cat ~/integration-tests.log + exit $(cat ~/integration-tests.status) env: MARLOWE_RT_TEST_DB_HOST: localhost MARLOWE_RT_TEST_CLEANUP_DATABASE: "False" @@ -76,7 +77,8 @@ jobs: path: | /tmp/workspaces !/tmp/workspaces/**/*.socket - - name: Display test results + - if: ${{ steps.cache-results.outputs.cache-hit == 'true' }} + name: Display test results run: | echo "Test log:" cat ~/integration-tests.log