HowTo

A small tutorial how to send an anonymous message to the Z-Board.

Introduction: Shielded Transactions

 The ZCash blockchain enables completely anonymous transactions from shielded to shielded z-addresses

 Realized using zero-knowledge proofs, the transaction recipient receives no information about the sender (e.g. his address), or the history of the money sent

 Therefore, when sending a message to a Z-Board address, the sender remains completely anonymous

 Learn more at the official ZCash security website: https://z.cash/support/security/privacy-security-recommendations.html!

Introduction: Z-Board

 The Z-Board is a simple chat page with support for custom topics/channels

 Each topic is identified by a shielded z-address and a viewing key

 Sending a ZCash transaction to this shielded z-address will result in the transaction-memo-field being displayed in the chat timeline

 The viewing key is available at the bottom of each chat page, it has the power to fully restore the chat history for that given topic

 The viewing key is therefore a window to an encrypted area inside the ZCash blockchain

 As long as the viewing key for a topic is available, the full chat log is accessible inside the ZCash blockchain (independent of the Z-Board website)

Usage:

 Navigate to Chat or Topics to select the main chat page or a specific topic

 From your personal z-address send a small amount of ZCash to the shielded topic z-address at the top of the chat log

 Inside the transaction, enter up to 512 characters into the memo-field; this will be the chat message to be displayed

 If this specific chat is important for you, store a copy of the viewing key, to restore it any time in the future

 Begin the memo field with a name followed by two colons :: (allowed characters: a-zA-Z_, no spaces or special characters, max. length: 50 characters); Example: Speedy_Gonzales:: This is a message!

 If the amount of ZCash sent is greater or equal to 0.01 ZEC, the resulting message box will be highlighted red

Requirements:

 We need a ZCash client that is able to create shielded transactions

 Examples: Offical ZCash client for Linux (link) or WinZEC for Windows

 Since we continue with the reference client, let's also use the convenient tool zsmg (link) for sending messages

Download & Install:

ZCash reference client installation

 First navigate to the ZCash download location (link given above) and download the latest ZCash tar.gz package (e.g. zcash-1.0.15-linux64.tar.gz)

 Now put the package into your preferred location (e.g. /home/yourusername/zcash-1.0.15-linux64.tar.gz) and unpack using the following command:

tar xvfz zcash-1.0.15-linux64.tar.gz

 Now create a config file:

mkdir /home/yourusername/.zcash
touch /home/yourusername/.zcash/zcash.conf

 Add content to it:

server=1
rpcuser=some_username
rpcpassword=some_complicated_string
rpcport=8232

 Let's change to the ZCash binary directory:

cd /home/yourusername/zcash-1.0.15/bin

 Fetch params (only required after install) and sync blockchain:

./zcash-fetch-params
./zcashd

 This will take some time to sync; in the meantime let's install zmsg


Zmsg installation

 Install golang and set some paths (assuming Ubuntu OS, different install command for other OS):

sudo apt-get install golang-go
mkdir /home/yourusername/go
echo 'export GOPATH=$HOME/go' >> /home/yourusername/.bashrc
echo 'export PATH=$PATH:$HOME/go/bin' >> /home/yourusername/.bashrc
source /home/yourusername/.bashrc

 Zmsg install now in on line:

go get github.com/whyrusleeping/zmsg

 Test proper Zmsg function:

zmsg check

Sending Transactions:

Create a Shielded Z-Address

 Wait until the zcash-daemon has fully synced the blockchain

 Now create your own shielded address:

cd /home/yourusername/zcash-1.0.15/bin
./zcash-cli z_getnewaddress

 The previous step will display your personal shielded z-address

 Now send some small amount of ZCash to your shielded address (few $ cents will be enough)


Send a Message:

 The following step will finally send a message to a Z-Board topic:

zmsg sendmsg "Nickname:: this is a test message" -to "[insert the Z-Board topic shielded z-address here]"

 By default, 0.0001 ZEC will be sent, change with the --txval flag