ppad-bolt2-0.0.1: Peer protocol per BOLT #2
Copyright(c) 2025 Jared Tobin
LicenseMIT
MaintainerJared Tobin <jared@ppad.tech>
Safe HaskellNone
LanguageHaskell2010

Lightning.Protocol.BOLT2.Types

Description

Core types for BOLT #2 peer protocol.

This module provides newtypes for identifiers, amounts, hashes, and keys used in the Lightning Network peer protocol.

Synopsis

Identifiers

data ChannelId Source #

A 32-byte channel identifier.

Derived from the funding transaction by XORing funding_txid with funding_output_index (big-endian, altering the last 2 bytes).

For v2 channels, derived as SHA256(lesser-revocation-basepoint || greater-revocation-basepoint).

Instances

Instances details
NFData ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: ChannelId -> () #

Generic ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep ChannelId 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChannelId = D1 ('MetaData "ChannelId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ChannelId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChannelId = D1 ('MetaData "ChannelId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ChannelId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

channelId :: ByteString -> Maybe ChannelId Source #

Construct a ChannelId from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

>>> channelId (BS.replicate 32 0x00)
Just (ChannelId ...)
>>> channelId (BS.replicate 31 0x00)
Nothing

unChannelId :: ChannelId -> ByteString Source #

Extract the underlying ByteString from a ChannelId.

Amounts

newtype Satoshis Source #

Amount in satoshis (1/100,000,000 of a bitcoin).

Stored as a Word64. Maximum valid value is 21,000,000 * 100,000,000 = 2,100,000,000,000,000 satoshis.

Constructors

Satoshis 

Fields

Instances

Instances details
NFData Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: Satoshis -> () #

Enum Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Generic Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep Satoshis 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Satoshis = D1 ('MetaData "Satoshis" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Satoshis" 'PrefixI 'True) (S1 ('MetaSel ('Just "unSatoshis") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

Methods

from :: Satoshis -> Rep Satoshis x #

to :: Rep Satoshis x -> Satoshis #

Num Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Integral Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Real Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Show Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Satoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Satoshis = D1 ('MetaData "Satoshis" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Satoshis" 'PrefixI 'True) (S1 ('MetaSel ('Just "unSatoshis") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

newtype MilliSatoshis Source #

Amount in millisatoshis (1/1000 of a satoshi).

Stored as a Word64. Used for HTLC amounts and channel balances.

Constructors

MilliSatoshis 

Instances

Instances details
NFData MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: MilliSatoshis -> () #

Enum MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Generic MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep MilliSatoshis 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep MilliSatoshis = D1 ('MetaData "MilliSatoshis" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "MilliSatoshis" 'PrefixI 'True) (S1 ('MetaSel ('Just "unMilliSatoshis") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))
Num MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Integral MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Real MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Show MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep MilliSatoshis Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep MilliSatoshis = D1 ('MetaData "MilliSatoshis" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "MilliSatoshis" 'PrefixI 'True) (S1 ('MetaSel ('Just "unMilliSatoshis") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

satoshisToMsat :: Satoshis -> MilliSatoshis Source #

Convert Satoshis to MilliSatoshis.

>>> satoshisToMsat (Satoshis 1)
MilliSatoshis 1000

msatToSatoshis :: MilliSatoshis -> Satoshis Source #

Convert MilliSatoshis to Satoshis, rounding down.

>>> msatToSatoshis (MilliSatoshis 1500)
Satoshis 1

Cryptographic types

data Signature Source #

A 64-byte compact ECDSA signature.

Used for commitment transaction signatures, HTLC signatures, and closing transaction signatures.

Instances

Instances details
NFData Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: Signature -> () #

Generic Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep Signature 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Signature = D1 ('MetaData "Signature" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Signature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Signature Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Signature = D1 ('MetaData "Signature" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Signature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

signature :: ByteString -> Maybe Signature Source #

Construct a Signature from a 64-byte ByteString.

Returns Nothing if the input is not exactly 64 bytes.

unSignature :: Signature -> ByteString Source #

Extract the underlying ByteString from a Signature.

data Point Source #

A 33-byte compressed secp256k1 public key.

Used for funding pubkeys, basepoints, and per-commitment points.

Instances

Instances details
NFData Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: Point -> () #

Generic Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep Point 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Point = D1 ('MetaData "Point" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Point" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

Methods

from :: Point -> Rep Point x #

to :: Rep Point x -> Point #

Show Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

showsPrec :: Int -> Point -> ShowS #

show :: Point -> String #

showList :: [Point] -> ShowS #

Eq Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

(==) :: Point -> Point -> Bool #

(/=) :: Point -> Point -> Bool #

Ord Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

compare :: Point -> Point -> Ordering #

(<) :: Point -> Point -> Bool #

(<=) :: Point -> Point -> Bool #

(>) :: Point -> Point -> Bool #

(>=) :: Point -> Point -> Bool #

max :: Point -> Point -> Point #

min :: Point -> Point -> Point #

type Rep Point Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Point = D1 ('MetaData "Point" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Point" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

point :: ByteString -> Maybe Point Source #

Construct a Point from a 33-byte ByteString.

Returns Nothing if the input is not exactly 33 bytes.

Note: This only validates the length. Use secp256k1 libraries for full point validation.

unPoint :: Point -> ByteString Source #

Extract the underlying ByteString from a Point.

data PaymentHash Source #

A 32-byte SHA256 payment hash.

Used to identify HTLCs. The preimage that hashes to this value is required to claim the HTLC.

Instances

Instances details
NFData PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: PaymentHash -> () #

Generic PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep PaymentHash 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentHash = D1 ('MetaData "PaymentHash" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "PaymentHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentHash = D1 ('MetaData "PaymentHash" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "PaymentHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

paymentHash :: ByteString -> Maybe PaymentHash Source #

Construct a PaymentHash from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

unPaymentHash :: PaymentHash -> ByteString Source #

Extract the underlying ByteString from a PaymentHash.

data PaymentPreimage Source #

A 32-byte payment preimage.

The SHA256 hash of this value produces the corresponding PaymentHash. Knowledge of the preimage allows claiming an HTLC.

Instances

Instances details
NFData PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: PaymentPreimage -> () #

Generic PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep PaymentPreimage 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentPreimage = D1 ('MetaData "PaymentPreimage" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "PaymentPreimage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentPreimage Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep PaymentPreimage = D1 ('MetaData "PaymentPreimage" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "PaymentPreimage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

paymentPreimage :: ByteString -> Maybe PaymentPreimage Source #

Construct a PaymentPreimage from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

data Secret Source #

A 32-byte per-commitment secret.

Used in revoke_and_ack and channel_reestablish messages to revoke old commitment transactions.

Instances

Instances details
NFData Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: Secret -> () #

Generic Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep Secret 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Secret = D1 ('MetaData "Secret" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Secret" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

Methods

from :: Secret -> Rep Secret x #

to :: Rep Secret x -> Secret #

Show Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

(==) :: Secret -> Secret -> Bool #

(/=) :: Secret -> Secret -> Bool #

Ord Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Secret Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Secret = D1 ('MetaData "Secret" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "Secret" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

secret :: ByteString -> Maybe Secret Source #

Construct a Secret from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

unSecret :: Secret -> ByteString Source #

Extract the underlying ByteString from a Secret.

Transaction types

data TxId Source #

A 32-byte transaction identifier.

The double-SHA256 hash of a serialized transaction.

Instances

Instances details
NFData TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: TxId -> () #

Generic TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep TxId 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep TxId = D1 ('MetaData "TxId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "TxId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

Methods

from :: TxId -> Rep TxId x #

to :: Rep TxId x -> TxId #

Show TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

showsPrec :: Int -> TxId -> ShowS #

show :: TxId -> String #

showList :: [TxId] -> ShowS #

Eq TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

(==) :: TxId -> TxId -> Bool #

(/=) :: TxId -> TxId -> Bool #

Ord TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

compare :: TxId -> TxId -> Ordering #

(<) :: TxId -> TxId -> Bool #

(<=) :: TxId -> TxId -> Bool #

(>) :: TxId -> TxId -> Bool #

(>=) :: TxId -> TxId -> Bool #

max :: TxId -> TxId -> TxId #

min :: TxId -> TxId -> TxId #

type Rep TxId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep TxId = D1 ('MetaData "TxId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "TxId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

txId :: ByteString -> Maybe TxId Source #

Construct a TxId from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

unTxId :: TxId -> ByteString Source #

Extract the underlying ByteString from a TxId.

data Outpoint Source #

A transaction outpoint (txid + output index).

Identifies a specific output of a transaction.

Constructors

Outpoint 

Instances

Instances details
NFData Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: Outpoint -> () #

Generic Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep Outpoint 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Outpoint = D1 ('MetaData "Outpoint" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'False) (C1 ('MetaCons "Outpoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "outpointTxId") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 TxId) :*: S1 ('MetaSel ('Just "outpointVout") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Word32)))

Methods

from :: Outpoint -> Rep Outpoint x #

to :: Rep Outpoint x -> Outpoint #

Show Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Outpoint Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep Outpoint = D1 ('MetaData "Outpoint" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'False) (C1 ('MetaCons "Outpoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "outpointTxId") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 TxId) :*: S1 ('MetaSel ('Just "outpointVout") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Word32)))

data ScriptPubKey Source #

A script pubkey (output script).

Variable length; used in shutdown messages, closing transactions, etc.

Instances

Instances details
NFData ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: ScriptPubKey -> () #

Generic ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep ScriptPubKey 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ScriptPubKey = D1 ('MetaData "ScriptPubKey" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ScriptPubKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ScriptPubKey Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ScriptPubKey = D1 ('MetaData "ScriptPubKey" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ScriptPubKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

scriptPubKey :: ByteString -> ScriptPubKey Source #

Construct a ScriptPubKey from a ByteString.

Accepts any length; validation of script structure is left to higher layers.

Chain types

data ChainHash Source #

A 32-byte chain hash.

Identifies the blockchain (typically the genesis block hash). Used in open_channel to specify which chain the channel will reside on.

Instances

Instances details
NFData ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: ChainHash -> () #

Generic ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep ChainHash 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChainHash = D1 ('MetaData "ChainHash" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ChainHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChainHash Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ChainHash = D1 ('MetaData "ChainHash" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "ChainHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

chainHash :: ByteString -> Maybe ChainHash Source #

Construct a ChainHash from a 32-byte ByteString.

Returns Nothing if the input is not exactly 32 bytes.

unChainHash :: ChainHash -> ByteString Source #

Extract the underlying ByteString from a ChainHash.

data ShortChannelId Source #

A short channel identifier (8 bytes).

Encodes the block height (3 bytes), transaction index (3 bytes), and output index (2 bytes) of the funding transaction output.

This is a compact representation for referencing channels in gossip and routing.

Constructors

ShortChannelId 

Fields

Instances

Instances details
NFData ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: ShortChannelId -> () #

Generic ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep ShortChannelId 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ShortChannelId = D1 ('MetaData "ShortChannelId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'False) (C1 ('MetaCons "ShortChannelId" 'PrefixI 'True) (S1 ('MetaSel ('Just "scidBytes") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Word64)))
Show ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ShortChannelId Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep ShortChannelId = D1 ('MetaData "ShortChannelId" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'False) (C1 ('MetaCons "ShortChannelId" 'PrefixI 'True) (S1 ('MetaSel ('Just "scidBytes") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Word64)))

shortChannelId Source #

Arguments

:: Word32

Block height (24 bits max)

-> Word32

Transaction index (24 bits max)

-> Word16

Output index

-> Maybe ShortChannelId 

Construct a ShortChannelId from block height, tx index, and output index.

Returns Nothing if any component exceeds its maximum value:

  • block height: max 16,777,215 (2^24 - 1)
  • tx index: max 16,777,215 (2^24 - 1)
  • output index: max 65,535 (2^16 - 1)
>>> shortChannelId 800000 1234 0
Just (ShortChannelId ...)

scidBlockHeight :: ShortChannelId -> Word32 Source #

Extract the block height from a ShortChannelId.

scidTxIndex :: ShortChannelId -> Word32 Source #

Extract the transaction index from a ShortChannelId.

scidOutputIndex :: ShortChannelId -> Word16 Source #

Extract the output index from a ShortChannelId.

Protocol types

data FeatureBits Source #

Feature bits (variable length).

Encodes supported/required features. Even bits indicate required features; odd bits indicate optional features.

Instances

Instances details
NFData FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: FeatureBits -> () #

Generic FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep FeatureBits 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep FeatureBits = D1 ('MetaData "FeatureBits" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "FeatureBits" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep FeatureBits Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep FeatureBits = D1 ('MetaData "FeatureBits" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "FeatureBits" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

featureBits :: ByteString -> FeatureBits Source #

Construct FeatureBits from a ByteString.

Accepts any length; feature bit parsing is left to higher layers.

data OnionPacket Source #

A 1366-byte onion routing packet.

Contains encrypted routing information for HTLC forwarding, as specified in BOLT #4.

Instances

Instances details
NFData OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Methods

rnf :: OnionPacket -> () #

Generic OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Associated Types

type Rep OnionPacket 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep OnionPacket = D1 ('MetaData "OnionPacket" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "OnionPacket" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Eq OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

Ord OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep OnionPacket Source # 
Instance details

Defined in Lightning.Protocol.BOLT2.Types

type Rep OnionPacket = D1 ('MetaData "OnionPacket" "Lightning.Protocol.BOLT2.Types" "ppad-bolt2-0.0.1-GZp2eCd2tiE8fNOn3OFks8" 'True) (C1 ('MetaCons "OnionPacket" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

onionPacket :: ByteString -> Maybe OnionPacket Source #

Construct an OnionPacket from a 1366-byte ByteString.

Returns Nothing if the input is not exactly 1366 bytes.

unOnionPacket :: OnionPacket -> ByteString Source #

Extract the underlying ByteString from an OnionPacket.

Constants

channelIdLen :: Int Source #

Length of a channel_id in bytes (32).

signatureLen :: Int Source #

Length of a signature in bytes (64, compact format).

pointLen :: Int Source #

Length of a compressed secp256k1 public key in bytes (33).

txIdLen :: Int Source #

Length of a transaction ID in bytes (32).

chainHashLen :: Int Source #

Length of a chain hash in bytes (32).

shortChannelIdLen :: Int Source #

Length of a short_channel_id in bytes (8).

paymentHashLen :: Int Source #

Length of a payment hash in bytes (32).

paymentPreimageLen :: Int Source #

Length of a payment preimage in bytes (32).

onionPacketLen :: Int Source #

Length of an onion routing packet in bytes (1366).

secretLen :: Int Source #

Length of a per-commitment secret in bytes (32).