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.