Get Started

This section covers ZWallet CLI repository configuration, and installation.

System Requirements

To properly build components, you must have a machine setup with the following requirements:
  • Linux (Ubuntu Preferred) Version: 20.04 or Above Mac(Apple Silicon or Intel) Version: Big Sur or Above Windows : Windows 10 or Above
  • 4 vCPU, 4 GB Memory at minimum
  • 1 GB of space minimum for zwallet build components

Install zwalletcli

Linux Installation

  1. 1.
    Open terminal and download the latest linux zwalletcli archive release.
curl -LO https://github.com/0chain/zwalletcli/releases/download/v1.10.0/zwallet-macos.tar.gz
  1. 2.
    Extract the downloaded archive to a specified directory using the command below.
sudo tar -xzf zwallet-linux.tar.gz --directory /usr/local/bin
3. Provide execution privileges to the executable.
chmod +x /usr/local/bin/zwallet
4. Navigate to the extracted directory path.
cd /usr/local/bin
  1. 5.
    Run the zwallet executable by using the command below.
./zwallet
On successful installation you will see a help section:
Use Zwallet to store, send and execute smart contract on 0Chain platform.
Complete documentation is available at https://0chain.net
Usage:
zwallet [command]
Available Commands:
auth-register Register an authorizer manually
auth-sc-delete Deletes an authorizer to token bridge SC manually
auth-sc-register Register an authorizer to token bridge SC manually
Use "zwallet [command] --help" for more information about a command.

Windows Installation

  1. 1.
    Download the latest windows zwalletcli archive release from here.
  2. 2.
    Extract the executable from archive zwallet-windows.zip
  3. 3.
    Run the executable zwallet.exe in windows command prompt.
  4. 4.
    On successful installation you will see a help section similar to response below :
Use Zwallet to store, send and execute smart contract on 0chain platform.
Usage:
zwallet [command]
Available Commands:
auth-register Register an authorizer manually
auth-sc-delete Deletes an authorizer to token bridge SC manually
auth-sc-register Register an authorizer to token bridge SC manually
Note: The above response is shortened for formatting purposes. 5. Configure zwallet network

macOS Installation

  1. 1.
    Open terminal and download the latest mac zwalletcli archive release.
curl -LO https://github.com/0chain/zwalletcli/releases/download/v1.10.0/zwallet-macos.tar.gz
  1. 2.
    Extract the downloaded archive to a specified directory using the command below:
sudo tar -xzf zwallet-macos.tar.gz --directory /usr/local/bin
  1. 3.
    Provide execution privileges to the executable.
chmod +x /usr/local/bin/zwallet
  1. 4.
    Navigate to extracted directory path .
cd /usr/local/bin
  1. 5.
    Run the zwallet executable using the command below.
./zwallet
On successful installation you will see a help section similar to response below :
Use Zwallet to store, send and execute smart contract on 0Chain platform.
Usage:
zwallet [command]
Available Commands:
auth-register Register an authorizer manually
auth-sc-delete Deletes an authorizer to token bridge SC manually
auth-sc-register Register an authorizer to token bridge SC manually
Note: The above response is shortened for formatting purposes.

Building ZWallet

Building zwalletcli for WIndows

Windows 64bit (tested with Windows 11)
  1. 1.
    Installing msys2 from here.
  2. 2.
    Open MSYS2 MINGW64 shell from the windows start menu. The MINGW64 shell window will be similar to screenshot below.
  1. 3.
    Install the following libraries:
pacman -S base-devel git gcc make
  1. 4.
    Install clang, go for mingw64 and unzip
pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-go unzip
Note: Restart mingw64 shell for Go to make changes.
  1. 5.
    Set environment variables
    export GOROOT=/mingw64/lib/go
    export GOPATH=/mingw64
    export PATH=$PATH:$GOROOT/bin
    # use clang as a default compiler for CGO
    go env -w "CC=/mingw64/bin/clang.exe"
  2. 6.
    Clone zwalletcli
git clone https://github.com/0chain/zwalletcli.git
  1. 7.
    Navigate to zwalletcli and run the following command :
