1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
[]
= "lnpbp"
= "0.2.0-alpha.3"
= "MIT"
= ["Dr. Maxim Orlovsky <orlovsky@pandoracore.com>"]
= "LNP/BP Core Library implementing LNPBP specifications & standards"
= "https://github.com/LNP-BP/rust-lnpbp"
= "https://github.com/LNP-BP"
= ["bitcoin", "lightning", "lnp-bp", "layer-3", "cryptography"]
= "README.md"
= "2018"
= [".github", "derive", "contrib", "services"]
[]
= "lnpbp"
= "src/lib.rs"
= ["dylib", "rlib", "staticlib"]
# Dependencies
# ============
#
# Version policy
# --------------
# The policy in specifying dependencies versions are to use tilde requirements
# according to
# <https://doc.rust-lang.org/nightly/cargo/reference/specifying-dependencies.html?highlight=feature#tilde-requirements>
# with full semver version specification (major, minor and patch components)
# which means that we may upgrade for patches/bugfixes, but must not change
# even the minor version of the package.
# Once the library is stable consider upgrading tilde requirements to strict
# equivalence requirements (with '=' sign) since even dependencies patching will
# not introduce risk of breaking the consensus and even security updates must
# be done manualy after through testing
[]
# Dependencies on other LNP/BP repositories
# -----------------------------------------
= "~0.7.0"
= { = "~2.0.6", = ["stringly_conversions"] }
= "~2.0.6"
= "~0.2.0-alpha.3"
# Dependencies on core rust-bitcoin ecosystem projects
# ----------------------------------------------------
= { = "~0.25.1", = ["rand"] }
= "~0.9.3" # we need macro from here
= "~3.0.0"
= "~0.7.2"
# Used only as a part of RGB for encoding Ed25519 key data (for instance as
# a part of Tor address)
= { = "~1.0.0", = true }
# Core rust projects
# ------------------
# This strange naming is a workaround for cargo inability to define required
# features for a dependency. See
# <https://github.com/rust-lang/api-guidelines/issues/180> for the explanation
# and references.
= { = "serde", = "~1.0.106", = ["derive"], = true }
= { = "~1.5.1", = true, = ["hex"] }
= { = "~0.2.18", = ["tcp", "sync"], = true }
= "~1.4.0"
# Networking deps
# ---------------
# All these dependencies are used to provide support for networking URLs in
# `lnp` mod and are turned on only if `lbp`, `zmq` or `url` features are used
= { = "~0.9.2", = true }
= { = "~2.1.1", = true }
# Serializtion
# ------------
# Used in RGB data Bech32 encodings
= { = "~0.8.6", = true }
= { = "~0.4.5", = true }
# Temporary-needed dependencies:
# ------------------------------
# 1. We are of no control of what's happening in Grin and would like to prevent
# updates w/o checking them manually. Should Elements Project secpk256k-zkp
# accept bulletproofs code, we will switch to it
= { = "=0.7.9", = true }
# 2. We use these to simplify enum strict encoding, but once the required
# functionality will become part of either amplify_derive or lnpbp_derive
# crates they should be removed
= "~0.2.11"
= "~0.3.0"
# 3. Once async traits will get to rust compiler, this one will be also not
# needed
= { = "~0.1.30", = true }
= { = "~0.1.6", = ["v2", "v3"] }
[]
# <https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0002.md#deterministic-public-key-extraction-from-bitcoin-script>
# We fix version of miniscript as required by LNPBP-2 specification
= { = "~3.0.0", = ["compiler"] }
= { = "~0.25.0", = ["rand"] }
# Features
# ========
[]
# Listings
# --------
# By default we use tokio-enhanced LNP with Tor support and URL support
= ["lnp", "rgb", "tor", "url"]
= [
# Library components
"lnp", "rgb",
# Core rust
"serde", "tokio", "async",
# Cryptographic optionals
"keygen", "elgamal",
# Networking
"tor", "url", "websockets", "vendored_openssl"]
# High-level library components
# -----------------------------
= ["async", "zmq"]
= ["bulletproofs", "ed25519-dalek", "deflate", "inflate"]
# Exposing core rust componens
# ----------------------------
# These also include re-assembly of necessary features from dependencies
= ["async-trait", "tokio"]
= ["serde_crate", "serde_with", "amplify/serde",
"bitcoin/use-serde", "miniscript/serde" ]
# Optional cryptographic functionality
# ------------------------------------
= ["grin_secp256k1zkp"] # Auto-required and used only by RGB
= ["bitcoin/rand"]
= [] # Provides ElGamal encryption module from this library
# Networking
# ----------
= [] # Used only by LNP
= ["amplify/tor"] # Exposes dependency feature
= ["torut/vendored_openssl"]
[]
= [".", "derive", "services"]
= [".", "derive", "services"]
= ["dep_test"]