pub struct Config {
pub server_address: 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 fallback_fee_rate: Option<FeeRate>,
pub round_tx_required_confirmations: BlockHeight,
}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.
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
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
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
Examples found in repository?
7async fn example() -> anyhow::Result<()> {
8 let mnemonic = "super secret ...".parse()?;
9 let cfg = Config {
10 server_address: "https://ark.signet.2nd.dev".into(),
11 esplora_address: Some("https://esplora.signet.2nd.dev".into()),
12 ..Config::network_default(Network::Signet)
13 };
14 let db = Arc::new(SqliteClient::open("./bark_db")?);
15 let wallet = Wallet::create(&mnemonic, Network::Signet, cfg, db, false).await?;
16
17 let address = wallet.new_address().await?;
18 println!("My first Ark address: {}", address);
19
20 let invoice = wallet.bolt11_invoice("10000sat".parse()?).await?;
21 println!("Send me some sats: {}", invoice);
22
23 // Wait for someone to send the sats...
24 wallet.try_claim_all_lightning_receives(true).await?;
25
26 let balance = wallet.balance().await?;
27 println!("I now have sats: {}!", balance.spendable);
28
29 // Let's give back!
30 let invoice = "lnbc1... get this from someone you like";
31 wallet.pay_lightning_invoice(invoice, None).await?;
32
33 Ok(())
34}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
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 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