[package] name = "farcaster_node" version = "0.8.4" 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.6" 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.3" 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"]