Revault is a Bitcoin vault architecture for multi-party situations.
Join #revault on Libera for discussing Revault development.
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).
revaultd should always compile and pass tests using Rust 1.43.
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.
Contributions are very welcome. For general guidelines, see CONTRIBUTING.md.
Released under the BSD 3-Clause Licence. See the LICENCE file.