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
- data MockChainReturn a = MockChainReturn {}
- runMockChainTRaw :: Monad m => MockChainT m a -> m (MockChainReturn a)
- runMockChainTFrom :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a)
- runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a)
- runMockChainFrom :: InitialDistribution -> MockChain a -> 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
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
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
MockChainError
s.
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
data MockChainReturn a 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
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 # |
runMockChainTRaw :: Monad m => MockChainT m a -> m (MockChainReturn a) Source #
Runs a MockChainT
from a default MockChainState
runMockChainTFrom :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a) Source #
Runs a MockChainT
from an initial MockChainState
built from a given
InitialDistribution
.
runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a) Source #
Executes a MockChainT
from the canonical initial state and environment.
runMockChainFrom :: InitialDistribution -> MockChain a -> MockChainReturn a Source #
runMockChain :: MockChain a -> MockChainReturn a Source #
See runMockChainT