rgb_node 0.2.0-beta.3

RGB node
[package]
name = "rgb_node"
description = "RGB node"
version = "0.2.0-beta.3"
authors = ["Dr. Maxim Orlovsky <orlovsky@pandoracore.com>"]
license = "MIT"
keywords = ["bitcoin", "node", "layer-2", "smart-contracts", "rgb"]
edition = "2018"
readme = "README.md"
exclude = [".github", "/doc", "/test", "Dockerfile"]

[lib]
name = "rgb"

[[bin]]
name = "rgbd"
required-features = ["server"]

[[bin]]
name = "stashd"
required-features = ["server"]

[[bin]]
name = "fungibled"
required-features = ["server"]

[[bin]]
name = "rgb-cli"
required-features = ["cli"]

[dependencies]
# LNP/BP crates
amplify = "~2.3.1"
amplify_derive = "~2.3.0"
lnpbp = { version = "=0.2.0-beta.2", features = ["lnp", "url", "websockets"] }
lnpbp_derive = "=0.2.0-beta.2"
lnpbp_services = "=0.2.0-beta.2"
# Rust language
lazy_static = "~1.4.0"
nix = { version = "~0.19.0", optional = true }
chrono = "~0.4.19"
diesel = { version = "~1.4.4", features = ["sqlite", "uuid", "numeric", "chrono"] }
# Bitcoin
electrum-client = { version = "=0.3.0-beta.1", optional = true }
# Serialization & parsing
serde_crate = { package = "serde", version = "~1.0.106", features = ["derive"], optional = true }
serde_with = { version = "~1.5.0", optional = true }
serde_json = { version = "~1.0.55", optional = true }
serde_yaml = { version = "~0.8.13", optional = true }
toml = { version = "~0.5.6", optional = true }
bech32 = { version = "~0.7.2", optional = true }
base64 = { version = "~0.12.1", optional = true }
regex = { version = "~1.3.9", optional = true }
url = { version = "~2.1.1", optional = true }
# Congig & logging
settings = { version = "~0.10.1", package = "config", optional = true }
configure_me = { version = "0.3.4", optional = true }
dotenv = { version = "~0.15.0", optional = true }
clap = { version = "=3.0.0-beta.2", optional = true }
log = { version = "~0.4.8", optional = true, features = ["max_level_trace", "release_max_level_debug"] }
env_logger = { version = "~0.7.1", optional = true }
colored = { version = "~2.0.0", optional = true }
shellexpand = { version = "~2.0.0", optional = true }
# Processes & IPC
async-trait = { version = "~0.1.35", optional = true }
tokio = { version = "~0.2.21", features = ["full"], optional = true }
zmq = { version = "~0.9.2", optional = true }
# These should be removed with the next major update
num-traits = "~0.2.12"
num-derive = "~0.3.0"
futures = "~0.3.5"

[target.'cfg(target_os="android")'.dependencies]
zmq = { version = "~0.9", features = ["vendored"] }

# Recommended set of features:
# 1. Standalone node: `server` (=`node`+`shell`)
# 2. Cli to remote node: `cli` (auto includes `shell` and `integration`)
# 3. Mobile app talking to a server: `client`
# 4. Mobile app with embedded node: `embedded` (auto includes `client` + `node`)
# 5. Simple cli utility app: `shell`
[features]
default = ["client", "fungibles", "collectibles", "identities"]
# Server is a standalone application that runs daemon
server = ["node", "shell", "nix", "lnpbp_services/server"]
# Feature is required for any applications that talks to daemon processes
client = ["zmq", "lnpbp_services/client", "lnpbp/keygen", "async-trait",
          "regex", "tokio", "electrum-client", "base64",
          "url", "lnpbp/url", "log", "env_logger",
          # TODO: Femove the following after feature gates debugging:
          "clap"]
# Embedded is an app that contains ndoe in itself and that talks to it through
# integration layer
embedded = ["client", "node", "lnpbp_services/embedded"]
# Command-line application feature
cli = ["shell", "client", "lnpbp_services/cli"]
# Required for all apps that can be launched from command-line shell as binaries
# (i.e. both servers and cli)
shell = [
    "dotenv", "clap", "settings", "configure_me", "log", "env_logger", "serde",
    "amplify/parse_arg", "lnpbp_services/shell", "shellexpand", "colored"
]
# Besides server node can be run as a part of mobile app
# and other types of clients; thus `server` != `node`.
# This feature results in building with features not required for CLI
node = ["serde", "lnpbp/keygen", "tokio", "lnpbp/tokio", "zmq", "lnpbp_services/node",
        "url", "lnpbp/url", "async-trait", "regex", "electrum-client", "base64"]
serde = ["serde_crate", "serde_with", "serde_yaml", "serde_json", "toml",
         "amplify/serde", "lnpbp/serde", "lnpbp_services/serde", "chrono/serde"]
# Schema-specific components exposed as features:
fungibles = []
collectibles = []
identities = []