Skip to content

Commit 0ee6fe4

Browse files
committed
Add legacy datum conversion
1 parent 531fe07 commit 0ee6fe4

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

cardano-api/src/Cardano/Api/Experimental/Tx.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,11 @@ module Cardano.Api.Experimental.Tx
127127
-- * TxBodyContent
128128
, TxBodyContent (..)
129129
, defaultTxBodyContent
130+
, setTxAuxScripts
130131
, setTxCertificates
131132
, setTxCollateral
133+
, setTxCurrentTreasuryValue
134+
, setTxExtraKeyWits
132135
, setTxFee
133136
, setTxIns
134137
, setTxInsCollateral
@@ -137,11 +140,17 @@ module Cardano.Api.Experimental.Tx
137140
, setTxMintValue
138141
, setTxOuts
139142
, setTxProposalProcedures
143+
, setTxProtocolParams
144+
, setTxScriptValidity
140145
, setTxValidityLowerBound
141146
, setTxValidityUpperBound
142147
, setTxVotingProcedures
143148
, setTxWithdrawals
144149

150+
-- * Legacy Conversions
151+
, legacyDatumToDatum
152+
, fromLegacyTxOut
153+
145154
-- * TxBodyContent sub type
146155
, TxCertificates (..)
147156
, TxMintValue (..)

cardano-api/src/Cardano/Api/Experimental/Tx/Internal/BodyContent/New.hs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ module Cardano.Api.Experimental.Tx.Internal.BodyContent.New
2626
, txMintValueToValue
2727

2828
-- * Getters and Setters
29+
, setTxAuxScripts
2930
, setTxCertificates
3031
, setTxCollateral
32+
, setTxCurrentTreasuryValue
33+
, setTxExtraKeyWits
3134
, setTxFee
3235
, setTxIns
3336
, setTxInsCollateral
@@ -36,10 +39,17 @@ module Cardano.Api.Experimental.Tx.Internal.BodyContent.New
3639
, setTxMintValue
3740
, setTxOuts
3841
, setTxProposalProcedures
42+
, setTxProtocolParams
43+
, setTxScriptValidity
44+
, setTxTreasuryDonation
3945
, setTxValidityLowerBound
4046
, setTxValidityUpperBound
4147
, setTxVotingProcedures
4248
, setTxWithdrawals
49+
50+
-- * Legacy conversions
51+
, legacyDatumToDatum
52+
, fromLegacyTxOut
4353
)
4454
where
4555

@@ -64,12 +74,14 @@ import Cardano.Api.Experimental.Tx.Internal.Type
6474
import Cardano.Api.Key.Internal
6575
import Cardano.Api.Ledger.Internal.Reexport (StrictMaybe (..))
6676
import Cardano.Api.Ledger.Internal.Reexport qualified as L
77+
import Cardano.Api.Plutus.Internal.ScriptData qualified as Api
6778
import Cardano.Api.Tx.Internal.Body
6879
( CtxTx
6980
, TxIn
7081
, toShelleyTxIn
7182
, toShelleyWithdrawal
7283
)
84+
import Cardano.Api.Tx.Internal.Output qualified as OldApi
7385
import Cardano.Api.Tx.Internal.Sign
7486
import Cardano.Api.Tx.Internal.TxMetadata
7587
import Cardano.Api.Value.Internal (PolicyAssets, PolicyId, Value, policyAssetsToValue, toMaryValue)
@@ -313,6 +325,26 @@ extractDatumsAndHashes TxOutDatumHash{} = Nothing
313325
extractDatumsAndHashes (TxOutSupplementalDatum h d) = Just (h, d)
314326
extractDatumsAndHashes (TxOutDatumInline h d) = Just (h, d)
315327

328+
hashableScriptDatumToDatumAndHash :: L.Era era => Api.HashableScriptData -> (L.DataHash, L.Data era)
329+
hashableScriptDatumToDatumAndHash sd =
330+
(Api.unScriptDataHash $ Api.hashScriptDataBytes sd, Api.toAlonzoData sd)
331+
332+
legacyDatumToDatum
333+
:: forall era. IsEra era => OldApi.TxOutDatum CtxTx era -> Maybe (Datum CtxTx (LedgerEra era))
334+
legacyDatumToDatum (OldApi.TxOutDatumHash _ h) = Just (TxOutDatumHash $ Api.unScriptDataHash h)
335+
legacyDatumToDatum (OldApi.TxOutSupplementalDatum _ hd) = do
336+
let (hash, d) = obtainCommonConstraints (useEra @era) $ hashableScriptDatumToDatumAndHash hd
337+
Just (TxOutSupplementalDatum hash d)
338+
legacyDatumToDatum (OldApi.TxOutDatumInline _ hd) = do
339+
let (hash, d) = obtainCommonConstraints (useEra @era) $ hashableScriptDatumToDatumAndHash hd
340+
Just (TxOutDatumInline hash d)
341+
legacyDatumToDatum OldApi.TxOutDatumNone = Nothing
342+
343+
fromLegacyTxOut :: forall era. IsEra era => OldApi.TxOut CtxTx era -> TxOut CtxTx (LedgerEra era)
344+
fromLegacyTxOut tOut@(OldApi.TxOut _ _ d _) =
345+
let o = OldApi.toShelleyTxOutAny (convert $ useEra @era) tOut
346+
in obtainCommonConstraints (useEra @era) $ TxOut o (legacyDatumToDatum d)
347+
316348
data TxInsReference era = TxInsReference [TxIn] (Set (Datum CtxTx era))
317349

