pub struct Config {Show 16 fields
pub server_address: String,
pub server_access_token: Option<String>,
pub esplora_address: Option<String>,
pub bitcoind_address: Option<String>,
pub bitcoind_cookiefile: Option<PathBuf>,
pub bitcoind_user: Option<String>,
pub bitcoind_pass: Option<String>,
pub vtxo_refresh_expiry_threshold: BlockHeight,
pub vtxo_exit_margin: BlockDelta,
pub htlc_recv_claim_delta: BlockDelta,
pub lightning_receive_claim_retries: u8,
pub fallback_fee_rate: Option<FeeRate>,
pub round_tx_required_confirmations: BlockHeight,
pub offboard_required_confirmations: BlockHeight,
pub daemon_sync_interval_secs: u64,
pub daemon_manual_sync: bool,
}Expand description
Configuration of the Bark wallet.
- Config::esplora_address or Config::bitcoind_address must be provided.
- If you use Config::bitcoind_address, you must also provide:
- Other optional fields can be omitted.
§Example
Configure the wallet using defaults, then override endpoints for public signet:
use bark::Config;
let cfg = Config {
server_address: "https://ark.signet.2nd.dev".into(),
esplora_address: Some("https://esplora.signet.2nd.dev".into()),
..Config::network_default(bitcoin::Network::Bitcoin)
};
// cfg now has all other fields from the default configurationFields§
§server_address: StringThe address of your ark server.
server_access_token: Option<String>An access token used to access a private server
esplora_address: Option<String>The address of the Esplora HTTP REST server to use.
Either this or the bitcoind_address field has to be provided.
bitcoind_address: Option<String>The address of the bitcoind RPC server to use.
Either this or the esplora_address field has to be provided.
Either bitcoind_cookiefile or bitcoind_user and bitcoind_pass has to be provided.
The path to the bitcoind rpc cookie file.
Only used with bitcoind_address.
bitcoind_user: Option<String>The bitcoind RPC username.
Only used with bitcoind_address.
bitcoind_pass: Option<String>The bitcoind RPC password.
Only used with bitcoind_address.
vtxo_refresh_expiry_threshold: BlockHeightThe number of blocks before expiration to refresh vtxos.
Default value: 144 (24h) for mainnet, 12 for testnets
vtxo_exit_margin: BlockDeltaAn upper limit of the number of blocks we expect to need to safely exit the vtxos.
Default value: 12
htlc_recv_claim_delta: BlockDeltaThe number of blocks to claim a HTLC-recv VTXO.
Default value: 18
lightning_receive_claim_retries: u8Maximum number of retry attempts when claiming a Lightning receive against the server fails. After this budget is exhausted, the HTLC-recv VTXOs will be exited on-chain.
Default value: 5
fallback_fee_rate: Option<FeeRate>A fallback fee rate to use in sat/kWu when we fail to retrieve a fee rate from the configured bitcoind/esplora connection.
Example for 1 sat/vB: –fallback-fee-rate 250
round_tx_required_confirmations: BlockHeightThe number of confirmations required before considering a round tx fully confirmed
Default value: 6 for mainnet, 2 for testnets
offboard_required_confirmations: BlockHeightThe number of confirmations required before considering an offboard tx confirmed. If set to 0, offboard movements are marked as successful immediately without waiting for confirmation.
Default value: 2 for mainnet
daemon_sync_interval_secs: u64Daemon sync interval in seconds for periodic tasks (onchain, exits, boards, offboards, maintenance, rounds, mailbox).
Default value: 60
daemon_manual_sync: boolWhen set, the daemon skips all automatic wallet syncing — startup
sync, the fast/slow sync intervals, round event subscription, and
the mailbox subscription. Only the server connection heartbeat
keeps running. The operator is responsible for triggering syncs
via the REST API (e.g. POST /sync).
Default value: false
Implementations§
Source§impl Config
impl Config
Sourcepub fn network_default(network: Network) -> Self
pub fn network_default(network: Network) -> Self
A network-dependent default config that sets some useful defaults
The Default::default provides a sane default for mainnet
Sourcepub fn load(network: Network, path: impl AsRef<Path>) -> Result<Config>
pub fn load(network: Network, path: impl AsRef<Path>) -> Result<Config>
Load config from the config file path, filling missing fields from the network default.
Config values are loaded in the following priority order (highest to lowest):
- Environment variables with
BARK_prefix (e.g.,BARK_ESPLORA_ADDRESS) - Config file values
- Network defaults
Sourcepub fn chain_source(&self) -> Result<ChainSourceSpec>
pub fn chain_source(&self) -> Result<ChainSourceSpec>
Creates a [chain::ChainSource] instance to communicate with a chain backend from this Config.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request