@@ -14,7 +14,6 @@ module Cardano.Rpc.Server.Internal.UtxoRpc.Type.TxOutput
1414 )
1515where
1616
17- import Cardano.Api.Address
1817import Cardano.Api.Era
1918import Cardano.Api.Error
2019import Cardano.Api.Experimental.Era
@@ -36,9 +35,9 @@ import Cardano.Binary qualified as CBOR
3635
3736import RIO hiding (toList )
3837
38+ import Data.ByteString.Base16 qualified as Base16
39+ import Data.ByteString.Char8 qualified as BSC
3940import Data.ProtoLens (defMessage )
40- import Data.Text qualified as T
41- import Data.Text.Encoding qualified as T
4241import GHC.IsList
4342import Network.GRPC.Spec
4443
@@ -123,12 +122,12 @@ txOutToUtxoRpcTxOutput sbe (TxOut addressInEra txOutValue datum script) = do
123122 TxOutDatumInline _ hashableScriptData ->
124123 Just $
125124 defMessage
126- & U5c. hash .~ serialiseToCBOR hashableScriptData
125+ & U5c. hash .~ serialiseToRawBytes (hashScriptDataBytes hashableScriptData)
127126 & U5c. payload .~ scriptDataToUtxoRpcPlutusData (getScriptData hashableScriptData)
128127 & U5c. originalCbor .~ getOriginalScriptDataBytes hashableScriptData
129128
130129 defMessage
131- & U5c. address .~ T. encodeUtf8 ( shelleyBasedEraConstraints sbe $ serialiseAddress addressInEra)
130+ & U5c. address .~ shelleyBasedEraConstraints sbe (serialiseToRawBytes addressInEra)
132131 & U5c. coin .~ inject (L. unCoin (txOutValueToLovelace txOutValue))
133132 & U5c. assets .~ multiAsset
134133 & U5c. maybe'datum .~ datumRpc
@@ -143,11 +142,15 @@ utxoRpcTxOutputToTxOut
143142 -> m (TxOut CtxUTxO era )
144143utxoRpcTxOutputToTxOut txOutput = do
145144 let era = useEra @ era
146- addrUtf8 <- liftEitherError $ T. decodeUtf8' (txOutput ^. U5c. address)
145+ let addressBytes = txOutput ^. U5c. address
146+ annotateError (SerialiseAsRawBytesError msg) =
147+ SerialiseAsRawBytesError $
148+ msg <> " , address (hex): " <> BSC. unpack (Base16. encode addressBytes)
147149 address <-
148- maybe (throwM . stringException $ " Cannot decode address: " <> T. unpack addrUtf8) pure $
149- obtainCommonConstraints era $
150- deserialiseAddress asType addrUtf8
150+ obtainCommonConstraints era $
151+ liftEitherError $
152+ first annotateError $
153+ deserialiseFromRawBytes asType addressBytes
151154 datum <-
152155 case txOutput ^. U5c. maybe'datum of
153156 Just datumRpc ->
0 commit comments