farcaster_node 0.5.0

Farcaster, a cross-chain atomic swap node.
Documentation
[package]
name = "farcaster_node"
version = "0.5.0"
authors = ["Farcaster Devs"]
build = "build.rs"
edition = "2018"
homepage = "https://github.com/farcaster-project/farcaster-node"
include = [
  "shell/*",
  "src/*",
  "build.rs",
  "README.md",
  "CHANGELOG.md",
  "LICENSE",
]
keywords = ["bitcoin", "monero", "atomic-swaps"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/farcaster-project/farcaster-node"
rust-version = "1.59.0"
description = "Farcaster, a cross-chain atomic swap node."

[lib]
name = "farcaster_node"

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

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

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

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

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

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

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

[dependencies]
amplify = "3.13.0"
amplify_derive = "2"
anyhow = "1"
base64 = { version = "0.12", optional = true }
bech32 = { version = "0.7", optional = true }
bitcoin = "0.28"
bitcoincore-rpc = "0.15.0"
chrono = "0.4"
clap = { version = "3.0.0", optional = true, features = ["env", "derive"] }
clap_complete = "3.1"
colored = { version = "2", optional = true }
config = "0.11"
dotenv = { version = "0.15", optional = true }
electrum-client = "0.11.0"
env_logger = "0.7"
farcaster_core = "0.5.1"
hex = { version = "^0.4.3", features = ["serde"] }
internet2 = "0.8.3"
lazy_static = "1.4"
lmdb = "0.8.0"
log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] }
microservices = { version = "0.8.0", default-features = false, features = ['peer'] }
monero = "0.17"
monero-lws = "0.1"
monero-rpc = "0.2"
nix = { version = "0.19", optional = true }
paste = "1.0"
prost = "0.10.3"
regex = { version = "1.5", optional = true }
rustc-hex = "2.1.0"
# we rename the crate below because there is already a feature called `serde`,
# so it would conflict with the implicit feature that would be added by adding
# the `serde` crate;
# this can be fixed once rust-version is updated to 1.60.0, which solves this
# by adding the `dep:` prefix for features defined by dependencies
serde_crate = { package = "serde", version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
serde_with = { version = "1.8", optional = true }
serde_yaml = { version = "0.8", optional = true }
settings = { version = "0.10", package = "config", optional = true }
shellexpand = { version = "2", optional = true }
slip132 = "0.7.0"
strict_encoding = { version = "0.8.1", features = ["monero"] }
sysinfo = { version = "0.18.2" }
tokio = { version = "1.18.2", features = ["full"] }
toml = { version = "0.5", optional = true }
tonic = "0.7.2"
tonic-web = "0.3.0"
uuid = { version = "1.1", features = ["v4", "serde"] }
zmq = { package = "zmq2", version = "0.5.0" }

[build-dependencies]
tonic-build = "0.7"

[dev-dependencies]
futures = "0.3.18"
ntest = "0.7.3"
rand = "0.8.4"
strip-ansi-escapes = "0.1.1"

# 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 = ["server", "cli"]
all = ["server", "cli", "serde", "tor"]

# Server is a standalone application that runs daemon
server = ["node", "shell", "microservices/server", "nix"]
# Command-line application feature
cli = ["shell", "client", "serde", "microservices/cli"]

# Embedded is an app that contains embedded node and that talks to it through
# integration layer
embedded = ["client", "node", "microservices/embedded"]
# 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 command-line
node = [
  "serde",
  "internet2/keygen",
  "bitcoin/rand",
  "internet2/zmq",
  "microservices/node",
  "base64",
  # Required for storing config and cache
  "_config",
  "_rpc",
]
# Feature is required for any applications that talks to daemon processes
client = [
  "internet2/zmq",
  "microservices/client",
  "microservices/node",
  "bitcoin/rand",
  "base64",
  "clap",
  "_rpc",
]

# Required for all apps that can be launched from command-line shell as binaries
# (i.e. both servers and cli)
shell = [
  "dotenv",
  "clap",
  "settings",
  "serde",
  "amplify/parse_arg",
  "microservices/shell",
  "shellexpand",
  "colored",
]
# Internally used features for convenience
_config = ["serde_yaml", "toml"]
_rpc = []

serde = [
  "serde_crate",
  "serde_with",
  "serde_yaml",
  "serde_json",
  "toml",
  "chrono/serde",
  "bitcoin/use-serde",
  "slip132/serde",
  "amplify/serde",
  "internet2/serde",
  "microservices/serde",
]
tor = ["microservices/tor", "internet2/tor"]

integration_test = ["regex"]