bolt7

Routing gossip protocol, per BOLT #7 (docs.ppad.tech/bolt7).
git clone git://git.ppad.tech/bolt7.git
Log | Files | Refs | README | LICENSE

Main.hs (2319B)


      1 -- |
      2 -- Module: Main
      3 -- Copyright: (c) 2025 Jared Tobin
      4 -- License: MIT
      5 -- Maintainer: Jared Tobin <jared@ppad.tech>
      6 --
      7 -- Criterion timing benchmarks for ppad-bolt7.
      8 
      9 module Main where
     10 
     11 import Criterion.Main
     12 import Fixtures
     13 import Lightning.Protocol.BOLT7
     14 import System.Exit (exitFailure)
     15 
     16 main :: IO ()
     17 main = case fixtures of
     18   Nothing -> putStrLn "fixtures failed to build" >> exitFailure
     19   Just f  -> defaultMain [
     20       bgroup "decode" [
     21         bench "channel_announcement" $
     22           nf decode_channel_announcement (f_ann_bytes f)
     23       , bench "node_announcement" $
     24           nf decode_node_announcement (f_node_bytes f)
     25       , bench "channel_update" $ nf decode_channel_update (f_upd_bytes f)
     26       , bench "channel_update (decode_message)" $
     27           nf (decode_message 258) (f_upd_bytes f)
     28       , bench "query_short_channel_ids (1000 ids, flags)" $
     29           nf decode_query_short_channel_ids (f_qsci_bytes f)
     30       , bench "reply_channel_range (1000 ids, timestamps, checksums)" $
     31           nf decode_reply_channel_range (f_rcr_bytes f)
     32       ]
     33     , bgroup "encode" [
     34         bench "channel_announcement" $
     35           nf encode_channel_announcement (f_ann f)
     36       , bench "node_announcement" $ nf encode_node_announcement (f_node f)
     37       , bench "channel_update" $ nf encode_channel_update (f_upd f)
     38       , bench "query_short_channel_ids (1000 ids, flags)" $
     39           nf encode_query_short_channel_ids (f_qsci f)
     40       , bench "reply_channel_range (1000 ids, timestamps, checksums)" $
     41           nf encode_reply_channel_range (f_rcr f)
     42       ]
     43     , bgroup "hash" [
     44         bench "channel_announcement_hash" $
     45           nf channel_announcement_hash (f_ann f)
     46       , bench "channel_update_hash" $ nf channel_update_hash (f_upd f)
     47       , bench "channel_update_checksum" $
     48           nf channel_update_checksum (f_upd f)
     49       ]
     50     , bgroup "verify" [
     51         bench "verify_channel_announcement" $
     52           nf verify_channel_announcement (f_ann f)
     53       , bench "verify_node_announcement" $
     54           nf verify_node_announcement (f_node f)
     55       , bench "verify_channel_update" $
     56           nf (verify_channel_update (f_upd_key f)) (f_upd f)
     57       ]
     58     , bgroup "validate" [
     59         bench "validate_reply_channel_range (1000 ids)" $
     60           nf validate_reply_channel_range (f_rcr f)
     61       ]
     62     ]