Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Cooked.MockChain.Direct
Description
This module provides a direct (not 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
- newtype MockChainT m a = MockChainT {
- unMockChain :: StateT MockChainSt (ExceptT MockChainError (WriterT [MockChainLogEntry] m)) a
- 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), [MockChainLogEntry])
- 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 call validator scripts directly, without the need for all the
complexity the Contract
monad introduces.
Running a MockChain
produces a UtxoState
, a simplified view on
UtxoIndex
, which we also keep in our state.
newtype MockChainT m a Source #
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 #
type MockChainReturn a b = (Either MockChainError (a, b), [MockChainLogEntry]) Source #
mapMockChainT :: (m (MockChainReturn a MockChainSt) -> n (MockChainReturn b MockChainSt)) -> MockChainT m a -> MockChainT n b Source #
runMockChainTRaw :: MockChainT m a -> m (MockChainReturn a MockChainSt) Source #
runMockChainTFrom :: Monad m => InitialDistribution -> MockChainT m a -> m (MockChainReturn a UtxoState) Source #
Executes a MockChainT
from an initial state set up with the given initial
value distribution. Similar to runMockChainT
, uses the default
environment. Returns a UtxoState
instead of a MockChainSt
. If you need
the later, use runMockChainTRaw
runMockChainT :: Monad m => MockChainT m a -> m (MockChainReturn a UtxoState) Source #
Executes a MockChainT
from the canonical initial state and environment.
The canonical environment uses the default SlotConfig
runMockChainFrom :: InitialDistribution -> MockChain a -> MockChainReturn a UtxoState Source #
runMockChain :: MockChain a -> MockChainReturn a UtxoState Source #
See runMockChainT