{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Test.Cardano.Ledger.Alonzo.Examples (
ledgerExamples,
mkLedgerExamples,
exampleTx,
exampleDatum,
exampleAlonzoGenesis,
) where
import Cardano.Ledger.Alonzo (AlonzoEra)
import Cardano.Ledger.Alonzo.Core
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo)
import Cardano.Ledger.Alonzo.Scripts (
AlonzoPlutusPurpose (..),
AlonzoScript (..),
ExUnits (..),
Prices (..),
)
import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData, mkAlonzoTxAuxData)
import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..), TxBody (..))
import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..))
import Cardano.Ledger.BaseTypes (StrictMaybe (..))
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Keys (asWitness)
import Cardano.Ledger.Mary.Value (MaryValue (..))
import Cardano.Ledger.Plutus.Data (Data (..), hashData)
import Cardano.Ledger.Plutus.Language (Language (..))
import Cardano.Ledger.Shelley.API (
ApplyTxError (..),
Credential (..),
Network (..),
NewEpochState (..),
ProposedPPUpdates (..),
RewardAccount (..),
TxId (..),
Update (..),
)
import Cardano.Ledger.Shelley.Rules (ShelleyDelegsPredFailure (..), ShelleyLedgerPredFailure (..))
import Cardano.Ledger.Shelley.Scripts
import Cardano.Ledger.TxIn (mkTxInPartial)
import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..))
import Data.Default (def)
import qualified Data.Map.Strict as Map
import qualified Data.Sequence.Strict as StrictSeq
import qualified Data.Set as Set
import Lens.Micro
import qualified PlutusLedgerApi.Common as P
import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds)
import Test.Cardano.Ledger.Core.KeyPair (mkAddr, mkWitnessesVKey)
import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash, unsafeBoundRational)
import Test.Cardano.Ledger.Mary.Examples (exampleMultiAssetValue)
import Test.Cardano.Ledger.Plutus (zeroTestingCostModelV1)
import Test.Cardano.Ledger.Shelley.Examples (
LedgerExamples (..),
exampleAuxDataMap,
exampleCerts,
exampleNewEpochState,
exampleNonMyopicRewards,
examplePayKey,
examplePoolDistr,
exampleStakeKey,
keyToCredential,
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
mkLedgerExamples
( NonEmpty (PredicateFailure (EraRule "LEDGER" AlonzoEra))
-> ApplyTxError AlonzoEra
forall era.
NonEmpty (PredicateFailure (EraRule "LEDGER" era))
-> ApplyTxError era
ApplyTxError (NonEmpty (PredicateFailure (EraRule "LEDGER" AlonzoEra))
-> ApplyTxError AlonzoEra)
-> NonEmpty (PredicateFailure (EraRule "LEDGER" AlonzoEra))
-> ApplyTxError AlonzoEra
forall a b. (a -> b) -> a -> b
$
PredicateFailure (EraRule "LEDGER" AlonzoEra)
-> NonEmpty (PredicateFailure (EraRule "LEDGER" AlonzoEra))
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PredicateFailure (EraRule "LEDGER" AlonzoEra)
-> NonEmpty (PredicateFailure (EraRule "LEDGER" AlonzoEra)))
-> PredicateFailure (EraRule "LEDGER" AlonzoEra)
-> NonEmpty (PredicateFailure (EraRule "LEDGER" 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
$
forall era. KeyHash StakePool -> ShelleyDelegsPredFailure era
DelegateeNotRegisteredDELEG @AlonzoEra (Int -> KeyHash StakePool
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
)
NewEpochState AlonzoEra
exampleAlonzoNewEpochState
Tx TopTx AlonzoEra
exampleTxAlonzo
TranslationContext AlonzoEra
AlonzoGenesis
exampleAlonzoGenesis
mkLedgerExamples ::
forall era.
AlonzoEraPParams era =>
ApplyTxError era ->
NewEpochState era ->
Tx TopTx era ->
TranslationContext era ->
LedgerExamples era
mkLedgerExamples :: forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx TopTx era
-> TranslationContext era
-> LedgerExamples era
mkLedgerExamples
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 Natural -> Identity (StrictMaybe Natural))
-> PParamsUpdate era -> Identity (PParamsUpdate era)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Natural)
Lens' (PParamsUpdate era) (StrictMaybe Natural)
ppuCollateralPercentageL ((StrictMaybe Natural -> Identity (StrictMaybe Natural))
-> PParamsUpdate era -> Identity (PParamsUpdate era))
-> StrictMaybe Natural -> PParamsUpdate era -> PParamsUpdate era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Natural -> StrictMaybe Natural
forall a. a -> StrictMaybe a
SJust Natural
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))
exampleTxAlonzo :: Tx TopTx AlonzoEra
exampleTxAlonzo :: Tx TopTx AlonzoEra
exampleTxAlonzo =
TxBody TopTx AlonzoEra
-> PlutusPurpose AsIx AlonzoEra
-> NativeScript AlonzoEra
-> Tx TopTx AlonzoEra
forall era.
(AlonzoEraTx era, EraPlutusTxInfo 'PlutusV1 era,
TxAuxData era ~ AlonzoTxAuxData era,
Script era ~ AlonzoScript era) =>
TxBody TopTx era
-> PlutusPurpose AsIx era -> NativeScript era -> Tx TopTx era
exampleTx
TxBody TopTx AlonzoEra
exampleTxBodyAlonzo
(AsIx Word32 TxIn -> AlonzoPlutusPurpose AsIx AlonzoEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> AlonzoPlutusPurpose f era
AlonzoSpending (AsIx Word32 TxIn -> AlonzoPlutusPurpose AsIx AlonzoEra)
-> AsIx Word32 TxIn -> AlonzoPlutusPurpose AsIx AlonzoEra
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
0)
(forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf @AlonzoEra StrictSeq (Timelock AlonzoEra)
StrictSeq (NativeScript AlonzoEra)
forall a. Monoid a => a
mempty)
exampleTx ::
forall era.
( AlonzoEraTx era
, EraPlutusTxInfo 'PlutusV1 era
, TxAuxData era ~ AlonzoTxAuxData era
, Script era ~ AlonzoScript era
) =>
TxBody TopTx era -> PlutusPurpose AsIx era -> NativeScript era -> Tx TopTx era
exampleTx :: forall era.
(AlonzoEraTx era, EraPlutusTxInfo 'PlutusV1 era,
TxAuxData era ~ AlonzoTxAuxData era,
Script era ~ AlonzoScript era) =>
TxBody TopTx era
-> PlutusPurpose AsIx era -> NativeScript era -> Tx TopTx era
exampleTx TxBody TopTx era
txBody PlutusPurpose AsIx era
scriptPurpose NativeScript era
nativeScript =
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
mkBasicTx @era TxBody TopTx era
txBody
Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& (TxWits era -> Identity (TxWits era))
-> Tx TopTx era -> Identity (Tx TopTx 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 TopTx era -> Identity (Tx TopTx era))
-> TxWits era -> Tx TopTx era -> Tx TopTx era
forall s t a b. ASetter s t a b -> b -> 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
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits era -> Identity (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits era) (Set (WitVKey Witness))
addrTxWitsL ((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits era -> Identity (TxWits era))
-> Set (WitVKey Witness) -> TxWits era -> TxWits era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SafeHash EraIndependentTxBody
-> [KeyPair Witness] -> Set (WitVKey Witness)
forall (kr :: KeyRole).
SafeHash EraIndependentTxBody
-> [KeyPair kr] -> Set (WitVKey Witness)
mkWitnessesVKey (TxBody TopTx era -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx era
txBody) [KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Payment
examplePayKey]
TxWits era -> (TxWits era -> TxWits era) -> TxWits era
forall a b. a -> (a -> b) -> b
& (Set BootstrapWitness -> Identity (Set BootstrapWitness))
-> TxWits era -> Identity (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set BootstrapWitness)
Lens' (TxWits era) (Set BootstrapWitness)
bootAddrTxWitsL ((Set BootstrapWitness -> Identity (Set BootstrapWitness))
-> TxWits era -> Identity (TxWits era))
-> Set BootstrapWitness -> TxWits era -> TxWits era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set BootstrapWitness
forall a. Monoid a => a
mempty
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 s t a b. ASetter s t a b -> b -> s -> t
.~ ScriptHash -> Script era -> Map ScriptHash (Script era)
forall k a. k -> a -> Map k a
Map.singleton
(forall era. EraScript era => Script era -> ScriptHash
hashScript @era (Script era -> ScriptHash) -> Script era -> ScriptHash
forall a b. (a -> b) -> a -> b
$ forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV1 Natural
3)
(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 s t a b. ASetter s t a b -> b -> s -> t
.~ Map DataHash (Data era) -> TxDats era
forall era. Era era => Map DataHash (Data era) -> TxDats era
TxDats (DataHash -> Data era -> Map DataHash (Data era)
forall k a. k -> a -> Map k a
Map.singleton (Data era -> DataHash
forall era. Data era -> DataHash
hashData (forall era. Era era => Data era
exampleDatum @era)) 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 s t a b. ASetter s t a b -> b -> s -> t
.~ Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
forall era.
AlonzoEraScript era =>
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
Redeemers (PlutusPurpose AsIx era
-> (Data era, ExUnits)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall k a. k -> a -> Map k a
Map.singleton PlutusPurpose AsIx era
scriptPurpose (Data era
forall era. Era era => Data era
exampleRedeemer, Natural -> Natural -> ExUnits
ExUnits Natural
5000 Natural
5000))
)
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
& (StrictMaybe (TxAuxData era)
-> Identity (StrictMaybe (TxAuxData era)))
-> Tx TopTx era -> Identity (Tx TopTx era)
(StrictMaybe (AlonzoTxAuxData era)
-> Identity (StrictMaybe (AlonzoTxAuxData era)))
-> Tx TopTx era -> Identity (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
forall (l :: TxLevel).
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
auxDataTxL
((StrictMaybe (AlonzoTxAuxData era)
-> Identity (StrictMaybe (AlonzoTxAuxData era)))
-> Tx TopTx era -> Identity (Tx TopTx era))
-> StrictMaybe (AlonzoTxAuxData era)
-> Tx TopTx era
-> Tx TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ AlonzoTxAuxData era -> StrictMaybe (AlonzoTxAuxData era)
forall a. a -> StrictMaybe a
SJust
( Map Word64 Metadatum -> [AlonzoScript era] -> AlonzoTxAuxData era
forall (f :: * -> *) era.
(Foldable f, AlonzoEraScript era) =>
Map Word64 Metadatum -> f (AlonzoScript era) -> AlonzoTxAuxData era
mkAlonzoTxAuxData
Map Word64 Metadatum
exampleAuxDataMap
[forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysFails @'PlutusV1 Natural
2, NativeScript era -> AlonzoScript era
forall era. NativeScript era -> AlonzoScript era
NativeScript NativeScript era
nativeScript]
)
exampleTxBodyAlonzo :: TxBody TopTx AlonzoEra
exampleTxBodyAlonzo :: TxBody TopTx AlonzoEra
exampleTxBodyAlonzo =
Set TxIn
-> Set TxIn
-> StrictSeq (TxOut AlonzoEra)
-> StrictSeq (TxCert AlonzoEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> StrictMaybe (Update AlonzoEra)
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> TxBody TopTx AlonzoEra
AlonzoTxBody
([TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial (SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)) Integer
0])
([TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial (SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
2)) Integer
1])
( [AlonzoTxOut AlonzoEra] -> StrictSeq (AlonzoTxOut AlonzoEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
[ Addr
-> Value AlonzoEra -> StrictMaybe DataHash -> AlonzoTxOut AlonzoEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr -> Value era -> StrictMaybe DataHash -> AlonzoTxOut era
AlonzoTxOut
(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
2)
(DataHash -> StrictMaybe DataHash
forall a. a -> StrictMaybe a
SJust (DataHash -> StrictMaybe DataHash)
-> DataHash -> StrictMaybe DataHash
forall a b. (a -> b) -> a -> b
$ Int -> DataHash
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)
]
)
StrictSeq (TxCert AlonzoEra)
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
StrictSeq (TxCert era)
exampleCerts
( Map RewardAccount Coin -> Withdrawals
Withdrawals (Map RewardAccount Coin -> Withdrawals)
-> Map RewardAccount Coin -> Withdrawals
forall a b. (a -> b) -> a -> b
$
RewardAccount -> Coin -> Map RewardAccount Coin
forall k a. k -> a -> Map k a
Map.singleton
(Network -> Credential Staking -> RewardAccount
RewardAccount Network
Testnet (KeyPair Staking -> Credential Staking
forall (r :: KeyRole). KeyPair r -> Credential r
keyToCredential KeyPair Staking
exampleStakeKey))
(Integer -> Coin
Coin Integer
100)
)
(Integer -> Coin
Coin Integer
999)
(StrictMaybe SlotNo -> StrictMaybe SlotNo -> ValidityInterval
ValidityInterval (SlotNo -> StrictMaybe SlotNo
forall a. a -> StrictMaybe a
SJust (Word64 -> SlotNo
SlotNo Word64
2)) (SlotNo -> StrictMaybe SlotNo
forall a. a -> StrictMaybe a
SJust (Word64 -> SlotNo
SlotNo Word64
4)))
( Update AlonzoEra -> StrictMaybe (Update AlonzoEra)
forall a. a -> StrictMaybe a
SJust (Update AlonzoEra -> StrictMaybe (Update AlonzoEra))
-> Update AlonzoEra -> StrictMaybe (Update AlonzoEra)
forall a b. (a -> b) -> a -> b
$
ProposedPPUpdates AlonzoEra -> EpochNo -> Update AlonzoEra
forall era. ProposedPPUpdates era -> EpochNo -> Update era
Update
( Map (KeyHash GenesisRole) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra
forall era.
Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era
ProposedPPUpdates (Map (KeyHash GenesisRole) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra)
-> Map (KeyHash GenesisRole) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra
forall a b. (a -> b) -> a -> b
$
KeyHash GenesisRole
-> PParamsUpdate AlonzoEra
-> Map (KeyHash GenesisRole) (PParamsUpdate AlonzoEra)
forall k a. k -> a -> Map k a
Map.singleton
(Int -> KeyHash GenesisRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
(PParamsUpdate AlonzoEra
forall era. EraPParams era => PParamsUpdate era
emptyPParamsUpdate PParamsUpdate AlonzoEra
-> (PParamsUpdate AlonzoEra -> PParamsUpdate AlonzoEra)
-> PParamsUpdate AlonzoEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate AlonzoEra -> Identity (PParamsUpdate AlonzoEra)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate AlonzoEra) (StrictMaybe Word16)
ppuMaxBHSizeL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate AlonzoEra -> Identity (PParamsUpdate AlonzoEra))
-> StrictMaybe Word16
-> PParamsUpdate AlonzoEra
-> PParamsUpdate AlonzoEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word16 -> StrictMaybe Word16
forall a. a -> StrictMaybe a
SJust Word16
4000)
)
(Word64 -> EpochNo
EpochNo Word64
0)
)
(KeyHash Guard -> Set (KeyHash Guard)
forall a. a -> Set a
Set.singleton (KeyHash Guard -> Set (KeyHash Guard))
-> KeyHash Guard -> Set (KeyHash Guard)
forall a b. (a -> b) -> a -> b
$ Int -> KeyHash Guard
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
212)
MultiAsset
exampleMultiAsset
(ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash
forall a. a -> StrictMaybe a
SJust (ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash)
-> ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash
forall a b. (a -> b) -> a -> b
$ Int -> ScriptIntegrityHash
forall a. Int -> SafeHash a
mkDummySafeHash Int
42)
(TxAuxDataHash -> StrictMaybe TxAuxDataHash
forall a. a -> StrictMaybe a
SJust (TxAuxDataHash -> StrictMaybe TxAuxDataHash)
-> (SafeHash EraIndependentTxAuxData -> TxAuxDataHash)
-> SafeHash EraIndependentTxAuxData
-> StrictMaybe TxAuxDataHash
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SafeHash EraIndependentTxAuxData -> TxAuxDataHash
TxAuxDataHash (SafeHash EraIndependentTxAuxData -> StrictMaybe TxAuxDataHash)
-> SafeHash EraIndependentTxAuxData -> StrictMaybe TxAuxDataHash
forall a b. (a -> b) -> a -> b
$ Int -> SafeHash EraIndependentTxAuxData
forall a. Int -> SafeHash a
mkDummySafeHash Int
42)
(Network -> StrictMaybe Network
forall a. a -> StrictMaybe a
SJust Network
Mainnet)
where
MaryValue Coin
_ MultiAsset
exampleMultiAsset = Int -> MaryValue
exampleMultiAssetValue Int
3
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
P.I Integer
191)
exampleRedeemer :: Era era => Data era
exampleRedeemer :: forall era. Era era => Data era
exampleRedeemer = Data -> Data era
forall era. Era era => Data -> Data era
Data (Integer -> Data
P.I Integer
919)
exampleAlonzoGenesis :: AlonzoGenesis
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 :: Natural
agMaxValSize = Natural
1234
, agCollateralPercentage :: Natural
agCollateralPercentage = Natural
20
, agMaxCollateralInputs :: Natural
agMaxCollateralInputs = Natural
30
, agExtraConfig :: Maybe AlonzoExtraConfig
agExtraConfig = Maybe AlonzoExtraConfig
forall a. Maybe a
Nothing
}