Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix missing datums for toCardanoTxBody #167

Merged
merged 2 commits into from
Dec 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions plutus-ledger/src/Ledger/Tx/CardanoAPI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ fromAlonzoLedgerScript (Alonzo.PlutusScript _ bs) =
$ SBS.fromShort bs
in either (const Nothing) Just script


toCardanoTxBody ::
[Api.PubKeyHash] -- ^ Required signers of the transaction
-> Maybe C.ProtocolParameters -- ^ Protocol parameters to use. Building Plutus transactions will fail if this is 'Nothing'
Expand All @@ -312,7 +313,7 @@ toCardanoTxBody ::
toCardanoTxBody sigs protocolParams networkId P.Tx{..} = do
txIns <- traverse toCardanoTxInBuild $ Set.toList txInputs
txInsCollateral <- toCardanoTxInsCollateral txCollateral
txOuts <- traverse (toCardanoTxOut networkId) txOutputs
txOuts <- traverse (toCardanoTxOut networkId txData) txOutputs
txFee' <- toCardanoFee txFee
txValidityRange <- toCardanoValidityRange txValidRange
txMintValue <- toCardanoMintValue txRedeemers txMint txMintScripts
Expand Down Expand Up @@ -419,11 +420,16 @@ fromCardanoTxOut (C.TxOut addr value datumHash) =
<*> pure (fromCardanoTxOutValue value)
<*> pure (fromCardanoTxOutDatumHash datumHash)

toCardanoTxOut :: C.NetworkId -> P.TxOut -> Either ToCardanoError (C.TxOut C.CtxTx C.AlonzoEra)
toCardanoTxOut networkId (P.TxOut addr value datumHash) =
toCardanoTxOut :: C.NetworkId -> Map P.DatumHash P.Datum -> P.TxOut -> Either ToCardanoError (C.TxOut C.CtxTx C.AlonzoEra)
toCardanoTxOut networkId datums (P.TxOut addr value datumHash) =
C.TxOut <$> toCardanoAddress networkId addr
<*> toCardanoTxOutValue value
<*> toCardanoTxOutDatumHash datumHash
<*> cardanoDatumHash
where
cardanoDatumHash =
case flip Map.lookup datums =<< datumHash of
Just datum -> pure $ C.TxOutDatum C.ScriptDataInAlonzoEra (toCardanoScriptData $ P.getDatum datum)
Nothing -> toCardanoTxOutDatumHash datumHash

fromCardanoAddress :: C.AddressInEra era -> Either FromCardanoError P.Address
fromCardanoAddress (C.AddressInEra C.ByronAddressInAnyEra (C.ByronAddress address)) =
Expand Down
12 changes: 7 additions & 5 deletions plutus-ledger/src/Ledger/Tx/CardanoAPITemp.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
-- until https://github.com/input-output-hk/cardano-node/pull/2936 or something similar gets merged.
module Ledger.Tx.CardanoAPITemp (makeTransactionBody') where

import Data.List qualified as List
import Data.Map.Strict qualified as Map
import Data.Sequence.Strict qualified as Seq
import Data.Set qualified as Set
Expand Down Expand Up @@ -108,11 +109,12 @@ makeTransactionBody'
]

scriptdata :: [ScriptData]
scriptdata =
[ d | (_, AnyScriptWitness
(PlutusScriptWitness
_ _ _ (ScriptDatumForTxIn d) _ _)) <- witnesses
]
scriptdata = List.nub $
[ d | TxOut _ _ (TxOutDatum ScriptDataInAlonzoEra d) <- txOuts ]
++ [ d | (_, AnyScriptWitness
(PlutusScriptWitness
_ _ _ (ScriptDatumForTxIn d) _ _)) <- witnesses
]

redeemers :: Alonzo.Redeemers StandardAlonzo
redeemers =
Expand Down