The status screen now displays information related to the Dojo database and to the data source used by Dojo for its imports and rescans. This screen provides a high level view of the state of the Dojo instance, that can be shared for support.
*XPUB Tool*
- Progress made is now displayed during an import or a rescan.
- New feature allowing to delete a XPUB tracked by Dojo.
- Improved management of timeouts by the authentication system.
#### Dojo Shell Script: improvements ####
- Script automatically stops if build fails during install/upgrade operation.
- Script returns a not null exit code if build fails or if install/upgrade operation is cancelled.
- Dojo is automatically stopped if an upgrade operation is launched with Dojo up and running.
- A cleanup of old Dojo versions is automatically processed at the end of successful upgrade operations.
#### New configuration options ####
Addition of two new configuration options:
- BITCOIND_LISTEN_MODE (in docker-bitcoind.conf): When set to `off`, the fullnode will refuse incoming connections. Default = `on`.
- WHIRLPOOL_COORDINATOR_ONION (in docker-whirlpool.conf): When set to `on`, whirlpool-cli will contact the coordinator through its onion address. When set to `off`, clearnet address will be used (through Tor). Default = `on`.
#### Extended support Tor hidden services ####
Dojo now provides a v2 and v3 hidden service for:
- Dojo Maintenance Tool and API
- Whirlpool CLI
- Bitcoind
- Explorer
Tor v3 onion addresses are recommended but v2 addresses can be used in the case of new attacks disrupting v3 hidden services.
These onion addresses can be retrieved thanks to the `onion` command of the Dojo Shell Script
'''
# Display Tor v3 onion addresses (default)
> ./dojo.h onion
# Display Tor v3 onion addresses
> ./dojo.h onion v3
# Display Tor v2 onion addresses
> ./dojo.h onion v2
'''
#### Upgrade of bitcoind to v0.21.0 ####
Upgrade to Bitcoin Core v0.21.0
#### Upgrade of whirlpool to v0.10.9 ####
Upgrade to whirlpool-cli 0.10.9
#### Upgrade of explorer to v2.1.0 ####
Upgrade to btc-rpc-explorer 2.1.0
#### Upgrade of tor to v0.4.4.7 ####
Tor 0.4.4.7 fixes and mitigates multiple issues, including one that made v3 onion services more susceptible to denial-of-service attacks.
#### New configuration property BITCOIND_RPC_WORK_QUEUE ####
This new configuration property added to docker-bitcoind.conf allows to set a custom max depth for the RPC work queue of the full node.
Increasing the value set for this property may help users running Dojo on slower devices when recurring "work queue depth exceeded" errors appear in the logs.
#### New configuration property BITCOIND_SHUTDOWN_DELAY ####
This new configuration property added to docker-bitcoind.conf allows to set a custom delay before Dojo forces the shutdown of its full node (default delay is 180 seconds).
Increasing the value set for this property may help users running Dojo on slower devices requiring a longer delay for a clean shutdown of the full node.
#### Automatic fallback to a mirror of the Tor archive ####
If Dojo fails to contact the Tor servers (archive.torproject.org) during an installation or an upgrade, it will automatically try to download Tor source code from a mirror hosted by the EFF (tor.eff.org).
#### Upgrade of bitcoind to v0.20.1 ####
Upgrade to Bitcoin Core v0.20.1
#### New /wallet API endpoint ####
This new API endpoint combines the results previously returned by the /multiaddr, /unspent and /fees endpoints. See this [doc](https://github.com/Samourai-Wallet/samourai-dojo/blob/master/doc/GET_wallet.md) for more details.
Starting with this version, the /multiaddr and /unspent endpoints are marked as deprecated.
### Change log ###
#### MyDojo ####
- [#mr151](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/151) add new /wallet api endpoint
- [#mr153](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/153) add new BITCOIND_RPC_WORK_QUEUE parameter to docker-bitcoind.conf.tpl
- [#mr154](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/154) add new /xpub/impot/status endpoint
- [#mr155](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/155) upgrade bitcoind to bitcoin core 0.20.1
- [#mr156](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/156) automatic fallback to mirror of tor archive
- [#mr157](https://code.samourai.io/dojo/samourai-dojo/-/merge_requests/157) add new config property BITCOIND_SHUTDOWN_DELAY
- [dbf61217](https://code.samourai.io/dojo/samourai-dojo/-/commit/dbf6121779385f19e99167298ac8a6bf3411422a) fix presentation of message returned by dojo.sh onion
- [5d960071](https://code.samourai.io/dojo/samourai-dojo/-/commit/5d960071cb4832a348e1883057be3d35c7ff747e) update presentation of response returned by dojo.sh onion
This strict mode enforces a few additional checks on a selected subset of the outputs of a transaction before it's pushed on the P2P network or before it's scheduled for a delayed push.
Upgrade to [whirlpool-cli](https://code.samourai.io/whirlpool/whirlpool-client-cli) v0.10.8
A new config parameter `WHIRLPOOL_RESYNC` is added to docker-whirlpool.conf. When set to `on`, mix counters are resynchronized on startup of whirlpool-cli.
This version of Dojo introduces the support of an optional Whirlpool client ([whirlpool-client-cli](https://code.samourai.io/whirlpool/whirlpool-client-cli)) running inside MyDojo.
This option provides several benefits:
- all communications between the Whirlpool client and Dojo's API are internal to Docker,
- Whirlpool client exposes its API as a Tor hidden service. All communications between Whirlpool GUI and the Whirlpool client are moade over Tor.
See this [documentation](https://github.com/Samourai-Wallet/samourai-dojo/blob/master/doc/DOCKER_advanced_setups.md#local_whirlpool) for the detailed procedure allowing to configure and install the Whirlpool client.
#### Unified logs system ####
Starting with this version, logs of all containers are managed with the log system provided by Docker.
Logs of all NodeJS submodules (API, Tracker, PushTx, PushTx Orchestrator) are merged into a single stream.
The -d option of `dojo.sh logs` command is deprecated.
See this [documentation](https://github.com/Samourai-Wallet/samourai-dojo/blob/master/doc/DOCKER_setup.md#shell_script) for a list of logs available through the `dojo.sh` command.
Previous versions of Dojo provided the choice between 2 data sources for import and rescan operations, the local bitcoind and OXT. This version introduces a new optional Docker container running a local indexer ([addrindexrs](https://github.com/Samourai-Wallet/addrindexrs)) that can be used as an alternative to the 2 existing options.
The local indexer provides private, fast and exhaustive imports and rescans.
Warning: The local indexer requires around 120GB of additionnal disk space during its installation, and around 60GB after the compaction of its database.
See this [documentation](https://github.com/Samourai-Wallet/samourai-dojo/blob/master/doc/DOCKER_advanced_setups.md#local_indexer) for the detailed procedure allowing to configure and install the indexer.
#### Local Electrum server used as data source for imports/rescans ####
This version of Dojo introduces the support of a local external Electrum server (ElectrumX or Electrs) as the data source of imports and rescans. This option provides the same benefits as the new local indexer to users running an Electrum server.
See this [documentation](https://github.com/Samourai-Wallet/samourai-dojo/blob/master/doc/DOCKER_advanced_setups.md#local_electrum) for the detailed procedure allowing to configure your Electrum server as the data source of imports and rescans.
#### Improved performances of Dojo upgrades ####
By default, the upgrade process will try to reuse the image layers cached by Docker in order to reduce the duration of upgrades.
A new option for the upgrade command allows to force a complete rebuild of all the containers (equivalemt to the former default behavior of the upgrade process).
```
> ./dojo.sh upgrade --nocache
```
#### Additional controls before installation ####
A few controls and confirmations were added to the installation process in order to avoid multiple calls leading to problems with database credentials. Additionally, a full uninstallation is forced before a new installation is allowed.
Since v1.4.0, some users that Dojo is hanging during its shutdown. This release provides a fix for the users affected by this problem.
#### Prevents automatic restarts of bitcoind container ####
This release removes automatic restarts of the bitcoind container when bitcoind has exited with an error.
### Change log ###
#### Bug fixes ####
- [0ff045d](https://github.com/Samourai-Wallet/samourai-dojo/commit/0ff045d1495807902e9fd7dcfbd2fdb4dc21c608) keep bitcoind container up if bitcoind exits with an error
- [3ee85db](https://github.com/Samourai-Wallet/samourai-dojo/commit/3ee85db3bf69f4312204e502c98d414a4180dc53) force kill of docker exec used for testing bitcoind shutdown if command hangs more than 12s
- [21925f7](https://github.com/Samourai-Wallet/samourai-dojo/commit/21925f7c321974ef7eb55c1ad897a5e02ef52bee) bump versions of dojo and bitcoind container
This release adds a new docker container hosting a local block explorer ([BTC RPC Explorer](https://github.com/janoside/btc-rpc-explorer)).
Access to the block explorer is secured by a password defined in /docker/my-dojo/conf/docker-explorer.conf (see `EXPLORER_KEY` configuration parameter).
*Upgrade procedure*
```
# Stop your Dojo
# Download the Dojo archive for this release
# Override the content of your <dojo_dir> with the content of the Dojo archive
# Edit <dojo_dir>/docker/my-dojo/conf/docker-explorer.conf.tpl and set the value of `EXPLORER_KEY` with a custom password.
# Launch the upgrade of your Dojo with: dojo.sh upgrade
```
This local block explorer is available as a Tor hidden service. Its static onion address can be retrieved with the command
```
dojo.sh onion
```
#### Autostart of Dojo ####
Starting with this release, Dojo is automatically launched when the docker daemon starts.
### Change log ###
#### MyDojo ####
- [#101](https://github.com/Samourai-Wallet/samourai-dojo/pull/101) add --auto and --nolog options to install and upgrade commands
- [#102](https://github.com/Samourai-Wallet/samourai-dojo/pull/102) improve performances of transactions imports
- [#107](https://github.com/Samourai-Wallet/samourai-dojo/pull/107) add optional block explorer
- [#108](https://github.com/Samourai-Wallet/samourai-dojo/pull/108) switch restart policies of containers to always
- [#109](https://github.com/Samourai-Wallet/samourai-dojo/pull/109) use port 80 of keyservers
Configuration parameter ```NODE_IMPORT_FROM_BITCOIND``` is replaced by ```NODE_ACTIVE_INDEXER```.
The supported values for the new parameter are:
- ```local_bitcoind``` (equivalent to former ```NODE_IMPORT_FROM_BITCOIND=active```)
- ```third_party_explorer``` (equivalent to former ```NODE_IMPORT_FROM_BITCOIND=inactive```)
**Upgrade of Dojo to v1.3.0 automatically sets the parameter to the default value** ```local_bitcoind```.
#### Installation of Tor from source code archives ####
Previous versions of Dojo used the git repository operated by the Tor Project during the build of the Tor container. Starting with this version, Dojo will download an archive of the source code.
Users living in countries blocking the access to resources provided by the Tor Project can easily switch to a mirror site by editing this [line](https://github.com/Samourai-Wallet/samourai-dojo/blob/develop/docker/my-dojo/tor/Dockerfile#L4) before installing or upgrading their Dojo.
The default source used by Dojo is the archive provided by the [Tor Project](https://archive.torproject.org/tor-package-archive).
#### Add support of Tor bridges ####
The Tor container now supports the configuration of Tor bridges. For some users, it may be appropriate to configure Tor bridges in order to circumvent a local censorship of the Tor network. See [this section](https://github.com/Samourai-Wallet/samourai-dojo/blob/develop/doc/DOCKER_advanced_setups.md#tor_bridges) of the documentation for the activation of Tor bridges on your Dojo.
#### Add Blocks rescan feature to the maintenance tool ####
This version introduces a new "Blocks Rescan" feature accessible from the Maintenance Tool.
"Blocks Rescan" allows to rescan a range of blocks for all the addresses currently tracked by your Dojo (loose addresses or addresses derived for your xpubs). This feature comes in handy when the block confirming a missing transaction is known by the user.
#### Add Esplora as the new external data source for testnet ####
Previously used API (BTC.COM and Insight) have been removed.
Default URL used for the Esplora API is https://blockstream.info/testnet. A local Esplora instance can be used by editing this [line](https://github.com/Samourai-Wallet/samourai-dojo/blob/develop/docker/my-dojo/.env#L44).
#### Remove support of HTTPS by NodeJS ####
Support of HTTPS by the NodeJS server has been removed.
See this [doc](./doc/DOCKER_setup.md#upgrade) for more details.
#### Optional support of an external bitcoin full node ####
Optional support of an existing Bitcoin full node running outside of Docker has been added.
This setup can be configured thanks to new options defined in ./docker/my-dojo/conf/docker-bitcoind.conf. When this option is activated, the install command skips the installation of bitcoind in Docker.
Note: The Bitcoin full node installed by MyDojo is configured for taking care of your privacy at a network level. You may lose the benefits provided by the default setup if your external full node isn't properly configured. Use at your own risk.
See this [doc](./doc/DOCKER_advanced_setups.md#external_bitcoind) for more details.
#### Optional support of external apps ####
New options defined in ./docker/my-dojo/conf/docker-bitcoind.conf allow to expose the RPC API and ZMQ notifications provided by the full node of MyDojo to applications runnnig outside of Docker.
Note: Exposing the full node of MyDojo to external applications may damage your privacy. Use at your own risk.
See this [doc](./doc/DOCKER_advanced_setups.md#exposed_rpc_zmq) for more details.
#### Optional support of a static onion address for the full node ####
A new option defined in ./docker/my-dojo/conf/docker-bitcoind.conf allows to keep a static onion address for your full node.
By default, MyDojo generates a new onion address at each startup. We recommend to keep this default setup for better privacy.
See this [doc](./doc/DOCKER_advanced_setups.md#static_onion) for more details.
#### Clean-up of Docker images ####
A new "clean" command has been added to Dojo shell script for deleting old Docker images of MyDojo.
This command allows to free disk space on the Docker host.
- [a382e42](https://github.com/Samourai-Wallet/samourai-dojo/commit/a382e42469b884d2eda9fa6f5a3c8ce93a7cd39a) add sql scripts and config files to gitignore