Skip to content

Commit

Permalink
check tx units only if tx is valid
Browse files Browse the repository at this point in the history
  • Loading branch information
j-mueller committed Jan 26, 2025
1 parent 525fbf9 commit 5c9cede
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
1 change: 1 addition & 0 deletions src/mockchain/convex-mockchain.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ library
, cardano-api
, cardano-crypto-class >=2.1.1.0
, cardano-ledger-alonzo
, cardano-ledger-api
, cardano-ledger-babbage
, cardano-ledger-conway
, cardano-ledger-core
Expand Down
17 changes: 11 additions & 6 deletions src/mockchain/lib/Convex/MockChain.hs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ module Convex.MockChain (
evalMockchain0T,
) where

import Cardano.Api.Experimental qualified as C
import Cardano.Api.Shelley (
AddressInEra,
Hash (StakePoolKeyHash),
Expand All @@ -88,6 +89,7 @@ import Cardano.Ledger.Alonzo.Plutus.Evaluate (
evalPlutusScripts,
)
import Cardano.Ledger.Alonzo.TxWits (unTxDats)
import Cardano.Ledger.Api qualified as L
import Cardano.Ledger.Babbage.Tx (IsValid (..))
import Cardano.Ledger.BaseTypes (
Globals (systemStart),
Expand Down Expand Up @@ -148,7 +150,7 @@ import Control.Lens (
_1,
_3,
)
import Control.Monad (forM)
import Control.Monad (forM, void, when)
import Control.Monad.Except (MonadError (throwError))
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Primitive (PrimMonad)
Expand Down Expand Up @@ -357,7 +359,7 @@ getTxExUnits NodeParams{npSystemStart, npEraHistory, npProtocolParameters} utxo
Left e -> Left (Phase1Error e)
Right rdmrs -> traverse (either (Left . Phase2Error) (Right . snd)) rdmrs

applyTransaction :: forall era. (C.IsAlonzoBasedEra era) => NodeParams era -> MockChainState era -> C.Tx era -> Either (ValidationError era) (MockChainState era, Validated (Core.Tx (C.ShelleyLedgerEra era)))
applyTransaction :: forall era. (C.IsEra era, C.IsAlonzoBasedEra era) => NodeParams era -> MockChainState era -> C.Tx era -> Either (ValidationError era) (MockChainState era, Validated (Core.Tx (C.ShelleyLedgerEra era)))
applyTransaction params state' tx'@(C.ShelleyTx _era tx) = C.alonzoEraOnwardsConstraints @era C.alonzoBasedEra $ do
let currentSlot = state' ^. env . L.slot
utxoState_ = state' ^. poolState . L.utxoState
Expand All @@ -366,7 +368,10 @@ applyTransaction params state' tx'@(C.ShelleyTx _era tx) = C.alonzoEraOnwardsCon
result <- applyTx params state' vtx scripts

-- Not sure if this step is needed.
_ <- first VExUnits (getTxExUnits params utxo tx')
_ <-
when (C.obtainCommonConstraints (C.useEra @era) (tx ^. L.isValidTxL @(C.LedgerEra era)) == L.IsValid True) $
void $
first VExUnits (getTxExUnits params utxo tx')

pure result

Expand Down Expand Up @@ -444,7 +449,7 @@ instance (Monad m) => MonadState (MockChainState era) (MockchainT era m) where
get = MockchainT $ lift get
put = MockchainT . lift . put

instance (Monad m, C.IsAlonzoBasedEra era) => MonadBlockchain era (MockchainT era m) where
instance (Monad m, C.IsAlonzoBasedEra era, C.IsEra era) => MonadBlockchain era (MockchainT era m) where
sendTx tx = MockchainT $ C.alonzoEraOnwardsConstraints @era C.alonzoBasedEra $ do
nps <- ask
addDatumHashes tx
Expand Down Expand Up @@ -500,11 +505,11 @@ instance (Monad m, C.IsAlonzoBasedEra era) => MonadBlockchain era (MockchainT er
let utime = either (error . (<>) "MockchainT: slotToUtcTime failed ") id (slotToUtcTime npEraHistory npSystemStart slotNo)
return (slotNo, npSlotLength, utime)

instance (Monad m, C.IsAlonzoBasedEra era) => MonadMockchain era (MockchainT era m) where
instance (Monad m, C.IsAlonzoBasedEra era, C.IsEra era) => MonadMockchain era (MockchainT era m) where
modifyMockChainState f = MockchainT $ state f
askNodeParams = ask

instance (Monad m, C.IsAlonzoBasedEra era, EraCrypto (ShelleyLedgerEra era) ~ StandardCrypto, C.IsCardanoEra era, C.IsShelleyBasedEra era) => MonadUtxoQuery (MockchainT era m) where
instance (Monad m, C.IsAlonzoBasedEra era, EraCrypto (ShelleyLedgerEra era) ~ StandardCrypto, C.IsCardanoEra era, C.IsShelleyBasedEra era, C.IsEra era) => MonadUtxoQuery (MockchainT era m) where
utxosByPaymentCredentials cred = do
UtxoSet utxos <- fmap (onlyCredentials cred) utxoSet
let
Expand Down

0 comments on commit 5c9cede

Please sign in to comment.