{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (
makePulser,
makePulser',
makeCompletedPulser,
poolLifetimeExample,
mkStake,
) where
import Cardano.Ledger.BaseTypes (
BlocksMade (..),
Globals (..),
Network (..),
Nonce,
mkCertIxPartial,
unNonZero,
unsafeNonZero,
(⭒),
)
import Cardano.Ledger.Block (Block (blockHeader))
import Cardano.Ledger.Coin (
Coin (..),
CompactForm (CompactCoin),
DeltaCoin (..),
addDeltaCoin,
knownNonZeroCoin,
toDeltaCoin,
)
import Cardano.Ledger.Compactible
import Cardano.Ledger.Credential (Credential, Ptr (..), SlotNo32 (..))
import Cardano.Ledger.Keys (asWitness, coerceKeyRole)
import Cardano.Ledger.Rewards (Reward (..), RewardType (..))
import Cardano.Ledger.Shelley (ShelleyEra)
import Cardano.Ledger.Shelley.Core
import Cardano.Ledger.Shelley.LedgerState (
NewEpochState (..),
PulsingRewUpdate (..),
RewardUpdate (..),
completeRupd,
decayFactor,
emptyRewardUpdate,
startStep,
)
import Cardano.Ledger.Shelley.PoolRank (
Likelihood (..),
NonMyopic (..),
applyDecay,
leaderProbability,
likelihood,
)
import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert (..))
import Cardano.Ledger.Slot (
BlockNo (..),
EpochNo (..),
SlotNo (..),
)
import Cardano.Ledger.State
import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial)
import Cardano.Ledger.Val ((<+>), (<->), (<×>))
import qualified Cardano.Ledger.Val as Val
import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash, hashHeaderToNonce)
import Cardano.Protocol.TPraos.OCert (KESPeriod (..))
import Data.Default (def)
import Data.Group (invert)
import qualified Data.Map.Strict as Map
import Data.Ratio ((%))
import qualified Data.Sequence.Strict as StrictSeq
import qualified Data.Set as Set
import qualified Data.VMap as VMap
import GHC.Exts (fromList)
import GHC.Stack (HasCallStack)
import Lens.Micro ((&), (.~))
import Test.Cardano.Ledger.Core.Arbitrary (mkSnapShotFromStakePoolParams)
import Test.Cardano.Ledger.Core.KeyPair (mkWitnessesVKey)
import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (MockCrypto)
import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast
import Test.Cardano.Ledger.Shelley.Examples.Chain (CHAINExample (..), testCHAINExample)
import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C
import Test.Cardano.Ledger.Shelley.Examples.Federation (
coreNodeIssuerKeys,
coreNodeKeysBySchedule,
)
import Test.Cardano.Ledger.Shelley.Examples.Init (
initSt,
lastByronHeaderHash,
nonce0,
ppEx,
)
import Test.Cardano.Ledger.Shelley.Generator.Core (
AllIssuerKeys (..),
NatNonce (..),
genesisCoins,
mkBlockFakeVRF,
mkOCert,
)
import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId)
import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen ()
import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..))
import Test.Cardano.Ledger.Shelley.Utils (
epochSize,
getBlockNonce,
maxLLSupply,
runShelleyBase,
testGlobals,
unsafeBoundRational,
)
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit (testCase)
aliceInitCoin :: Coin
aliceInitCoin :: Coin
aliceInitCoin = Integer -> Coin
Coin Integer
10_000_000_000_000_000
bobInitCoin :: Coin
bobInitCoin :: Coin
bobInitCoin = Integer -> Coin
Coin Integer
1_000_000_000_000_000
toCompactCoinError :: Coin -> CompactForm Coin
toCompactCoinError :: Coin -> CompactForm Coin
toCompactCoinError Coin
c =
case Coin -> Maybe (CompactForm Coin)
forall a. Compactible a => a -> Maybe (CompactForm a)
toCompact Coin
c of
Maybe (CompactForm Coin)
Nothing -> [Char] -> CompactForm Coin
forall a. HasCallStack => [Char] -> a
error ([Char] -> CompactForm Coin) -> [Char] -> CompactForm Coin
forall a b. (a -> b) -> a -> b
$ [Char]
"Invalid coin: " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> Coin -> [Char]
forall a. Show a => a -> [Char]
show Coin
c
Just CompactForm Coin
compactCoin -> CompactForm Coin
compactCoin
mkStake :: [(Credential Staking, Coin)] -> Stake
mkStake :: [(Credential Staking, Coin)] -> Stake
mkStake = VMap VB VP (Credential Staking) (CompactForm Coin) -> Stake
Stake (VMap VB VP (Credential Staking) (CompactForm Coin) -> Stake)
-> ([(Credential Staking, Coin)]
-> VMap VB VP (Credential Staking) (CompactForm Coin))
-> [(Credential Staking, Coin)]
-> Stake
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Credential Staking, CompactForm Coin)]
-> VMap VB VP (Credential Staking) (CompactForm Coin)
[Item (VMap VB VP (Credential Staking) (CompactForm Coin))]
-> VMap VB VP (Credential Staking) (CompactForm Coin)
forall l. IsList l => [Item l] -> l
GHC.Exts.fromList ([(Credential Staking, CompactForm Coin)]
-> VMap VB VP (Credential Staking) (CompactForm Coin))
-> ([(Credential Staking, Coin)]
-> [(Credential Staking, CompactForm Coin)])
-> [(Credential Staking, Coin)]
-> VMap VB VP (Credential Staking) (CompactForm Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Credential Staking, Coin)
-> (Credential Staking, CompactForm Coin))
-> [(Credential Staking, Coin)]
-> [(Credential Staking, CompactForm Coin)]
forall a b. (a -> b) -> [a] -> [b]
map ((Coin -> CompactForm Coin)
-> (Credential Staking, Coin)
-> (Credential Staking, CompactForm Coin)
forall a b.
(a -> b) -> (Credential Staking, a) -> (Credential Staking, b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Coin -> CompactForm Coin
toCompactCoinError)
initUTxO :: UTxO ShelleyEra
initUTxO :: UTxO ShelleyEra
initUTxO =
TxId -> [TxOut ShelleyEra] -> UTxO ShelleyEra
forall era. TxId -> [TxOut era] -> UTxO era
genesisCoins
TxId
genesisId
[ Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.aliceAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceInitCoin)
, Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.bobAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
bobInitCoin)
]
initStPoolLifetime :: ChainState ShelleyEra
initStPoolLifetime :: ChainState ShelleyEra
initStPoolLifetime = UTxO ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTxOut era, EraGov era, EraStake era, EraCertState era,
AtMostEra "Mary" era, AtMostEra "Alonzo" era,
Default (StashedAVVMAddresses era)) =>
UTxO era -> ChainState era
initSt UTxO ShelleyEra
initUTxO
aliceCoinEx1 :: Coin
aliceCoinEx1 :: Coin
aliceCoinEx1 =
Coin
aliceInitCoin
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Integer -> Coin
Coin Integer
250
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> ((Integer
3 :: Integer) Integer -> Coin -> Coin
forall i. Integral i => i -> Coin -> Coin
forall t i. (Val t, Integral i) => i -> t -> t
<×> Integer -> Coin
Coin Integer
7)
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Integer -> Coin
Coin Integer
3
carlMIR :: Coin
carlMIR :: Coin
carlMIR = Integer -> Coin
Coin Integer
110
dariaMIR :: Coin
dariaMIR :: Coin
dariaMIR = Integer -> Coin
Coin Integer
99
feeTx1 :: Coin
feeTx1 :: Coin
feeTx1 = Integer -> Coin
Coin Integer
3
txbodyEx1 :: TxBody TopTx ShelleyEra
txbodyEx1 :: TxBody TopTx ShelleyEra
txbodyEx1 =
TxBody TopTx ShelleyEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l ShelleyEra
mkBasicTxBody
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Set TxIn -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [TxId -> TxIx -> TxIn
TxIn TxId
genesisId TxIx
forall a. Bounded a => a
minBound]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut ShelleyEra)
-> Identity (StrictSeq (TxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxOut ShelleyEra))
outputsTxBodyL ((StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxOut ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxOut ShelleyEra] -> StrictSeq (ShelleyTxOut ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList [Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.aliceAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceCoinEx1)]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert ShelleyEra)
-> Identity (StrictSeq (TxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxCert ShelleyEra))
certsTxBodyL
((StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxCert ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxCert ShelleyEra] -> StrictSeq (ShelleyTxCert ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
( [ Credential Staking -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> TxCert era
RegTxCert Credential Staking
Cast.aliceSHK
, Credential Staking -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> TxCert era
RegTxCert Credential Staking
Cast.bobSHK
, Credential Staking -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> TxCert era
RegTxCert Credential Staking
Cast.carlSHK
, StakePoolParams -> TxCert ShelleyEra
forall era. EraTxCert era => StakePoolParams -> TxCert era
RegPoolTxCert StakePoolParams
Cast.aliceStakePoolParams
]
[ShelleyTxCert ShelleyEra]
-> [ShelleyTxCert ShelleyEra] -> [ShelleyTxCert ShelleyEra]
forall a. [a] -> [a] -> [a]
++ [ MIRCert -> ShelleyTxCert ShelleyEra
forall era. MIRCert -> ShelleyTxCert era
ShelleyTxCertMir
( MIRPot -> MIRTarget -> MIRCert
MIRCert
MIRPot
ReservesMIR
( Map (Credential Staking) DeltaCoin -> MIRTarget
StakeAddressesMIR (Map (Credential Staking) DeltaCoin -> MIRTarget)
-> Map (Credential Staking) DeltaCoin -> MIRTarget
forall a b. (a -> b) -> a -> b
$
[(Credential Staking, DeltaCoin)]
-> Map (Credential Staking) DeltaCoin
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (Credential Staking
Cast.carlSHK, Coin -> DeltaCoin
toDeltaCoin Coin
carlMIR)
, (Credential Staking
Cast.dariaSHK, Coin -> DeltaCoin
toDeltaCoin Coin
dariaMIR)
]
)
)
]
)
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx ShelleyEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Coin -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
feeTx1
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> SlotNo -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> SlotNo
SlotNo Word64
10
txEx1 :: Tx TopTx ShelleyEra
txEx1 :: Tx TopTx ShelleyEra
txEx1 =
TxBody TopTx ShelleyEra -> Tx TopTx ShelleyEra
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx TxBody TopTx ShelleyEra
txbodyEx1
Tx TopTx ShelleyEra
-> (Tx TopTx ShelleyEra -> Tx TopTx ShelleyEra)
-> Tx TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (TxWits ShelleyEra -> Identity (TxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
(ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL
((ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra))
-> ShelleyTxWits ShelleyEra
-> Tx TopTx ShelleyEra
-> Tx TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( TxWits ShelleyEra
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits ShelleyEra
-> (TxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> ShelleyTxWits ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (TxWits ShelleyEra)
(Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits ShelleyEra) (Set (WitVKey Witness))
addrTxWitsL
((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Set (WitVKey Witness)
-> TxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
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 ShelleyEra -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx ShelleyEra
txbodyEx1)
( (KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness (KeyPair Payment -> KeyPair Witness)
-> [KeyPair Payment] -> [KeyPair Witness]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Item [KeyPair Payment]
KeyPair Payment
Cast.alicePay, Item [KeyPair Payment]
KeyPair Payment
Cast.carlPay])
[KeyPair Witness] -> [KeyPair Witness] -> [KeyPair Witness]
forall a. Semigroup a => a -> a -> a
<> (KeyPair Staking -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness (KeyPair Staking -> KeyPair Witness)
-> [KeyPair Staking] -> [KeyPair Witness]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Item [KeyPair Staking]
KeyPair Staking
Cast.aliceStake])
[KeyPair Witness] -> [KeyPair Witness] -> [KeyPair Witness]
forall a. Semigroup a => a -> a -> a
<> [KeyPair StakePool -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness (KeyPair StakePool -> KeyPair Witness)
-> KeyPair StakePool -> KeyPair Witness
forall a b. (a -> b) -> a -> b
$ AllIssuerKeys MockCrypto StakePool -> KeyPair StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys]
[KeyPair Witness] -> [KeyPair Witness] -> [KeyPair Witness]
forall a. Semigroup a => a -> a -> a
<> ( KeyPair GenesisDelegate -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness
(KeyPair GenesisDelegate -> KeyPair Witness)
-> [KeyPair GenesisDelegate] -> [KeyPair Witness]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ AllIssuerKeys MockCrypto GenesisDelegate -> KeyPair GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold (Int -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeIssuerKeys Int
0)
, AllIssuerKeys MockCrypto GenesisDelegate -> KeyPair GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold (Int -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeIssuerKeys Int
1)
, AllIssuerKeys MockCrypto GenesisDelegate -> KeyPair GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold (Int -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeIssuerKeys Int
2)
, AllIssuerKeys MockCrypto GenesisDelegate -> KeyPair GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold (Int -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeIssuerKeys Int
3)
, AllIssuerKeys MockCrypto GenesisDelegate -> KeyPair GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold (Int -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeIssuerKeys Int
4)
]
)
)
)
blockEx1 :: HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1 :: HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
HashHeader
lastByronHeaderHash
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
10)
[Item [Tx TopTx ShelleyEra]
Tx TopTx ShelleyEra
txEx1]
(Word64 -> SlotNo
SlotNo Word64
10)
(Word64 -> BlockNo
BlockNo Word64
1)
Nonce
nonce0
(Natural -> NatNonce
NatNonce Natural
1)
UnitInterval
forall a. Bounded a => a
minBound
Word
0
Word
0
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
10) Word64
0 (Word -> KESPeriod
KESPeriod Word
0))
expectedStEx1 :: ChainState ShelleyEra
expectedStEx1 :: ChainState ShelleyEra
expectedStEx1 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceUnfrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Coin -> ChainState era -> ChainState era
C.addFees Coin
feeTx1
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody TopTx ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTx era, EraStake era) =>
TxBody TopTx era -> ChainState era -> ChainState era
C.newUTxO TxBody TopTx ShelleyEra
txbodyEx1
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> Ptr -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraCertState era, EraGov era, ShelleyEraAccounts era) =>
Credential Staking -> Ptr -> ChainState era -> ChainState era
C.newStakeCred Credential Staking
Cast.aliceSHK (SlotNo32 -> TxIx -> CertIx -> Ptr
Ptr (Word32 -> SlotNo32
SlotNo32 Word32
10) TxIx
forall a. Bounded a => a
minBound (HasCallStack => Integer -> CertIx
Integer -> CertIx
mkCertIxPartial Integer
0))
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> Ptr -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraCertState era, EraGov era, ShelleyEraAccounts era) =>
Credential Staking -> Ptr -> ChainState era -> ChainState era
C.newStakeCred Credential Staking
Cast.bobSHK (SlotNo32 -> TxIx -> CertIx -> Ptr
Ptr (Word32 -> SlotNo32
SlotNo32 Word32
10) TxIx
forall a. Bounded a => a
minBound (HasCallStack => Integer -> CertIx
Integer -> CertIx
mkCertIxPartial Integer
1))
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> Ptr -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraCertState era, EraGov era, ShelleyEraAccounts era) =>
Credential Staking -> Ptr -> ChainState era -> ChainState era
C.newStakeCred Credential Staking
Cast.carlSHK (SlotNo32 -> TxIx -> CertIx -> Ptr
Ptr (Word32 -> SlotNo32
SlotNo32 Word32
10) TxIx
forall a. Bounded a => a
minBound (HasCallStack => Integer -> CertIx
Integer -> CertIx
mkCertIxPartial Integer
2))
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StakePoolParams -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraCertState era, EraGov era) =>
StakePoolParams -> ChainState era -> ChainState era
C.regPool StakePoolParams
Cast.aliceStakePoolParams
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> MIRPot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
EraCertState era =>
Credential Staking
-> MIRPot -> Coin -> ChainState era -> ChainState era
C.mir Credential Staking
Cast.carlSHK MIRPot
ReservesMIR Coin
carlMIR
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> MIRPot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
EraCertState era =>
Credential Staking
-> MIRPot -> Coin -> ChainState era -> ChainState era
C.mir Credential Staking
Cast.dariaSHK MIRPot
ReservesMIR Coin
dariaMIR
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
initStPoolLifetime
poolLifetime1 :: CHAINExample ShelleyEra
poolLifetime1 :: CHAINExample ShelleyEra
poolLifetime1 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
initStPoolLifetime Block (BHeader MockCrypto) ShelleyEra
HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx1)
feeTx2 :: Coin
feeTx2 :: Coin
feeTx2 = Integer -> Coin
Coin Integer
4
aliceCoinEx2Base :: Coin
aliceCoinEx2Base :: Coin
aliceCoinEx2Base = Integer -> Coin
Coin (Integer -> Coin) -> Integer -> Coin
forall a b. (a -> b) -> a -> b
$ Integer
5 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
1000 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
1000 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
1000 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
1000 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
1000
aliceCoinEx2Ptr :: Coin
aliceCoinEx2Ptr :: Coin
aliceCoinEx2Ptr = Coin
aliceCoinEx1 Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> (Coin
aliceCoinEx2Base Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> Coin
feeTx2)
txbodyEx2 :: TxBody TopTx ShelleyEra
txbodyEx2 :: TxBody TopTx ShelleyEra
txbodyEx2 =
TxBody TopTx ShelleyEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l ShelleyEra
mkBasicTxBody
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Set TxIn -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [TxId -> TxIx -> TxIn
TxIn (TxBody TopTx ShelleyEra -> TxId
forall era (l :: TxLevel). EraTxBody era => TxBody l era -> TxId
txIdTxBody TxBody TopTx ShelleyEra
txbodyEx1) TxIx
forall a. Bounded a => a
minBound]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut ShelleyEra)
-> Identity (StrictSeq (TxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxOut ShelleyEra))
outputsTxBodyL
((StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxOut ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxOut ShelleyEra] -> StrictSeq (ShelleyTxOut ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
[ Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.aliceAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceCoinEx2Base)
, Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.alicePtrAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceCoinEx2Ptr)
]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert ShelleyEra)
-> Identity (StrictSeq (TxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxCert ShelleyEra))
certsTxBodyL
((StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxCert ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxCert ShelleyEra] -> StrictSeq (ShelleyTxCert ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
[ Credential Staking -> KeyHash StakePool -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> KeyHash StakePool -> TxCert era
DelegStakeTxCert Credential Staking
Cast.aliceSHK (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys)
, Credential Staking -> KeyHash StakePool -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> KeyHash StakePool -> TxCert era
DelegStakeTxCert Credential Staking
Cast.bobSHK (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys)
]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx ShelleyEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Coin -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
feeTx2
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> SlotNo -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> SlotNo
SlotNo Word64
90
txEx2 :: Tx TopTx ShelleyEra
txEx2 :: Tx TopTx ShelleyEra
txEx2 =
TxBody TopTx ShelleyEra -> Tx TopTx ShelleyEra
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx TxBody TopTx ShelleyEra
txbodyEx2
Tx TopTx ShelleyEra
-> (Tx TopTx ShelleyEra -> Tx TopTx ShelleyEra)
-> Tx TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (TxWits ShelleyEra -> Identity (TxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
(ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL
((ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra))
-> ShelleyTxWits ShelleyEra
-> Tx TopTx ShelleyEra
-> Tx TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( TxWits ShelleyEra
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits ShelleyEra
-> (TxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> ShelleyTxWits ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (TxWits ShelleyEra)
(Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits ShelleyEra) (Set (WitVKey Witness))
addrTxWitsL
((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Set (WitVKey Witness)
-> TxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
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 ShelleyEra -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx ShelleyEra
txbodyEx2)
[ KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Payment
Cast.alicePay
, KeyPair Staking -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Staking
Cast.aliceStake
, KeyPair Staking -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Staking
Cast.bobStake
]
)
blockEx2 :: Block (BHeader MockCrypto) ShelleyEra
blockEx2 :: Block (BHeader MockCrypto) ShelleyEra
blockEx2 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
HasCallStack => Block (BHeader MockCrypto) ShelleyEra
blockEx1)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
90)
[Item [Tx TopTx ShelleyEra]
Tx TopTx ShelleyEra
txEx2]
(Word64 -> SlotNo
SlotNo Word64
90)
(Word64 -> BlockNo
BlockNo Word64
2)
Nonce
nonce0
(Natural -> NatNonce
NatNonce Natural
2)
UnitInterval
forall a. Bounded a => a
minBound
Word
4
Word
0
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
90) Word64
0 (Word -> KESPeriod
KESPeriod Word
0))
makePulser :: (EraGov era, EraCertState era) => BlocksMade -> ChainState era -> PulsingRewUpdate
makePulser :: forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makePulser BlocksMade
bs ChainState era
cs =
EpochSize
-> BlocksMade
-> EpochState era
-> Coin
-> ActiveSlotCoeff
-> NonZero Word64
-> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
EpochSize
-> BlocksMade
-> EpochState era
-> Coin
-> ActiveSlotCoeff
-> NonZero Word64
-> PulsingRewUpdate
startStep
(EpochNo -> EpochSize
epochSize (EpochNo -> EpochSize) -> EpochNo -> EpochSize
forall a b. (a -> b) -> a -> b
$ Word64 -> EpochNo
EpochNo Word64
0)
BlocksMade
bs
(NewEpochState era -> EpochState era
forall era. NewEpochState era -> EpochState era
nesEs (NewEpochState era -> EpochState era)
-> NewEpochState era -> EpochState era
forall a b. (a -> b) -> a -> b
$ ChainState era -> NewEpochState era
forall era. ChainState era -> NewEpochState era
chainNes ChainState era
cs)
Coin
maxLLSupply
(Globals -> ActiveSlotCoeff
activeSlotCoeff Globals
testGlobals)
(Globals -> NonZero Word64
securityParameter Globals
testGlobals)
makePulser' :: (EraGov era, EraCertState era) => ChainState era -> PulsingRewUpdate
makePulser' :: forall era.
(EraGov era, EraCertState era) =>
ChainState era -> PulsingRewUpdate
makePulser' = BlocksMade -> ChainState era -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makePulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade Map (KeyHash StakePool) Natural
forall a. Monoid a => a
mempty)
makeCompletedPulser ::
(EraGov era, EraCertState era) => BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser :: forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser BlocksMade
bs ChainState era
cs = RewardUpdate -> PulsingRewUpdate
Complete (RewardUpdate -> PulsingRewUpdate)
-> (PulsingRewUpdate -> RewardUpdate)
-> PulsingRewUpdate
-> PulsingRewUpdate
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (RewardUpdate, RewardEvent) -> RewardUpdate
forall a b. (a, b) -> a
fst ((RewardUpdate, RewardEvent) -> RewardUpdate)
-> (PulsingRewUpdate -> (RewardUpdate, RewardEvent))
-> PulsingRewUpdate
-> RewardUpdate
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyBase (RewardUpdate, RewardEvent)
-> (RewardUpdate, RewardEvent)
forall a. ShelleyBase a -> a
runShelleyBase (ShelleyBase (RewardUpdate, RewardEvent)
-> (RewardUpdate, RewardEvent))
-> (PulsingRewUpdate -> ShelleyBase (RewardUpdate, RewardEvent))
-> PulsingRewUpdate
-> (RewardUpdate, RewardEvent)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ShelleyBase (RewardUpdate, RewardEvent)
completeRupd (PulsingRewUpdate -> PulsingRewUpdate)
-> PulsingRewUpdate -> PulsingRewUpdate
forall a b. (a -> b) -> a -> b
$ BlocksMade -> ChainState era -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makePulser BlocksMade
bs ChainState era
cs
pulserEx2 :: PulsingRewUpdate
pulserEx2 :: PulsingRewUpdate
pulserEx2 = BlocksMade -> ChainState ShelleyEra -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade Map (KeyHash StakePool) Natural
forall a. Monoid a => a
mempty) ChainState ShelleyEra
expectedStEx1
expectedStEx2 :: ChainState ShelleyEra
expectedStEx2 :: ChainState ShelleyEra
expectedStEx2 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceFrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx2)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Coin -> ChainState era -> ChainState era
C.addFees Coin
feeTx2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody TopTx ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTx era, EraStake era) =>
TxBody TopTx era -> ChainState era -> ChainState era
C.newUTxO TxBody TopTx ShelleyEra
txbodyEx2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> KeyHash StakePool
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall era.
EraCertState era =>
Credential Staking
-> KeyHash StakePool -> ChainState era -> ChainState era
C.delegation Credential Staking
Cast.aliceSHK (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
Cast.aliceStakePoolParams)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> KeyHash StakePool
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall era.
EraCertState era =>
Credential Staking
-> KeyHash StakePool -> ChainState era -> ChainState era
C.delegation Credential Staking
Cast.bobSHK (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
Cast.aliceStakePoolParams)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PulsingRewUpdate -> ChainState era -> ChainState era
C.pulserUpdate PulsingRewUpdate
pulserEx2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx1
poolLifetime2 :: CHAINExample ShelleyEra
poolLifetime2 :: CHAINExample ShelleyEra
poolLifetime2 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx1 Block (BHeader MockCrypto) ShelleyEra
blockEx2 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right (ChainState ShelleyEra -> ChainState ShelleyEra
forall era. EraGov era => ChainState era -> ChainState era
C.solidifyProposals ChainState ShelleyEra
expectedStEx2))
epoch1Nonce :: Nonce
epoch1Nonce :: Nonce
epoch1Nonce = ChainState ShelleyEra -> Nonce
forall era. ChainState era -> Nonce
chainCandidateNonce ChainState ShelleyEra
expectedStEx2
blockEx3 :: Block (BHeader MockCrypto) ShelleyEra
blockEx3 :: Block (BHeader MockCrypto) ShelleyEra
blockEx3 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx2)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
110)
[]
(Word64 -> SlotNo
SlotNo Word64
110)
(Word64 -> BlockNo
BlockNo Word64
3)
Nonce
epoch1Nonce
(Natural -> NatNonce
NatNonce Natural
3)
UnitInterval
forall a. Bounded a => a
minBound
Word
5
Word
0
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
110) Word64
0 (Word -> KESPeriod
KESPeriod Word
0))
snapEx3 :: SnapShot
snapEx3 :: SnapShot
snapEx3 =
ActiveStake -> [StakePoolParams] -> SnapShot
forall (f :: * -> *).
Foldable f =>
ActiveStake -> f StakePoolParams -> SnapShot
mkSnapShotFromStakePoolParams
( VMap VB VB (Credential Staking) StakeWithDelegation -> ActiveStake
ActiveStake
( [(Credential Staking, StakeWithDelegation)]
-> VMap VB VB (Credential Staking) StakeWithDelegation
forall k (kv :: * -> *) (vv :: * -> *) v.
(Ord k, Vector kv k, Vector vv v) =>
[(k, v)] -> VMap kv vv k v
VMap.fromList
[ (Credential Staking
Cast.aliceSHK, Coin -> StakeWithDelegation
mkSwd (Coin -> StakeWithDelegation) -> Coin -> StakeWithDelegation
forall a b. (a -> b) -> a -> b
$ Coin
aliceCoinEx2Base Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx2Ptr)
, (Credential Staking
Cast.bobSHK, Coin -> StakeWithDelegation
mkSwd Coin
bobInitCoin)
]
)
)
[StakePoolParams]
poolParamsEx5
where
mkSwd :: Coin -> StakeWithDelegation
mkSwd = (NonZero (CompactForm Coin)
-> KeyHash StakePool -> StakeWithDelegation
`StakeWithDelegation` AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) (NonZero (CompactForm Coin) -> StakeWithDelegation)
-> (Coin -> NonZero (CompactForm Coin))
-> Coin
-> StakeWithDelegation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CompactForm Coin -> NonZero (CompactForm Coin)
forall a. a -> NonZero a
unsafeNonZero (CompactForm Coin -> NonZero (CompactForm Coin))
-> (Coin -> CompactForm Coin) -> Coin -> NonZero (CompactForm Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> CompactForm Coin
forall a. (HasCallStack, Compactible a) => a -> CompactForm a
toCompactPartial
expectedStEx3 :: ChainState ShelleyEra
expectedStEx3 :: ChainState ShelleyEra
expectedStEx3 =
Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(AtMostEra "Alonzo" era, EraGov era) =>
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newEpoch Block (BHeader MockCrypto) ShelleyEra
blockEx3
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SnapShot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. SnapShot -> Coin -> ChainState era -> ChainState era
C.newSnapshot SnapShot
snapEx3 (Coin
feeTx1 Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
feeTx2)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MIRPot
-> Map (Credential Staking) Coin
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall era.
EraCertState era =>
MIRPot
-> Map (Credential Staking) Coin
-> ChainState era
-> ChainState era
C.applyMIR MIRPot
ReservesMIR (Credential Staking -> Coin -> Map (Credential Staking) Coin
forall k a. k -> a -> Map k a
Map.singleton Credential Staking
Cast.carlSHK Coin
carlMIR)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RewardUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
RewardUpdate -> ChainState era -> ChainState era
C.applyRewardUpdate RewardUpdate
emptyRewardUpdate
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx2
poolLifetime3 :: CHAINExample ShelleyEra
poolLifetime3 :: CHAINExample ShelleyEra
poolLifetime3 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx2 Block (BHeader MockCrypto) ShelleyEra
blockEx3 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx3)
feeTx4 :: Coin
feeTx4 :: Coin
feeTx4 = Integer -> Coin
Coin Integer
5
aliceCoinEx4Base :: Coin
aliceCoinEx4Base :: Coin
aliceCoinEx4Base = Coin
aliceCoinEx2Base Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Coin
feeTx4
txbodyEx4 :: TxBody TopTx ShelleyEra
txbodyEx4 :: TxBody TopTx ShelleyEra
txbodyEx4 =
TxBody TopTx ShelleyEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l ShelleyEra
mkBasicTxBody
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Set TxIn -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [TxId -> TxIx -> TxIn
TxIn (TxBody TopTx ShelleyEra -> TxId
forall era (l :: TxLevel). EraTxBody era => TxBody l era -> TxId
txIdTxBody TxBody TopTx ShelleyEra
txbodyEx2) TxIx
forall a. Bounded a => a
minBound]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut ShelleyEra)
-> Identity (StrictSeq (TxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxOut ShelleyEra))
outputsTxBodyL ((StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxOut ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxOut ShelleyEra] -> StrictSeq (ShelleyTxOut ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList [Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.aliceAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceCoinEx4Base)]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert ShelleyEra)
-> Identity (StrictSeq (TxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxCert ShelleyEra))
certsTxBodyL
((StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxCert ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxCert ShelleyEra] -> StrictSeq (ShelleyTxCert ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
[Credential Staking -> KeyHash StakePool -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> KeyHash StakePool -> TxCert era
DelegStakeTxCert Credential Staking
Cast.carlSHK (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys)]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx ShelleyEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Coin -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
feeTx4
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> SlotNo -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> SlotNo
SlotNo Word64
500
txEx4 :: Tx TopTx ShelleyEra
txEx4 :: Tx TopTx ShelleyEra
txEx4 =
TxBody TopTx ShelleyEra -> Tx TopTx ShelleyEra
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx TxBody TopTx ShelleyEra
txbodyEx4
Tx TopTx ShelleyEra
-> (Tx TopTx ShelleyEra -> Tx TopTx ShelleyEra)
-> Tx TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (TxWits ShelleyEra -> Identity (TxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
(ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL
((ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra))
-> ShelleyTxWits ShelleyEra
-> Tx TopTx ShelleyEra
-> Tx TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( TxWits ShelleyEra
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits ShelleyEra
-> (TxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> ShelleyTxWits ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (TxWits ShelleyEra)
(Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits ShelleyEra) (Set (WitVKey Witness))
addrTxWitsL
((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Set (WitVKey Witness)
-> TxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
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 ShelleyEra -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx ShelleyEra
txbodyEx4)
[KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Payment
Cast.alicePay, KeyPair Staking -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Staking
Cast.carlStake]
)
blockEx4 :: Block (BHeader MockCrypto) ShelleyEra
blockEx4 :: Block (BHeader MockCrypto) ShelleyEra
blockEx4 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx3)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
190)
[Item [Tx TopTx ShelleyEra]
Tx TopTx ShelleyEra
txEx4]
(Word64 -> SlotNo
SlotNo Word64
190)
(Word64 -> BlockNo
BlockNo Word64
4)
Nonce
epoch1Nonce
(Natural -> NatNonce
NatNonce Natural
4)
UnitInterval
forall a. Bounded a => a
minBound
Word
9
Word
0
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
190) Word64
0 (Word -> KESPeriod
KESPeriod Word
0))
pulserEx4 :: PulsingRewUpdate
pulserEx4 :: PulsingRewUpdate
pulserEx4 = BlocksMade -> ChainState ShelleyEra -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade Map (KeyHash StakePool) Natural
forall a. Monoid a => a
mempty) ChainState ShelleyEra
expectedStEx3
rewardUpdateEx4 :: RewardUpdate
rewardUpdateEx4 :: RewardUpdate
rewardUpdateEx4 =
RewardUpdate
{ deltaT :: DeltaCoin
deltaT = Integer -> DeltaCoin
DeltaCoin Integer
1
, deltaR :: DeltaCoin
deltaR = Integer -> DeltaCoin
DeltaCoin Integer
6
, rs :: RewardEvent
rs = RewardEvent
forall k a. Map k a
Map.empty
, deltaF :: DeltaCoin
deltaF = Integer -> DeltaCoin
DeltaCoin (-Integer
7)
, nonMyopic :: NonMyopic
nonMyopic = NonMyopic
forall a. Default a => a
def {rewardPotNM = Coin 6}
}
expectedStEx4 :: ChainState ShelleyEra
expectedStEx4 :: ChainState ShelleyEra
expectedStEx4 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceFrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx4)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Coin -> ChainState era -> ChainState era
C.addFees Coin
feeTx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody TopTx ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTx era, EraStake era) =>
TxBody TopTx era -> ChainState era -> ChainState era
C.newUTxO TxBody TopTx ShelleyEra
txbodyEx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> KeyHash StakePool
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall era.
EraCertState era =>
Credential Staking
-> KeyHash StakePool -> ChainState era -> ChainState era
C.delegation Credential Staking
Cast.carlSHK (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
Cast.aliceStakePoolParams)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PulsingRewUpdate -> ChainState era -> ChainState era
C.pulserUpdate PulsingRewUpdate
pulserEx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx3
poolLifetime4 :: CHAINExample ShelleyEra
poolLifetime4 :: CHAINExample ShelleyEra
poolLifetime4 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx3 Block (BHeader MockCrypto) ShelleyEra
blockEx4 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right (ChainState ShelleyEra -> ChainState ShelleyEra
forall era. EraGov era => ChainState era -> ChainState era
C.solidifyProposals ChainState ShelleyEra
expectedStEx4))
epoch2Nonce :: Nonce
epoch2Nonce :: Nonce
epoch2Nonce =
ChainState ShelleyEra -> Nonce
forall era. ChainState era -> Nonce
chainCandidateNonce ChainState ShelleyEra
expectedStEx4
Nonce -> Nonce -> Nonce
⭒ HashHeader -> Nonce
hashHeaderToNonce (BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx2)
blockEx5 :: Block (BHeader MockCrypto) ShelleyEra
blockEx5 :: Block (BHeader MockCrypto) ShelleyEra
blockEx5 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx4)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
220)
[]
(Word64 -> SlotNo
SlotNo Word64
220)
(Word64 -> BlockNo
BlockNo Word64
5)
Nonce
epoch2Nonce
(Natural -> NatNonce
NatNonce Natural
5)
UnitInterval
forall a. Bounded a => a
minBound
Word
11
Word
10
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
220) Word64
1 (Word -> KESPeriod
KESPeriod Word
10))
snapEx5 :: SnapShot
snapEx5 :: SnapShot
snapEx5 =
ActiveStake -> [StakePoolParams] -> SnapShot
forall (f :: * -> *).
Foldable f =>
ActiveStake -> f StakePoolParams -> SnapShot
mkSnapShotFromStakePoolParams
( VMap VB VB (Credential Staking) StakeWithDelegation -> ActiveStake
ActiveStake
( [(Credential Staking, StakeWithDelegation)]
-> VMap VB VB (Credential Staking) StakeWithDelegation
forall k (kv :: * -> *) (vv :: * -> *) v.
(Ord k, Vector kv k, Vector vv v) =>
[(k, v)] -> VMap kv vv k v
VMap.fromList
[ (Credential Staking
Cast.aliceSHK, Coin -> StakeWithDelegation
mkSwd (Coin -> StakeWithDelegation) -> Coin -> StakeWithDelegation
forall a b. (a -> b) -> a -> b
$ Coin
aliceCoinEx4Base Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx2Ptr)
, (Credential Staking
Cast.carlSHK, Coin -> StakeWithDelegation
mkSwd Coin
carlMIR)
, (Credential Staking
Cast.bobSHK, Coin -> StakeWithDelegation
mkSwd Coin
bobInitCoin)
]
)
)
[StakePoolParams]
poolParamsEx5
where
mkSwd :: Coin -> StakeWithDelegation
mkSwd = (NonZero (CompactForm Coin)
-> KeyHash StakePool -> StakeWithDelegation
`StakeWithDelegation` AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) (NonZero (CompactForm Coin) -> StakeWithDelegation)
-> (Coin -> NonZero (CompactForm Coin))
-> Coin
-> StakeWithDelegation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CompactForm Coin -> NonZero (CompactForm Coin)
forall a. a -> NonZero a
unsafeNonZero (CompactForm Coin -> NonZero (CompactForm Coin))
-> (Coin -> CompactForm Coin) -> Coin -> NonZero (CompactForm Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> CompactForm Coin
forall a. (HasCallStack, Compactible a) => a -> CompactForm a
toCompactPartial
poolParamsEx5 :: [StakePoolParams]
poolParamsEx5 :: [StakePoolParams]
poolParamsEx5 = [Item [StakePoolParams]
StakePoolParams
Cast.aliceStakePoolParams]
pdEx5 :: PoolDistr
pdEx5 :: PoolDistr
pdEx5 =
Map (KeyHash StakePool) IndividualPoolStake
-> NonZero Coin -> PoolDistr
PoolDistr
( KeyHash StakePool
-> IndividualPoolStake
-> Map (KeyHash StakePool) IndividualPoolStake
forall k a. k -> a -> Map k a
Map.singleton
(AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys)
( Rational
-> CompactForm Coin
-> VRFVerKeyHash StakePoolVRF
-> IndividualPoolStake
IndividualPoolStake
Rational
1
(Word64 -> CompactForm Coin
CompactCoin Word64
1)
VRFVerKeyHash StakePoolVRF
Cast.aliceVRFKeyHash
)
)
(forall (n :: Natural). (KnownNat n, 1 <= n) => NonZero Coin
knownNonZeroCoin @1)
expectedStEx5 :: ChainState ShelleyEra
expectedStEx5 :: ChainState ShelleyEra
expectedStEx5 =
Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(AtMostEra "Alonzo" era, EraGov era) =>
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newEpoch Block (BHeader MockCrypto) ShelleyEra
blockEx5
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SnapShot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. SnapShot -> Coin -> ChainState era -> ChainState era
C.newSnapshot SnapShot
snapEx5 Coin
feeTx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RewardUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
RewardUpdate -> ChainState era -> ChainState era
C.applyRewardUpdate RewardUpdate
rewardUpdateEx4
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PoolDistr -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PoolDistr -> ChainState era -> ChainState era
C.setPoolDistr PoolDistr
pdEx5
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter KeyHash BlockIssuer
forall {r' :: KeyRole}. KeyHash r'
coreNodeHK Word64
1
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx4
where
coreNodeHK :: KeyHash r'
coreNodeHK = KeyHash GenesisDelegate -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash GenesisDelegate -> KeyHash r')
-> (AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash GenesisDelegate)
-> AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash r'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash (AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r')
-> AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r'
forall a b. (a -> b) -> a -> b
$ forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
220
poolLifetime5 :: CHAINExample ShelleyEra
poolLifetime5 :: CHAINExample ShelleyEra
poolLifetime5 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx4 Block (BHeader MockCrypto) ShelleyEra
blockEx5 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx5)
blockEx6 :: Block (BHeader MockCrypto) ShelleyEra
blockEx6 :: Block (BHeader MockCrypto) ShelleyEra
blockEx6 =
HashHeader
-> AllIssuerKeys MockCrypto StakePool
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx5)
AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys
[]
(Word64 -> SlotNo
SlotNo Word64
295)
(Word64 -> BlockNo
BlockNo Word64
6)
Nonce
epoch2Nonce
(Natural -> NatNonce
NatNonce Natural
6)
UnitInterval
forall a. Bounded a => a
minBound
Word
14
Word
14
(AllIssuerKeys MockCrypto StakePool
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys Word64
0 (Word -> KESPeriod
KESPeriod Word
14))
rewardUpdateEx6 :: RewardUpdate
rewardUpdateEx6 :: RewardUpdate
rewardUpdateEx6 =
RewardUpdate
{ deltaT :: DeltaCoin
deltaT = Integer -> DeltaCoin
DeltaCoin Integer
1
, deltaR :: DeltaCoin
deltaR = Integer -> DeltaCoin
DeltaCoin Integer
4
, rs :: RewardEvent
rs = RewardEvent
forall k a. Map k a
Map.empty
, deltaF :: DeltaCoin
deltaF = DeltaCoin -> DeltaCoin
forall m. Group m => m -> m
invert (DeltaCoin -> DeltaCoin) -> DeltaCoin -> DeltaCoin
forall a b. (a -> b) -> a -> b
$ Coin -> DeltaCoin
toDeltaCoin Coin
feeTx4
, nonMyopic :: NonMyopic
nonMyopic = NonMyopic
forall a. Default a => a
def {rewardPotNM = Coin 4}
}
pulserEx6 :: PulsingRewUpdate
pulserEx6 :: PulsingRewUpdate
pulserEx6 = BlocksMade -> ChainState ShelleyEra -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade Map (KeyHash StakePool) Natural
forall a. Monoid a => a
mempty) ChainState ShelleyEra
expectedStEx5
expectedStEx6 :: ChainState ShelleyEra
expectedStEx6 :: ChainState ShelleyEra
expectedStEx6 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceFrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx6)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx6
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter (KeyHash StakePool -> KeyHash BlockIssuer
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash StakePool -> KeyHash BlockIssuer)
-> KeyHash StakePool -> KeyHash BlockIssuer
forall a b. (a -> b) -> a -> b
$ AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Word64
0
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash StakePool -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. KeyHash StakePool -> ChainState era -> ChainState era
C.incrBlockCount (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PulsingRewUpdate -> ChainState era -> ChainState era
C.pulserUpdate PulsingRewUpdate
pulserEx6
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx5
poolLifetime6 :: CHAINExample ShelleyEra
poolLifetime6 :: CHAINExample ShelleyEra
poolLifetime6 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx5 Block (BHeader MockCrypto) ShelleyEra
blockEx6 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right (ChainState ShelleyEra -> ChainState ShelleyEra
forall era. EraGov era => ChainState era -> ChainState era
C.solidifyProposals ChainState ShelleyEra
expectedStEx6))
epoch3Nonce :: Nonce
epoch3Nonce :: Nonce
epoch3Nonce =
ChainState ShelleyEra -> Nonce
forall era. ChainState era -> Nonce
chainCandidateNonce ChainState ShelleyEra
expectedStEx6
Nonce -> Nonce -> Nonce
⭒ HashHeader -> Nonce
hashHeaderToNonce (BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx4)
blockEx7 :: Block (BHeader MockCrypto) ShelleyEra
blockEx7 :: Block (BHeader MockCrypto) ShelleyEra
blockEx7 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx6)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
310)
[]
(Word64 -> SlotNo
SlotNo Word64
310)
(Word64 -> BlockNo
BlockNo Word64
7)
Nonce
epoch3Nonce
(Natural -> NatNonce
NatNonce Natural
7)
UnitInterval
forall a. Bounded a => a
minBound
Word
15
Word
15
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
310) Word64
1 (Word -> KESPeriod
KESPeriod Word
15))
expectedStEx7 :: ChainState ShelleyEra
expectedStEx7 :: ChainState ShelleyEra
expectedStEx7 =
Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(AtMostEra "Alonzo" era, EraGov era) =>
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newEpoch Block (BHeader MockCrypto) ShelleyEra
blockEx7
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SnapShot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. SnapShot -> Coin -> ChainState era -> ChainState era
C.newSnapshot SnapShot
snapEx5 (Integer -> Coin
Coin Integer
0)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RewardUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
RewardUpdate -> ChainState era -> ChainState era
C.applyRewardUpdate RewardUpdate
rewardUpdateEx6
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter KeyHash BlockIssuer
forall {r' :: KeyRole}. KeyHash r'
coreNodeHK Word64
1
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx6
where
coreNodeHK :: KeyHash r'
coreNodeHK = KeyHash GenesisDelegate -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash GenesisDelegate -> KeyHash r')
-> (AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash GenesisDelegate)
-> AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash r'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash (AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r')
-> AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r'
forall a b. (a -> b) -> a -> b
$ forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
310
poolLifetime7 :: CHAINExample ShelleyEra
poolLifetime7 :: CHAINExample ShelleyEra
poolLifetime7 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx6 Block (BHeader MockCrypto) ShelleyEra
blockEx7 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx7)
blockEx8 :: Block (BHeader MockCrypto) ShelleyEra
blockEx8 :: Block (BHeader MockCrypto) ShelleyEra
blockEx8 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx7)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
390)
[]
(Word64 -> SlotNo
SlotNo Word64
390)
(Word64 -> BlockNo
BlockNo Word64
8)
Nonce
epoch3Nonce
(Natural -> NatNonce
NatNonce Natural
8)
UnitInterval
forall a. Bounded a => a
minBound
Word
19
Word
19
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
390) Word64
2 (Word -> KESPeriod
KESPeriod Word
19))
aliceRAcnt8 :: Coin
aliceRAcnt8 :: Coin
aliceRAcnt8 = Integer -> Coin
Coin Integer
11654787878
bobRAcnt8 :: Coin
bobRAcnt8 :: Coin
bobRAcnt8 = Integer -> Coin
Coin Integer
1038545454
deltaT8' :: Coin
deltaT8' :: Coin
deltaT8' = Integer -> Coin
Coin Integer
317333333333
deltaT8 :: DeltaCoin
deltaT8 :: DeltaCoin
deltaT8 = Coin -> DeltaCoin
toDeltaCoin Coin
deltaT8'
deltaR8 :: DeltaCoin
deltaR8 :: DeltaCoin
deltaR8 = Integer -> DeltaCoin
DeltaCoin (-Integer
330026666665)
reserves7 :: Coin
reserves7 :: Coin
reserves7 = Integer -> Coin
Coin Integer
33999999999999900
rewardPot8 :: Coin
rewardPot8 :: Coin
rewardPot8 = Integer -> Coin
Coin Integer
1269333333333
alicePerfEx8 :: Likelihood
alicePerfEx8 :: Likelihood
alicePerfEx8 = Natural -> Double -> EpochSize -> Likelihood
likelihood Natural
blocks Double
t (EpochNo -> EpochSize
epochSize (EpochNo -> EpochSize) -> EpochNo -> EpochSize
forall a b. (a -> b) -> a -> b
$ Word64 -> EpochNo
EpochNo Word64
3)
where
blocks :: Natural
blocks = Natural
1
t :: Double
t = ActiveSlotCoeff -> Rational -> UnitInterval -> Double
leaderProbability ActiveSlotCoeff
f Rational
relativeStake (Rational -> UnitInterval
forall r.
(HasCallStack, Typeable r, BoundedRational r) =>
Rational -> r
unsafeBoundRational Rational
0.5)
(Coin Integer
stake) = Coin
aliceCoinEx2Base Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx2Ptr Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
bobInitCoin
(Coin Integer
tot) = Coin
maxLLSupply Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Coin
reserves7
relativeStake :: Rational
relativeStake = Rational -> Rational
forall a. Fractional a => Rational -> a
fromRational (Integer
stake Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
tot)
f :: ActiveSlotCoeff
f = Globals -> ActiveSlotCoeff
activeSlotCoeff Globals
testGlobals
nonMyopicEx8 :: NonMyopic
nonMyopicEx8 :: NonMyopic
nonMyopicEx8 =
VMap VB VB (KeyHash StakePool) Likelihood -> Coin -> NonMyopic
NonMyopic
(Map (KeyHash StakePool) Likelihood
-> VMap VB VB (KeyHash StakePool) Likelihood
forall (kv :: * -> *) k (vv :: * -> *) v.
(Vector kv k, Vector vv v) =>
Map k v -> VMap kv vv k v
VMap.fromMap (KeyHash StakePool
-> Likelihood -> Map (KeyHash StakePool) Likelihood
forall k a. k -> a -> Map k a
Map.singleton (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Likelihood
alicePerfEx8))
Coin
rewardPot8
pulserEx8 :: PulsingRewUpdate
pulserEx8 :: PulsingRewUpdate
pulserEx8 =
BlocksMade -> ChainState ShelleyEra -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade (Map (KeyHash StakePool) Natural -> BlocksMade)
-> Map (KeyHash StakePool) Natural -> BlocksMade
forall a b. (a -> b) -> a -> b
$ KeyHash StakePool -> Natural -> Map (KeyHash StakePool) Natural
forall k a. k -> a -> Map k a
Map.singleton (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Natural
1) ChainState ShelleyEra
expectedStEx7
rewardUpdateEx8 :: RewardUpdate
rewardUpdateEx8 :: RewardUpdate
rewardUpdateEx8 =
RewardUpdate
{ deltaT :: DeltaCoin
deltaT = DeltaCoin
deltaT8
, deltaR :: DeltaCoin
deltaR = DeltaCoin
deltaR8
, rs :: RewardEvent
rs =
[(Credential Staking, Set Reward)] -> RewardEvent
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[
( Credential Staking
Cast.aliceSHK
, Reward -> Set Reward
forall a. a -> Set a
Set.singleton (Reward -> Set Reward) -> Reward -> Set Reward
forall a b. (a -> b) -> a -> b
$ RewardType -> KeyHash StakePool -> Coin -> Reward
Reward RewardType
LeaderReward (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Coin
aliceRAcnt8
)
,
( Credential Staking
Cast.bobSHK
, Reward -> Set Reward
forall a. a -> Set a
Set.singleton (Reward -> Set Reward) -> Reward -> Set Reward
forall a b. (a -> b) -> a -> b
$ RewardType -> KeyHash StakePool -> Coin -> Reward
Reward RewardType
MemberReward (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Coin
bobRAcnt8
)
]
, deltaF :: DeltaCoin
deltaF = Integer -> DeltaCoin
DeltaCoin Integer
0
, nonMyopic :: NonMyopic
nonMyopic = NonMyopic
nonMyopicEx8
}
expectedStEx8 :: ChainState ShelleyEra
expectedStEx8 :: ChainState ShelleyEra
expectedStEx8 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceFrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx8)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx8
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter KeyHash BlockIssuer
forall {r' :: KeyRole}. KeyHash r'
coreNodeHK Word64
2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PulsingRewUpdate -> ChainState era -> ChainState era
C.pulserUpdate PulsingRewUpdate
pulserEx8
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx7
where
coreNodeHK :: KeyHash r'
coreNodeHK = KeyHash GenesisDelegate -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash GenesisDelegate -> KeyHash r')
-> (AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash GenesisDelegate)
-> AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash r'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash (AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r')
-> AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r'
forall a b. (a -> b) -> a -> b
$ forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
390
poolLifetime8 :: CHAINExample ShelleyEra
poolLifetime8 :: CHAINExample ShelleyEra
poolLifetime8 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx7 Block (BHeader MockCrypto) ShelleyEra
blockEx8 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right (ChainState ShelleyEra -> ChainState ShelleyEra
forall era. EraGov era => ChainState era -> ChainState era
C.solidifyProposals ChainState ShelleyEra
expectedStEx8))
epoch4Nonce :: Nonce
epoch4Nonce :: Nonce
epoch4Nonce =
ChainState ShelleyEra -> Nonce
forall era. ChainState era -> Nonce
chainCandidateNonce ChainState ShelleyEra
expectedStEx8
Nonce -> Nonce -> Nonce
⭒ HashHeader -> Nonce
hashHeaderToNonce (BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx6)
blockEx9 :: Block (BHeader MockCrypto) ShelleyEra
blockEx9 :: Block (BHeader MockCrypto) ShelleyEra
blockEx9 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx8)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
410)
[]
(Word64 -> SlotNo
SlotNo Word64
410)
(Word64 -> BlockNo
BlockNo Word64
9)
Nonce
epoch4Nonce
(Natural -> NatNonce
NatNonce Natural
9)
UnitInterval
forall a. Bounded a => a
minBound
Word
20
Word
20
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
410) Word64
2 (Word -> KESPeriod
KESPeriod Word
20))
snapEx9 :: SnapShot
snapEx9 :: SnapShot
snapEx9 =
ActiveStake -> [StakePoolParams] -> SnapShot
forall (f :: * -> *).
Foldable f =>
ActiveStake -> f StakePoolParams -> SnapShot
mkSnapShotFromStakePoolParams
( VMap VB VB (Credential Staking) StakeWithDelegation -> ActiveStake
ActiveStake
( [(Credential Staking, StakeWithDelegation)]
-> VMap VB VB (Credential Staking) StakeWithDelegation
forall k (kv :: * -> *) (vv :: * -> *) v.
(Ord k, Vector kv k, Vector vv v) =>
[(k, v)] -> VMap kv vv k v
VMap.fromList
[ (Credential Staking
Cast.bobSHK, Coin -> StakeWithDelegation
mkSwd (Coin -> StakeWithDelegation) -> Coin -> StakeWithDelegation
forall a b. (a -> b) -> a -> b
$ Coin
bobInitCoin Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
bobRAcnt8)
, (Credential Staking
Cast.aliceSHK, Coin -> StakeWithDelegation
mkSwd (Coin -> StakeWithDelegation) -> Coin -> StakeWithDelegation
forall a b. (a -> b) -> a -> b
$ Coin
aliceCoinEx4Base Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx2Ptr Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceRAcnt8)
, (Credential Staking
Cast.carlSHK, Coin -> StakeWithDelegation
mkSwd Coin
carlMIR)
]
)
)
[StakePoolParams]
poolParamsEx5
where
mkSwd :: Coin -> StakeWithDelegation
mkSwd = (NonZero (CompactForm Coin)
-> KeyHash StakePool -> StakeWithDelegation
`StakeWithDelegation` AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) (NonZero (CompactForm Coin) -> StakeWithDelegation)
-> (Coin -> NonZero (CompactForm Coin))
-> Coin
-> StakeWithDelegation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CompactForm Coin -> NonZero (CompactForm Coin)
forall a. a -> NonZero a
unsafeNonZero (CompactForm Coin -> NonZero (CompactForm Coin))
-> (Coin -> CompactForm Coin) -> Coin -> NonZero (CompactForm Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> CompactForm Coin
forall a. (HasCallStack, Compactible a) => a -> CompactForm a
toCompactPartial
expectedStEx9 :: ChainState ShelleyEra
expectedStEx9 :: ChainState ShelleyEra
expectedStEx9 =
Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(AtMostEra "Alonzo" era, EraGov era) =>
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newEpoch Block (BHeader MockCrypto) ShelleyEra
blockEx9
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SnapShot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. SnapShot -> Coin -> ChainState era -> ChainState era
C.newSnapshot SnapShot
snapEx9 (Integer -> Coin
Coin Integer
0)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RewardUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
RewardUpdate -> ChainState era -> ChainState era
C.applyRewardUpdate RewardUpdate
rewardUpdateEx8
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter KeyHash BlockIssuer
forall {r' :: KeyRole}. KeyHash r'
coreNodeHK Word64
2
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx8
where
coreNodeHK :: KeyHash r'
coreNodeHK = KeyHash GenesisDelegate -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash GenesisDelegate -> KeyHash r')
-> (AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash GenesisDelegate)
-> AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash r'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash (AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r')
-> AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r'
forall a b. (a -> b) -> a -> b
$ forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
410
poolLifetime9 :: CHAINExample ShelleyEra
poolLifetime9 :: CHAINExample ShelleyEra
poolLifetime9 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx8 Block (BHeader MockCrypto) ShelleyEra
blockEx9 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx9)
feeTx10 :: Coin
feeTx10 :: Coin
feeTx10 = Integer -> Coin
Coin Integer
9
bobAda10 :: Coin
bobAda10 :: Coin
bobAda10 =
Coin
bobRAcnt8
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> Coin
bobInitCoin
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> Integer -> Coin
Coin Integer
7
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Coin
feeTx10
txbodyEx10 :: TxBody TopTx ShelleyEra
txbodyEx10 :: TxBody TopTx ShelleyEra
txbodyEx10 =
TxBody TopTx ShelleyEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l ShelleyEra
mkBasicTxBody
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Set TxIn -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial TxId
genesisId Integer
1]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut ShelleyEra)
-> Identity (StrictSeq (TxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxOut ShelleyEra))
outputsTxBodyL ((StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxOut ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ShelleyTxOut ShelleyEra -> StrictSeq (ShelleyTxOut ShelleyEra)
forall a. a -> StrictSeq a
StrictSeq.singleton (Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.bobAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
bobAda10))
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert ShelleyEra)
-> Identity (StrictSeq (TxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxCert ShelleyEra))
certsTxBodyL ((StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxCert ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxCert ShelleyEra] -> StrictSeq (ShelleyTxCert ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList [Credential Staking -> TxCert ShelleyEra
forall era.
ShelleyEraTxCert era =>
Credential Staking -> TxCert era
UnRegTxCert Credential Staking
Cast.bobSHK]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) Withdrawals
withdrawalsTxBodyL
((Withdrawals -> Identity Withdrawals)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Withdrawals
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map AccountAddress Coin -> Withdrawals
Withdrawals (AccountAddress -> Coin -> Map AccountAddress Coin
forall k a. k -> a -> Map k a
Map.singleton (Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId Credential Staking
Cast.bobSHK)) Coin
bobRAcnt8)
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx ShelleyEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Coin -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
feeTx10
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> SlotNo -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> SlotNo
SlotNo Word64
500
txEx10 :: Tx TopTx ShelleyEra
txEx10 :: Tx TopTx ShelleyEra
txEx10 =
TxBody TopTx ShelleyEra -> Tx TopTx ShelleyEra
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx TxBody TopTx ShelleyEra
txbodyEx10
Tx TopTx ShelleyEra
-> (Tx TopTx ShelleyEra -> Tx TopTx ShelleyEra)
-> Tx TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (TxWits ShelleyEra -> Identity (TxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
(ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL
((ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra))
-> ShelleyTxWits ShelleyEra
-> Tx TopTx ShelleyEra
-> Tx TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( TxWits ShelleyEra
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits ShelleyEra
-> (TxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> ShelleyTxWits ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (TxWits ShelleyEra)
(Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits ShelleyEra) (Set (WitVKey Witness))
addrTxWitsL
((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Set (WitVKey Witness)
-> TxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
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 ShelleyEra -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx ShelleyEra
txbodyEx10)
[KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Payment
Cast.bobPay, KeyPair Staking -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Staking
Cast.bobStake]
)
blockEx10 :: Block (BHeader MockCrypto) ShelleyEra
blockEx10 :: Block (BHeader MockCrypto) ShelleyEra
blockEx10 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx9)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
420)
[Item [Tx TopTx ShelleyEra]
Tx TopTx ShelleyEra
txEx10]
(Word64 -> SlotNo
SlotNo Word64
420)
(Word64 -> BlockNo
BlockNo Word64
10)
Nonce
epoch4Nonce
(Natural -> NatNonce
NatNonce Natural
10)
UnitInterval
forall a. Bounded a => a
minBound
Word
21
Word
19
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
420) Word64
2 (Word -> KESPeriod
KESPeriod Word
19))
expectedStEx10 :: ChainState ShelleyEra
expectedStEx10 :: ChainState ShelleyEra
expectedStEx10 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceUnfrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx10)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx10
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential Staking
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(HasCallStack, EraCertState era, ShelleyEraAccounts era) =>
Credential Staking -> ChainState era -> ChainState era
C.deregStakeCred Credential Staking
Cast.bobSHK
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Coin -> ChainState era -> ChainState era
C.addFees Coin
feeTx10
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody TopTx ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTx era, EraStake era) =>
TxBody TopTx era -> ChainState era -> ChainState era
C.newUTxO TxBody TopTx ShelleyEra
txbodyEx10
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx9
poolLifetime10 :: CHAINExample ShelleyEra
poolLifetime10 :: CHAINExample ShelleyEra
poolLifetime10 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx9 Block (BHeader MockCrypto) ShelleyEra
blockEx10 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx10)
feeTx11 :: Coin
feeTx11 :: Coin
feeTx11 = Integer -> Coin
Coin Integer
2
aliceCoinEx11Ptr :: Coin
aliceCoinEx11Ptr :: Coin
aliceCoinEx11Ptr = Coin
aliceCoinEx4Base Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Coin
feeTx11
aliceRetireEpoch :: EpochNo
aliceRetireEpoch :: EpochNo
aliceRetireEpoch = Word64 -> EpochNo
EpochNo Word64
5
txbodyEx11 :: TxBody TopTx ShelleyEra
txbodyEx11 :: TxBody TopTx ShelleyEra
txbodyEx11 =
TxBody TopTx ShelleyEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l ShelleyEra
mkBasicTxBody
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l ShelleyEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Set TxIn -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [TxId -> TxIx -> TxIn
TxIn (TxBody TopTx ShelleyEra -> TxId
forall era (l :: TxLevel). EraTxBody era => TxBody l era -> TxId
txIdTxBody TxBody TopTx ShelleyEra
txbodyEx4) TxIx
forall a. Bounded a => a
minBound]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut ShelleyEra)
-> Identity (StrictSeq (TxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxOut ShelleyEra))
outputsTxBodyL ((StrictSeq (ShelleyTxOut ShelleyEra)
-> Identity (StrictSeq (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxOut ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ShelleyTxOut ShelleyEra -> StrictSeq (ShelleyTxOut ShelleyEra)
forall a. a -> StrictSeq a
StrictSeq.singleton (Addr -> Value ShelleyEra -> TxOut ShelleyEra
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut Addr
Cast.alicePtrAddr (Coin -> Coin
forall t s. Inject t s => t -> s
Val.inject Coin
aliceCoinEx11Ptr))
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert ShelleyEra)
-> Identity (StrictSeq (TxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
(StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ShelleyEra) (StrictSeq (TxCert ShelleyEra))
certsTxBodyL
((StrictSeq (ShelleyTxCert ShelleyEra)
-> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> StrictSeq (ShelleyTxCert ShelleyEra)
-> TxBody TopTx ShelleyEra
-> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ShelleyTxCert ShelleyEra] -> StrictSeq (ShelleyTxCert ShelleyEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList [KeyHash StakePool -> EpochNo -> TxCert ShelleyEra
forall era.
EraTxCert era =>
KeyHash StakePool -> EpochNo -> TxCert era
RetirePoolTxCert (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) EpochNo
aliceRetireEpoch]
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx ShelleyEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> Coin -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
feeTx11
TxBody TopTx ShelleyEra
-> (TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra)
-> TxBody TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
-> TxBody TopTx ShelleyEra -> Identity (TxBody TopTx ShelleyEra))
-> SlotNo -> TxBody TopTx ShelleyEra -> TxBody TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> SlotNo
SlotNo Word64
500
txEx11 :: Tx TopTx ShelleyEra
txEx11 :: Tx TopTx ShelleyEra
txEx11 =
TxBody TopTx ShelleyEra -> Tx TopTx ShelleyEra
forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era
forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx TxBody TopTx ShelleyEra
txbodyEx11
Tx TopTx ShelleyEra
-> (Tx TopTx ShelleyEra -> Tx TopTx ShelleyEra)
-> Tx TopTx ShelleyEra
forall a b. a -> (a -> b) -> b
& (TxWits ShelleyEra -> Identity (TxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
(ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL
((ShelleyTxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Tx TopTx ShelleyEra -> Identity (Tx TopTx ShelleyEra))
-> ShelleyTxWits ShelleyEra
-> Tx TopTx ShelleyEra
-> Tx TopTx ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( TxWits ShelleyEra
forall era. EraTxWits era => TxWits era
mkBasicTxWits
TxWits ShelleyEra
-> (TxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> ShelleyTxWits ShelleyEra
forall a b. a -> (a -> b) -> b
& (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (TxWits ShelleyEra)
(Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits ShelleyEra) (Set (WitVKey Witness))
addrTxWitsL
((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness)))
-> TxWits ShelleyEra -> Identity (ShelleyTxWits ShelleyEra))
-> Set (WitVKey Witness)
-> TxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
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 ShelleyEra -> SafeHash EraIndependentTxBody
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated TxBody TopTx ShelleyEra
txbodyEx11)
( [KeyPair Payment -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness KeyPair Payment
Cast.alicePay]
[KeyPair Witness] -> [KeyPair Witness] -> [KeyPair Witness]
forall a. Semigroup a => a -> a -> a
<> [KeyPair StakePool -> KeyPair Witness
forall (a :: KeyRole -> *) (r :: KeyRole).
HasKeyRole a =>
a r -> a Witness
asWitness (KeyPair StakePool -> KeyPair Witness)
-> KeyPair StakePool -> KeyPair Witness
forall a b. (a -> b) -> a -> b
$ AllIssuerKeys MockCrypto StakePool -> KeyPair StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyPair r
aikCold AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys]
)
)
blockEx11 :: Block (BHeader MockCrypto) ShelleyEra
blockEx11 :: Block (BHeader MockCrypto) ShelleyEra
blockEx11 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx10)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
490)
[Item [Tx TopTx ShelleyEra]
Tx TopTx ShelleyEra
txEx11]
(Word64 -> SlotNo
SlotNo Word64
490)
(Word64 -> BlockNo
BlockNo Word64
11)
Nonce
epoch4Nonce
(Natural -> NatNonce
NatNonce Natural
11)
UnitInterval
forall a. Bounded a => a
minBound
Word
24
Word
19
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
490) Word64
2 (Word -> KESPeriod
KESPeriod Word
19))
reserves12 :: Coin
reserves12 :: Coin
reserves12 = Coin -> DeltaCoin -> Coin
addDeltaCoin Coin
reserves7 DeltaCoin
deltaR8
alicePerfEx11 :: Likelihood
alicePerfEx11 :: Likelihood
alicePerfEx11 = Float -> Likelihood -> Likelihood
applyDecay Float
decayFactor Likelihood
alicePerfEx8 Likelihood -> Likelihood -> Likelihood
forall a. Semigroup a => a -> a -> a
<> Likelihood
epoch4Likelihood
where
epoch4Likelihood :: Likelihood
epoch4Likelihood = Natural -> Double -> EpochSize -> Likelihood
likelihood Natural
blocks Double
t (EpochNo -> EpochSize
epochSize (EpochNo -> EpochSize) -> EpochNo -> EpochSize
forall a b. (a -> b) -> a -> b
$ Word64 -> EpochNo
EpochNo Word64
4)
blocks :: Natural
blocks = Natural
0
t :: Double
t = ActiveSlotCoeff -> Rational -> UnitInterval -> Double
leaderProbability ActiveSlotCoeff
f Rational
relativeStake (Rational -> UnitInterval
forall r.
(HasCallStack, Typeable r, BoundedRational r) =>
Rational -> r
unsafeBoundRational Rational
0.5)
Coin Integer
stake = NonZero Coin -> Coin
forall a. NonZero a -> a
unNonZero (NonZero Coin -> Coin) -> NonZero Coin -> Coin
forall a b. (a -> b) -> a -> b
$ ActiveStake -> NonZero Coin
sumAllActiveStake (ActiveStake -> NonZero Coin) -> ActiveStake -> NonZero Coin
forall a b. (a -> b) -> a -> b
$ SnapShot -> ActiveStake
ssActiveStake SnapShot
snapEx5
relativeStake :: Rational
relativeStake = Rational -> Rational
forall a. Fractional a => Rational -> a
fromRational (Integer
stake Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
supply)
Coin Integer
supply = Coin
maxLLSupply Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<-> Coin
reserves12
f :: ActiveSlotCoeff
f = Globals -> ActiveSlotCoeff
activeSlotCoeff Globals
testGlobals
nonMyopicEx11 :: NonMyopic
nonMyopicEx11 :: NonMyopic
nonMyopicEx11 =
VMap VB VB (KeyHash StakePool) Likelihood -> Coin -> NonMyopic
NonMyopic
(Map (KeyHash StakePool) Likelihood
-> VMap VB VB (KeyHash StakePool) Likelihood
forall (kv :: * -> *) k (vv :: * -> *) v.
(Vector kv k, Vector vv v) =>
Map k v -> VMap kv vv k v
VMap.fromMap (KeyHash StakePool
-> Likelihood -> Map (KeyHash StakePool) Likelihood
forall k a. k -> a -> Map k a
Map.singleton (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) Likelihood
alicePerfEx11))
(Integer -> Coin
Coin Integer
0)
pulserEx11 :: PulsingRewUpdate
pulserEx11 :: PulsingRewUpdate
pulserEx11 = BlocksMade -> ChainState ShelleyEra -> PulsingRewUpdate
forall era.
(EraGov era, EraCertState era) =>
BlocksMade -> ChainState era -> PulsingRewUpdate
makeCompletedPulser (Map (KeyHash StakePool) Natural -> BlocksMade
BlocksMade Map (KeyHash StakePool) Natural
forall a. Monoid a => a
mempty) ChainState ShelleyEra
expectedStEx10
rewardUpdateEx11 :: RewardUpdate
rewardUpdateEx11 :: RewardUpdate
rewardUpdateEx11 =
RewardUpdate
{ deltaT :: DeltaCoin
deltaT = Integer -> DeltaCoin
DeltaCoin Integer
0
, deltaR :: DeltaCoin
deltaR = Integer -> DeltaCoin
DeltaCoin Integer
0
, rs :: RewardEvent
rs = RewardEvent
forall k a. Map k a
Map.empty
, deltaF :: DeltaCoin
deltaF = Integer -> DeltaCoin
DeltaCoin Integer
0
, nonMyopic :: NonMyopic
nonMyopic = NonMyopic
nonMyopicEx11
}
expectedStEx11 :: ChainState ShelleyEra
expectedStEx11 :: ChainState ShelleyEra
expectedStEx11 =
Nonce -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Nonce -> ChainState era -> ChainState era
C.evolveNonceFrozen (Block (BHeader MockCrypto) ShelleyEra -> Nonce
forall era. Block (BHeader MockCrypto) era -> Nonce
getBlockNonce Block (BHeader MockCrypto) ShelleyEra
blockEx11)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newLab Block (BHeader MockCrypto) ShelleyEra
blockEx11
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. Coin -> ChainState era -> ChainState era
C.addFees Coin
feeTx11
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody TopTx ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraTx era, EraStake era) =>
TxBody TopTx era -> ChainState era -> ChainState era
C.newUTxO TxBody TopTx ShelleyEra
txbodyEx11
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PulsingRewUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. PulsingRewUpdate -> ChainState era -> ChainState era
C.pulserUpdate PulsingRewUpdate
pulserEx11
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash StakePool
-> EpochNo -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
EraCertState era =>
KeyHash StakePool -> EpochNo -> ChainState era -> ChainState era
C.stageRetirement (AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) EpochNo
aliceRetireEpoch
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx10
poolLifetime11 :: CHAINExample ShelleyEra
poolLifetime11 :: CHAINExample ShelleyEra
poolLifetime11 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx10 Block (BHeader MockCrypto) ShelleyEra
blockEx11 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right (ChainState ShelleyEra -> ChainState ShelleyEra
forall era. EraGov era => ChainState era -> ChainState era
C.solidifyProposals ChainState ShelleyEra
expectedStEx11))
epoch5Nonce :: Nonce
epoch5Nonce :: Nonce
epoch5Nonce =
ChainState ShelleyEra -> Nonce
forall era. ChainState era -> Nonce
chainCandidateNonce ChainState ShelleyEra
expectedStEx11
Nonce -> Nonce -> Nonce
⭒ HashHeader -> Nonce
hashHeaderToNonce (BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx8)
blockEx12 :: Block (BHeader MockCrypto) ShelleyEra
blockEx12 :: Block (BHeader MockCrypto) ShelleyEra
blockEx12 =
HashHeader
-> AllIssuerKeys MockCrypto GenesisDelegate
-> [Tx TopTx ShelleyEra]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert MockCrypto
-> Block (BHeader MockCrypto) ShelleyEra
forall era (r :: KeyRole) c.
(Crypto c, EraBlockBody era, Signable (VRF c) (WithResult Seed),
Signable (KES c) (BHBody c)) =>
HashHeader
-> AllIssuerKeys c r
-> [Tx TopTx era]
-> SlotNo
-> BlockNo
-> Nonce
-> NatNonce
-> UnitInterval
-> Word
-> Word
-> OCert c
-> Block (BHeader c) era
mkBlockFakeVRF
(BHeader MockCrypto -> HashHeader
forall c. BHeader c -> HashHeader
bhHash (BHeader MockCrypto -> HashHeader)
-> BHeader MockCrypto -> HashHeader
forall a b. (a -> b) -> a -> b
$ Block (BHeader MockCrypto) ShelleyEra -> BHeader MockCrypto
forall h era. Block h era -> h
blockHeader Block (BHeader MockCrypto) ShelleyEra
blockEx11)
(forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
510)
[]
(Word64 -> SlotNo
SlotNo Word64
510)
(Word64 -> BlockNo
BlockNo Word64
12)
Nonce
epoch5Nonce
(Natural -> NatNonce
NatNonce Natural
12)
UnitInterval
forall a. Bounded a => a
minBound
Word
25
Word
25
(AllIssuerKeys MockCrypto GenesisDelegate
-> Word64 -> KESPeriod -> OCert MockCrypto
forall c (r :: KeyRole).
Crypto c =>
AllIssuerKeys c r -> Word64 -> KESPeriod -> OCert c
mkOCert (forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
510) Word64
3 (Word -> KESPeriod
KESPeriod Word
25))
snapEx12 :: SnapShot
snapEx12 :: SnapShot
snapEx12 =
ActiveStake -> [StakePoolParams] -> SnapShot
forall (f :: * -> *).
Foldable f =>
ActiveStake -> f StakePoolParams -> SnapShot
mkSnapShotFromStakePoolParams
( VMap VB VB (Credential Staking) StakeWithDelegation -> ActiveStake
ActiveStake
( [(Credential Staking, StakeWithDelegation)]
-> VMap VB VB (Credential Staking) StakeWithDelegation
forall k (kv :: * -> *) (vv :: * -> *) v.
(Ord k, Vector kv k, Vector vv v) =>
[(k, v)] -> VMap kv vv k v
VMap.fromList
[ (Credential Staking
Cast.aliceSHK, Coin -> StakeWithDelegation
mkSwd (Coin -> StakeWithDelegation) -> Coin -> StakeWithDelegation
forall a b. (a -> b) -> a -> b
$ Coin
aliceRAcnt8 Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx2Ptr Coin -> Coin -> Coin
forall a. Semigroup a => a -> a -> a
<> Coin
aliceCoinEx11Ptr)
, (Credential Staking
Cast.carlSHK, Coin -> StakeWithDelegation
mkSwd Coin
carlMIR)
]
)
)
[StakePoolParams]
poolParamsEx5
where
mkSwd :: Coin -> StakeWithDelegation
mkSwd = (NonZero (CompactForm Coin)
-> KeyHash StakePool -> StakeWithDelegation
`StakeWithDelegation` AllIssuerKeys MockCrypto StakePool -> KeyHash StakePool
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash AllIssuerKeys MockCrypto StakePool
Cast.alicePoolKeys) (NonZero (CompactForm Coin) -> StakeWithDelegation)
-> (Coin -> NonZero (CompactForm Coin))
-> Coin
-> StakeWithDelegation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CompactForm Coin -> NonZero (CompactForm Coin)
forall a. a -> NonZero a
unsafeNonZero (CompactForm Coin -> NonZero (CompactForm Coin))
-> (Coin -> CompactForm Coin) -> Coin -> NonZero (CompactForm Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Coin -> CompactForm Coin
forall a. (HasCallStack, Compactible a) => a -> CompactForm a
toCompactPartial
expectedStEx12 :: ChainState ShelleyEra
expectedStEx12 :: ChainState ShelleyEra
expectedStEx12 =
Block (BHeader MockCrypto) ShelleyEra
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(AtMostEra "Alonzo" era, EraGov era) =>
Block (BHeader MockCrypto) era -> ChainState era -> ChainState era
C.newEpoch Block (BHeader MockCrypto) ShelleyEra
blockEx12
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SnapShot -> Coin -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era. SnapShot -> Coin -> ChainState era -> ChainState era
C.newSnapshot SnapShot
snapEx12 (Integer -> Coin
Coin Integer
11)
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RewardUpdate -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
RewardUpdate -> ChainState era -> ChainState era
C.applyRewardUpdate RewardUpdate
rewardUpdateEx11
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash BlockIssuer
-> Word64 -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
KeyHash BlockIssuer -> Word64 -> ChainState era -> ChainState era
C.setOCertCounter KeyHash BlockIssuer
forall {r' :: KeyRole}. KeyHash r'
coreNodeHK Word64
3
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> (ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra
-> ChainState ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StakePoolParams -> ChainState ShelleyEra -> ChainState ShelleyEra
forall era.
(EraGov era, EraCertState era) =>
StakePoolParams -> ChainState era -> ChainState era
C.reapPool StakePoolParams
Cast.aliceStakePoolParams
(ChainState ShelleyEra -> ChainState ShelleyEra)
-> ChainState ShelleyEra -> ChainState ShelleyEra
forall a b. (a -> b) -> a -> b
$ ChainState ShelleyEra
expectedStEx11
where
coreNodeHK :: KeyHash r'
coreNodeHK = KeyHash GenesisDelegate -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole (KeyHash GenesisDelegate -> KeyHash r')
-> (AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash GenesisDelegate)
-> AllIssuerKeys MockCrypto GenesisDelegate
-> KeyHash r'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash GenesisDelegate
forall c (r :: KeyRole). AllIssuerKeys c r -> KeyHash r
aikColdKeyHash (AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r')
-> AllIssuerKeys MockCrypto GenesisDelegate -> KeyHash r'
forall a b. (a -> b) -> a -> b
$ forall era.
(HasCallStack, EraPParams era) =>
PParams era -> Word64 -> AllIssuerKeys MockCrypto GenesisDelegate
coreNodeKeysBySchedule @ShelleyEra PParams ShelleyEra
forall era.
(EraPParams era, AtMostEra "Mary" era, AtMostEra "Alonzo" era) =>
PParams era
ppEx Word64
510
poolLifetime12 :: CHAINExample ShelleyEra
poolLifetime12 :: CHAINExample ShelleyEra
poolLifetime12 = ChainState ShelleyEra
-> Block (BHeader MockCrypto) ShelleyEra
-> Either
(NonEmpty (PredicateFailure (CHAIN ShelleyEra)))
(ChainState ShelleyEra)
-> CHAINExample ShelleyEra
forall era.
ChainState era
-> Block (BHeader MockCrypto) era
-> Either
(NonEmpty (PredicateFailure (CHAIN era))) (ChainState era)
-> CHAINExample era
CHAINExample ChainState ShelleyEra
expectedStEx11 Block (BHeader MockCrypto) ShelleyEra
blockEx12 (ChainState ShelleyEra
-> Either
(NonEmpty (TestChainPredicateFailure ShelleyEra))
(ChainState ShelleyEra)
forall a b. b -> Either a b
Right ChainState ShelleyEra
expectedStEx12)
poolLifetimeExample :: TestTree
poolLifetimeExample :: SpecWith ()
poolLifetimeExample =
[Char] -> [SpecWith ()] -> SpecWith ()
forall a. HasCallStack => [Char] -> [SpecWith a] -> SpecWith a
testGroup
[Char]
"pool lifetime"
[ HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"initial registrations" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime1
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"delegate stake and create reward update" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime2
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"new epoch changes" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime3
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"second reward update" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime4
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"nonempty pool distr" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime5
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"decentralized block" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime6
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"prelude to the first nontrivial rewards" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime7
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"create a nontrivial rewards" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime8
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"apply a nontrivial rewards" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime9
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"drain staking address and deregister" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime10
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"stage stake pool retirement" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime11
, HasCallStack => [Char] -> Expectation -> SpecWith ()
[Char] -> Expectation -> SpecWith ()
testCase [Char]
"reap stake pool" (Expectation -> SpecWith ()) -> Expectation -> SpecWith ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => CHAINExample ShelleyEra -> Expectation
CHAINExample ShelleyEra -> Expectation
testCHAINExample CHAINExample ShelleyEra
poolLifetime12
]