318350
data TxCollateral era
@@ -641,6 +673,12 @@ getDatums txInsRef txOutsFromTx = do
641673

642674
-- Getters and Setters
643675

676+
setTxAuxScripts :: [SimpleScript era] -> TxBodyContent era -> TxBodyContent era
677+
setTxAuxScripts v txBodyContent = txBodyContent{txAuxScripts = v}
678+
679+
setTxExtraKeyWits :: TxExtraKeyWitnesses -> TxBodyContent era -> TxBodyContent era
680+
setTxExtraKeyWits v txBodyContent = txBodyContent{txExtraKeyWits = v}
681+
644682
setTxIns :: [(TxIn, AnyWitness era)] -> TxBodyContent era -> TxBodyContent era
645683
setTxIns v txBodyContent = txBodyContent{txIns = v}
646684

@@ -650,6 +688,9 @@ setTxInsCollateral v txBodyContent = txBodyContent{txInsCollateral = v}
650688
setTxInsReference :: TxInsReference era -> TxBodyContent era -> TxBodyContent era
651689
setTxInsReference v txBodyContent = txBodyContent{txInsReference = v}
652690

691+
setTxProtocolParams :: L.PParams era -> TxBodyContent era -> TxBodyContent era
692+
setTxProtocolParams v txBodyContent = txBodyContent{txProtocolParams = Just v}
693+
653694
setTxCollateral :: TxCollateral era -> TxBodyContent era -> TxBodyContent era
654695
setTxCollateral v txBodyContent = txBodyContent{txCollateral = Just v}
655696

@@ -671,6 +712,9 @@ setTxOuts v txBodyContent = txBodyContent{txOuts = v}
671712
setTxMintValue :: TxMintValue era -> TxBodyContent era -> TxBodyContent era
672713
setTxMintValue v txBodyContent = txBodyContent{txMintValue = v}
673714

715+
setTxScriptValidity :: ScriptValidity -> TxBodyContent era -> TxBodyContent era
716+
setTxScriptValidity v txBodyContent = txBodyContent{txScriptValidity = v}
717+
674718
setTxCertificates :: TxCertificates era -> TxBodyContent era -> TxBodyContent era
675719
setTxCertificates v txBodyContent = txBodyContent{txCertificates = v}
676720

@@ -682,3 +726,9 @@ setTxVotingProcedures v txBodyContent = txBodyContent{txVotingProcedures = Just
682726

683727
setTxProposalProcedures :: TxProposalProcedures era -> TxBodyContent era -> TxBodyContent era
684728
setTxProposalProcedures v txBodyContent = txBodyContent{txProposalProcedures = Just v}
729+
730+
setTxCurrentTreasuryValue :: L.Coin -> TxBodyContent era -> TxBodyContent era
731+
setTxCurrentTreasuryValue v txBodyContent = txBodyContent{txCurrentTreasuryValue = Just v}
732+
733+
setTxTreasuryDonation :: L.Coin -> TxBodyContent era -> TxBodyContent era
734+
setTxTreasuryDonation v txBodyContent = txBodyContent{txTreasuryDonation = Just v}

cardano-api/src/Cardano/Api/Plutus/Internal/ScriptData.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ instance HasTypeProxy ScriptData where
155155
--
156156

157157
newtype instance Hash ScriptData
158-
= ScriptDataHash Plutus.DataHash
158+
= ScriptDataHash {unScriptDataHash :: Plutus.DataHash}
159159
deriving stock (Eq, Ord)
160160
deriving (Show, Pretty) via UsingRawBytesHex (Hash ScriptData)
161161
deriving (ToJSON, FromJSON) via UsingRawBytesHex (Hash ScriptData)

0 commit comments

Comments
 (0)