module Data.Blockchain.Mining.Blockchain
( mineBlockchain
) where
import Data.Monoid ((<>))
import qualified Data.Blockchain as Blockchain
import Data.Blockchain.Mining.Block
mineBlockchain :: Blockchain.BlockchainConfig -> IO (Blockchain.Blockchain Blockchain.Validated)
mineBlockchain config = either throwValidationError id <$> do
genesisBlock <- mineGenesisBlock config
let node = Blockchain.BlockchainNode genesisBlock mempty
chain = Blockchain.construct config node
return (Blockchain.validate chain)
where
throwValidationError e = error $ "Unexpected error creating blockchain: " <> show e