packages feed

ethereum-client-haskell-0.0.4: queryEth_src/State.hs

{-# 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