bolt1

Base Lightning protocol, per BOLT #1 (docs.ppad.tech/bolt1).
git clone git://git.ppad.tech/bolt1.git
Log | Files | Refs | README | LICENSE

Fixtures.hs (1393B)


      1 {-# LANGUAGE OverloadedStrings #-}
      2 
      3 module Fixtures where
      4 
      5 import qualified Data.ByteString as BS
      6 import Data.Maybe (fromMaybe)
      7 import Lightning.Protocol.BOLT1
      8 import qualified Lightning.Protocol.BOLT9 as BOLT9
      9 
     10 {-# NOINLINE tlvs #-}
     11 tlvs :: TlvStream
     12 tlvs = fromMaybe empty_tlv_stream $
     13   tlv_stream [ TlvRecord t (BS.replicate 32 0x2a) | t <- [1, 3 .. 41] ]
     14 
     15 {-# NOINLINE tlvs_bytes #-}
     16 tlvs_bytes :: BS.ByteString
     17 tlvs_bytes = encode_tlv_stream tlvs
     18 
     19 {-# NOINLINE init_msg #-}
     20 init_msg :: Message
     21 init_msg = MsgInit Init {
     22     init_global_features = BOLT9.parse ""
     23   , init_features        = BOLT9.parse "\x02\xaa\x52\x69\xa1"
     24   , init_networks        = fmap pure (chain_hash (BS.replicate 32 0x6f))
     25   , init_remote_addr     = Just "\x01\x7f\x00\x00\x01\x26\x07"
     26   , init_tlvs            = empty_tlv_stream
     27   }
     28 
     29 {-# NOINLINE ping_msg #-}
     30 ping_msg :: Message
     31 ping_msg = MsgPing (Ping 128 (BS.replicate 64 0) empty_tlv_stream)
     32 
     33 {-# NOINLINE error_msg #-}
     34 error_msg :: Message
     35 error_msg = MsgError (Error all_channels (BS.replicate 128 0x61) tlvs)
     36 
     37 wire :: Message -> BS.ByteString
     38 wire m = either (const BS.empty) id (encode_message m)
     39 
     40 {-# NOINLINE init_bytes #-}
     41 init_bytes :: BS.ByteString
     42 init_bytes = wire init_msg
     43 
     44 {-# NOINLINE ping_bytes #-}
     45 ping_bytes :: BS.ByteString
     46 ping_bytes = wire ping_msg
     47 
     48 {-# NOINLINE error_bytes #-}
     49 error_bytes :: BS.ByteString
     50 error_bytes = wire error_msg