bolt2

Lightning peer protocol, per BOLT #2 (docs.ppad.tech/bolt2).
git clone git://git.ppad.tech/bolt2.git
Log | Files | Refs | README | LICENSE

CHANGELOG (1853B)


      1 # Changelog
      2 
      3 - 0.1.0 (2026-10-10)
      4   * A substantial rewrite against ppad-bolt1 0.1.0, with breaking
      5     changes throughout:
      6 
      7     * The API is exported from Lightning.Protocol.BOLT2 alone, and uses
      8       snake_case names, with record fields prefixed by their message's
      9       name (e.g. encode_open_channel, open_channel_funding_satoshis).
     10 
     11     * Payload decoders have type ByteString -> Either DecodeError a and
     12       consume their whole input; encoders return Either EncodeError
     13       ByteString only where they can fail. A Message type, with
     14       message_type, encode_message and decode_message, handles complete
     15       messages.
     16 
     17     * Every message has a TLV stream. Known TLV records are typed fields
     18       (channel_type is a ppad-bolt9 feature vector), unknown even records
     19       are rejected, and unknown odd records are kept, so encoding a
     20       decoded message reproduces its bytes.
     21 
     22     * Amounts use ppad-bolt1's bounded Satoshi and MilliSatoshi, except
     23       max_htlc_value_in_flight_msat. Types from ppad-bolt1 and ppad-tx
     24       are no longer re-exported.
     25 
     26     * OnionPacket is renamed OnionRoutingPacket and checks its length;
     27       ScriptPubKey and Witness are bounded at 65535 bytes; FeatureBits,
     28       Initiator and MsgType are removed; OnionHash, AttributionData,
     29       FeeRange and NextFunding are added.
     30 
     31   * Catches up with BOLT #2 as of lightning/bolts 1aadb719:
     32     channel_reestablish's next_funding moves to TLV type 1, and
     33     update_fulfill_htlc (fulfillment_payload), commitment_signed
     34     (funding_txid), tx_add_input and tx_signatures gain TLV streams.
     35 
     36   * Fixes decoding, which accepted unknown even TLV types, didn't check
     37     known TLV values, point prefixes or amounts, and ignored trailing
     38     bytes on some messages; and encoding, which accepted malformed
     39     field values.
     40 
     41 - 0.0.1 (2026-04-18)
     42   * Initial release.