Step by step detailed technical manual for installing SERO (SUPER-ZK) Protocol on your local machine{Requires: CentOS7}

This article will cover following subjects :

1) Creating Accounts.
1) Mining SERO coins.
2) Generating transactions.
3) Deploying smart contract on SERO.
4) Doing anonymous transaction to another accounts using the coins issued by the smart contract.

and much more!

1. Hardware Requirements

Processor: CPU with 2 threads or more(4 threads will run more smoothly)
Disk space: 10G

  • #Hardware information of test machine in this document
  • ----------------------------
  • OS : CENTOS7.3
  • Processor : Xeon E5-26xx v4 (C2T2)
  • RAM : 4GB
  • Disk space : 50GB
  • ----------------------------

2. Environment preparation

  • $ sudo yum install golang
  • $ sudo yum install git

Install the required C++ dependency library

  • #Install Boost Library
  • $ sudo yum install boost
  • #May also need to install gmp, libgomp, procps-ng
  • $ sudo yum install gmp libgomp procps-ng

3. Get the source code

  • $ pwd
  • ... /root
  • $ mkdir gopath
  • $ mkdir gopath/src
  • $ mkdir gopath/src/
  • $ mkdir gopath/src/
  • $ export GOPATH=/root/gopath
  • $ cd gopath/src/

Visit the go-sero project webpage to clone the code:

Visit the go-czero-import project webpage to clone the code:

4. Compile gero

  • ... go-sero go-czero-import
  • $ cd go-sero
  • $ make all
  • $ ls build/bin/gero
  • ... build/bin/gero

You can see that the executable program gero is generated under the path build/bin, and if you want to recompile it, use the command:

  • $ make clean
  • $ make all

5. Configuration

First, configure the environment running gero

Create the SERO data storage directory

  • $ mkdir ~/sero-data

Set the dynamic library importing path


6. Start the background service

Start dev mode

In this mode, you should connect other dev nodes manually. Mining difficulty is very easy and unlimited.

Start alpha mode

In this mode, the AlphaNet is automatically linked and start synchronizing data. The AlphaNet is the internal test network of SERO. The mining requires a license. If there is a test requirement, you can send an email to []( to apply for a "mining license" or "SERO token for test".

Start beta mode

In this mode, the BetaNet network is automatically linked and start synchronizing data. The BetaNet is the beta test network of SERO. The mining requires a license also. If there is a test requirement, you can send an email to []( to apply for a "mining license" or "SERO token for test".

Start Main mode

This mode is not currently supported and will be provided when the main network is online...

Result output

As long as you see the terminal output "IPC endpoint opened", it means that the service startup has been successful. Now you can start the gero console to connect to the background service.

7. Start the gero console

  • #Start the gero service in the background
  • $ nohup build/bin/gero --dev --datadir "~/sero-data" --ipcpath "~/sero-data/gero.ipc" > ~/sero-data/gero.log &
  • #Start the console
  • $ build/bin/gero --datadir "~/sero-data" attach
The attach parameter will let gero launch a interactive console based on JS virtual machine.

In which you can run complex Javascript interactive commands, the command to exit the console is

  • > exit

8. Accounts management

Create account

  • ... "[PK]"

Where [PASSWORD] is the password for this account, because SERO does not store the user's private key. If there is no operation for 5 minutes, the account will be locked. In this case, to transfer the account, you need to use this password to unlock the accout. The command of create user will returns the user's public key. This public key can be used as a transfer address.

View all public keys

  • ... ["[PK0]","[PK1]",...,"[PKn]"]

This command returns the public keys of all accounts in the current wallet.

Unlock account

[PK] is the user's public key

Get account balance

  • ... {tkn:{...},tkt:{...}}

tkn shows all the Tokens balances of the account by category, and tkt shows all the Tickets held by the account by category.

9. Mining

Start mining

Stop mining

Console sleep

The parameter num is the number of blocks that need to sleep. This method must be invoked when the mining is started, otherwise the system will be blocked constantly. It should be noted that the reward obtained by the mining, by default, will enter the _ public address _ generated _ temporary address (PKr)_ of the 0th account of sero.accounts.

10.Perform transactions

Transaction command

… “[TX_ID]”

  • Where [SRC_PK] is the public key of the sender, [TARGET_PK] is the public key of the recipient, [NUM_OF_TA] is the minimum unit amount, the minimum unit of the SERO is TA, and the conversion unit is `1 SERO = 10^18 TA`. The return value [TX_ID] is the ID of the generated transaction.

After the transaction is generated, it will be synchronized to other nodes in the current network, waiting to be packaged into the block. After packing into the block, you can use the following command to get the details of the transaction.

Get transaction details

  • ...[TX_DETAIL]

The main formation of [TX_DETAIL] is as follows:

  • {
  • from: "[SENDER PKr]",
  • stx: {
  • Desc_Z_Ins: [{
  • Anchor: "[MERKLE AUTH ROOT]",
  • Nil: "[NULLIFIER ID]",
  • Trace: "[TRACE ID]"
  • Proof: "[ZKP PROOF]"
  • }],
  • Desc_Z_Outs: [{
  • PKr: "[RECIVER PKr]",
  • Proof: "[ZKP PROOF]"
  • }],
  • }
  • }

11. Deploy smart contracts

Compile smart contracts

After loading, you can see an example of sero token. sol issuing anonymous tokens.

Select seroToken in the upper right corner and click Details.

Click the copy button in the upper left corner of the pop-up box WEB3DEPLOY.

Modify initialization parameters

Modify the initialization variables in a text editor.

Deploy smart contract

Then paste all of the text into the console and press Enter. The console will immediately send a transaction to deylpy this smart contract.

View smart contract account

After the transaction is successfully executed, the token issued by the smart contract can be viewed through the command sero.getBalance.

Call the smart contract

The anonymous tokens issued by the smart contract can be sent to the personal account using the transfermethod defined by the smart contract.

Send anonymous tokens

  • sero.sendTransaction({from:sero.accounts[0],to:sero.accounts[1],value:500,cy:"HELLOCOIN"})

Finally, in the accounts of accounts[1], you can see that it has received 500 tokens of HELLOCOIN.

The transaction is also confidential transaction.

The end

If you are interested in the principles of SERO and the zero-knowledge proofs algorithms, you can download our white paper from SERO’s [official website] ( Any suggestions can also be sent to [] (

Welcome to SERO’s [Gitter Community] ( to make SERO better.

Website :
White paper V1.0.6 :
Twitter :
Telegram :
Telegram News channel :
Facebook Page :
Github :

Gitter Community :
SERO Blockchain Explorer :
SERO Smart Contract Editor :
SERO Introduction Video :
SERO’s 20x encryption speed vs Zcash demonstration video :



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
SERO Protocol

World’s first Zero-Knowledge Proof based Privacy Protection platform for decentralised applications which supports smart contract and uses SuperZK protocol.