# Storage Server Donations

The following is a configuration convention which allows users to anonymously support the operators of storage servers. Donations are made using Zcash shielded transactions to limit the amount of personal information incidentally conveyed.

## Sending Donations

To support a storage server following this convention, you need several things:

- a Zcash wallet capable of sending shielded transactions (at least until Zcash 1.1.1 this requires a Zcash full node)
- a shielded address with sufficient balance
- a running Tahoe-LAFS client node which knows about the recipient storage server

For additional protection, you may also wish to operate your Zcash wallet and full node using Tor.

### Find Zcash Shielded Address

To find an address at which a storage server operator wishes to receive donations, launch the Tahoe-LAFS web UI:

    $ tahoe webopen

Inspect the page for the storage server area. This will have a heading like Connected to N of M known storage servers. Each storage server in this section will have a nickname. A storage server with a nickname beginning with `zcash:` is signaling it accepts Zcash donations. Copy the full address following the `zcash:` prefix and save it for the next step. This is the donation address. Donation addresses beginning with `z` are shielded. It is recommended that all donations be sent from and to shielded addresses.

### Send the Donation

First, select a donation amount. Next, use a Zcash wallet to send the selected amount to the donation address. Using the Zcash cli wallet, this can be done with commands like:

    $ DONATION_ADDRESS="..."
    $ AMOUNT="..."
    $ YOUR_ADDRESS="..."
    $ zcash-cli z_sendmany $YOUR_ADDRESS "[{\"address\": \"$DONATION_ADDRESS\", \"amount\": $AMOUNT}]"

Remember that you must also have funds to pay the transaction fee (which defaults to 0.0001 ZEC in mid-2018).

## Receiving Donations

To receive donations from users following this convention, you need the following:

- a Zcash shielded address

### Configuring Tahoe-LAFS

The Zcash shielded address is placed in the storage server’s `nickname` field. Edit `tahoe.cfg` and edit the `nickname` field in the `node` section like so:

    [node]
    nickname = zcash:zcABCDEF....

Then restart the storage server.

## Further Reading

To acquaint yourself with the security and privacy properties of Zcash, refer to the Zcash documentation.