{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Dijkstra.Rules.Utxo (
DijkstraUTXO,
DijkstraUtxoEnv (..),
DijkstraUtxoPredFailure (..),
conwayToDijkstraUtxoPredFailure,
validateWrongNetworkInDirectDeposit,
) where
import Cardano.Ledger.Address (DirectDeposits (..))
import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure, shelleyToAllegraUtxoPredFailure)
import qualified Cardano.Ledger.Allegra.Rules as Allegra
import Cardano.Ledger.Alonzo.Rules (
AlonzoUtxoEvent,
AlonzoUtxoPredFailure,
AlonzoUtxosPredFailure,
)
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import Cardano.Ledger.Alonzo.TxWits (unRedeemersL)
import Cardano.Ledger.Babbage.Rules (
BabbageUtxoPredFailure,
updateUTxOStateByTxValidity,
validateTotalCollateral,
)
import qualified Cardano.Ledger.Babbage.Rules as Babbage (
validateOutputTooSmallUTxO,
)
import Cardano.Ledger.BaseTypes (
Mismatch (..),
Network,
Relation (..),
ShelleyBase,
SlotNo,
StrictMaybe (..),
epochInfo,
networkId,
systemStart,
)
import Cardano.Ledger.Binary (
DecCBOR (..),
EncCBOR (..),
sizedValue,
)
import Cardano.Ledger.Binary.Coders (
Decode (..),
Encode (..),
decode,
encode,
(!>),
(<!),
)
import Cardano.Ledger.Coin (Coin, DeltaCoin)
import Cardano.Ledger.Compactible (fromCompact)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Rules (
ConwayUTXOS,
ConwayUtxoPredFailure,
ConwayUtxosEnv (..),
ConwayUtxosPredFailure (..),
allegraToConwayUtxoPredFailure,
alonzoToConwayUtxoPredFailure,
babbageToConwayUtxoPredFailure,
updateTreasuryDonation,
)
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Conway.State
import Cardano.Ledger.Credential (StakeReference (..))
import Cardano.Ledger.Dijkstra.Era (DijkstraEra, DijkstraUTXO)
import Cardano.Ledger.Dijkstra.Rules.Utxos ()
import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody (..))
import Cardano.Ledger.Plutus (ExUnits)
import Cardano.Ledger.Rules.ValidationMode (Test, failOnJustStatic, runTest, runTestOnSignal)
import Cardano.Ledger.Shelley.LedgerState (UTxOState (..))
import Cardano.Ledger.Shelley.Rules (
ShelleyUtxoPredFailure,
validSizeComputationCheck,
)
import qualified Cardano.Ledger.Shelley.Rules as Shelley
import Cardano.Ledger.TxIn (TxIn)
import Control.DeepSeq (NFData)
import Control.Monad (when)
import Control.Monad.Trans.Reader (asks)
import Control.State.Transition.Extended (
Embed (..),
Rule,
STS (..),
TRC (..),
TransitionRule,
failureOnNonEmptyMap,
failureOnNonEmptySet,
judgmentContext,
liftSTS,
trans,
validate,
)
import Data.List.NonEmpty (NonEmpty)
import Data.Map.NonEmpty (NonEmptyMap)
import qualified Data.Map.Strict as Map
import qualified Data.OMap.Strict as OMap
import Data.Set.NonEmpty (NonEmptySet)
import Data.Word (Word16, Word32)
import GHC.Generics (Generic)
import Lens.Micro ((^.))
data DijkstraUtxoEnv era = DijkstraUtxoEnv
{ forall era. DijkstraUtxoEnv era -> SlotNo
dueSlot :: SlotNo
, forall era. DijkstraUtxoEnv era -> PParams era
duePParams :: PParams era
, forall era. DijkstraUtxoEnv era -> CertState era
dueCertState :: CertState era
, forall era. DijkstraUtxoEnv era -> UTxO era
dueOriginalUtxo :: UTxO era
, forall era. DijkstraUtxoEnv era -> ScriptsProvided era
dueScriptsProvided :: ScriptsProvided era
}
data DijkstraUtxoPredFailure era
=
UtxosFailure (PredicateFailure (EraRule "UTXOS" era))
|
BadInputsUTxO (NonEmptySet TxIn)
| OutsideValidityIntervalUTxO
ValidityInterval
SlotNo
| MaxTxSizeUTxO (Mismatch RelLTEQ Word32)
| InputSetEmptyUTxO
| FeeTooSmallUTxO
(Mismatch RelGTEQ Coin)
| ValueNotConservedUTxO
(Mismatch RelEQ (Value era))
|
WrongNetwork
Network
(NonEmptySet Addr)
| WrongNetworkWithdrawal
Network
(NonEmptySet AccountAddress)
|
OutputBootAddrAttrsTooBig (NonEmpty (TxOut era))
|
OutputTooBigUTxO (NonEmpty (Int, Int, TxOut era))
| InsufficientCollateral
DeltaCoin
Coin
|
ScriptsNotPaidUTxO (NonEmptyMap TxIn (TxOut era))
| ExUnitsTooBigUTxO
(Mismatch RelLTEQ ExUnits)
|
CollateralContainsNonADA (Value era)
|
WrongNetworkInTxBody
(Mismatch RelEQ Network)
|
OutsideForecast SlotNo
|
TooManyCollateralInputs
(Mismatch RelLTEQ Word16)
| NoCollateralInputs
|
IncorrectTotalCollateralField
DeltaCoin
Coin
|
BabbageOutputTooSmallUTxO (NonEmpty (TxOut era, Coin))
|
BabbageNonDisjointRefInputs (NonEmpty TxIn)
| PtrPresentInCollateralReturn (TxOut era)
| WrongNetworkInDirectDeposit
Network
(NonEmptySet AccountAddress)
|
WithdrawalsExceedAccountBalance (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin))
deriving ((forall x.
DijkstraUtxoPredFailure era -> Rep (DijkstraUtxoPredFailure era) x)
-> (forall x.
Rep (DijkstraUtxoPredFailure era) x -> DijkstraUtxoPredFailure era)
-> Generic (DijkstraUtxoPredFailure era)
forall x.
Rep (DijkstraUtxoPredFailure era) x -> DijkstraUtxoPredFailure era
forall x.
DijkstraUtxoPredFailure era -> Rep (DijkstraUtxoPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraUtxoPredFailure era) x -> DijkstraUtxoPredFailure era
forall era x.
DijkstraUtxoPredFailure era -> Rep (DijkstraUtxoPredFailure era) x
$cfrom :: forall era x.
DijkstraUtxoPredFailure era -> Rep (DijkstraUtxoPredFailure era) x
from :: forall x.
DijkstraUtxoPredFailure era -> Rep (DijkstraUtxoPredFailure era) x
$cto :: forall era x.
Rep (DijkstraUtxoPredFailure era) x -> DijkstraUtxoPredFailure era
to :: forall x.
Rep (DijkstraUtxoPredFailure era) x -> DijkstraUtxoPredFailure era
Generic)
type instance EraRuleFailure "UTXO" DijkstraEra = DijkstraUtxoPredFailure DijkstraEra
type instance EraRuleEvent "UTXO" DijkstraEra = AlonzoUtxoEvent DijkstraEra
instance InjectRuleFailure "UTXO" DijkstraUtxoPredFailure DijkstraEra
instance InjectRuleFailure "UTXO" ConwayUtxoPredFailure DijkstraEra where
injectFailure :: ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure = ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure
instance InjectRuleFailure "UTXO" BabbageUtxoPredFailure DijkstraEra where
injectFailure :: BabbageUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure = ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure (ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra)
-> (BabbageUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> BabbageUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall era. BabbageUtxoPredFailure era -> ConwayUtxoPredFailure era
babbageToConwayUtxoPredFailure
instance InjectRuleFailure "UTXO" AlonzoUtxoPredFailure DijkstraEra where
injectFailure :: AlonzoUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure = ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure (ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra)
-> (AlonzoUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> AlonzoUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall era. AlonzoUtxoPredFailure era -> ConwayUtxoPredFailure era
alonzoToConwayUtxoPredFailure
instance InjectRuleFailure "UTXO" ShelleyUtxoPredFailure DijkstraEra where
injectFailure :: ShelleyUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure =
ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure (ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra)
-> (ShelleyUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> ShelleyUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall era.
(EraRuleFailure "PPUP" era ~ VoidEraRule "PPUP" era) =>
AllegraUtxoPredFailure era -> ConwayUtxoPredFailure era
allegraToConwayUtxoPredFailure (AllegraUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> (ShelleyUtxoPredFailure DijkstraEra
-> AllegraUtxoPredFailure DijkstraEra)
-> ShelleyUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure DijkstraEra
-> AllegraUtxoPredFailure DijkstraEra
forall era.
ShelleyUtxoPredFailure era -> AllegraUtxoPredFailure era
shelleyToAllegraUtxoPredFailure
instance InjectRuleFailure "UTXO" Allegra.AllegraUtxoPredFailure DijkstraEra where
injectFailure :: AllegraUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure = ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure (ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra)
-> (AllegraUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> AllegraUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall era.
(EraRuleFailure "PPUP" era ~ VoidEraRule "PPUP" era) =>
AllegraUtxoPredFailure era -> ConwayUtxoPredFailure era
allegraToConwayUtxoPredFailure
instance InjectRuleFailure "UTXO" ConwayUtxosPredFailure DijkstraEra where
injectFailure :: ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOS" DijkstraEra)
-> DijkstraUtxoPredFailure DijkstraEra
ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
UtxosFailure
instance InjectRuleFailure "UTXO" AlonzoUtxosPredFailure DijkstraEra where
injectFailure :: AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXO" DijkstraEra
injectFailure =
ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure
(ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra)
-> (AlonzoUtxosPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> AlonzoUtxosPredFailure DijkstraEra
-> DijkstraUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall era. AlonzoUtxoPredFailure era -> ConwayUtxoPredFailure era
alonzoToConwayUtxoPredFailure
(AlonzoUtxoPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra)
-> (AlonzoUtxosPredFailure DijkstraEra
-> AlonzoUtxoPredFailure DijkstraEra)
-> AlonzoUtxosPredFailure DijkstraEra
-> ConwayUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "UTXOS" DijkstraEra)
-> AlonzoUtxoPredFailure DijkstraEra
ConwayUtxosPredFailure DijkstraEra
-> AlonzoUtxoPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOS" era) -> AlonzoUtxoPredFailure era
Alonzo.UtxosFailure
(ConwayUtxosPredFailure DijkstraEra
-> AlonzoUtxoPredFailure DijkstraEra)
-> (AlonzoUtxosPredFailure DijkstraEra
-> ConwayUtxosPredFailure DijkstraEra)
-> AlonzoUtxosPredFailure DijkstraEra
-> AlonzoUtxoPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXOS" DijkstraEra
AlonzoUtxosPredFailure DijkstraEra
-> ConwayUtxosPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
deriving instance
( Era era
, Show (Value era)
, Show (PredicateFailure (EraRule "UTXOS" era))
, Show (TxOut era)
, Show (Script era)
, Show TxIn
) =>
Show (DijkstraUtxoPredFailure era)
deriving instance
( Era era
, Eq (Value era)
, Eq (PredicateFailure (EraRule "UTXOS" era))
, Eq (TxOut era)
, Eq (Script era)
, Eq TxIn
) =>
Eq (DijkstraUtxoPredFailure era)
instance
( Era era
, NFData (Value era)
, NFData (TxOut era)
, NFData (PredicateFailure (EraRule "UTXOS" era))
) =>
NFData (DijkstraUtxoPredFailure era)
validateNoPtrInCollateralReturn ::
( BabbageEraTxBody era
, InjectRuleFailure rule DijkstraUtxoPredFailure era
) =>
TxBody TopTx era ->
Rule (EraRule rule era) ctx ()
validateNoPtrInCollateralReturn :: forall era (rule :: Symbol) (ctx :: RuleType).
(BabbageEraTxBody era,
InjectRuleFailure rule DijkstraUtxoPredFailure era) =>
TxBody TopTx era -> Rule (EraRule rule era) ctx ()
validateNoPtrInCollateralReturn TxBody TopTx era
txBody = do
let hasCollateralTxOut :: Maybe (TxOut era)
hasCollateralTxOut = do
SJust collateralReturn <- StrictMaybe (TxOut era) -> Maybe (StrictMaybe (TxOut era))
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (StrictMaybe (TxOut era) -> Maybe (StrictMaybe (TxOut era)))
-> StrictMaybe (TxOut era) -> Maybe (StrictMaybe (TxOut era))
forall a b. (a -> b) -> a -> b
$ TxBody TopTx era
txBody TxBody TopTx era
-> Getting
(StrictMaybe (TxOut era))
(TxBody TopTx era)
(StrictMaybe (TxOut era))
-> StrictMaybe (TxOut era)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictMaybe (TxOut era))
(TxBody TopTx era)
(StrictMaybe (TxOut era))
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (TxOut era))
Lens' (TxBody TopTx era) (StrictMaybe (TxOut era))
collateralReturnTxBodyL
Addr _ _ (StakeRefPtr {}) <- pure $ collateralReturn ^. addrTxOutL
Just collateralReturn
Maybe (TxOut era)
-> (TxOut era -> PredicateFailure (EraRule rule era))
-> F (Clause (EraRule rule era) ctx) ()
forall a sts (ctx :: RuleType).
Maybe a -> (a -> PredicateFailure sts) -> Rule sts ctx ()
failOnJustStatic Maybe (TxOut era)
hasCollateralTxOut (DijkstraUtxoPredFailure era -> EraRuleFailure rule era
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure (DijkstraUtxoPredFailure era -> EraRuleFailure rule era)
-> (TxOut era -> DijkstraUtxoPredFailure era)
-> TxOut era
-> EraRuleFailure rule era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxOut era -> DijkstraUtxoPredFailure era
forall era. TxOut era -> DijkstraUtxoPredFailure era
PtrPresentInCollateralReturn)
validateBatchWithdrawals ::
( EraTx era
, EraAccounts era
, DijkstraEraTxBody era
) =>
Accounts era ->
Tx TopTx era ->
Test (DijkstraUtxoPredFailure era)
validateBatchWithdrawals :: forall era.
(EraTx era, EraAccounts era, DijkstraEraTxBody era) =>
Accounts era -> Tx TopTx era -> Test (DijkstraUtxoPredFailure era)
validateBatchWithdrawals Accounts era
accounts Tx TopTx era
tx =
let allWithdrawals :: Map AccountAddress Coin
allWithdrawals =
(Coin -> Coin -> Coin)
-> [Map AccountAddress Coin] -> Map AccountAddress Coin
forall (f :: * -> *) k a.
(Foldable f, Ord k) =>
(a -> a -> a) -> f (Map k a) -> Map k a
Map.unionsWith Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
(<>) ([Map AccountAddress Coin] -> Map AccountAddress Coin)
-> [Map AccountAddress Coin] -> Map AccountAddress Coin
forall a b. (a -> b) -> a -> b
$
Withdrawals -> Map AccountAddress Coin
unWithdrawals (Tx TopTx era
tx Tx TopTx era
-> Getting Withdrawals (Tx TopTx era) Withdrawals -> Withdrawals
forall s a. s -> Getting a s a -> a
^. (TxBody TopTx era -> Const Withdrawals (TxBody TopTx era))
-> Tx TopTx era -> Const Withdrawals (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody TopTx era -> Const Withdrawals (TxBody TopTx era))
-> Tx TopTx era -> Const Withdrawals (Tx TopTx era))
-> ((Withdrawals -> Const Withdrawals Withdrawals)
-> TxBody TopTx era -> Const Withdrawals (TxBody TopTx era))
-> Getting Withdrawals (Tx TopTx era) Withdrawals
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Withdrawals -> Const Withdrawals Withdrawals)
-> TxBody TopTx era -> Const Withdrawals (TxBody TopTx era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l era) Withdrawals
withdrawalsTxBodyL)
Map AccountAddress Coin
-> [Map AccountAddress Coin] -> [Map AccountAddress Coin]
forall a. a -> [a] -> [a]
: [ Withdrawals -> Map AccountAddress Coin
unWithdrawals (Withdrawals -> Map AccountAddress Coin)
-> Withdrawals -> Map AccountAddress Coin
forall a b. (a -> b) -> a -> b
$ Tx SubTx era
subTx Tx SubTx era
-> Getting Withdrawals (Tx SubTx era) Withdrawals -> Withdrawals
forall s a. s -> Getting a s a -> a
^. (TxBody SubTx era -> Const Withdrawals (TxBody SubTx era))
-> Tx SubTx era -> Const Withdrawals (Tx SubTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody SubTx era -> Const Withdrawals (TxBody SubTx era))
-> Tx SubTx era -> Const Withdrawals (Tx SubTx era))
-> ((Withdrawals -> Const Withdrawals Withdrawals)
-> TxBody SubTx era -> Const Withdrawals (TxBody SubTx era))
-> Getting Withdrawals (Tx SubTx era) Withdrawals
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Withdrawals -> Const Withdrawals Withdrawals)
-> TxBody SubTx era -> Const Withdrawals (TxBody SubTx era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l era) Withdrawals
withdrawalsTxBodyL
| Tx SubTx era
subTx <- OMap TxId (Tx SubTx era) -> [Tx SubTx era]
forall k v. Ord k => OMap k v -> [v]
OMap.elems (OMap TxId (Tx SubTx era) -> [Tx SubTx era])
-> OMap TxId (Tx SubTx era) -> [Tx SubTx era]
forall a b. (a -> b) -> a -> b
$ Tx TopTx era
tx Tx TopTx era
-> Getting
(OMap TxId (Tx SubTx era))
(Tx TopTx era)
(OMap TxId (Tx SubTx era))
-> OMap TxId (Tx SubTx era)
forall s a. s -> Getting a s a -> a
^. (TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Tx TopTx era -> Const (OMap TxId (Tx SubTx era)) (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Tx TopTx era -> Const (OMap TxId (Tx SubTx era)) (Tx TopTx era))
-> ((OMap TxId (Tx SubTx era)
-> Const (OMap TxId (Tx SubTx era)) (OMap TxId (Tx SubTx era)))
-> TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Getting
(OMap TxId (Tx SubTx era))
(Tx TopTx era)
(OMap TxId (Tx SubTx era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OMap TxId (Tx SubTx era)
-> Const (OMap TxId (Tx SubTx era)) (OMap TxId (Tx SubTx era)))
-> TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era)
forall era.
DijkstraEraTxBody era =>
Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))
Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))
subTransactionsTxBodyL
]
badWithdrawals :: Map AccountAddress (Mismatch RelLTEQ Coin)
badWithdrawals =
(AccountAddress -> Coin -> Maybe (Mismatch RelLTEQ Coin))
-> Map AccountAddress Coin
-> Map AccountAddress (Mismatch RelLTEQ Coin)
forall k a b. (k -> a -> Maybe b) -> Map k a -> Map k b
Map.mapMaybeWithKey
( \AccountAddress
acctAddr Coin
withdrawn ->
let balance :: Coin
balance = AccountAddress -> Coin
getAccountBalance AccountAddress
acctAddr
in if Coin
withdrawn Coin -> Coin -> Bool
forall a. Ord a => a -> a -> Bool
> Coin
balance
then Mismatch RelLTEQ Coin -> Maybe (Mismatch RelLTEQ Coin)
forall a. a -> Maybe a
Just Mismatch {mismatchSupplied :: Coin
mismatchSupplied = Coin
withdrawn, mismatchExpected :: Coin
mismatchExpected = Coin
balance}
else Maybe (Mismatch RelLTEQ Coin)
forall a. Maybe a
Nothing
)
Map AccountAddress Coin
allWithdrawals
in Map AccountAddress (Mismatch RelLTEQ Coin)
-> (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
-> Validation (NonEmpty (DijkstraUtxoPredFailure era)) ()
forall k v e.
Map k v -> (NonEmptyMap k v -> e) -> Validation (NonEmpty e) ()
failureOnNonEmptyMap Map AccountAddress (Mismatch RelLTEQ Coin)
badWithdrawals NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
WithdrawalsExceedAccountBalance
where
getAccountBalance :: AccountAddress -> Coin
getAccountBalance (AccountAddress Network
_ (AccountId Credential Staking
cred)) =
case Credential Staking -> Accounts era -> Maybe (AccountState era)
forall era.
EraAccounts era =>
Credential Staking -> Accounts era -> Maybe (AccountState era)
lookupAccountState Credential Staking
cred Accounts era
accounts of
Maybe (AccountState era)
Nothing -> Coin
forall a. Monoid a => a
mempty
Just AccountState era
accountState -> CompactForm Coin -> Coin
forall a. Compactible a => CompactForm a -> a
fromCompact (CompactForm Coin -> Coin) -> CompactForm Coin -> Coin
forall a b. (a -> b) -> a -> b
$ AccountState era
accountState AccountState era
-> Getting (CompactForm Coin) (AccountState era) (CompactForm Coin)
-> CompactForm Coin
forall s a. s -> Getting a s a -> a
^. Getting (CompactForm Coin) (AccountState era) (CompactForm Coin)
forall era.
EraAccounts era =>
Lens' (AccountState era) (CompactForm Coin)
Lens' (AccountState era) (CompactForm Coin)
balanceAccountStateL
validateBatchCollateral ::
forall era rule.
( AlonzoEraTx era
, DijkstraEraTxBody era
, InjectRuleFailure rule AlonzoUtxoPredFailure era
, InjectRuleFailure rule BabbageUtxoPredFailure era
) =>
PParams era ->
Tx TopTx era ->
UTxO era ->
Test (EraRuleFailure rule era)
validateBatchCollateral :: forall era (rule :: Symbol).
(AlonzoEraTx era, DijkstraEraTxBody era,
InjectRuleFailure rule AlonzoUtxoPredFailure era,
InjectRuleFailure rule BabbageUtxoPredFailure era) =>
PParams era
-> Tx TopTx era -> UTxO era -> Test (EraRuleFailure rule era)
validateBatchCollateral PParams era
pp Tx TopTx era
tx (UTxO Map TxIn (TxOut era)
utxo) =
Bool
-> Validation (NonEmpty (EraRuleFailure rule era)) ()
-> Validation (NonEmpty (EraRuleFailure rule era)) ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Tx TopTx era -> Bool
hasAnyRedeemers Tx TopTx era
tx) (Validation (NonEmpty (EraRuleFailure rule era)) ()
-> Validation (NonEmpty (EraRuleFailure rule era)) ())
-> Validation (NonEmpty (EraRuleFailure rule era)) ()
-> Validation (NonEmpty (EraRuleFailure rule era)) ()
forall a b. (a -> b) -> a -> b
$
PParams era
-> TxBody TopTx era
-> Map TxIn (TxOut era)
-> Validation (NonEmpty (EraRuleFailure rule era)) ()
forall era (rule :: Symbol).
(BabbageEraTxBody era,
InjectRuleFailure rule AlonzoUtxoPredFailure era,
InjectRuleFailure rule BabbageUtxoPredFailure era) =>
PParams era
-> TxBody TopTx era
-> Map TxIn (TxOut era)
-> Test (EraRuleFailure rule era)
validateTotalCollateral PParams era
pp (Tx TopTx era
tx Tx TopTx era
-> Getting (TxBody TopTx era) (Tx TopTx era) (TxBody TopTx era)
-> TxBody TopTx era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody TopTx era) (Tx TopTx era) (TxBody TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL) Map TxIn (TxOut era)
utxoCollateral
where
utxoCollateral :: Map TxIn (TxOut era)
utxoCollateral = Map TxIn (TxOut era) -> Set TxIn -> Map TxIn (TxOut era)
forall k a. Ord k => Map k a -> Set k -> Map k a
Map.restrictKeys Map TxIn (TxOut era)
utxo (Tx TopTx era
tx Tx TopTx era
-> Getting (Set TxIn) (Tx TopTx era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. (TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Tx TopTx era -> Const (Set TxIn) (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Tx TopTx era -> Const (Set TxIn) (Tx TopTx era))
-> ((Set TxIn -> Const (Set TxIn) (Set TxIn))
-> TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Getting (Set TxIn) (Tx TopTx era) (Set TxIn)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> Const (Set TxIn) (Set TxIn))
-> TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody TopTx era) (Set TxIn)
Lens' (TxBody TopTx era) (Set TxIn)
collateralInputsTxBodyL)
hasAnyRedeemers :: Tx TopTx era -> Bool
hasAnyRedeemers Tx TopTx era
t =
Tx TopTx era -> Bool
forall {l :: TxLevel}. Tx l era -> Bool
hasRedeemers Tx TopTx era
t Bool -> Bool -> Bool
|| (Tx SubTx era -> Bool) -> OMap TxId (Tx SubTx era) -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Tx SubTx era -> Bool
forall {l :: TxLevel}. Tx l era -> Bool
hasRedeemers (Tx TopTx era
t Tx TopTx era
-> Getting
(OMap TxId (Tx SubTx era))
(Tx TopTx era)
(OMap TxId (Tx SubTx era))
-> OMap TxId (Tx SubTx era)
forall s a. s -> Getting a s a -> a
^. (TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Tx TopTx era -> Const (OMap TxId (Tx SubTx era)) (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Tx TopTx era -> Const (OMap TxId (Tx SubTx era)) (Tx TopTx era))
-> ((OMap TxId (Tx SubTx era)
-> Const (OMap TxId (Tx SubTx era)) (OMap TxId (Tx SubTx era)))
-> TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era))
-> Getting
(OMap TxId (Tx SubTx era))
(Tx TopTx era)
(OMap TxId (Tx SubTx era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OMap TxId (Tx SubTx era)
-> Const (OMap TxId (Tx SubTx era)) (OMap TxId (Tx SubTx era)))
-> TxBody TopTx era
-> Const (OMap TxId (Tx SubTx era)) (TxBody TopTx era)
forall era.
DijkstraEraTxBody era =>
Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))
Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))
subTransactionsTxBodyL)
hasRedeemers :: Tx l era -> Bool
hasRedeemers = Bool -> Bool
not (Bool -> Bool) -> (Tx l era -> Bool) -> Tx l era -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Bool
forall a. Map (PlutusPurpose AsIx era) a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Bool)
-> (Tx l era -> Map (PlutusPurpose AsIx era) (Data era, ExUnits))
-> Tx l era
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Tx l era
-> Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Tx l era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall s a. s -> Getting a s a -> a
^. (TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Tx l era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Tx l era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l era) (TxWits era)
witsTxL ((TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Tx l era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Tx l era))
-> ((Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Tx l era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits era) (Redeemers era)
rdmrsTxWitsL ((Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> ((Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> (Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era)
forall era.
AlonzoEraScript era =>
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
unRedeemersL)
validateWrongNetworkInDirectDeposit ::
DijkstraEraTxBody era =>
Network ->
TxBody t era ->
Test (DijkstraUtxoPredFailure era)
validateWrongNetworkInDirectDeposit :: forall era (t :: TxLevel).
DijkstraEraTxBody era =>
Network -> TxBody t era -> Test (DijkstraUtxoPredFailure era)
validateWrongNetworkInDirectDeposit Network
netId TxBody t era
txb =
Set AccountAddress
-> (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Validation (NonEmpty (DijkstraUtxoPredFailure era)) ()
forall (f :: * -> *) a e.
(Foldable f, Ord a) =>
f a -> (NonEmptySet a -> e) -> Validation (NonEmpty e) ()
failureOnNonEmptySet Set AccountAddress
depositsWrongNetwork (Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkInDirectDeposit Network
netId)
where
depositsWrongNetwork :: Set AccountAddress
depositsWrongNetwork =
Map AccountAddress Coin -> Set AccountAddress
forall k a. Map k a -> Set k
Map.keysSet (Map AccountAddress Coin -> Set AccountAddress)
-> Map AccountAddress Coin -> Set AccountAddress
forall a b. (a -> b) -> a -> b
$
(AccountAddress -> Coin -> Bool)
-> Map AccountAddress Coin -> Map AccountAddress Coin
forall k a. (k -> a -> Bool) -> Map k a -> Map k a
Map.filterWithKey
(\AccountAddress
a Coin
_ -> AccountAddress -> Network
aaNetworkId AccountAddress
a Network -> Network -> Bool
forall a. Eq a => a -> a -> Bool
/= Network
netId)
(DirectDeposits -> Map AccountAddress Coin
unDirectDeposits (DirectDeposits -> Map AccountAddress Coin)
-> DirectDeposits -> Map AccountAddress Coin
forall a b. (a -> b) -> a -> b
$ TxBody t era
txb TxBody t era
-> Getting DirectDeposits (TxBody t era) DirectDeposits
-> DirectDeposits
forall s a. s -> Getting a s a -> a
^. Getting DirectDeposits (TxBody t era) DirectDeposits
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) DirectDeposits
forall (l :: TxLevel). Lens' (TxBody l era) DirectDeposits
directDepositsTxBodyL)
dijkstraUtxoTransition ::
forall era.
( EraUTxO era
, EraCertState era
, DijkstraEraTxBody era
, AlonzoEraTx era
, EraStake era
, InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era
, InjectRuleFailure "UTXO" AllegraUtxoPredFailure era
, InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era
, InjectRuleFailure "UTXO" BabbageUtxoPredFailure era
, InjectRuleFailure "UTXO" DijkstraUtxoPredFailure era
, Environment (EraRule "UTXO" era) ~ DijkstraUtxoEnv era
, State (EraRule "UTXO" era) ~ UTxOState era
, Signal (EraRule "UTXO" era) ~ StAnnTx TopTx era
, BaseM (EraRule "UTXO" era) ~ ShelleyBase
, STS (EraRule "UTXO" era)
, Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era
,
Environment (EraRule "UTXOS" era) ~ ConwayUtxosEnv era
, State (EraRule "UTXOS" era) ~ ()
, Signal (EraRule "UTXOS" era) ~ StAnnTx TopTx era
, Embed (EraRule "UTXOS" era) (EraRule "UTXO" era)
) =>
TransitionRule (EraRule "UTXO" era)
dijkstraUtxoTransition :: forall era.
(EraUTxO era, EraCertState era, DijkstraEraTxBody era,
AlonzoEraTx era, EraStake era,
InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era,
InjectRuleFailure "UTXO" AllegraUtxoPredFailure era,
InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era,
InjectRuleFailure "UTXO" BabbageUtxoPredFailure era,
InjectRuleFailure "UTXO" DijkstraUtxoPredFailure era,
Environment (EraRule "UTXO" era) ~ DijkstraUtxoEnv era,
State (EraRule "UTXO" era) ~ UTxOState era,
Signal (EraRule "UTXO" era) ~ StAnnTx TopTx era,
BaseM (EraRule "UTXO" era) ~ ShelleyBase, STS (EraRule "UTXO" era),
Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era,
Environment (EraRule "UTXOS" era) ~ ConwayUtxosEnv era,
State (EraRule "UTXOS" era) ~ (),
Signal (EraRule "UTXOS" era) ~ StAnnTx TopTx era,
Embed (EraRule "UTXOS" era) (EraRule "UTXO" era)) =>
TransitionRule (EraRule "UTXO" era)
dijkstraUtxoTransition = do
TRC (DijkstraUtxoEnv slot pp certState originalUtxo _scriptsProvided, utxos, stAnnTx) <-
Rule
(EraRule "UTXO" era)
'Transition
(RuleContext 'Transition (EraRule "UTXO" era))
F (Clause (EraRule "UTXO" era) 'Transition)
(TRC (EraRule "UTXO" era))
forall sts (rtype :: RuleType).
Rule sts rtype (RuleContext rtype sts)
judgmentContext
let tx = StAnnTx TopTx era
Signal (EraRule "UTXO" era)
stAnnTx StAnnTx TopTx era
-> Getting (Tx TopTx era) (StAnnTx TopTx era) (Tx TopTx era)
-> Tx TopTx era
forall s a. s -> Getting a s a -> a
^. Getting (Tx TopTx era) (StAnnTx TopTx era) (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
SimpleGetter (StAnnTx l era) (Tx l era)
forall (l :: TxLevel). SimpleGetter (StAnnTx l era) (Tx l era)
txStAnnTxG
let accounts = CertState era
certState CertState era
-> Getting (Accounts era) (CertState era) (Accounts era)
-> Accounts era
forall s a. s -> Getting a s a -> a
^. (DState era -> Const (Accounts era) (DState era))
-> CertState era -> Const (Accounts era) (CertState era)
forall era. EraCertState era => Lens' (CertState era) (DState era)
Lens' (CertState era) (DState era)
certDStateL ((DState era -> Const (Accounts era) (DState era))
-> CertState era -> Const (Accounts era) (CertState era))
-> ((Accounts era -> Const (Accounts era) (Accounts era))
-> DState era -> Const (Accounts era) (DState era))
-> Getting (Accounts era) (CertState era) (Accounts era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Accounts era -> Const (Accounts era) (Accounts era))
-> DState era -> Const (Accounts era) (DState era)
forall era. Lens' (DState era) (Accounts era)
forall (t :: * -> *) era.
CanSetAccounts t =>
Lens' (t era) (Accounts era)
accountsL
let txBody = Tx TopTx era
tx Tx TopTx era
-> Getting (TxBody TopTx era) (Tx TopTx era) (TxBody TopTx era)
-> TxBody TopTx era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody TopTx era) (Tx TopTx era) (TxBody TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL
runTest $ Allegra.validateOutsideValidityIntervalUTxO slot txBody
sysSt <- liftSTS $ asks systemStart
ei <- liftSTS $ asks epochInfo
runTest $ Alonzo.validateOutsideForecast ei slot sysSt tx
runTestOnSignal $ Shelley.validateInputSetEmptyUTxO txBody
let allInputs = TxBody TopTx era
txBody TxBody TopTx era
-> Getting (Set TxIn) (TxBody TopTx era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody TopTx era) (Set TxIn)
forall era.
EraTxBody era =>
SimpleGetter (TxBody TopTx era) (Set TxIn)
SimpleGetter (TxBody TopTx era) (Set TxIn)
allInputsTxBodyF
inputs = TxBody TopTx era
txBody TxBody TopTx era
-> Getting (Set TxIn) (TxBody TopTx era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody TopTx era) (Set TxIn)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn)
inputsTxBodyL
runTest $ Shelley.validateBadInputsUTxO originalUtxo allInputs
runTest $ Shelley.validateBadInputsUTxO (utxosUtxo utxos) inputs
runTest $ Shelley.validateFeeTooSmallUTxO pp tx originalUtxo
validate $ validateBatchCollateral pp tx originalUtxo
runTest $ validateBatchWithdrawals accounts tx
runTest $ Shelley.validateValueNotConservedUTxO pp originalUtxo certState txBody
let allSizedOutputs = TxBody TopTx era
txBody TxBody TopTx era
-> Getting
(StrictSeq (Sized (TxOut era)))
(TxBody TopTx era)
(StrictSeq (Sized (TxOut era)))
-> StrictSeq (Sized (TxOut era))
forall s a. s -> Getting a s a -> a
^. Getting
(StrictSeq (Sized (TxOut era)))
(TxBody TopTx era)
(StrictSeq (Sized (TxOut era)))
forall era (l :: TxLevel).
BabbageEraTxBody era =>
SimpleGetter (TxBody l era) (StrictSeq (Sized (TxOut era)))
forall (l :: TxLevel).
SimpleGetter (TxBody l era) (StrictSeq (Sized (TxOut era)))
allSizedOutputsTxBodyF
runTest $ Babbage.validateOutputTooSmallUTxO pp allSizedOutputs
let allOutputs = (Sized (TxOut era) -> TxOut era)
-> StrictSeq (Sized (TxOut era)) -> StrictSeq (TxOut era)
forall a b. (a -> b) -> StrictSeq a -> StrictSeq b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sized (TxOut era) -> TxOut era
forall a. Sized a -> a
sizedValue StrictSeq (Sized (TxOut era))
allSizedOutputs
runTest $ Alonzo.validateOutputTooBigUTxO pp allOutputs
runTestOnSignal $ Shelley.validateOutputBootAddrAttrsTooBig allOutputs
netId <- liftSTS $ asks networkId
runTestOnSignal $ Shelley.validateWrongNetwork netId allOutputs
runTestOnSignal $ Shelley.validateWrongNetworkWithdrawal netId txBody
runTestOnSignal $ Alonzo.validateWrongNetworkInTxBody netId txBody
runTestOnSignal $ validateWrongNetworkInDirectDeposit netId txBody
validateNoPtrInCollateralReturn txBody
runTestOnSignal $ Shelley.validateMaxTxSizeUTxO pp tx
runTest $ Alonzo.validateExUnitsTooBigUTxO pp tx
runTest $ Alonzo.validateTooManyCollateralInputs pp txBody
() <- trans @(EraRule "UTXOS" era) $ TRC (ConwayUtxosEnv pp originalUtxo, (), stAnnTx)
updateUTxOStateByTxValidity
pp
certState
(utxosGovState utxos)
tx
(updateTreasuryDonation tx utxos)
instance
forall era.
( EraTx era
, EraUTxO era
, EraStake era
, DijkstraEraTxBody era
, AlonzoEraTx era
, EraRule "UTXO" era ~ DijkstraUTXO era
, InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era
, InjectRuleFailure "UTXO" AllegraUtxoPredFailure era
, InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era
, InjectRuleFailure "UTXO" BabbageUtxoPredFailure era
, InjectRuleFailure "UTXO" ConwayUtxoPredFailure era
, InjectRuleFailure "UTXO" DijkstraUtxoPredFailure era
, Environment (EraRule "UTXO" era) ~ DijkstraUtxoEnv era
, State (EraRule "UTXO" era) ~ UTxOState era
, Signal (EraRule "UTXO" era) ~ StAnnTx TopTx era
, BaseM (EraRule "UTXO" era) ~ ShelleyBase
, STS (EraRule "UTXO" era)
,
Embed (EraRule "UTXOS" era) (DijkstraUTXO era)
, Environment (EraRule "UTXOS" era) ~ ConwayUtxosEnv era
, State (EraRule "UTXOS" era) ~ ()
, Signal (EraRule "UTXOS" era) ~ StAnnTx TopTx era
, EraCertState era
, EraRule "UTXO" era ~ DijkstraUTXO era
, SafeToHash (TxWits era)
) =>
STS (DijkstraUTXO era)
where
type State (DijkstraUTXO era) = UTxOState era
type Signal (DijkstraUTXO era) = StAnnTx TopTx era
type Environment (DijkstraUTXO era) = DijkstraUtxoEnv era
type BaseM (DijkstraUTXO era) = ShelleyBase
type PredicateFailure (DijkstraUTXO era) = DijkstraUtxoPredFailure era
type Event (DijkstraUTXO era) = AlonzoUtxoEvent era
initialRules :: [InitialRule (DijkstraUTXO era)]
initialRules = []
transitionRules :: [TransitionRule (DijkstraUTXO era)]
transitionRules = [forall era.
(EraUTxO era, EraCertState era, DijkstraEraTxBody era,
AlonzoEraTx era, EraStake era,
InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era,
InjectRuleFailure "UTXO" AllegraUtxoPredFailure era,
InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era,
InjectRuleFailure "UTXO" BabbageUtxoPredFailure era,
InjectRuleFailure "UTXO" DijkstraUtxoPredFailure era,
Environment (EraRule "UTXO" era) ~ DijkstraUtxoEnv era,
State (EraRule "UTXO" era) ~ UTxOState era,
Signal (EraRule "UTXO" era) ~ StAnnTx TopTx era,
BaseM (EraRule "UTXO" era) ~ ShelleyBase, STS (EraRule "UTXO" era),
Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era,
Environment (EraRule "UTXOS" era) ~ ConwayUtxosEnv era,
State (EraRule "UTXOS" era) ~ (),
Signal (EraRule "UTXOS" era) ~ StAnnTx TopTx era,
Embed (EraRule "UTXOS" era) (EraRule "UTXO" era)) =>
TransitionRule (EraRule "UTXO" era)
dijkstraUtxoTransition @era]
assertions :: [Assertion (DijkstraUTXO era)]
assertions = [Assertion (DijkstraUTXO era)
forall era (rule :: * -> *).
(EraTx era, SafeToHash (TxWits era),
Signal (rule era) ~ StAnnTx TopTx era) =>
Assertion (rule era)
validSizeComputationCheck]
instance
( STS (ConwayUTXOS era)
, PredicateFailure (EraRule "UTXOS" era) ~ ConwayUtxosPredFailure era
, Event (EraRule "UTXOS" era) ~ Event (ConwayUTXOS era)
) =>
Embed (ConwayUTXOS era) (DijkstraUTXO era)
where
wrapFailed :: PredicateFailure (ConwayUTXOS era)
-> PredicateFailure (DijkstraUTXO era)
wrapFailed = PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
PredicateFailure (ConwayUTXOS era)
-> PredicateFailure (DijkstraUTXO era)
forall era.
PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
UtxosFailure
wrapEvent :: Event (ConwayUTXOS era) -> Event (DijkstraUTXO era)
wrapEvent = Event (EraRule "UTXOS" era) -> AlonzoUtxoEvent era
Event (ConwayUTXOS era) -> Event (DijkstraUTXO era)
forall era. Event (EraRule "UTXOS" era) -> AlonzoUtxoEvent era
Alonzo.UtxosEvent
instance
( Era era
, EncCBOR (TxOut era)
, EncCBOR (Value era)
, EncCBOR (PredicateFailure (EraRule "UTXOS" era))
) =>
EncCBOR (DijkstraUtxoPredFailure era)
where
encCBOR :: DijkstraUtxoPredFailure era -> Encoding
encCBOR =
Encode Open (DijkstraUtxoPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraUtxoPredFailure era) -> Encoding)
-> (DijkstraUtxoPredFailure era
-> Encode Open (DijkstraUtxoPredFailure era))
-> DijkstraUtxoPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
UtxosFailure PredicateFailure (EraRule "UTXOS" era)
a -> (PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open
(PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
UtxosFailure @era) Word
0 Encode
Open
(PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXOS" era))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "UTXOS" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXOS" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "UTXOS" era)
a
BadInputsUTxO NonEmptySet TxIn
ins -> (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
-> Word
-> Encode Open (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. NonEmptySet TxIn -> DijkstraUtxoPredFailure era
BadInputsUTxO @era) Word
1 Encode Open (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet TxIn)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet TxIn -> Encode (Closed Dense) (NonEmptySet TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet TxIn
ins
OutsideValidityIntervalUTxO ValidityInterval
a SlotNo
b -> (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
forall era.
ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
OutsideValidityIntervalUTxO Word
2 Encode
Open (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) ValidityInterval
-> Encode Open (SlotNo -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> ValidityInterval -> Encode (Closed Dense) ValidityInterval
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To ValidityInterval
a Encode Open (SlotNo -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) SlotNo
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> SlotNo -> Encode (Closed Dense) SlotNo
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To SlotNo
b
MaxTxSizeUTxO Mismatch RelLTEQ Word32
mm -> (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
MaxTxSizeUTxO Word
3 Encode
Open (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelLTEQ Word32)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelLTEQ Word32
-> Encode (Closed Dense) (Mismatch RelLTEQ Word32)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelLTEQ Word32
mm
DijkstraUtxoPredFailure era
InputSetEmptyUTxO -> DijkstraUtxoPredFailure era
-> Word -> Encode Open (DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
InputSetEmptyUTxO Word
4
FeeTooSmallUTxO Mismatch RelGTEQ Coin
mm -> (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
forall era. Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
FeeTooSmallUTxO Word
5 Encode Open (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelGTEQ Coin)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelGTEQ Coin
-> Encode (Closed Dense) (Mismatch RelGTEQ Coin)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelGTEQ Coin
mm
ValueNotConservedUTxO Mismatch RelEQ (Value era)
mm -> (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era
ValueNotConservedUTxO @era) Word
6 Encode
Open (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ (Value era))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ (Value era)
-> Encode (Closed Dense) (Mismatch RelEQ (Value era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ (Value era)
mm
WrongNetwork Network
right NonEmptySet Addr
wrongs -> (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era
WrongNetwork @era) Word
7 Encode
Open (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) Network
-> Encode Open (NonEmptySet Addr -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
right Encode Open (NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet Addr)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet Addr -> Encode (Closed Dense) (NonEmptySet Addr)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet Addr
wrongs
WrongNetworkWithdrawal Network
right NonEmptySet AccountAddress
wrongs -> (Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkWithdrawal @era) Word
8 Encode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) Network
-> Encode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
right Encode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet AccountAddress)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet AccountAddress
-> Encode (Closed Dense) (NonEmptySet AccountAddress)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet AccountAddress
wrongs
OutputBootAddrAttrsTooBig NonEmpty (TxOut era)
outs -> (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era
OutputBootAddrAttrsTooBig @era) Word
9 Encode Open (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (TxOut era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (TxOut era)
outs
OutputTooBigUTxO NonEmpty (Int, Int, TxOut era)
outs -> (NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era
OutputTooBigUTxO @era) Word
10 Encode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Int, Int, TxOut era))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Int, Int, TxOut era)
-> Encode (Closed Dense) (NonEmpty (Int, Int, TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Int, Int, TxOut era)
outs
InsufficientCollateral DeltaCoin
a Coin
b -> (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Word
-> Encode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
InsufficientCollateral Word
11 Encode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) DeltaCoin
-> Encode Open (Coin -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> DeltaCoin -> Encode (Closed Dense) DeltaCoin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To DeltaCoin
a Encode Open (Coin -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) Coin
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Coin -> Encode (Closed Dense) Coin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Coin
b
ScriptsNotPaidUTxO NonEmptyMap TxIn (TxOut era)
a -> (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
ScriptsNotPaidUTxO Word
12 Encode
Open (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptyMap TxIn (TxOut era))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptyMap TxIn (TxOut era)
-> Encode (Closed Dense) (NonEmptyMap TxIn (TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptyMap TxIn (TxOut era)
a
ExUnitsTooBigUTxO Mismatch RelLTEQ ExUnits
mm -> (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
ExUnitsTooBigUTxO Word
13 Encode
Open (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelLTEQ ExUnits)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelLTEQ ExUnits
-> Encode (Closed Dense) (Mismatch RelLTEQ ExUnits)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelLTEQ ExUnits
mm
CollateralContainsNonADA Value era
a -> (Value era -> DijkstraUtxoPredFailure era)
-> Word -> Encode Open (Value era -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Value era -> DijkstraUtxoPredFailure era
forall era. Value era -> DijkstraUtxoPredFailure era
CollateralContainsNonADA Word
14 Encode Open (Value era -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Value era)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Value era -> Encode (Closed Dense) (Value era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Value era
a
WrongNetworkInTxBody Mismatch RelEQ Network
mm -> (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
forall era. Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
WrongNetworkInTxBody Word
15 Encode Open (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ Network)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ Network
-> Encode (Closed Dense) (Mismatch RelEQ Network)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ Network
mm
OutsideForecast SlotNo
a -> (SlotNo -> DijkstraUtxoPredFailure era)
-> Word -> Encode Open (SlotNo -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum SlotNo -> DijkstraUtxoPredFailure era
forall era. SlotNo -> DijkstraUtxoPredFailure era
OutsideForecast Word
16 Encode Open (SlotNo -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) SlotNo
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> SlotNo -> Encode (Closed Dense) SlotNo
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To SlotNo
a
TooManyCollateralInputs Mismatch RelLTEQ Word16
mm -> (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
TooManyCollateralInputs Word
17 Encode
Open (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelLTEQ Word16)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelLTEQ Word16
-> Encode (Closed Dense) (Mismatch RelLTEQ Word16)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelLTEQ Word16
mm
DijkstraUtxoPredFailure era
NoCollateralInputs -> DijkstraUtxoPredFailure era
-> Word -> Encode Open (DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
NoCollateralInputs Word
18
IncorrectTotalCollateralField DeltaCoin
c1 Coin
c2 -> (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Word
-> Encode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
IncorrectTotalCollateralField Word
19 Encode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) DeltaCoin
-> Encode Open (Coin -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> DeltaCoin -> Encode (Closed Dense) DeltaCoin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To DeltaCoin
c1 Encode Open (Coin -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) Coin
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Coin -> Encode (Closed Dense) Coin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Coin
c2
BabbageOutputTooSmallUTxO NonEmpty (TxOut era, Coin)
x -> (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
forall era.
NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
BabbageOutputTooSmallUTxO Word
20 Encode
Open (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (TxOut era, Coin))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (TxOut era, Coin)
-> Encode (Closed Dense) (NonEmpty (TxOut era, Coin))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (TxOut era, Coin)
x
BabbageNonDisjointRefInputs NonEmpty TxIn
x -> (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
-> Word
-> Encode Open (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty TxIn -> DijkstraUtxoPredFailure era
forall era. NonEmpty TxIn -> DijkstraUtxoPredFailure era
BabbageNonDisjointRefInputs Word
21 Encode Open (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty TxIn)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty TxIn -> Encode (Closed Dense) (NonEmpty TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty TxIn
x
PtrPresentInCollateralReturn TxOut era
x -> (TxOut era -> DijkstraUtxoPredFailure era)
-> Word -> Encode Open (TxOut era -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum TxOut era -> DijkstraUtxoPredFailure era
forall era. TxOut era -> DijkstraUtxoPredFailure era
PtrPresentInCollateralReturn Word
22 Encode Open (TxOut era -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (TxOut era)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxOut era -> Encode (Closed Dense) (TxOut era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxOut era
x
WrongNetworkInDirectDeposit Network
right NonEmptySet AccountAddress
wrongs -> (Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkInDirectDeposit @era) Word
23 Encode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) Network
-> Encode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
right Encode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet AccountAddress)
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet AccountAddress
-> Encode (Closed Dense) (NonEmptySet AccountAddress)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet AccountAddress
wrongs
WithdrawalsExceedAccountBalance NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
mm -> (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
-> Word
-> Encode
Open
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
WithdrawalsExceedAccountBalance Word
24 Encode
Open
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
-> Encode
(Closed Dense) (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin))
-> Encode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> Encode
(Closed Dense) (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
mm
instance
( Era era
, DecCBOR (TxOut era)
, EncCBOR (Value era)
, DecCBOR (Value era)
, DecCBOR (PredicateFailure (EraRule "UTXOS" era))
) =>
DecCBOR (DijkstraUtxoPredFailure era)
where
decCBOR :: forall s. Decoder s (DijkstraUtxoPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraUtxoPredFailure era)
-> Decoder s (DijkstraUtxoPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraUtxoPredFailure era)
-> Decoder s (DijkstraUtxoPredFailure era))
-> ((Word -> Decode Open (DijkstraUtxoPredFailure era))
-> Decode (Closed Dense) (DijkstraUtxoPredFailure era))
-> (Word -> Decode Open (DijkstraUtxoPredFailure era))
-> Decoder s (DijkstraUtxoPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraUtxoPredFailure era))
-> Decode (Closed Dense) (DijkstraUtxoPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraUtxoPredFailure" ((Word -> Decode Open (DijkstraUtxoPredFailure era))
-> Decoder s (DijkstraUtxoPredFailure era))
-> (Word -> Decode Open (DijkstraUtxoPredFailure era))
-> Decoder s (DijkstraUtxoPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
Word
0 -> (PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
-> Decode
Open
(PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
forall era.
PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
UtxosFailure Decode
Open
(PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era)
-> Decode
(Closed (ZonkAny MinVersion))
(PredicateFailure (EraRule "UTXOS" era))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
(Closed (ZonkAny MinVersion))
(PredicateFailure (EraRule "UTXOS" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
1 -> (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
-> Decode Open (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet TxIn -> DijkstraUtxoPredFailure era
forall era. NonEmptySet TxIn -> DijkstraUtxoPredFailure era
BadInputsUTxO Decode Open (NonEmptySet TxIn -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 1)) (NonEmptySet TxIn)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 1)) (NonEmptySet TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
2 -> (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
-> Decode
Open (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
forall era.
ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
OutsideValidityIntervalUTxO Decode
Open (ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 3)) ValidityInterval
-> Decode Open (SlotNo -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 3)) ValidityInterval
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (SlotNo -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 2)) SlotNo
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 2)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
3 -> (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
MaxTxSizeUTxO Decode
Open (Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 4)) (Mismatch RelLTEQ Word32)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 4)) (Mismatch RelLTEQ Word32)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
4 -> DijkstraUtxoPredFailure era
-> Decode Open (DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
InputSetEmptyUTxO
Word
5 -> (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
forall era. Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
FeeTooSmallUTxO Decode Open (Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 5)) (Mismatch RelGTEQ Coin)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 5)) (Mismatch RelGTEQ Coin)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
6 -> (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era
forall era.
Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era
ValueNotConservedUTxO Decode
Open (Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 6)) (Mismatch RelEQ (Value era))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 6)) (Mismatch RelEQ (Value era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
7 -> (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Decode
Open (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era
forall era.
Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era
WrongNetwork Decode
Open (Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 8)) Network
-> Decode Open (NonEmptySet Addr -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 8)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (NonEmptySet Addr -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 7)) (NonEmptySet Addr)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 7)) (NonEmptySet Addr)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
8 -> (Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkWithdrawal Decode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 10)) Network
-> Decode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 10)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 9)) (NonEmptySet AccountAddress)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 9)) (NonEmptySet AccountAddress)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
9 -> (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode
Open (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era
forall era. NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era
OutputBootAddrAttrsTooBig Decode Open (NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 11)) (NonEmpty (TxOut era))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 11)) (NonEmpty (TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
10 -> (NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era
forall era.
NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era
OutputTooBigUTxO Decode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 12)) (NonEmpty (Int, Int, TxOut era))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 12)) (NonEmpty (Int, Int, TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
11 -> (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Decode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
InsufficientCollateral Decode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 14)) DeltaCoin
-> Decode Open (Coin -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 14)) DeltaCoin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Coin -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny MaxVersion)) Coin
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny MaxVersion)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
12 -> (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode
Open (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
ScriptsNotPaidUTxO Decode
Open (NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 15)) (NonEmptyMap TxIn (TxOut era))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 15)) (NonEmptyMap TxIn (TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
13 -> (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
ExUnitsTooBigUTxO Decode
Open (Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 16)) (Mismatch RelLTEQ ExUnits)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 16)) (Mismatch RelLTEQ ExUnits)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
14 -> (Value era -> DijkstraUtxoPredFailure era)
-> Decode Open (Value era -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Value era -> DijkstraUtxoPredFailure era
forall era. Value era -> DijkstraUtxoPredFailure era
CollateralContainsNonADA Decode Open (Value era -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 17)) (Value era)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 17)) (Value era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
15 -> (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
forall era. Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
WrongNetworkInTxBody Decode Open (Mismatch RelEQ Network -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 18)) (Mismatch RelEQ Network)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 18)) (Mismatch RelEQ Network)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
16 -> (SlotNo -> DijkstraUtxoPredFailure era)
-> Decode Open (SlotNo -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD SlotNo -> DijkstraUtxoPredFailure era
forall era. SlotNo -> DijkstraUtxoPredFailure era
OutsideForecast Decode Open (SlotNo -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 19)) SlotNo
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 19)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
17 -> (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
-> Decode
Open (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
TooManyCollateralInputs Decode
Open (Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 20)) (Mismatch RelLTEQ Word16)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 20)) (Mismatch RelLTEQ Word16)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
18 -> DijkstraUtxoPredFailure era
-> Decode Open (DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
NoCollateralInputs
Word
19 -> (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Decode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
IncorrectTotalCollateralField Decode Open (DeltaCoin -> Coin -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 22)) DeltaCoin
-> Decode Open (Coin -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 22)) DeltaCoin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Coin -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 21)) Coin
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 21)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
20 -> (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
-> Decode
Open (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
forall era.
NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
BabbageOutputTooSmallUTxO Decode
Open (NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 23)) (NonEmpty (TxOut era, Coin))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 23)) (NonEmpty (TxOut era, Coin))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
21 -> (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
-> Decode Open (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty TxIn -> DijkstraUtxoPredFailure era
forall era. NonEmpty TxIn -> DijkstraUtxoPredFailure era
BabbageNonDisjointRefInputs Decode Open (NonEmpty TxIn -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 24)) (NonEmpty TxIn)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 24)) (NonEmpty TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
22 -> (TxOut era -> DijkstraUtxoPredFailure era)
-> Decode Open (TxOut era -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD TxOut era -> DijkstraUtxoPredFailure era
forall era. TxOut era -> DijkstraUtxoPredFailure era
PtrPresentInCollateralReturn Decode Open (TxOut era -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 25)) (TxOut era)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 25)) (TxOut era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
23 -> (Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkInDirectDeposit Decode
Open
(Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 27)) Network
-> Decode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 27)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
Open (NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era)
-> Decode (Closed (ZonkAny 26)) (NonEmptySet AccountAddress)
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 26)) (NonEmptySet AccountAddress)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
24 -> (NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
-> Decode
Open
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era
WithdrawalsExceedAccountBalance Decode
Open
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin)
-> DijkstraUtxoPredFailure era)
-> Decode
(Closed (ZonkAny 28))
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin))
-> Decode Open (DijkstraUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
(Closed (ZonkAny 28))
(NonEmptyMap AccountAddress (Mismatch RelLTEQ Coin))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
n -> Word -> Decode Open (DijkstraUtxoPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n
conwayToDijkstraUtxoPredFailure ::
forall era.
ConwayUtxoPredFailure era ->
DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure :: forall era.
ConwayUtxoPredFailure era -> DijkstraUtxoPredFailure era
conwayToDijkstraUtxoPredFailure = \case
Conway.BadInputsUTxO NonEmptySet TxIn
x -> NonEmptySet TxIn -> DijkstraUtxoPredFailure era
forall era. NonEmptySet TxIn -> DijkstraUtxoPredFailure era
BadInputsUTxO NonEmptySet TxIn
x
Conway.OutsideValidityIntervalUTxO ValidityInterval
vi SlotNo
slotNo -> ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
forall era.
ValidityInterval -> SlotNo -> DijkstraUtxoPredFailure era
OutsideValidityIntervalUTxO ValidityInterval
vi SlotNo
slotNo
Conway.MaxTxSizeUTxO Mismatch RelLTEQ Word32
m -> Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word32 -> DijkstraUtxoPredFailure era
MaxTxSizeUTxO Mismatch RelLTEQ Word32
m
ConwayUtxoPredFailure era
Conway.InputSetEmptyUTxO -> DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
InputSetEmptyUTxO
Conway.FeeTooSmallUTxO Mismatch RelGTEQ Coin
m -> Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
forall era. Mismatch RelGTEQ Coin -> DijkstraUtxoPredFailure era
FeeTooSmallUTxO Mismatch RelGTEQ Coin
m
Conway.ValueNotConservedUTxO Mismatch RelEQ (Value era)
m -> Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era
forall era.
Mismatch RelEQ (Value era) -> DijkstraUtxoPredFailure era
ValueNotConservedUTxO Mismatch RelEQ (Value era)
m
Conway.WrongNetwork Network
x NonEmptySet Addr
y -> Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era
forall era.
Network -> NonEmptySet Addr -> DijkstraUtxoPredFailure era
WrongNetwork Network
x NonEmptySet Addr
y
Conway.WrongNetworkWithdrawal Network
x NonEmptySet AccountAddress
y -> Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
forall era.
Network
-> NonEmptySet AccountAddress -> DijkstraUtxoPredFailure era
WrongNetworkWithdrawal Network
x NonEmptySet AccountAddress
y
Conway.OutputTooSmallUTxO NonEmpty (TxOut era)
_ -> String -> DijkstraUtxoPredFailure era
forall a. HasCallStack => String -> a
error String
"Impossible: `OutputTooSmallUTxO` for DijkstraUTXO"
Conway.UtxosFailure PredicateFailure (EraRule "UTXOS" era)
x -> PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
forall era.
PredicateFailure (EraRule "UTXOS" era)
-> DijkstraUtxoPredFailure era
UtxosFailure PredicateFailure (EraRule "UTXOS" era)
x
Conway.OutputBootAddrAttrsTooBig NonEmpty (TxOut era)
xs -> NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era
forall era. NonEmpty (TxOut era) -> DijkstraUtxoPredFailure era
OutputBootAddrAttrsTooBig NonEmpty (TxOut era)
xs
Conway.OutputTooBigUTxO NonEmpty (Int, Int, TxOut era)
xs -> NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era
forall era.
NonEmpty (Int, Int, TxOut era) -> DijkstraUtxoPredFailure era
OutputTooBigUTxO NonEmpty (Int, Int, TxOut era)
xs
Conway.InsufficientCollateral DeltaCoin
c1 Coin
c2 -> DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
InsufficientCollateral DeltaCoin
c1 Coin
c2
Conway.ScriptsNotPaidUTxO NonEmptyMap TxIn (TxOut era)
u -> NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
forall era.
NonEmptyMap TxIn (TxOut era) -> DijkstraUtxoPredFailure era
ScriptsNotPaidUTxO NonEmptyMap TxIn (TxOut era)
u
Conway.ExUnitsTooBigUTxO Mismatch RelLTEQ ExUnits
m -> Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ ExUnits -> DijkstraUtxoPredFailure era
ExUnitsTooBigUTxO Mismatch RelLTEQ ExUnits
m
Conway.CollateralContainsNonADA Value era
v -> Value era -> DijkstraUtxoPredFailure era
forall era. Value era -> DijkstraUtxoPredFailure era
CollateralContainsNonADA Value era
v
Conway.WrongNetworkInTxBody Mismatch RelEQ Network
m -> Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
forall era. Mismatch RelEQ Network -> DijkstraUtxoPredFailure era
WrongNetworkInTxBody Mismatch RelEQ Network
m
Conway.OutsideForecast SlotNo
sno -> SlotNo -> DijkstraUtxoPredFailure era
forall era. SlotNo -> DijkstraUtxoPredFailure era
OutsideForecast SlotNo
sno
Conway.TooManyCollateralInputs Mismatch RelLTEQ Word16
m -> Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
forall era. Mismatch RelLTEQ Word16 -> DijkstraUtxoPredFailure era
TooManyCollateralInputs Mismatch RelLTEQ Word16
m
ConwayUtxoPredFailure era
Conway.NoCollateralInputs -> DijkstraUtxoPredFailure era
forall era. DijkstraUtxoPredFailure era
NoCollateralInputs
Conway.IncorrectTotalCollateralField DeltaCoin
dc Coin
c -> DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
forall era. DeltaCoin -> Coin -> DijkstraUtxoPredFailure era
IncorrectTotalCollateralField DeltaCoin
dc Coin
c
Conway.BabbageOutputTooSmallUTxO NonEmpty (TxOut era, Coin)
x -> NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
forall era.
NonEmpty (TxOut era, Coin) -> DijkstraUtxoPredFailure era
BabbageOutputTooSmallUTxO NonEmpty (TxOut era, Coin)
x
Conway.BabbageNonDisjointRefInputs NonEmpty TxIn
txin -> NonEmpty TxIn -> DijkstraUtxoPredFailure era
forall era. NonEmpty TxIn -> DijkstraUtxoPredFailure era
BabbageNonDisjointRefInputs NonEmpty TxIn
txin