{-# LANGUAGE OverloadedStrings #-} module State ( doit ) where import Control.Monad.IO.Class import Control.Monad.State import qualified Data.ByteString as B import qualified Data.ByteString.Base16 as B16 import qualified Data.ByteString.Char8 as BC import Data.Functor import Data.List import qualified Database.LevelDB as DB import System.Environment import Text.PrettyPrint.ANSI.Leijen hiding ((<$>)) import qualified Data.NibbleString as N import Blockchain.Data.RLP import Blockchain.Context import Blockchain.ExtDBs import Blockchain.Format formatKV::(N.NibbleString, RLPObject)->Doc formatKV (key, val) = pretty key <> text ": " <> pretty (rlpDeserialize $ rlpDecode val) showVals::SHAPtr->ContextM () showVals sr = do setStateRoot sr kvs <- getKeyVals "" --liftIO $ putStrLn $ displayS (renderPretty 1.0 200 $ vsep $ formatKV <$> kvs) "" liftIO $ putStrLn $ displayS (renderPretty 1.0 200 $ vsep $ formatKV <$> filter (filterUnnecessary . fst) kvs) "" doit::String->SHAPtr->IO() doit theType sr = do DB.runResourceT $ do cxt <- openDBs theType _ <- liftIO $ runStateT (showVals sr) cxt return () filterUnnecessary::N.NibbleString->Bool filterUnnecessary "1a26338f0d905e295fccb71fa9ea849ffa12aaf4" = False filterUnnecessary "2ef47100e0787b915105fd5e3f4ff6752079d5cb" = False filterUnnecessary "51ba59315b3a95761d0863b05ccc7a7f54703d99" = False filterUnnecessary "6c386a4b26f73c802f34673f7248bb118f97424a" = False filterUnnecessary "b9c015918bdaba24b4ff057a92a3873d6eb201be" = False filterUnnecessary "cd2a3d9f938e13cd947ec05abc7fe734df8dd826" = False filterUnnecessary "e4157b34ea9615cfbde6b4fda419828124b70c78" = False filterUnnecessary "e6716f9544a56c530d868e4bfbacb172315bdead" = False filterUnnecessary _ = True