Application configuration
Bitcoin-S uses HOCON to configure various parts of the application the library offers. HOCON is a superset of JSON, that is, all valid JSON is valid HOCON.
All configuration for Bitcoin-S is under the bitcoin-s
key.
If you have a file application.conf
anywhere on your classpath when using
bitcoin-s, the values there take precedence over the ones found in our
reference.conf
. We also look for the file bitcoin-s.conf
in the current
Bitcoin-S data directory.
The resolved configuration gets parsed by
AppConfig
.
AppConfig
is an abstract class that's implemented by corresponding case
classes in the wallet
, chain
and node
projects. Here's some examples of how to
construct a wallet configuration:
import org.bitcoins.wallet.config.WalletAppConfig
import com.typesafe.config.ConfigFactory
import java.nio.file.Paths
import scala.util.Properties
// reads $HOME/.bitcoin-s/
val defaultConfig = WalletAppConfig.fromDefaultDatadir()
// reads a custom data directory
val customDirectory = Paths.get(Properties.userHome, "custom-bitcoin-s-directory")
val configFromCustomDatadir = WalletAppConfig(customDirectory)
// reads a custom data directory and overrides the network to be testnet3
val customOverride = ConfigFactory.parseString("bitcoin-s.network = testnet3")
val configFromCustomDirAndOverride = WalletAppConfig(customDirectory, customOverride)
You can pass as many com.typesafe.config.Config
s as you'd like. If any
keys appear multiple times the last one encountered takes precedence.
Internal configuration
Database connections are also configured by using HOCON. This is done in
db.conf
. The options
exposed here are not intended to
be used by users of Bitcoin-S, and are internal only.