Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Cooked.MockChain.Direct
Description
This module provides a direct (as opposed to Staged
)
implementation of the MonadBlockChain
specification. This rely on the
emulator from cardano-node-emulator for transaction validation, although we
have our own internal state. This choice might be revised in the future.
Synopsis
- data MockChainBook = MockChainBook {}
- newtype MockChainT m a = MockChainT {}
- type MockChain = MockChainT Identity
- combineMockChainT :: (forall a. m a -> m a -> m a) -> MockChainT m x -> MockChainT m x -> MockChainT m x
- type MockChainReturn a b = (Either MockChainError (a, b), MockChainBook)
- mapMockChainT :: (m (MockChainReturn a MockChainSt) -> n (MockChainReturn b MockChainSt)) -> MockChainT m a -> MockChainT n b
- runMockChainTRaw :: MockChainT m a -> m (MockChainReturn a MockChainSt)
- runMockChainTFrom :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a UtxoState)
- runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a UtxoState)
- runMockChainFrom :: InitialDistribution -> MockChain a -> MockChainReturn a UtxoState
- runMockChain :: MockChain a -> MockChainReturn a UtxoState
Direct Emulation
The MockChainT monad provides a direct emulator; that is, it gives us a simple way to run a full validation process directly, without relying on a deployed node. While simulated, the validation is performed by the cardano-ledger code, thus ensuring similar results on the real chain.
A MockChain
:
- stores and updates a
MockChainSt
- returns a
UtxoState
when run - emits entries in a
MockChainBook
data MockChainBook Source #
This represents elements that can be emitted throughout a MockChain
run. These elements are either log entries corresponding to internal events
worth logging, or aliases for hashables corresponding to elements users
wishes to be properly displayed when printed with
PrettyCooked
Constructors
MockChainBook | |
Fields
|
Instances
newtype MockChainT m a Source #
A MockChainT
builds up a stack of monads on top of a given monad
m
to reflect the requirements of the simulation.
Constructors
MockChainT | |
Fields |
Instances
type MockChain = MockChainT Identity Source #
combineMockChainT :: (forall a. m a -> m a -> m a) -> MockChainT m x -> MockChainT m x -> MockChainT m x Source #
Combines two MockChainT
together
type MockChainReturn a b = (Either MockChainError (a, b), MockChainBook) Source #
A generic return type for a MockChain
run
mapMockChainT :: (m (MockChainReturn a MockChainSt) -> n (MockChainReturn b MockChainSt)) -> MockChainT m a -> MockChainT n b Source #
Transforms a MockChainT
into another one
runMockChainTRaw :: MockChainT m a -> m (MockChainReturn a MockChainSt) Source #
Runs a MockChainT
from a default MockChainSt
runMockChainTFrom :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a UtxoState) Source #
Runs a MockChainT
from an initial MockChainSt
built from a given
InitialDistribution
. Returns a UtxoState
.
runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a UtxoState) Source #
Executes a MockChainT
from the canonical initial state and environment.
runMockChainFrom :: InitialDistribution -> MockChain a -> MockChainReturn a UtxoState Source #
runMockChain :: MockChain a -> MockChainReturn a UtxoState Source #
See runMockChainT