diff --git a/.changes/20260827_121029_cardano-cli_palas_dijkstra_simple_scripts.yml b/.changes/20260827_121029_cardano-cli_palas_dijkstra_simple_scripts.yml new file mode 100644 index 0000000000..f6ce790194 --- /dev/null +++ b/.changes/20260827_121029_cardano-cli_palas_dijkstra_simple_scripts.yml @@ -0,0 +1,6 @@ +description: | + Simple scripts read from JSON files now work in the Dijkstra era, instead of aborting with an internal TODO error. +kind: +- feature +pr: 1427 +project: cardano-cli diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs index 7c3254ad8c..c150f9a7d9 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs @@ -21,6 +21,7 @@ import Cardano.CLI.Read (readFileCli) import Cardano.CLI.Type.Common import Cardano.CLI.Type.Error.ScriptDataError import Cardano.Ledger.Core qualified as L +import Cardano.Ledger.Dijkstra.Scripts qualified as Dijkstra import Prelude @@ -38,14 +39,16 @@ readFileSimpleScript readFileSimpleScript file era = do bs <- readFileCli file case deserialiseFromJSON bs of - Left _ -> case era of - Exp.DijkstraEra -> error "TODO Dijkstra: Simple script not supported" - Exp.ConwayEra -> Exp.obtainConwayConstraints era $ do - -- In addition to the TextEnvelope format, we also try to - -- deserialize the JSON representation of SimpleScripts.. - script :: SimpleScript <- fromEitherCli $ Aeson.eitherDecodeStrict' bs - let s :: L.NativeScript (Exp.LedgerEra era) = obtainCommonConstraints era $ toAllegraTimelock script - return $ Exp.SimpleScript s + Left _ -> do + -- In addition to the TextEnvelope format, we also try to + -- deserialize the JSON representation of SimpleScripts. + script :: SimpleScript <- fromEitherCli $ Aeson.eitherDecodeStrict' bs + let conwayTimelock :: L.NativeScript (Exp.LedgerEra Exp.ConwayEra) + conwayTimelock = toAllegraTimelock script + Exp.obtainCommonConstraints era $ + pure . Exp.SimpleScript $ case era of + Exp.DijkstraEra -> Dijkstra.upgradeTimelock conwayTimelock + Exp.ConwayEra -> conwayTimelock Right te -> do let scriptBs = teRawCBOR te obtainCommonConstraints era $