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 (1305B)


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