| 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 where
- 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
- data MockChainReturn a where
- MockChainReturn :: {..} -> MockChainReturn a
- type RawMockChainReturn a = ((Either MockChainError a, MockChainState), MockChainBook)
- unRawMockChainReturn :: RawMockChainReturn a -> MockChainReturn a
- data MockChainConf a b where
- MockChainConf :: {..} -> MockChainConf a b
- initDistConf :: InitialDistribution -> MockChainConf a (MockChainReturn a)
- mockChainStateConf :: MockChainState -> MockChainConf a MockChainState
- runMockChainTFromConf :: Monad m => MockChainConf a b -> MockChainT m a -> m b
- runMockChainFromConf :: MockChainConf a b -> MockChain a -> b
- runMockChainTFromInitDist :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a)
- runMockChainFromInitDist :: InitialDistribution -> MockChain a -> MockChainReturn a
- runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a)
- runMockChain :: MockChain a -> MockChainReturn a
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
MockChainState - returns a
UtxoStatewhen run - emits entries in a
MockChainBook
data MockChainBook where 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
| Monoid MockChainBook Source # | |
Defined in Cooked.MockChain.Direct Methods mempty :: MockChainBook # mappend :: MockChainBook -> MockChainBook -> MockChainBook # mconcat :: [MockChainBook] -> MockChainBook # | |
| Semigroup MockChainBook Source # | |
Defined in Cooked.MockChain.Direct Methods (<>) :: MockChainBook -> MockChainBook -> MockChainBook # sconcat :: NonEmpty MockChainBook -> MockChainBook # stimes :: Integral b => b -> MockChainBook -> MockChainBook # | |
| Monad m => MonadWriter MockChainBook (MockChainT m) Source # | |
Defined in Cooked.MockChain.Direct Methods writer :: (a, MockChainBook) -> MockChainT m a # tell :: MockChainBook -> MockChainT m () # listen :: MockChainT m a -> MockChainT m (a, MockChainBook) # pass :: MockChainT m (a, MockChainBook -> MockChainBook) -> MockChainT m a # | |
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. It writes a MockChainBook,
updates and reads from a MockChainState and throws possible
MockChainErrors.
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
MockChain return types
data MockChainReturn a where Source #
The returned type when running a MockChainT. This is both a reorganizing
and filtering of the natural returned type ((Either MockChainError a,
MockChainState), MockChainBook), which is much easier to query.
Constructors
| MockChainReturn | |
Fields
| |
Instances
| Functor MockChainReturn Source # | |
Defined in Cooked.MockChain.Direct Methods fmap :: (a -> b) -> MockChainReturn a -> MockChainReturn b # (<$) :: a -> MockChainReturn b -> MockChainReturn a # | |
| Show a => PrettyCooked (MockChainReturn a) Source # | |
Defined in Cooked.Pretty.MockChain Methods prettyCookedOpt :: PrettyCookedOpts -> MockChainReturn a -> DocCooked Source # prettyCooked :: MockChainReturn a -> DocCooked Source # | |
| Show a => PrettyCooked [MockChainReturn a] Source # | |
Defined in Cooked.Pretty.MockChain Methods prettyCookedOpt :: PrettyCookedOpts -> [MockChainReturn a] -> DocCooked Source # prettyCooked :: [MockChainReturn a] -> DocCooked Source # | |
type RawMockChainReturn a = ((Either MockChainError a, MockChainState), MockChainBook) Source #
Raw return type of running a MockChainT
unRawMockChainReturn :: RawMockChainReturn a -> MockChainReturn a Source #
Building a MockChainReturn from a RawMockChainReturn
MockChain configurations
data MockChainConf a b where Source #
Configuration to run a MockChainT
Constructors
| MockChainConf | |
Fields
| |
initDistConf :: InitialDistribution -> MockChainConf a (MockChainReturn a) Source #
A configuration with a default initial state, a given distribution,
returning a MockChainReturn
mockChainStateConf :: MockChainState -> MockChainConf a MockChainState Source #
A configuration with a given initial MockChainState, a default initial
distribution, returning the final MockChainState
MockChain runs
runMockChainTFromConf :: Monad m => MockChainConf a b -> MockChainT m a -> m b Source #
Runs a MockChainT using a certain configuration
runMockChainFromConf :: MockChainConf a b -> MockChain a -> b Source #
Runs a MockChain using a certain configuration
runMockChainTFromInitDist :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a) Source #
Runs a MockChainT from an initial InitialDistribution
runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a) Source #
Uses runMockChainTFromInitDist with a default InitialDistribution
runMockChain :: MockChain a -> MockChainReturn a Source #
Uses runMockChainFromInitDist with a default InitialDistribution