Crate ln_types[−][src]
Expand description
Common types related to Lightning Network
Warning: while in a good state, this is still considered a preview version! There are some planned changes.
This library aims to provide Rust-idiomatic, ergonomic, and reasonably performant implementation of primitives used in applications interacting with Lightning Network. That means, they are not just types used to implement LN itself, they are supposed to be useful to any application that e.g. communicates with an LN implementation. Of course, they should still be useful for an LN implementation itself.
Important types
The most important types currently available:
Amount
- similar tobitcoin::Amount
but with millisatoshi precisionP2PAddress
- address of a node usually represented in text asnode_id_hex@host:port
NodeId
- the byte representation of node’s public key (no crypto operations)NodePubkey
- newtype aroundsecp256k1::PublicKey
to distinguish node public key from other keys. Requiressecp256k1
feature.
Note: invoice is not here and isn’t planned because it already exists in a separate crate.
Integrations
The crate aims to be interoperable with other crates via optional dependencies. Currently available integrations (activate using features of the same name):
bitcoin
- converting between typesserde
- serialization and deserialization of typespostgres-types
- storing and retrieving from SQLparse_arg
- parsing arguments into types in this cratesecp256k1
- providesNodePubkey
slog
- providesslog::Value
and (where relevant)slog::KV
implementations for the types
Additional features:
node_pubkey_verify
- convenience function for verifying messages signed withNodePubkey
, impliessecp256k1/bitcoin_hashes
node_pubkey_recovery
- convenience function for verifying lightning messages signed withNodePubkey
, impliesnode_pubkey_verify
andsecp256k1/recovery
Feel free to contribute your own!
Disclaimer: Inclusion of any crate here is neither endorsment nor guarantee of it being secure, honest, non-backdoored or functioning! You’re required to do your own review of any external crate.
The rules around adding a new integration are lax: the dependency must be optional, must not be obviously broken or surprising, and must not interact with other implementations in surprising ways.
MSRV
The minimum supported Rust version is 1.48 but it’s possible that it’ll be decreased further. Generally, the intention is to support at least the latest Debian stable.
Note that external libraries may have higher MSRV - this is not considered a breakage.
License
MIT
Re-exports
pub extern crate secp256k1;
pub use node_id::NodeId;
pub use p2p_address::P2PAddress;
pub use amount::Amount;
pub use node_pubkey::NodePubkey;
Modules
Bitcoin amount with millisatoshi precision.
Node identifier (encoded pubkey)
secp256k1
Newtype over PublicKey
and corresponding error types.
P2P address (node_id@host:port
)