bip32

Pure Haskell BIP32 hierarchical deterministic wallets (docs.ppad.tech/bip32).
git clone git://git.ppad.tech/bip32.git
Log | Files | Refs | README | LICENSE

Main.hs (1359B)


      1 {-# OPTIONS_GHC -fno-warn-orphans #-}
      2 {-# LANGUAGE BangPatterns #-}
      3 {-# LANGUAGE OverloadedStrings #-}
      4 {-# LANGUAGE StandaloneDeriving #-}
      5 
      6 module Main where
      7 
      8 import Criterion.Main
      9 import Crypto.HDKey.BIP32
     10 import Control.DeepSeq
     11 import Crypto.Curve.Secp256k1 as S
     12 
     13 instance NFData S.Projective
     14 
     15 instance NFData XPub where
     16   rnf (XPub (X a b)) = a `deepseq` b `deepseq` ()
     17 
     18 instance NFData XPrv where
     19   rnf (XPrv (X a b)) = a `deepseq` b `deepseq` ()
     20 
     21 instance NFData HDKey where
     22   rnf (HDKey a b c d) = a `deepseq` b `deepseq` c `deepseq` d `deepseq` ()
     23 
     24 main :: IO ()
     25 main = defaultMain [
     26     bgroup "ppad-bip32" [
     27         bench_master
     28       , bench_derive_pub
     29       , bench_derive_priv
     30       , bench_xpub
     31       , bench_xprv
     32       , bench_parse
     33     ]
     34   ]
     35 
     36 m :: HDKey
     37 m = case master "my super entropic entropy" of
     38   Just !s -> s
     39   _ -> error "bang"
     40 
     41 bench_master :: Benchmark
     42 bench_master = bench "master" $ nf master "my super entropic entropy"
     43 
     44 bench_derive_pub :: Benchmark
     45 bench_derive_pub = bench "derive_child_pub" $ nf (derive_child_pub m) 0
     46 
     47 bench_derive_priv :: Benchmark
     48 bench_derive_priv = bench "derive_child_priv" $ nf (derive_child_priv m) 0
     49 
     50 bench_xpub :: Benchmark
     51 bench_xpub = bench "xpub" $ nf xpub m
     52 
     53 bench_xprv :: Benchmark
     54 bench_xprv = bench "xprv" $ nf xprv m
     55 
     56 bench_parse :: Benchmark
     57 bench_parse = bench "parse" $ nf parse (xprv m)
     58