{-# 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.Allegra.Scripts (Timelock)
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.CostModels (mkCostModels)
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 AlonzoEra
-> TranslationContext AlonzoEra
-> LedgerExamples AlonzoEra
forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx 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 AlonzoEra
exampleTxAlonzo
TranslationContext AlonzoEra
AlonzoGenesis
exampleAlonzoGenesis
mkLedgerExamples ::
forall era.
AlonzoEraPParams era =>
ApplyTxError era ->
NewEpochState era ->
Tx era ->
TranslationContext era ->
LedgerExamples era
mkLedgerExamples :: forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx era
-> TranslationContext era
-> LedgerExamples era
mkLedgerExamples
ApplyTxError era
applyTxError
NewEpochState era
newEpochState
Tx era
tx
TranslationContext era
translationContext =
LedgerExamples
{ leTx :: Tx era
leTx = Tx 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 'Genesis) (PParamsUpdate era) -> ProposedPPUpdates era
forall era.
Map (KeyHash 'Genesis) (PParamsUpdate era) -> ProposedPPUpdates era
ProposedPPUpdates (Map (KeyHash 'Genesis) (PParamsUpdate era)
-> ProposedPPUpdates era)
-> Map (KeyHash 'Genesis) (PParamsUpdate era)
-> ProposedPPUpdates era
forall a b. (a -> b) -> a -> b
$
KeyHash 'Genesis
-> PParamsUpdate era -> Map (KeyHash 'Genesis) (PParamsUpdate era)
forall k a. k -> a -> Map k a
Map.singleton
(Int -> KeyHash 'Genesis
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 AlonzoEra
exampleTxAlonzo :: Tx AlonzoEra
exampleTxAlonzo = TxBody AlonzoEra -> PlutusPurpose AsIx AlonzoEra -> Tx AlonzoEra
forall era.
(AlonzoEraTx era, EraPlutusTxInfo 'PlutusV1 era,
TxAuxData era ~ AlonzoTxAuxData era, Script era ~ AlonzoScript era,
NativeScript era ~ Timelock era) =>
TxBody era -> PlutusPurpose AsIx era -> Tx era
exampleTx TxBody 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)
exampleTx ::
forall era.
( AlonzoEraTx era
, EraPlutusTxInfo 'PlutusV1 era
, TxAuxData era ~ AlonzoTxAuxData era
, Script era ~ AlonzoScript era
, NativeScript era ~ Timelock era
) =>
TxBody era -> PlutusPurpose AsIx era -> Tx era
exampleTx :: forall era.
(AlonzoEraTx era, EraPlutusTxInfo 'PlutusV1 era,
TxAuxData era ~ AlonzoTxAuxData era, Script era ~ AlonzoScript era,
NativeScript era ~ Timelock era) =>
TxBody era -> PlutusPurpose AsIx era -> Tx era
exampleTx TxBody era
txBody PlutusPurpose AsIx era
scriptPurpose =
forall era. EraTx era => TxBody era -> Tx era
mkBasicTx @era TxBody era
txBody
Tx era -> (Tx era -> Tx era) -> Tx era
forall a b. a -> (a -> b) -> b
& (TxWits era -> Identity (TxWits era))
-> Tx era -> Identity (Tx era)
forall era. EraTx era => Lens' (Tx era) (TxWits era)
Lens' (Tx era) (TxWits era)
witsTxL
((TxWits era -> Identity (TxWits era))
-> Tx era -> Identity (Tx era))
-> TxWits era -> Tx era -> Tx 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 era -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody 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 era -> (Tx era -> Tx era) -> Tx era
forall a b. a -> (a -> b) -> b
& (IsValid -> Identity IsValid) -> Tx era -> Identity (Tx era)
forall era. AlonzoEraTx era => Lens' (Tx era) IsValid
Lens' (Tx era) IsValid
isValidTxL ((IsValid -> Identity IsValid) -> Tx era -> Identity (Tx era))
-> IsValid -> Tx era -> Tx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Bool -> IsValid
IsValid Bool
True
Tx era -> (Tx era -> Tx era) -> Tx era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (TxAuxData era)
-> Identity (StrictMaybe (TxAuxData era)))
-> Tx era -> Identity (Tx era)
(StrictMaybe (AlonzoTxAuxData era)
-> Identity (StrictMaybe (AlonzoTxAuxData era)))
-> Tx era -> Identity (Tx era)
forall era.
EraTx era =>
Lens' (Tx era) (StrictMaybe (TxAuxData era))
Lens' (Tx era) (StrictMaybe (TxAuxData era))
auxDataTxL
((StrictMaybe (AlonzoTxAuxData era)
-> Identity (StrictMaybe (AlonzoTxAuxData era)))
-> Tx era -> Identity (Tx era))
-> StrictMaybe (AlonzoTxAuxData era) -> Tx era -> Tx 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, Timelock era -> AlonzoScript era
forall era. Timelock era -> AlonzoScript era
TimelockScript (Timelock era -> AlonzoScript era)
-> Timelock era -> AlonzoScript era
forall a b. (a -> b) -> a -> b
$ forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf @era StrictSeq (Timelock era)
StrictSeq (NativeScript era)
forall a. Monoid a => a
mempty]
)
exampleTxBodyAlonzo :: TxBody AlonzoEra
exampleTxBodyAlonzo :: TxBody AlonzoEra
exampleTxBodyAlonzo =
Set TxIn
-> Set TxIn
-> StrictSeq (TxOut AlonzoEra)
-> StrictSeq (TxCert AlonzoEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> StrictMaybe (Update AlonzoEra)
-> Set (KeyHash 'Witness)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> TxBody 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, ProtVerAtMost era 8) =>
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 'Genesis) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra
forall era.
Map (KeyHash 'Genesis) (PParamsUpdate era) -> ProposedPPUpdates era
ProposedPPUpdates (Map (KeyHash 'Genesis) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra)
-> Map (KeyHash 'Genesis) (PParamsUpdate AlonzoEra)
-> ProposedPPUpdates AlonzoEra
forall a b. (a -> b) -> a -> b
$
KeyHash 'Genesis
-> PParamsUpdate AlonzoEra
-> Map (KeyHash 'Genesis) (PParamsUpdate AlonzoEra)
forall k a. k -> a -> Map k a
Map.singleton
(Int -> KeyHash 'Genesis
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 'Witness -> Set (KeyHash 'Witness)
forall a. a -> Set a
Set.singleton (KeyHash 'Witness -> Set (KeyHash 'Witness))
-> KeyHash 'Witness -> Set (KeyHash 'Witness)
forall a b. (a -> b) -> a -> b
$ Int -> KeyHash 'Witness
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
, agCostModels :: CostModels
agCostModels = Map Language CostModel -> CostModels
mkCostModels ([(Language, CostModel)] -> Map Language CostModel
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList [(Language
PlutusV1, 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
}