> For the complete documentation index, see [llms.txt](https://gothamcash.gitbook.io/bindowscash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gothamcash.gitbook.io/bindowscash/getting-started/quickstart.md).

# How to use BindowsCash

Let's hide your transactions on Binance Smart Chain. In order to break the chain and receive untraceable BNB tokens, you will need the following:

{% hint style="info" %}
Let's hide your transactions on Binance Smart Chain. In order to break the chain and receive untraceable BNB or USDC tokens, you will need the following:

* A laptop is preferred, as some visual issues appearing on mobile are being fixed
* A browser with Metamask installed, connected to Binance Smart Chain mainnet RPC
* An internet connection
* (Recommended) A VPN if you want to obfuscate your crypto transactions on your network
  {% endhint %}

## 1. Connect your Metamask wallet to BindowsCash

First of all, to use the dApp, you need to connect your web3 wallet. We currently only support Metamask. BSC mainnet is selected by default, but make sure you are using the right network before proceeding. Selecting an incorrect chain may cause a funds loss.

<figure><img src="/files/SnMbY1tPqxU5sXMy8fBV" alt=""><figcaption></figcaption></figure>

Once connected, the button will change to "Connected!", and the right box will remind you which wallet is connected to the service:

<figure><img src="/files/attIrtO4SUnxJJHU4040" alt=""><figcaption></figcaption></figure>

## 2. Select your currency and denomination

By default, the BNB token with 0.001 BNB denomination is selected:

<figure><img src="/files/UMtEqqPqUPKcwievwyxq" alt=""><figcaption></figcaption></figure>

In our example, we have 0.0121 BNB in our wallet, and we want to test the 0.01 BNB pool. So we select 0.01 BNB:

<figure><img src="/files/CcTPVjAd0BblcxiEsddS" alt=""><figcaption></figcaption></figure>

At the same time, before depositing, we can check how anonymous will be our deposit, from the pool statistics on the right side.\
For example, in our 0.01 BNB deposit, there is currently no active deposits (all deposits have been withdrawn), and you also get the time passed since the last 10 deposits:

<figure><img src="/files/3hNeOiCfxpHCcr3ZwcmC" alt=""><figcaption></figcaption></figure>

In this case we will be the first active depositor, since all previous deposits were withdrawn. That's fine, as long as other users stack 0.01 BNB deposits on top of yours.

Back to the deposit: Once you have selected the currency and the amount you want to deposit, make sure you have enough in your wallet to proceed, then click on Deposit.

Once clicked, a Metamask window will pop-up, requesting you to confirm the transaction:

<figure><img src="/files/DEkcXt04jcllb7qoGCEU" alt=""><figcaption></figcaption></figure>

This will send your deposit to the 0.01 BNB pool + generate an encrypted note based on your commitment and random hex numbers.&#x20;

To ensure the uniqueness and unpredictability of your deposit, a **salt** is used—commonly referred to as a *secret* in the note format. This salt is a random 32-byte hex value generated locally in your browser using secure cryptographic randomness. Our double-hashing encryption method adds **entropy** to your commitment and makes it infeasible for anyone to precompute or guess your deposit hash.

Once the transaction is confirmed, the following modal window will appear:

<figure><img src="/files/Uy4WcEikOKSjZx9ccvGW" alt=""><figcaption></figcaption></figure>

Our deposit was made, and note was generated.

In our example:

```
bindowscash-bnb-0.01-0xe982974fb7c235d7037745ee266ef20d5b1e8bc2a4e27f1971dd865893dfd2b8-0x6059FB894D1dB04F28620acACAE12C18e23d62C6
```

Click on Copy the note or CTRL+C it from the field, then find a safe place to store it (a text file on your Desktop might not be a good idea to be honest, treat it like your credit card PIN code).

Once the note is safely stored, click on **OK, I saved my note**.\
Then your deposit will be active and displayed in the stats:

<figure><img src="/files/ifDys9naK56FEdVPAwtZ" alt=""><figcaption></figcaption></figure>

## 3. Store your note in a safe place

As we said previously, consider this note like your private key: if you share it, people may stole the associated funds. If you lose it, you can't recover your funds, and no one can help you doing it, they're lost.

The note is unique and generated dynamically only to you, nothing is stored anywhere. Our server will never store it. This is the key to access your deposit in the smart contract, that will use it to compute the answer and deliver your funds during a withdrawal.

So write it down on a piece of paper, and hide it in your place, or somewhere where it will be safe from curious eyes.

## 4. Wait for some time

After making your deposit, it's highly recommended to **wait before withdrawing**. This waiting period allows your deposit to blend into a growing pool of other deposits, increasing your privacy.

By waiting, you **dilute the traceability** between your deposit and your future withdrawal. If you withdraw too soon — especially right after depositing, and more especially in the early days of the pool — it becomes easier for observers to correlate the two events and weaken your anonymity.

> The longer you wait, the larger the anonymity set becomes.

We recommend waiting **at least a few hours**, or ideally **several days**, depending on overall network activity. The more users interact with the mixer during this time, the stronger your privacy protection will be.

Obviously, if you are the first **active** depositor in the pool (regardless of the previous deposits, like us in our example with *0 equal user deposits*), you need to wait at least one other depositor in this pool to increase your anonymity rate from 0% to 50% (and this percentage will increase logarithmically along with more deposits). You can still withdraw your deposit from your current connected address or another address, but it will be obvious that you are the depositor, as no one stacked his 0.01 BNB deposit after yours. We will manage to add deposits on our side as well (by time to time) to increase your anonymity rate.<br>

## 5. Withdraw your deposit from another wallet using your note

When you're ready to withdraw, simply connect a new wallet to the dApp.\
**Avoid using the same wallet you used to deposit**, as this compromises your anonymity and defeats the purpose of the mixer.

We have implemented a gasless relayer, meaning that out official third-party can safely call the pool contract on your behalf. No one can steal your funds, since only the signer is the proprietary of the funds, as stated in the contracts of all our pools (publicly accessible).\
So you're free to call the contract yourself (classic withdrawal) but you will need some BNB in your wallet to pay the gas fees, or use the gasless relayer (gasless withdrawal) that will use the relayer BNB balance to pay the transaction fee (you don't pay anything, so you don't need to have BNB in your wallet, you can use a fresh one).

Once connected with your preferred wallet, navigate to the **Withdraw** tab and paste the **note** you received during your deposit:

<figure><img src="/files/Es6hZ7zglfhSjDzVOGwL" alt=""><figcaption></figcaption></figure>

Your connected wallet should be automagically parsed in the beneficiary field.\
Then, just paste or type your note into the **Deposit note** field.

The note should either appear as ✅ valid or ❌ invalid:

<figure><img src="/files/Wm9DmyRX5pDjfv7zkBny" alt=""><figcaption></figcaption></figure>

Once you have entered the note and it appears to be valid, you have 2 options:<br>

### A/ Classic withdrawal (using gas fees, no relayer)

<figure><img src="/files/bR7LrakUyVmRnrEngDcf" alt=""><figcaption></figcaption></figure>

If you choose to toggle off the Gasless withdrawal button, you will perform a classic withdrawal :

* Your wallet will directly interact with the pool contract associated to the note's denomination.
* You need a wallet with a few BNB (or other native tokens depending on the chain) to pay the gas fees.

Click on withdraw when you are ready to process, Metamask will ask you to sign a message.\
The signature **does not send any transaction** and **does not cost gas**.

<figure><img src="/files/u0hqiO8Vzmnyb5YGwNAC" alt=""><figcaption></figcaption></figure>

✅ **Purpose of this signature**:

* It **proves that you own the secret** associated with a valid deposit.
* It ensures the withdrawal will only go to **you** — and **not someone else** trying to steal your funds (prevents frontrunning).
* It **protects your anonymity** — we never ask for any personal info or wallet address directly.

✳️ **Important**:\
This message is **only signed locally by your wallet**.\
It’s not broadcast to the blockchain — it’s only used as cryptographic proof for the smart contract.

🛡️ Without this step, **anyone with your deposit note** could potentially steal your funds. The signature ensures only you can claim them.

Confirm the signature request when you're ready to proceed. Then wait for the second Metamask window to appear (under several seconds), that will be the actual withdrawal transaction:

<figure><img src="/files/Amtg2bPcv36erkOjvCnS" alt=""><figcaption></figcaption></figure>

You will have to pay gas fees for this transaction.\
In our example, our wallet does not have BNB at all to pay the network fees, so the window shows an alert. If you have enough, just click on **Confirm**.

### B/ Gasless withdrawal (no gas fees, using relayer)

<figure><img src="/files/KKr1PyJdqjk14g1sNw8E" alt=""><figcaption></figcaption></figure>

Normally, when you withdraw funds from a smart contract, you have to **pay gas fees** with your wallet (BNB, ETH...). But thanks to our **Gasless Relayer**, you **don’t need to pay gas yourself** — we take care of it for you.

#### 🔍 How does it work?

* When you withdraw, your wallet **signs a message** proving you’re the owner of a valid deposit note.
* Instead of submitting the transaction yourself (and paying gas), the **relayer receives your signed message**.
* The relayer **submits the transaction** to the blockchain **on your behalf**, covering the gas costs. You then receive your funds from the contract, that has been called by the relayer.

#### 🎯 Why is it useful?

✅ **No gas required** from your wallet\
Even if you have **0 BNB** (or ETH), you can still withdraw your funds.

🕵️‍♂️ **Better privacy**\
Since the relayer sends the transaction, **your wallet address is never linked** to the withdrawal on-chain.

🧠 **User-friendly**\
It simplifies the process — no blockchain knowledge or wallet funds required.

💸 **Sustainable**\
A small fee is taken from your deposit to help cover relayer costs — **no surprise charges**.

<figure><img src="/files/yo2vJ76HHaCUQqXx1TvS" alt=""><figcaption></figcaption></figure>

Confirm the signature request, and wait for the relayer transaction to be confirmed on the blockchain.

## 6. ✅ Done!

If everything went through, The funds were withdrawn anonymously (obviously not in our case, since we were the only depositor), and the dApp will show the following message:

<figure><img src="/files/QM6VtVuaueDqO9qHPdF5" alt=""><figcaption></figcaption></figure>

That means that the transaction has been confirmed, you can click on the transaction hash if you need more details (that will open the blockchain explorer in your browser).

If you used the classic withdrawal (not using the gasless relayer), you will see the following message instead:\ <br>

The note is now worthless (cannot be used a second time), and the funds were transferred to the desired wallet. Here is the transaction on the 0.01 BNB pool contract:

<figure><img src="/files/YTuLCdTopdVJQlB9aKsG" alt=""><figcaption></figcaption></figure>

In this case, our transaction was relayed by our official relayer (0xD3d47348...).\
Yo may have noticed that it says "0 BNB" on the right side. That's normal, the BNBs were transferred via an internal transaction. If you click on the transaction hash, you will see the following:

<figure><img src="/files/hKxd5F8pKRzStzFlVePR" alt=""><figcaption></figcaption></figure>

The relayer (0xD3d473...) called the contract (0x6059FB89...) on behalf of our connected wallet (0xC16F1e77...), the contract then internally withdrawn the funds to our wallet, minus the fee.

Note that the funds withdrawn will be shown in the **Internal transactions** tab in your explorer:

<figure><img src="/files/kR4HIiZFDFFPIRIpUmAf" alt=""><figcaption><p>Funds movements are located in the Internal Transactions tab.</p></figcaption></figure>
