Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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 :: Monad m => (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 :: Monad m => MockChainSt -> 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)
- runMockChainRaw :: MockChain a -> MockChainReturn a MockChainSt
- 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 #
MockChainT | |
|
Instances
type MockChain = MockChainT Identity Source #
combineMockChainT :: Monad m => (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 :: Monad m => MockChainSt -> MockChainT m a -> m (MockChainReturn a MockChainSt) Source #
Executes a MockChainT
from some initial state; does not convert the
MockChainSt
into a UtxoState
.
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
and
Cooked.Wallet.wallet 1
as the sole wallet signing transactions.
runMockChainRaw :: MockChain a -> MockChainReturn a MockChainSt Source #
See runMockChainTRaw
runMockChainFrom :: InitialDistribution -> MockChain a -> MockChainReturn a UtxoState Source #
runMockChain :: MockChain a -> MockChainReturn a UtxoState Source #
See runMockChainT