Skip to content

The "wallet" daemon for participants under the Revault architecture

License

Notifications You must be signed in to change notification settings

revault/revaultd

Repository files navigation

revaultd

About Revault

Revault is a Bitcoin vault architecture for multi-party situations.

Join #revault on Libera for discussing Revault development.

About revaultd

revaultd is the core implementation of the wallet part from the Revault protocol. Exposing an RPC interface, it aims to be actually used by participants with a GUI wrapper while letting the possibility to access to the functionalities programmatically.

The Bitcoin Script and transactions logic is contained in revault_tx, and the communication with the servers is in revault_net.

The "stakeholders" (participants who don't actively take part in day-to-day fund managements but pre-sign constrained spending authorizations) logic, "managers" (participants who use the pre-signed authorizations to make payments) logic, and "stakeholders-managers" (participants wearing both hats) logic are part of this daemon.

revaultd will connect to bitcoind via its RPC interface (version 22.0 minimum), the Coordinator and optionally some Cosigning Servers if ran by a manager in a deployment with Cosigning Servers.

                            -----------                          -----------
                           |revault-gui|                  ----- | cosignerd |
                            \         /                 /        -----------
 --------------             ----------                 /         -----------
| coordinatord |  <------  | revaultd |  ------------- -------> | cosignerd |
 --------------             ----------                 \         -----------
                            /        \                  \        -----------
                           | bitcoind |                   ----- | cosignerd |
                            ----------                           -----------

You can find a reference of available RPC commands at doc/API.md.

Testing is performed both with Unit Tests directly integrated in the source (cargo test) and with a Python functional testing framework permitting to test more complex scenarii in "blackbox" (hitting only the RPC interface).

Minimum Supported Rust Version

revaultd should always compile and pass tests using Rust 1.43.

Hacking around

Checkout The Aquarium for a turnkey solution to try a Revault deployment.

revault-gui also has a tutorial on how to deploy Revault "almost for real": on testnet between multiple participants.

Contributing

Contributions are very welcome. For general guidelines, see CONTRIBUTING.md.

Licence

Released under the BSD 3-Clause Licence. See the LICENCE file.