{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Test.Cardano.Ledger.Alonzo.Examples (
ledgerExamples,
mkAlonzoBasedLedgerExamples,
exampleAlonzoBasedTx,
exampleAlonzoBasedTopTx,
addAlonzoToConwayExampleReqSigners,
exampleDatum,
) where
import Cardano.Ledger.Alonzo (AlonzoEra, ApplyTxError (AlonzoApplyTxError))
import Cardano.Ledger.Alonzo.Core
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo)
import Cardano.Ledger.Alonzo.Scripts (
ExUnits (..),
Prices (..),
)
import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..))
import Cardano.Ledger.BaseTypes (StrictMaybe (..))
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Mary.Value (MaryValue)
import Cardano.Ledger.Plutus.Data (Data (..), hashData)
import Cardano.Ledger.Plutus.Language (Language (..), plutusBinary)
import Cardano.Ledger.Shelley.API (
Credential (..),
Network (..),
NewEpochState (..),
ProposedPPUpdates (..),
)
import Cardano.Ledger.Shelley.Rules (
ShelleyDelegPredFailure (DelegateeNotRegisteredDELEG),
ShelleyDelegsPredFailure (DelplFailure),
ShelleyDelplPredFailure (DelegFailure),
ShelleyLedgerPredFailure (DelegsFailure),
)
import Data.Default (def)
import qualified Data.List.NonEmpty as NE
import qualified Data.Map.Strict as Map
import qualified Data.MapExtras as Map
import qualified Data.Sequence.Strict as StrictSeq
import qualified Data.Set as Set
import Data.Typeable (Typeable)
import Lens.Micro
import qualified PlutusLedgerApi.Common as P
import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysSucceeds)
import Test.Cardano.Ledger.Core.KeyPair (mkAddr)
import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash, unsafeBoundRational)
import Test.Cardano.Ledger.Mary.Examples (
exampleMaryBasedTx,
exampleMultiAssetValue,
)
import Test.Cardano.Ledger.Plutus (alwaysFailsPlutus, zeroTestingCostModelV1)
import Test.Cardano.Ledger.Shelley.Examples (
LedgerExamples (..),
addShelleyBasedTopTxExampleFee,
addShelleyToBabbageExampleProposedPUpdates,
addShelleyToBabbageTxCerts,
addShelleyToConwayTxCerts,
exampleNewEpochState,
exampleNonMyopicRewards,
examplePayKey,
examplePoolDistr,
exampleStakeKey,
exampleTxIns,
mkKeyHash,
mkScriptHash,
testShelleyGenesis,
)
ledgerExamples :: LedgerExamples AlonzoEra
ledgerExamples :: LedgerExamples AlonzoEra
ledgerExamples =
ApplyTxError AlonzoEra
-> NewEpochState AlonzoEra
-> Tx TopTx AlonzoEra
-> TranslationContext AlonzoEra
-> LedgerExamples AlonzoEra
forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx TopTx era
-> TranslationContext era
-> LedgerExamples era
mkAlonzoBasedLedgerExamples
( NonEmpty (ShelleyLedgerPredFailure AlonzoEra)
-> ApplyTxError AlonzoEra
AlonzoApplyTxError (NonEmpty (ShelleyLedgerPredFailure AlonzoEra)
-> ApplyTxError AlonzoEra)
-> NonEmpty (ShelleyLedgerPredFailure AlonzoEra)
-> ApplyTxError AlonzoEra
forall a b. (a -> b) -> a -> b
$
ShelleyLedgerPredFailure AlonzoEra
-> NonEmpty (ShelleyLedgerPredFailure AlonzoEra)
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ShelleyLedgerPredFailure AlonzoEra
-> NonEmpty (ShelleyLedgerPredFailure AlonzoEra))
-> ShelleyLedgerPredFailure AlonzoEra
-> NonEmpty (ShelleyLedgerPredFailure AlonzoEra)
forall a b. (a -> b) -> a -> b
$
PredicateFailure (EraRule "DELEGS" AlonzoEra)
-> ShelleyLedgerPredFailure AlonzoEra
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
DelegsFailure (PredicateFailure (EraRule "DELEGS" AlonzoEra)
-> ShelleyLedgerPredFailure AlonzoEra)
-> PredicateFailure (EraRule "DELEGS" AlonzoEra)
-> ShelleyLedgerPredFailure AlonzoEra
forall a b. (a -> b) -> a -> b
$
PredicateFailure (EraRule "DELPL" AlonzoEra)
-> ShelleyDelegsPredFailure AlonzoEra
forall era.
PredicateFailure (EraRule "DELPL" era)
-> ShelleyDelegsPredFailure era
DelplFailure (PredicateFailure (EraRule "DELPL" AlonzoEra)
-> ShelleyDelegsPredFailure AlonzoEra)
-> PredicateFailure (EraRule "DELPL" AlonzoEra)
-> ShelleyDelegsPredFailure AlonzoEra
forall a b. (a -> b) -> a -> b
$
PredicateFailure (EraRule "DELEG" AlonzoEra)
-> ShelleyDelplPredFailure AlonzoEra
forall era.
PredicateFailure (EraRule "DELEG" era)
-> ShelleyDelplPredFailure era
DelegFailure (PredicateFailure (EraRule "DELEG" AlonzoEra)
-> ShelleyDelplPredFailure AlonzoEra)
-> PredicateFailure (EraRule "DELEG" AlonzoEra)
-> ShelleyDelplPredFailure AlonzoEra
forall a b. (a -> b) -> a -> b
$
forall era. KeyHash StakePool -> ShelleyDelegPredFailure era
DelegateeNotRegisteredDELEG @AlonzoEra (Int -> KeyHash StakePool
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
)
NewEpochState AlonzoEra
exampleAlonzoNewEpochState
Tx TopTx AlonzoEra
exampleAlonzoTx
TranslationContext AlonzoEra
AlonzoGenesis
exampleAlonzoGenesis
where
exampleAlonzoTx :: Tx TopTx AlonzoEra
exampleAlonzoTx :: Tx TopTx AlonzoEra
exampleAlonzoTx =
Tx TopTx AlonzoEra
forall era.
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue) =>
Tx TopTx era
exampleAlonzoBasedTopTx
Tx TopTx AlonzoEra
-> (Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra) -> Tx TopTx AlonzoEra
forall a b. a -> (a -> b) -> b
& Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra
forall era. EraTx era => Tx TopTx era -> Tx TopTx era
addShelleyBasedTopTxExampleFee
Tx TopTx AlonzoEra
-> (Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra) -> Tx TopTx AlonzoEra
forall a b. a -> (a -> b) -> b
& Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra
forall era.
(EraTx era, ShelleyEraTxBody era) =>
Tx TopTx era -> Tx TopTx era
addShelleyToBabbageExampleProposedPUpdates
Tx TopTx AlonzoEra
-> (Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra) -> Tx TopTx AlonzoEra
forall a b. a -> (a -> b) -> b
& Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra
forall era (l :: TxLevel).
(EraTx era, ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
Tx l era -> Tx l era
addShelleyToBabbageTxCerts
Tx TopTx AlonzoEra
-> (Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra) -> Tx TopTx AlonzoEra
forall a b. a -> (a -> b) -> b
& Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra
forall era (l :: TxLevel).
(EraTx era, ShelleyEraTxCert era) =>
Tx l era -> Tx l era
addShelleyToConwayTxCerts
Tx TopTx AlonzoEra
-> (Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra) -> Tx TopTx AlonzoEra
forall a b. a -> (a -> b) -> b
& Tx TopTx AlonzoEra -> Tx TopTx AlonzoEra
forall era (l :: TxLevel).
(AlonzoEraTxBody era, AtMostEra "Conway" era, EraTx era) =>
Tx l era -> Tx l era
addAlonzoToConwayExampleReqSigners
exampleAlonzoGenesis :: AlonzoGenesis
exampleAlonzoGenesis =
AlonzoGenesis
{ agCoinsPerUTxOWord :: CoinPerWord
agCoinsPerUTxOWord = Coin -> CoinPerWord
CoinPerWord (Coin -> CoinPerWord) -> Coin -> CoinPerWord
forall a b. (a -> b) -> a -> b
$ Integer -> Coin
Coin Integer
1
, agPlutusV1CostModel :: CostModel
agPlutusV1CostModel = CostModel
HasCallStack => CostModel
zeroTestingCostModelV1
, agPrices :: Prices
agPrices = NonNegativeInterval -> NonNegativeInterval -> Prices
Prices (Rational -> NonNegativeInterval
forall r.
(HasCallStack, Typeable r, BoundedRational r) =>
Rational -> r
unsafeBoundRational Rational
90) (Rational -> NonNegativeInterval
forall r.
(HasCallStack, Typeable r, BoundedRational r) =>
Rational -> r
unsafeBoundRational Rational
91)
, agMaxTxExUnits :: ExUnits
agMaxTxExUnits = Natural -> Natural -> ExUnits
ExUnits Natural
123 Natural
123
, agMaxBlockExUnits :: ExUnits
agMaxBlockExUnits = Natural -> Natural -> ExUnits
ExUnits Natural
223 Natural
223
, agMaxValSize :: Word32
agMaxValSize = Word32
1234
, agCollateralPercentage :: Word16
agCollateralPercentage = Word16
20
, agMaxCollateralInputs :: Word16
agMaxCollateralInputs = Word16
30
, agExtraConfig :: Maybe AlonzoExtraConfig
agExtraConfig = Maybe AlonzoExtraConfig
forall a. Maybe a
Nothing
}
mkAlonzoBasedLedgerExamples ::
forall era.
AlonzoEraPParams era =>
ApplyTxError era ->
NewEpochState era ->
Tx TopTx era ->
TranslationContext era ->
LedgerExamples era
mkAlonzoBasedLedgerExamples :: forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx TopTx era
-> TranslationContext era
-> LedgerExamples era
mkAlonzoBasedLedgerExamples
ApplyTxError era
applyTxError
NewEpochState era
newEpochState
Tx TopTx era
tx
TranslationContext era
translationContext =
LedgerExamples
{ leTx :: Tx TopTx era
leTx = Tx TopTx era
tx
, leApplyTxError :: ApplyTxError era
leApplyTxError = ApplyTxError era
applyTxError
, lePParams :: PParams era
lePParams = PParams era
forall a. Default a => a
def
, leProposedPPUpdates :: ProposedPPUpdates era
leProposedPPUpdates =
Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era
forall era.
Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era
ProposedPPUpdates (Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era)
-> Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era
forall a b. (a -> b) -> a -> b
$
KeyHash GenesisRole
-> PParamsUpdate era
-> Map (KeyHash GenesisRole) (PParamsUpdate era)
forall k a. k -> a -> Map k a
Map.singleton
(Int -> KeyHash GenesisRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)
(PParamsUpdate era
forall era. EraPParams era => PParamsUpdate era
emptyPParamsUpdate PParamsUpdate era
-> (PParamsUpdate era -> PParamsUpdate era) -> PParamsUpdate era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate era -> Identity (PParamsUpdate era)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate era) (StrictMaybe Word16)
ppuCollateralPercentageL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate era -> Identity (PParamsUpdate era))
-> StrictMaybe Word16 -> PParamsUpdate era -> PParamsUpdate era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word16 -> StrictMaybe Word16
forall a. a -> StrictMaybe a
SJust Word16
150)
, leNewEpochState :: NewEpochState era
leNewEpochState = NewEpochState era
newEpochState
, lePoolDistr :: PoolDistr
lePoolDistr = PoolDistr
examplePoolDistr
, leRewardsCredentials :: Set (Either Coin (Credential Staking))
leRewardsCredentials =
[Either Coin (Credential Staking)]
-> Set (Either Coin (Credential Staking))
forall a. Ord a => [a] -> Set a
Set.fromList
[ Coin -> Either Coin (Credential Staking)
forall a b. a -> Either a b
Left (Integer -> Coin
Coin Integer
100)
, Credential Staking -> Either Coin (Credential Staking)
forall a b. b -> Either a b
Right (ScriptHash -> Credential Staking
forall (kr :: KeyRole). ScriptHash -> Credential kr
ScriptHashObj (Int -> ScriptHash
mkScriptHash Int
1))
, Credential Staking -> Either Coin (Credential Staking)
forall a b. b -> Either a b
Right (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
2))
]
, leNonMyopicRewards :: Map
(Either Coin (Credential Staking)) (Map (KeyHash StakePool) Coin)
leNonMyopicRewards = Map
(Either Coin (Credential Staking)) (Map (KeyHash StakePool) Coin)
exampleNonMyopicRewards
, leTranslationContext :: TranslationContext era
leTranslationContext = TranslationContext era
translationContext
, leShelleyGenesis :: ShelleyGenesis
leShelleyGenesis = ShelleyGenesis
testShelleyGenesis
}
exampleAlonzoNewEpochState :: NewEpochState AlonzoEra
exampleAlonzoNewEpochState :: NewEpochState AlonzoEra
exampleAlonzoNewEpochState =
Value AlonzoEra
-> PParams AlonzoEra
-> PParams AlonzoEra
-> NewEpochState AlonzoEra
forall era.
(EraTxOut era, EraGov era, EraStake era, EraCertState era,
Default (StashedAVVMAddresses era)) =>
Value era -> PParams era -> PParams era -> NewEpochState era
exampleNewEpochState
(Int -> MaryValue
exampleMultiAssetValue Int
1)
PParams AlonzoEra
forall era. EraPParams era => PParams era
emptyPParams
(PParams AlonzoEra
forall era. EraPParams era => PParams era
emptyPParams PParams AlonzoEra
-> (PParams AlonzoEra -> PParams AlonzoEra) -> PParams AlonzoEra
forall a b. a -> (a -> b) -> b
& (CoinPerWord -> Identity CoinPerWord)
-> PParams AlonzoEra -> Identity (PParams AlonzoEra)
forall era.
(AlonzoEraPParams era, ExactEra AlonzoEra era) =>
Lens' (PParams era) CoinPerWord
Lens' (PParams AlonzoEra) CoinPerWord
ppCoinsPerUTxOWordL ((CoinPerWord -> Identity CoinPerWord)
-> PParams AlonzoEra -> Identity (PParams AlonzoEra))
-> CoinPerWord -> PParams AlonzoEra -> PParams AlonzoEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> CoinPerWord
CoinPerWord (Integer -> Coin
Coin Integer
1))
exampleAlonzoBasedTopTx ::
forall era.
( AlonzoEraTx era
, AlonzoEraTxAuxData era
, EraPlutusTxInfo 'PlutusV1 era
, Value era ~ MaryValue
) =>
Tx TopTx era
exampleAlonzoBasedTopTx :: forall era.
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue) =>
Tx TopTx era
exampleAlonzoBasedTopTx =
Tx TopTx era
forall era (l :: TxLevel).
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue,
Typeable l) =>
Tx l era
exampleAlonzoBasedTx
Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& Tx TopTx era -> Tx TopTx era
forall era. AlonzoEraTx era => Tx TopTx era -> Tx TopTx era
addAlonzoBasedTopTxFeatureExamples
exampleAlonzoBasedTx ::
forall era l.
( AlonzoEraTx era
, AlonzoEraTxAuxData era
, EraPlutusTxInfo 'PlutusV1 era
, Value era ~ MaryValue
, Typeable l
) =>
Tx l era
exampleAlonzoBasedTx :: forall era (l :: TxLevel).
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue,
Typeable l) =>
Tx l era
exampleAlonzoBasedTx =
Tx l era
forall era (l :: TxLevel).
(EraTx era, MaryEraTxBody era, Value era ~ MaryValue,
AllegraEraTxAuxData era, AllegraEraScript era, Typeable l) =>
Tx l era
exampleMaryBasedTx
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& Tx l era -> Tx l era
forall era (l :: TxLevel).
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue) =>
Tx l era -> Tx l era
addAlonzoBasedTxFeatureExamples
addAlonzoBasedTopTxFeatureExamples ::
forall era.
AlonzoEraTx era =>
Tx TopTx era ->
Tx TopTx era
addAlonzoBasedTopTxFeatureExamples :: forall era. AlonzoEraTx era => Tx TopTx era -> Tx TopTx era
addAlonzoBasedTopTxFeatureExamples Tx TopTx era
tx =
Tx TopTx era
tx
Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& (IsValid -> Identity IsValid)
-> Tx TopTx era -> Identity (Tx TopTx era)
forall era. AlonzoEraTx era => Lens' (Tx TopTx era) IsValid
Lens' (Tx TopTx era) IsValid
isValidTxL ((IsValid -> Identity IsValid)
-> Tx TopTx era -> Identity (Tx TopTx era))
-> IsValid -> Tx TopTx era -> Tx TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Bool -> IsValid
IsValid Bool
True
Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& (TxBody TopTx era -> Identity (TxBody TopTx era))
-> Tx TopTx era -> Identity (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 -> Identity (TxBody TopTx era))
-> Tx TopTx era -> Identity (Tx TopTx era))
-> ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx era -> Identity (TxBody TopTx era))
-> (Set TxIn -> Identity (Set TxIn))
-> Tx TopTx era
-> Identity (Tx TopTx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody TopTx era) (Set TxIn)
Lens' (TxBody TopTx era) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> Tx TopTx era -> Identity (Tx TopTx era))
-> Set TxIn -> Tx TopTx era -> Tx TopTx era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Set TxIn
exampleTxIns
addAlonzoBasedTxFeatureExamples ::
forall era l.
( AlonzoEraTx era
, AlonzoEraTxAuxData era
, EraPlutusTxInfo 'PlutusV1 era
, Value era ~ MaryValue
) =>
Tx l era ->
Tx l era
addAlonzoBasedTxFeatureExamples :: forall era (l :: TxLevel).
(AlonzoEraTx era, AlonzoEraTxAuxData era,
EraPlutusTxInfo 'PlutusV1 era, Value era ~ MaryValue) =>
Tx l era -> Tx l era
addAlonzoBasedTxFeatureExamples Tx l era
tx =
Tx l era
tx
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxWits era -> Identity (TxWits era))
-> Tx l era -> Identity (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 -> Identity (TxWits era))
-> Tx l era -> Identity (Tx l era))
-> TxWits era -> Tx l era -> Tx l era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ ( TxWits era
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits era -> (TxWits era -> TxWits era) -> TxWits era
forall a b. a -> (a -> b) -> b
& (Map ScriptHash (Script era)
-> Identity (Map ScriptHash (Script era)))
-> TxWits era -> Identity (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Map ScriptHash (Script era))
Lens' (TxWits era) (Map ScriptHash (Script era))
scriptTxWitsL ((Map ScriptHash (Script era)
-> Identity (Map ScriptHash (Script era)))
-> TxWits era -> Identity (TxWits era))
-> Map ScriptHash (Script era) -> TxWits era -> TxWits era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ (Script era -> ScriptHash)
-> [Script era] -> Map ScriptHash (Script era)
forall (f :: * -> *) k v.
(Foldable f, Ord k) =>
(v -> k) -> f v -> Map k v
Map.fromElems Script era -> ScriptHash
forall era. EraScript era => Script era -> ScriptHash
hashScript [forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV1 Natural
3]
TxWits era -> (TxWits era -> TxWits era) -> TxWits era
forall a b. a -> (a -> b) -> b
& (TxDats era -> Identity (TxDats era))
-> TxWits era -> Identity (TxWits era)
forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era)
Lens' (TxWits era) (TxDats era)
datsTxWitsL ((TxDats era -> Identity (TxDats era))
-> TxWits era -> Identity (TxWits era))
-> TxDats era -> TxWits era -> TxWits era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Map DataHash (Data era) -> TxDats era
forall era. Era era => Map DataHash (Data era) -> TxDats era
TxDats ((Data era -> DataHash) -> [Data era] -> Map DataHash (Data era)
forall (f :: * -> *) k v.
(Foldable f, Ord k) =>
(v -> k) -> f v -> Map k v
Map.fromElems Data era -> DataHash
forall era. Data era -> DataHash
hashData [Data era
forall era. Era era => Data era
exampleDatum])
TxWits era -> (TxWits era -> TxWits era) -> TxWits era
forall a b. a -> (a -> b) -> b
& (Redeemers era -> Identity (Redeemers era))
-> TxWits era -> Identity (TxWits era)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits era) (Redeemers era)
rdmrsTxWitsL ((Redeemers era -> Identity (Redeemers era))
-> TxWits era -> Identity (TxWits era))
-> Redeemers era -> TxWits era -> TxWits era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Redeemers era
redeemers
)
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxAuxData era -> TxAuxData era) -> Tx l era -> Tx l era
forall era (l :: TxLevel).
EraTx era =>
(TxAuxData era -> TxAuxData era) -> Tx l era -> Tx l era
modifyTxAuxData
( (Map Language (NonEmpty PlutusBinary)
-> Identity (Map Language (NonEmpty PlutusBinary)))
-> TxAuxData era -> Identity (TxAuxData era)
forall era.
AlonzoEraTxAuxData era =>
Lens' (TxAuxData era) (Map Language (NonEmpty PlutusBinary))
Lens' (TxAuxData era) (Map Language (NonEmpty PlutusBinary))
plutusScriptsTxAuxDataL
((Map Language (NonEmpty PlutusBinary)
-> Identity (Map Language (NonEmpty PlutusBinary)))
-> TxAuxData era -> Identity (TxAuxData era))
-> (Map Language (NonEmpty PlutusBinary)
-> Map Language (NonEmpty PlutusBinary))
-> TxAuxData era
-> TxAuxData era
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (NonEmpty PlutusBinary
-> NonEmpty PlutusBinary -> NonEmpty PlutusBinary)
-> Language
-> NonEmpty PlutusBinary
-> Map Language (NonEmpty PlutusBinary)
-> Map Language (NonEmpty PlutusBinary)
forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
Map.insertWith
NonEmpty PlutusBinary
-> NonEmpty PlutusBinary -> NonEmpty PlutusBinary
forall a. Semigroup a => a -> a -> a
(<>)
Language
PlutusV1
(PlutusBinary -> NonEmpty PlutusBinary
forall a. a -> NonEmpty a
NE.singleton (Plutus 'PlutusV1 -> PlutusBinary
forall (l :: Language). Plutus l -> PlutusBinary
plutusBinary (forall (l :: Language). Natural -> Plutus l
alwaysFailsPlutus @'PlutusV1 Natural
2)))
)
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxBody l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l 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 l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l era))
-> ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> TxBody l era -> Identity (TxBody l era))
-> (StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> Tx l era
-> Identity (Tx l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> TxBody l era -> Identity (TxBody l era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel). Lens' (TxBody l era) (StrictSeq (TxOut era))
outputsTxBodyL
((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> Tx l era -> Identity (Tx l era))
-> StrictSeq (TxOut era) -> Tx l era -> Tx l era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ [TxOut era] -> StrictSeq (TxOut era)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
[ Addr -> Value era -> TxOut era
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut
(KeyPair Payment -> KeyPair Staking -> Addr
forall p s.
(MakeCredential p Payment, MakeStakeReference s) =>
p -> s -> Addr
mkAddr KeyPair Payment
examplePayKey KeyPair Staking
exampleStakeKey)
(Int -> MaryValue
exampleMultiAssetValue Int
3)
TxOut era -> (TxOut era -> TxOut era) -> TxOut era
forall a b. a -> (a -> b) -> b
& (StrictMaybe DataHash -> Identity (StrictMaybe DataHash))
-> TxOut era -> Identity (TxOut era)
forall era.
AlonzoEraTxOut era =>
Lens' (TxOut era) (StrictMaybe DataHash)
Lens' (TxOut era) (StrictMaybe DataHash)
dataHashTxOutL ((StrictMaybe DataHash -> Identity (StrictMaybe DataHash))
-> TxOut era -> Identity (TxOut era))
-> StrictMaybe DataHash -> TxOut era -> TxOut era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ DataHash -> StrictMaybe DataHash
forall a. a -> StrictMaybe a
SJust (Int -> DataHash
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)
]
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxBody l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l 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 l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l era))
-> ((StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody l era -> Identity (TxBody l era))
-> (StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> Tx l era
-> Identity (Tx l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody l era -> Identity (TxBody l era)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> Tx l era -> Identity (Tx l era))
-> StrictMaybe ScriptIntegrityHash -> Tx l era -> Tx l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash
forall a. a -> StrictMaybe a
SJust (Int -> ScriptIntegrityHash
forall a. Int -> SafeHash a
mkDummySafeHash Int
42)
Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxBody l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l 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 l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l era))
-> ((StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody l era -> Identity (TxBody l era))
-> (StrictMaybe Network -> Identity (StrictMaybe Network))
-> Tx l era
-> Identity (Tx l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody l era -> Identity (TxBody l era)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Network)
forall (l :: TxLevel). Lens' (TxBody l era) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Identity (StrictMaybe Network))
-> Tx l era -> Identity (Tx l era))
-> StrictMaybe Network -> Tx l era -> Tx l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Network -> StrictMaybe Network
forall a. a -> StrictMaybe a
SJust Network
Mainnet
where
redeemers :: Redeemers era
redeemers =
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
forall era.
AlonzoEraScript era =>
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
Redeemers (Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Redeemers era
forall a b. (a -> b) -> a -> b
$
[(PlutusPurpose AsIx era, (Data era, ExUnits))]
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (AsIx Word32 TxIn -> PlutusPurpose AsIx era
forall era (f :: * -> * -> *).
AlonzoEraScript era =>
f Word32 TxIn -> PlutusPurpose f era
SpendingPurpose (AsIx Word32 TxIn -> PlutusPurpose AsIx era)
-> AsIx Word32 TxIn -> PlutusPurpose AsIx era
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
0, (Data era
redeemerData, Natural -> Natural -> ExUnits
ExUnits Natural
5000 Natural
5000))
, (AsIx Word32 PolicyID -> PlutusPurpose AsIx era
forall era (f :: * -> * -> *).
AlonzoEraScript era =>
f Word32 PolicyID -> PlutusPurpose f era
MintingPurpose (AsIx Word32 PolicyID -> PlutusPurpose AsIx era)
-> AsIx Word32 PolicyID -> PlutusPurpose AsIx era
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 PolicyID
forall ix it. ix -> AsIx ix it
AsIx Word32
1, (Data era
redeemerData, Natural -> Natural -> ExUnits
ExUnits Natural
5000 Natural
5000))
, (AsIx Word32 (TxCert era) -> PlutusPurpose AsIx era
forall era (f :: * -> * -> *).
AlonzoEraScript era =>
f Word32 (TxCert era) -> PlutusPurpose f era
CertifyingPurpose (AsIx Word32 (TxCert era) -> PlutusPurpose AsIx era)
-> AsIx Word32 (TxCert era) -> PlutusPurpose AsIx era
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 (TxCert era)
forall ix it. ix -> AsIx ix it
AsIx Word32
2, (Data era
redeemerData, Natural -> Natural -> ExUnits
ExUnits Natural
5000 Natural
5000))
, (AsIx Word32 AccountAddress -> PlutusPurpose AsIx era
forall era (f :: * -> * -> *).
AlonzoEraScript era =>
f Word32 AccountAddress -> PlutusPurpose f era
RewardingPurpose (AsIx Word32 AccountAddress -> PlutusPurpose AsIx era)
-> AsIx Word32 AccountAddress -> PlutusPurpose AsIx era
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 AccountAddress
forall ix it. ix -> AsIx ix it
AsIx Word32
3, (Data era
redeemerData, Natural -> Natural -> ExUnits
ExUnits Natural
5000 Natural
5000))
]
redeemerData :: Data era
redeemerData = Data -> Data era
forall era. Era era => Data -> Data era
Data (Integer -> [Data] -> Data
P.Constr Integer
1 [[Data] -> Data
P.List [Integer -> Data
P.I Integer
1], [(Data, Data)] -> Data
P.Map [(Integer -> Data
P.I Integer
2, ByteString -> Data
P.B ByteString
"2")]])
addAlonzoToConwayExampleReqSigners ::
forall era l.
( AlonzoEraTxBody era
, AtMostEra "Conway" era
, EraTx era
) =>
Tx l era ->
Tx l era
addAlonzoToConwayExampleReqSigners :: forall era (l :: TxLevel).
(AlonzoEraTxBody era, AtMostEra "Conway" era, EraTx era) =>
Tx l era -> Tx l era
addAlonzoToConwayExampleReqSigners Tx l era
tx =
Tx l era
tx Tx l era -> (Tx l era -> Tx l era) -> Tx l era
forall a b. a -> (a -> b) -> b
& (TxBody l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l 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 l era -> Identity (TxBody l era))
-> Tx l era -> Identity (Tx l era))
-> ((Set (KeyHash Guard) -> Identity (Set (KeyHash Guard)))
-> TxBody l era -> Identity (TxBody l era))
-> (Set (KeyHash Guard) -> Identity (Set (KeyHash Guard)))
-> Tx l era
-> Identity (Tx l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (KeyHash Guard) -> Identity (Set (KeyHash Guard)))
-> TxBody l era -> Identity (TxBody l era)
forall era (l :: TxLevel).
(AlonzoEraTxBody era, AtMostEra "Conway" era) =>
Lens' (TxBody l era) (Set (KeyHash Guard))
forall (l :: TxLevel).
AtMostEra "Conway" era =>
Lens' (TxBody l era) (Set (KeyHash Guard))
Lens' (TxBody l era) (Set (KeyHash Guard))
reqSignerHashesTxBodyL ((Set (KeyHash Guard) -> Identity (Set (KeyHash Guard)))
-> Tx l era -> Identity (Tx l era))
-> Set (KeyHash Guard) -> Tx l era -> Tx l era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ KeyHash Guard -> Set (KeyHash Guard)
forall a. a -> Set a
Set.singleton (Int -> KeyHash Guard
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
212)
exampleDatum :: Era era => Data era
exampleDatum :: forall era. Era era => Data era
exampleDatum = Data -> Data era
forall era. Era era => Data -> Data era
Data (Integer -> [Data] -> Data
P.Constr Integer
0 [[Data] -> Data
P.List [Integer -> Data
P.I Integer
0], [(Data, Data)] -> Data
P.Map [(Integer -> Data
P.I Integer
1, ByteString -> Data
P.B ByteString
"1")]])