11{-# LANGUAGE FlexibleInstances #-}
22{-# LANGUAGE GADTs #-}
3- {-# LANGUAGE LambdaCase #-}
43{-# LANGUAGE MultiParamTypeClasses #-}
54{-# LANGUAGE OverloadedLabels #-}
65{-# LANGUAGE ScopedTypeVariables #-}
109module Cardano.Rpc.Server.Internal.Orphans () where
1110
1211import Cardano.Api.Address
13- import Cardano.Api.Block
1412import Cardano.Api.Era
1513import Cardano.Api.Error
1614import Cardano.Api.Ledger qualified as L
1715import Cardano.Api.Plutus
1816import Cardano.Api.Pretty
17+ import Cardano.Api.Serialise.Cbor
1918import Cardano.Api.Serialise.Raw
2019import Cardano.Api.Tx
2120import Cardano.Api.Value
@@ -66,60 +65,19 @@ instance Inject TxIn (Proto UtxoRpc.TxoRef) where
6665 & # hash .~ serialiseToRawBytes txId'
6766 & # index .~ fromIntegral txIx
6867
69- instance Inject ScriptData (Proto UtxoRpc. PlutusData ) where
70- inject = \ case
71- ScriptDataBytes bs ->
72- defMessage & # boundedBytes .~ bs
73- ScriptDataNumber int ->
74- defMessage & # bigInt . # int .~ fromIntegral int
75- ScriptDataList sds ->
76- defMessage & # array . # items .~ map inject sds
77- ScriptDataMap elements -> do
78- let pairs =
79- elements <&> \ (k, v) ->
80- defMessage
81- & # key .~ inject k
82- & # value .~ inject v
83- defMessage & # map . # pairs .~ pairs
84- ScriptDataConstructor tag args -> do
85- let constr =
86- defMessage
87- & # tag .~ fromIntegral tag
88- & # fields .~ map inject args
89- defMessage & # constr .~ constr
90-
9168instance Inject (ReferenceScript era ) (Proto UtxoRpc. Script ) where
9269 inject ReferenceScriptNone = defMessage
9370 inject (ReferenceScript _ (ScriptInAnyLang _ script)) =
9471 case script of
95- SimpleScript ss ->
96- defMessage & # native .~ inject ss
72+ SimpleScript _ ->
73+ defMessage & # native .~ serialiseToCBOR script
9774 PlutusScript PlutusScriptV1 ps ->
9875 defMessage & # plutusV1 .~ serialiseToRawBytes ps
9976 PlutusScript PlutusScriptV2 ps ->
10077 defMessage & # plutusV2 .~ serialiseToRawBytes ps
10178 PlutusScript PlutusScriptV3 ps ->
10279 defMessage & # plutusV3 .~ serialiseToRawBytes ps
10380
104- instance Inject SimpleScript (Proto UtxoRpc. NativeScript ) where
105- inject = \ case
106- RequireSignature paymentKeyHash ->
107- defMessage & # scriptPubkey .~ serialiseToRawBytes paymentKeyHash
108- RequireTimeBefore (SlotNo slotNo) ->
109- defMessage & # invalidHereafter .~ slotNo
110- RequireTimeAfter (SlotNo slotNo) ->
111- defMessage & # invalidBefore .~ slotNo
112- RequireAllOf scripts ->
113- defMessage & # scriptAll . # items .~ map inject scripts
114- RequireAnyOf scripts ->
115- defMessage & # scriptAny . # items .~ map inject scripts
116- RequireMOf k scripts -> do
117- let nScriptsOf =
118- defMessage
119- & # k .~ fromIntegral k
120- & # scripts .~ map inject scripts
121- defMessage & # scriptNOfK .~ nScriptsOf
122-
12381instance IsCardanoEra era => Inject (UTxO era ) [Proto UtxoRpc. AnyUtxoData ] where
12482 inject utxo =
12583 toList utxo <&> \ (txIn, TxOut addressInEra txOutValue datum script) -> do
@@ -130,6 +88,9 @@ instance IsCardanoEra era => Inject (UTxO era) [Proto UtxoRpc.AnyUtxoData] where
13088 toList policyAssets <&> \ (assetName, Quantity qty) -> do
13189 defMessage
13290 & # name .~ serialiseToRawBytes assetName
91+ -- we don't have access to info it the coin was minted in the transaction,
92+ -- maybe we should add it later
93+ & # maybe'mintCoin .~ Nothing
13394 & # outputCoin .~ fromIntegral qty
13495 defMessage
13596 & # policyId .~ serialiseToRawBytes pId
@@ -140,12 +101,10 @@ instance IsCardanoEra era => Inject (UTxO era) [Proto UtxoRpc.AnyUtxoData] where
140101 TxOutDatumHash _ scriptDataHash ->
141102 defMessage
142103 & # hash .~ serialiseToRawBytes scriptDataHash
143- & # maybe'payload .~ Nothing -- we don't have it
144104 & # originalCbor .~ mempty -- we don't have it
145105 TxOutDatumInline _ hashableScriptData ->
146106 defMessage
147107 & # hash .~ serialiseToRawBytes (hashScriptDataBytes hashableScriptData)
148- & # payload .~ inject (getScriptData hashableScriptData)
149108 & # originalCbor .~ getOriginalScriptDataBytes hashableScriptData
150109
151110 protoTxOut =
0 commit comments