From 8061c70f2e2b41cabdeba9915570b804b51bbf8a Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Tue, 31 Mar 2026 08:51:20 -0400 Subject: [PATCH] Fix Dijkstra-era script purpose rendering --- .../src/Cardano/Node/Tracing/Render.hs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/cardano-node/src/Cardano/Node/Tracing/Render.hs b/cardano-node/src/Cardano/Node/Tracing/Render.hs index 3f3538457a6..4077945c00c 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Render.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Render.hs @@ -40,6 +40,7 @@ import qualified Cardano.Ledger.Alonzo.Tx as Alonzo import Cardano.Ledger.BaseTypes (Mismatch (..), Relation (..)) import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) import qualified Cardano.Ledger.Core as Ledger +import Cardano.Ledger.Dijkstra.Scripts (DijkstraPlutusPurpose (..)) import qualified Cardano.Ledger.Hashes as Hashes import Cardano.Logging import Cardano.Node.Queries (ConvertTxId (..)) @@ -225,8 +226,7 @@ renderScriptPurpose = Api.AlonzoEraOnwardsAlonzo -> renderAlonzoPlutusPurpose Api.AlonzoEraOnwardsBabbage -> renderAlonzoPlutusPurpose Api.AlonzoEraOnwardsConway -> renderConwayPlutusPurpose - -- TODO: fix - Api.AlonzoEraOnwardsDijkstra -> undefined + Api.AlonzoEraOnwardsDijkstra -> renderDijkstraPlutusPurpose ) renderAlonzoPlutusPurpose :: () @@ -260,3 +260,23 @@ renderConwayPlutusPurpose = \case Aeson.object ["voting" .= Aeson.toJSON voter] ConwayProposing proposal -> Aeson.object ["proposing" .= Aeson.toJSON proposal] + +renderDijkstraPlutusPurpose :: () + => (Ledger.EraPParams era, Aeson.ToJSON (Ledger.TxCert era)) + => DijkstraPlutusPurpose AsItem era + -> Aeson.Value +renderDijkstraPlutusPurpose = \case + DijkstraSpending (AsItem txin) -> + Aeson.object ["spending" .= Api.fromShelleyTxIn txin] + DijkstraMinting pid -> + Aeson.object ["minting" .= Aeson.toJSON pid] + DijkstraRewarding (AsItem rwdAcct) -> + Aeson.object ["rewarding" .= Aeson.String (Api.serialiseAddress $ Api.fromShelleyStakeAddr rwdAcct)] + DijkstraCertifying cert -> + Aeson.object ["certifying" .= Aeson.toJSON cert] + DijkstraVoting voter -> + Aeson.object ["voting" .= Aeson.toJSON voter] + DijkstraProposing proposal -> + Aeson.object ["proposing" .= Aeson.toJSON proposal] + DijkstraGuarding sHash -> + Aeson.object ["guarding" .= Aeson.toJSON sHash]