When creating a new spend, if coin outpoints are not provided, then coins will be selected automatically. This automatic selection is such that the transaction fee is minimized, taking into account the cost of creating any change output now and the cost of spending it in the future. If change is added, it must reduce the transaction waste and be above the dust threshold. This same policy is applied also in the case of manual coin selection, replacing the previous logic for determining the change amount. This ensures that creating a spend with auto-selection and another with manual selection using the same auto-selected coins will give the same change amount.
71 lines
2.0 KiB
TOML
71 lines
2.0 KiB
TOML
[package]
|
|
name = "liana"
|
|
version = "2.0.0"
|
|
authors = ["Antoine Poinsot <darosior@protonmail.com>"]
|
|
edition = "2018"
|
|
repository = "https://github.com/wizardsardine/liana"
|
|
license-file = "LICENCE"
|
|
keywords = ["bitcoin", "wallet", "miniscript", "inheritance", "recovery"]
|
|
description = "Liana wallet daemon"
|
|
exclude = [".github/", ".cirrus.yml", "tests/", "test_data/", "contrib/", "pyproject.toml"]
|
|
|
|
[[bin]]
|
|
name = "lianad"
|
|
path = "src/bin/daemon.rs"
|
|
required-features = ["daemon"]
|
|
|
|
[[bin]]
|
|
name = "liana-cli"
|
|
path = "src/bin/cli.rs"
|
|
required-features = ["daemon"]
|
|
|
|
[features]
|
|
default = ["daemon"]
|
|
daemon = ["libc"]
|
|
nonblocking_shutdown = []
|
|
|
|
[dependencies]
|
|
# For managing transactions (it re-exports the bitcoin crate)
|
|
miniscript = { version = "10.0", features = ["serde", "compiler", "base64"] }
|
|
|
|
bdk_coin_select = { git = "https://github.com/evanlinjin/bdk", branch = "new_bdk_coin_select" }
|
|
|
|
# Don't reinvent the wheel
|
|
dirs = "5.0"
|
|
|
|
# We use TOML for the config, and JSON for RPC
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
toml = "0.5"
|
|
serde_json = { version = "1.0", features = ["raw_value"] }
|
|
|
|
# Logging stuff
|
|
log = "0.4"
|
|
fern = "0.6"
|
|
|
|
# In order to have a backtrace on panic, because the
|
|
# stdlib does not have a programmatic interface yet
|
|
# to work with our custom panic hook.
|
|
backtrace = "0.3"
|
|
|
|
# Pinned to this version because they keep breaking their MSRV in point releases...
|
|
# FIXME: this is unfortunate, we don't receive the updates (sometimes critical) from SQLite.
|
|
rusqlite = { version = "0.27", features = ["bundled", "unlock_notify"] }
|
|
|
|
# To talk to bitcoind
|
|
jsonrpc = { version = "0.16", features = ["minreq_http"], default-features = false }
|
|
|
|
# Used for daemonization
|
|
libc = { version = "0.2", optional = true }
|
|
|
|
# Used for generating mnemonics
|
|
getrandom = "0.2"
|
|
|
|
# Used for the hot signer
|
|
bip39 = "2.0"
|
|
|
|
# Additional entropy for generating mnemonics
|
|
[target.'cfg(target_arch = "x86")'.dependencies]
|
|
rdrand = "0.8"
|
|
[target.'cfg(target_arch = "x86_64")'.dependencies]
|
|
rdrand = "0.8"
|