/WasabiDoc

This is the Wasabi documentation, an archive of knowledge about the open-source, non-custodial and privacy-focused Bitcoin wallet for desktop.

MIT LicenseMIT

Wasabi Wallet 2.0 Documentation

Wasabi Wallet is an open-source, non-custodial, privacy focused Bitcoin wallet for desktop. It implements a trustless privacy technique, called WabiSabi CoinJoin.

This is Wasabi Wallet's open-source documentation repository. Here you will find information about the nuances of privacy in Bitcoin, how Wasabi solves some of the existing problems, and how you can use this tool to defend yourself.

If you would like to support the project by educating other people, this documentation repository is the right place for your efforts! If you have a question regarding the documentation, please open an issue. If you have an answer to a question, please open a pull request. For more details on how to contribute, see the contribution checklist or the to-do list.

If you need help regarding the software specifically, please check out Discussions in Wasabi Wallet's main repository.

Build Status


🏛️ The pillars of the documentation


📄 Contribute to the Documentation

Just like the Wasabi Wallet software, this documentation is libre and open-source under the MIT license. Not only do we appreciate everyone's contribution, but we desperately need it!


VuePress

The Wasabi documentation website is built using an open-source static site generator called VuePress. Its configuration and theme are extremely customizable, and it offers great defaults out-of-the-box. Check out the VuePress website for details on how to use it.

To contribute to the content of the website, you can make PRs related to the markdown files in the /docs/ directory, and if merged, the changes will automatically be integrated into the documentation website by VuePress. Know that you do not need to understand/deal with VuePress at all in this case.

Writing Conventions

  • Wasabi [capitalized]
  • coinjoin [not capitalized, one word]
  • WabiSabi [capitalized, one word]
  • Every sentence must start in a new line.
  • For a paragraph, add an empty line or </br> in the markdown.

Reference files

Please consider this repository structure for hyperlinks, and use relative links whenever possible, for example:

[What is a coinjoin?](FAQ-Introduction.md#what-is-a-coinjoin)

Embedding images

The images are stored in the /docs/.vuepress/public/ directory. They can be embedded via the following markdown tags:

![Alternative text of the image](/IMAGENAME.png "Title of the image")

Embedding videos

Youtube videos and playlists can be embedded via the following custom markdown tags:

@[youtube](VIDEO_ID)
@[youtubePlaylist](PLAYLIST_ID)

Optionally you can also specify the start position of a video in seconds (e.g. starts at 100 seconds):

@[youtube](VIDEO_ID,100)

And the index of the video of a playlist (e.g. starts the third video):

@[youtubePlaylist](PLAYLIST_ID,VIDEO_ID)

Text Highlights

There are three types of text highlights that can be used to display different colored boxes.

A green box displaying a friendly tip:

:::tip
foo
:::

A yellow box with a cautious warning:

:::warning
foo
:::

A red box with a clear danger, you can also add a title foo to any container:

:::danger foo
bar
:::

Frequently asked questions

Use this markdown box with the headers to write the FAQ:

:::details
### question

answer answer answer.
answer answer answer.
:::

When you want to highlight text within a question, then you need to nest containers by adding more : for the outer block start/end. The outer details container has now four ::::, and the inner warning container has still three :::.

::::details
### question

answer answer answer.

:::warning
answer answer answer.
:::
::::

Variables

To have a single place to maintain universal strings like the current Wasabi version number, we use variables in the Markdown (i.e. ${currentVersion}and ${zksnacksPublicKeyFingerprint}). These variables are managed in docs/.vuepress/variables.js. Occurrences of ${variableName} get substituted before the Markdown is processed.

Build the Documentation Locally

In order to build the website locally, you'll need Node.js >= 10.16 (or basically the latest LTS version).

Serve locally

  1. Install dependencies
  2. Serve locally (by default on port 8080)
npm install
npm start