3333import Cardano.Api as Api
3434import Cardano.Api.Experimental (obtainCommonConstraints )
3535import Cardano.Api.Experimental qualified as Exp
36+ import Cardano.Api.Experimental.Tx qualified as Exp
3637import Cardano.Api.Ledger (ExUnits (.. ), extractHash , strictMaybeToMaybe )
3738import Cardano.Api.Ledger qualified as Alonzo
3839import Cardano.Api.Ledger qualified as L
@@ -219,8 +220,7 @@ basePairs
219220 -> [Aeson. Pair ]
220221basePairs era body mAuxData =
221222 Exp. obtainCommonConstraints era $
222- let sbe = convert era :: ShelleyBasedEra era
223- certs = toList (body ^. L. certsTxBodyL)
223+ let certs = toList (body ^. L. certsTxBodyL)
224224 in [ " auxiliary scripts" .= friendlyAuxScripts era mAuxData
225225 , " certificates"
226226 .= if null certs
@@ -232,7 +232,7 @@ basePairs era body mAuxData =
232232 , " metadata" .= friendlyMetadata mAuxData
233233 , " outputs"
234234 .= map
235- (friendlyTxOut era . fromCtxUTxOTxOut . fromShelleyTxOut sbe )
235+ (friendlyTxOut era . Exp. TxOut )
236236 (toList (body ^. L. outputsTxBodyL))
237237 , " withdrawals" .= friendlyWithdrawals (body ^. L. withdrawalsTxBodyL)
238238 ]
@@ -472,8 +472,7 @@ friendlyReturnCollateral era = \case
472472 L. SNothing -> Aeson. Null
473473 L. SJust collOut ->
474474 Exp. obtainCommonConstraints era $
475- let sbe = convert era :: ShelleyBasedEra era
476- in friendlyTxOut era (fromCtxUTxOTxOut (fromShelleyTxOut sbe collOut))
475+ friendlyTxOut era (Exp. TxOut collOut)
477476
478477friendlyExtraKeyWits :: Set. Set (L. KeyHash L. Guard ) -> Aeson. Value
479478friendlyExtraKeyWits keyhashes
@@ -499,35 +498,45 @@ friendlyStakeAddress (StakeAddress net cred) =
499498 , friendlyStakeCredential cred
500499 ]
501500
502- friendlyTxOut :: Exp. Era era -> TxOut CtxTx era -> Aeson. Value
503- friendlyTxOut era (TxOut addr amount mdatum script) =
501+ friendlyTxOut
502+ :: forall era
503+ . Exp. Era era
504+ -> Exp. TxOut (Exp. LedgerEra era )
505+ -> Aeson. Value
506+ friendlyTxOut era (Exp. TxOut ledgerTxOut) =
504507 Exp. obtainCommonConstraints era $
505- object $
506- case addr of
507- AddressInEra ByronAddressInAnyEra byronAdr ->
508- [ " address era" .= String " Byron"
509- , " address" .= serialiseAddress byronAdr
510- , " amount" .= friendlyTxOutValue era amount
511- ]
512- AddressInEra (ShelleyAddressInEra _) saddr@ (ShelleyAddress net cred stake) ->
513- let preAlonzo =
508+ babbageEraOnwardsConstraints beo $
509+ let addr = fromShelleyAddr sbe (ledgerTxOut ^. L. addrTxOutL)
510+ ledgerValue = ledgerTxOut ^. L. valueTxOutL
511+ refScript = case ledgerTxOut ^. L. referenceScriptTxOutL of
512+ L. SNothing -> ReferenceScriptNone
513+ L. SJust s -> fromShelleyScriptToReferenceScript sbe s
514+ in object $
515+ case addr of
516+ AddressInEra ByronAddressInAnyEra byronAdr ->
517+ [ " address era" .= String " Byron"
518+ , " address" .= serialiseAddress byronAdr
519+ , " amount" .= friendlyLedgerValue era ledgerValue
520+ ]
521+ AddressInEra (ShelleyAddressInEra _) saddr@ (ShelleyAddress net cred stake) ->
514522 friendlyPaymentCredential (fromShelleyPaymentCredential cred)
515523 : [ " address era" .= Aeson. String " Shelley"
516524 , " network" .= net
517525 , " address" .= serialiseAddress saddr
518- , " amount" .= friendlyTxOutValue era amount
519- , " stake reference" .= friendlyStakeReference (fromShelleyStakeReference stake)
526+ , " amount" .= friendlyLedgerValue era ledgerValue
527+ , " stake reference"
528+ .= friendlyStakeReference (fromShelleyStakeReference stake)
529+ , " datum" .= case ledgerTxOut ^. L. datumTxOutL of
530+ L. NoDatum -> Aeson. Null
531+ L. DatumHash h -> toJSON h
532+ L. Datum bd ->
533+ scriptDataToJson ScriptDataJsonDetailedSchema $
534+ fromAlonzoData (L. binaryDataToData bd)
535+ , " reference script" .= refScript
520536 ]
521- datum = [" datum" .= d | d <- maybeToList $ renderDatum mdatum]
522- sinceAlonzo = [" reference script" .= script]
523- in preAlonzo ++ datum ++ sinceAlonzo
524537 where
525- renderDatum :: TxOutDatum CtxTx era -> Maybe Aeson. Value
526- renderDatum = \ case
527- TxOutDatumNone -> Nothing
528- TxOutDatumHash _ h -> Just $ toJSON h
529- TxOutSupplementalDatum _ sData -> Just $ scriptDataToJson ScriptDataJsonDetailedSchema sData
530- TxOutDatumInline _ sData -> Just $ scriptDataToJson ScriptDataJsonDetailedSchema sData
538+ beo = convert era :: BabbageEraOnwards era
539+ sbe = convert era :: ShelleyBasedEra era
531540
532541friendlyStakeReference :: StakeAddressReference -> Aeson. Value
533542friendlyStakeReference = \ case
@@ -690,12 +699,6 @@ friendlyPaymentCredential = \case
690699friendlyLovelace :: Lovelace -> Aeson. Value
691700friendlyLovelace value = String $ docToText (pretty value)
692701
693- friendlyTxOutValue :: Exp. Era era -> TxOutValue era -> Aeson. Value
694- friendlyTxOutValue era = \ case
695- TxOutValueByron lovelace -> friendlyLovelace lovelace
696- TxOutValueShelleyBased _ v ->
697- Exp. obtainCommonConstraints era $ friendlyLedgerValue era v
698-
699702friendlyLedgerValue
700703 :: ()
701704 => Exp. Era era
0 commit comments