Skip to content

User Guide

gully edited this page Jan 31, 2019 · 7 revisions

Zilminer allows Miners to do proxy mining via the Getwork protocol to 1 CPU node or a cluster of CPU nodes with the help of a proxy server.

  • For setting up many GPU rigs to 1 CPU node. Please see Option 1 below.
  • For setting up many GPU rigs to many CPU nodes. Please see Option 2 below.

Option 1: Setting up many GPU rigs to 1 CPU node

The setup architecture is shown below in the image. All communications between these two parties is via JSON-RPC.

1 to many

  • The Zilliqa node will be running on 1 CPU and carrying out the pBFT consensus to receive rewards.
  • The GPU rigs will run Zilminer on a separate GPU cluster to do PoW mining and provide PoW solutions directly to the CPU node.

For hooking up several GPU rigs to 1 CPU node, you will require do the following steps:

Step 1. Download the Zilminer client on all your GPU rigs

Step 2. Download and setup the Zilliqa client on your CPU node

NOTE: Zilliqa client is only supported on Ubuntu 16.04 OS.

You can follow the Mining guide wiki for either docker or native build to setup your Zilliqa client. However, you will have to edit the constants.xml file in your configuration file for the following parameters before launching:

  • Set GETWORK_SERVER_MINE to true.
  • Set GETWORK_SERVER_PORT to the port you will be using to GetWork. (default is 4202)
  • Set the other mining parameters to false.
    <CUDA_GPU_MINE>false</CUDA_GPU_MINE>
    <FULL_DATASET_MINE>false</FULL_DATASET_MINE>
    <OPENCL_GPU_MINE>false</OPENCL_GPU_MINE>
    <REMOTE_MINE>false</REMOTE_MINE>
    

After doing so, you will need to find out your current IP address with the following command and write it down:

curl https://ipinfo.io/ip

Step 3. Setting up the Zilminer clients

Key in the following command in your command prompt:

zilminer -P zil://wallet_address.worker_name@zil_node_ip:get_work_port

NOTE: Change the wallet_address, worker_name, zil_node_ip, and get_work_port accordingly.

  • For wallet_address : You can use the Zilliqa Wallet to create a new keypair and a Zilliqa address.
  • For worker_name : You can key in any arbitrary worker name you desire.
  • For zil_node_ip : Please key in the IP address of the Zilliqa node you written down.
  • For get_work_port : Please key in the port used in GETWORK_SERVER_PORT. Default is 4202.

Option 2: Setting up many GPU rigs to many CPU nodes

The setup architecture is shown below in the image. All communications amongst these three parties is via JSON-RPC.

many to many

  • The Zilliqa nodes will be running on a CPU cluster to process transactions and carrying out the pBFT consensus to receive rewards.
  • The GPU rigs will run Zilminer on a separate GPU cluster to do PoW mining and provide PoW solutions via the Mining proxy to CPU cluster.
  • The Mining proxy will handle the mining request from the CPU cluster and process the Mining Register/Response from the GPU cluster.

For hooking up several GPU rigs to several CPU node, you will require do the following steps:

Step 1. Download the Zilminer client on all your GPU rigs

Step 2. Setup your Zilliqa Mining proxy server

NOTE: Zilliqa Mining proxy server is only supported on Ubuntu 16.04 OS.

You will need a separate CPU to create this mining proxy server. The recommended setup is to host this proxy server in a GCP or AWS instance. (e.g t2.medium EC2 instance)

Please follow the guide located in this README.md in order to setup the Mining proxy server.

Mining proxy Github repo: https://github.com/DurianStallSingapore/Zilliqa-Mining-Proxy

You will need to obtain the URL of the api_server that you setup here for the next step ahead.

Step 3. Download and setup the Zilliqa client on all your CPU nodes

NOTE: Zilliqa client is only supported on Ubuntu 16.04 OS.

You can follow the Mining guide wiki for either docker or native build to setup your Zilliqa clients on all your CPUs.

The recommended setup will be to create a CPUs cluster using the docker image and handling the CPUs cluster with Kubernetes. A CPU node can be either a GCP or AWS instance. The recommended cloud instance to use for 1 CPU node is a t2.large EC2 instance.

For all your CPU nodes, you will have to edit the constants.xml file in your configuration files for the following parameters before launching:

  • Set REMOTE_MINE to true.
  • Set MINING_PROXY_URL to the URL of your mining proxy server. (e.g. http://127.0.0.1:4202/api)
  • Set the other mining parameters to false.
    <CUDA_GPU_MINE>false</CUDA_GPU_MINE>
    <FULL_DATASET_MINE>false</FULL_DATASET_MINE>
    <OPENCL_GPU_MINE>false</OPENCL_GPU_MINE>
    <GETWORK_SERVER_MINE>false</GETWORK_SERVER_MINE>
    

Step 4. Setting up the Zilminer clients

Key in the following command in your command prompt:

zilminer -P zil://wallet_address.worker_name@proxy_ip:proxy_port/api

NOTE: Change the wallet_address, worker_name, proxy_ip, and proxy_port accordingly.

  • For wallet_address : You can use the Zilliqa Wallet to create a new keypair and a Zilliqa address.
  • For worker_name : You can key in any arbitrary worker name you desire.
  • For proxy_ip : Please key in the IP address of the proxy api_server.
  • For proxy_port : Please key in the port of the proxy api_server. Default is 4202.