From 9b82418edda40fd55fa0eee47d66d017e91b3af5 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Thu, 3 Oct 2024 17:34:17 -0400 Subject: [PATCH] Handle plutus related ledger events in Conway --- .../Api/LedgerEvents/ConvertLedgerEvent.hs | 3 ++- .../Api/LedgerEvents/Rule/BBODY/LEDGER.hs | 2 +- .../Api/LedgerEvents/Rule/BBODY/UTXOW.hs | 19 ++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/cardano-api/internal/Cardano/Api/LedgerEvents/ConvertLedgerEvent.hs b/cardano-api/internal/Cardano/Api/LedgerEvents/ConvertLedgerEvent.hs index b01e22b1b5..651ab3a0ad 100644 --- a/cardano-api/internal/Cardano/Api/LedgerEvents/ConvertLedgerEvent.hs +++ b/cardano-api/internal/Cardano/Api/LedgerEvents/ConvertLedgerEvent.hs @@ -4,6 +4,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-} @@ -163,7 +164,7 @@ toLedgerEventConway evt = ShelleyLedgerEventBBODY (ShelleyInAlonzoEvent (LedgersEvent (Shelley.LedgerEvent conwayLedgerEvent))) -> case conwayLedgerEvent of - Conway.UtxowEvent{} -> Nothing + Conway.UtxowEvent utxowEvent -> handleConwayUTxOWEvent utxowEvent Conway.CertsEvent{} -> Nothing Conway.GovEvent govEvent -> case govEvent of diff --git a/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/LEDGER.hs b/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/LEDGER.hs index 19b5b97a74..f0e5569fe8 100644 --- a/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/LEDGER.hs +++ b/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/LEDGER.hs @@ -41,5 +41,5 @@ handleShelleyLEDGEREvents => Shelley.ShelleyLedgerEvent ledgerera -> Maybe LedgerEvent handleShelleyLEDGEREvents ledgerEvent = case ledgerEvent of - Shelley.UtxowEvent e -> handleAlonzoOnwardsUTxOWEvent e + Shelley.UtxowEvent e -> handleAlonzoUTxOWEvent e Shelley.DelegsEvent e -> handleShelleyDELEGSEvent e diff --git a/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/UTXOW.hs b/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/UTXOW.hs index 042bfa80e4..fbb35dfd1e 100644 --- a/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/UTXOW.hs +++ b/cardano-api/internal/Cardano/Api/LedgerEvents/Rule/BBODY/UTXOW.hs @@ -1,10 +1,12 @@ {-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Cardano.Api.LedgerEvents.Rule.BBODY.UTXOW - ( handleAlonzoOnwardsUTxOWEvent + ( handleAlonzoUTxOWEvent , handleAllegraMaryUTxOWEvent + , handleConwayUTxOWEvent , handlePreAlonzoUTxOWEvent ) where @@ -15,18 +17,29 @@ import qualified Cardano.Ledger.Allegra.Rules as Allegra import Cardano.Ledger.Alonzo.Rules (AlonzoUtxoEvent (..), AlonzoUtxosEvent (..), AlonzoUtxowEvent (..)) import qualified Cardano.Ledger.Alonzo.Rules as Alonzo +import Cardano.Ledger.Conway +import qualified Cardano.Ledger.Conway.Rules as Conway import qualified Cardano.Ledger.Core as Ledger.Core import qualified Cardano.Ledger.Crypto as Crypto import qualified Cardano.Ledger.Shelley.Rules as Shelley import Control.State.Transition.Extended -handleAlonzoOnwardsUTxOWEvent +handleConwayUTxOWEvent + :: AlonzoUtxowEvent (ConwayEra Crypto.StandardCrypto) -> Maybe LedgerEvent +handleConwayUTxOWEvent (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent (Alonzo.UtxosEvent conwayUTxOsEvent))) = + case conwayUTxOsEvent of + Conway.TotalDeposits{} -> Nothing + Conway.SuccessfulPlutusScriptsEvent e -> Just $ SuccessfulPlutusScript e + Conway.FailedPlutusScriptsEvent e -> Just $ FailedPlutusScript e + Conway.TxUTxODiff _ _ -> Nothing + +handleAlonzoUTxOWEvent :: Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera => Event (Ledger.Core.EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera => Ledger.Core.EraCrypto ledgerera ~ Crypto.StandardCrypto => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent -handleAlonzoOnwardsUTxOWEvent (WrappedShelleyEraEvent (Shelley.UtxoEvent (UtxosEvent utxoEvent))) = +handleAlonzoUTxOWEvent (WrappedShelleyEraEvent (Shelley.UtxoEvent (UtxosEvent utxoEvent))) = case utxoEvent of Alonzo.AlonzoPpupToUtxosEvent{} -> Nothing Alonzo.TotalDeposits{} -> Nothing