@@ -814,10 +814,11 @@ instance DecodeAeson TxEvaluationResult where
814
814
:: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits )
815
815
decodeRdmrPtrExUnitsItem elem = do
816
816
res
817
- :: { validator :: String
817
+ :: { validator :: Aeson
818
818
, budget :: { memory :: Natural , cpu :: Natural }
819
819
} <- decodeAeson elem
820
- redeemerPtr <- decodeRedeemerPointer res.validator
820
+ redeemerPtr <- (decodeAeson res.validator >>= decodeRedeemerPointer) <|>
821
+ decodeRedeemerPointerV6 res.validator
821
822
pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu }
822
823
823
824
redeemerPtrTypeMismatch :: JsonDecodeError
@@ -834,6 +835,16 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch
834
835
<*> Natural .fromString indexRaw
835
836
_ -> Nothing
836
837
838
+ decodeRedeemerPointerV6 :: Aeson -> Either JsonDecodeError RedeemerPointer
839
+ decodeRedeemerPointerV6 aeson = do
840
+ obj <- decodeAeson aeson
841
+ purpose <- obj .: " purpose"
842
+ index <- obj .: " index"
843
+ note (TypeMismatch " RedeemerPointer" ) $
844
+ { redeemerTag: _, redeemerIndex: _ }
845
+ <$> RedeemerTag .fromString purpose
846
+ <*> Natural .fromString index
847
+
837
848
type OgmiosDatum = String
838
849
type OgmiosScript = String
839
850
type OgmiosTxId = String
0 commit comments