cd zwalletcli
make install
  1. 8.
    Download necessary dll files as zip from here.
  2. 9.
    Unzip and copy dll's to zwalletcli directory. The zwalletcli directory will be available at the following path C:\msys64\home\<windows_username>\zboxcli if cloned under mingw64 shell.
  3. 10.
    Now run the ./zwallet command under zwalletcli directory .
./zwallet
On a successful build you will see a help section

Building zwalletcli for Mac and Linux

GoLang Binaries

Installation instructions for Go can be found here.

Build-Essential(For Linux Only )

The build essential package is required to build and make zwallet application. It includes the necessary GCC/g++ compilers and other essential critical libraries and utilities.
Run apt update command to update the packages.
sudo apt update
Get Build-essential package.
sudo apt-get install build-essential

Git(For Linux Only )

Git is required to retrieve and clone the Zbox repository. Install Git by using the command
sudo apt install git
1. Clone the zwallet repository using the command
git clone https://github.com/0chain/zwalletcli.git
2. Navigate to zwallet directory using
cd zwalletcli
3. Use the make install command to compile the source code.
make install
This might take couple of minutes. Sample output after successful compiling:
  1. 4.
    Start the zwallet by typing
./zwallet
On a successful build you will see a help section.

Configure ZWallet network

Configuration for the Züs network by default is stored in network/config.yaml file of the zwallet github repo which we will copy to a new config.yaml file in our local system .
  1. 1.
    Open terminal and make a new .zcn folder in the home directory of your system using the command below:
mkdir $HOME/.zcn
Note: For windows create a folder named .zcn at `C:\Users\<windows_username>`path
  1. 2.
    Copy config.yaml from network directory in zwalletcli repo to .zcn directory.
cp network/config.yaml $HOME/.zcn/config.yaml
  1. 3.
    Open the config.yaml file located at $HOME/.zcn path of your system.The contents should be similar to the file below.
---
block_worker: https://demo.zus.network/dns
signature_scheme: bls0chain
min_submit: 50
min_confirmation: 50
confirmation_chain_length: 3
max_txn_query: 5
query_sleep_time: 5
# # OPTIONAL - Uncomment to use/ Add more if you want
# preferred_blobbers:
# - http://one.devnet-0chain.net:31051
# - http://one.devnet-0chain.net:31052
# - http://one.devnet-0chain.net:31053
Zwallet connects to the Züs network using the block_worker field. These network details are automatically fetched from the blockWorker's network API. Preferred Blobbers are also present which you can uncomment for using specified storage providers for handling your files. Note: In case you are configuring zwallet network for setting up blockchain locally the block_workershould be set to http://198.18.0.98:9091/

Creating a Wallet

ZWallet CLI provides a long list of commands to use. Lets begin with creation of wallet on Züs decentralized network.
For creating a wallet using ZWallet. Simply run create-wallet command and this creates a wallet at default location~/.zcn/wallet.json
Sample Command
./zwallet create-wallet
Sample Output
wallet saved in /home/ubuntu/.zcn/wallet.json
{"client_id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"client_key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"keys":[{"public_key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"private_key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}],
"mnemonics":"xxxx xxxx xxxx xxxxx",
"version":"1.0","date_created":"2023-05-03T12:44:46+05:30","nonce":0}
Here is a sample with faucet command which will create a wallet with test tokens at default location~/.zcn/wallet.json
To add tokens to the wallet run zwallet faucet command.
./zwallet faucet --methodName pour --input "new wallet"

Checking the wallet balance

To check whether the wallet is successfully created, verify the token balance in zwallet using
./zwallet getbalance
Note that by default zwallet checks balance for the wallet specified in wallet.json file located in the zcn folder in linux home directory.
Successful Response for ./zwallet getbalance command:
Balance: 1 (1.17 USD)

Getting tokens into the wallet

If getting Get balance failed.error when running ./zwallet getbalance command. Run the ./zwallet faucet --methodName pour --input "{Pay day}" command and then check the balance again.
The faucet command will get test tokens into the wallet for transactional purposes and make the wallet usable. Successful Response of the faucetcommand:
Execute faucet smart contract success
Now you have a wallet with available ZCN tokens, which can be used with 0chain blockchain and decentralized storage services.