Created
August 10, 2014 00:35
-
-
Save jprupp/31d783ad8f622ed8ca39 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-# LANGUAGE OverloadedStrings #-} | |
import Control.Concurrent | |
import Control.Concurrent.Async | |
import Control.DeepSeq | |
import Control.Monad | |
import Control.Monad.Trans | |
import Data.Aeson.Encode.Pretty | |
import Data.Conduit | |
import qualified Data.ByteString.Lazy.Char8 as L8 | |
import qualified Data.Conduit.List as CL | |
import Data.Conduit.Network | |
import Data.Maybe | |
import Network.JsonRpc | |
import Network.Haskoin.Crypto | |
import Network.Haskoin.Stratum | |
import System.Environment | |
type StratumCond = | |
AppConduits StratumRequest () () () StratumNotif StratumResult IO | |
main :: IO () | |
main = tcpClient V1 False cs $ \(src, snk) -> do | |
args <- liftIO getArgs | |
when (null args) $ error "provide bitcoin addresses" | |
let as = map (StratumSubAddr . f . base58ToAddr) args | |
deepseq as $ withAsync (c (src, snk) as) $ \a -> do | |
src $= CL.mapM_ (L8.putStrLn . encodePretty . incomingMsg) | |
$$ CL.sinkNull | |
putStrLn "done with source" | |
wait a | |
where | |
cs = clientSettings 50001 "galactica.xeno-genesis.com" | |
f = fromMaybe (error "bad bitcoin address") | |
g x = do | |
threadDelay 200000 | |
putStrLn $ "> " ++ addrToBase58 (stratumReqAddr x) | |
return $ MsgRequest (buildRequest V1 x) | |
c :: StratumCond -> [StratumRequest] -> IO () | |
c (_, snk) as = do | |
CL.sourceList as $= CL.mapM g $$ snk | |
putStrLn "done with sink" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment