First open source DPoS delegate pool made for Lisk soon with possibility to issue custom tokens to voters!
PHP HTML CSS JavaScript
Switch branches/tags
Nothing to show
Clone or download
Latest commit ea5d75c Jul 13, 2018
Permalink
Failed to load latest commit information.
lisk-php @ b9bea22 update submodule Jul 13, 2018
private Frontend rewrite May 2, 2018
public Frontend rewrite May 2, 2018
readme_files add preview Jun 3, 2018
.gitmodules Removed submodule Apr 28, 2018
README.md add preview Jun 3, 2018
config.php Lisk 1.0.0 Compatibility Apr 27, 2018
license.md liskpool Apr 4, 2016
lisk_pool_scheme_db.sql processing.php fix Aug 12, 2017
utils.php Major Update Aug 2, 2017

README.md

Lisk Pool

This is first and fully open source Lisk delegate forging pool (also known as delegate reward sharing). Written in PHP. preview

Tokens and Dapps

In further updates LiskPool will allow to prepare or pregenerate genesis blocks to custom dapps allowing to distribute own tokens to voters, exact details yet to be announced by LiskHQ.

Requirements

MariaDB server
Memcached
Nginx
Lisk Node

Important

Only public directory must be served with webserver. While config.php and private should not be served.

Installation

Liskpool now fully relies on Lisk-PHP to interact with Lisk node, including transaction signing.

cd liskpool
git submodule update --init --recursive
cd lisk-php
bash setup.sh
cd ..
apt-get install nginx mariadb-server memcached php-memcached php php-curl

Setup mariadb server, nginx and import database scheme

lisk_pool_scheme_db.sql

Navigate to config.php

lisk_nodes & lisk_ports You can add here more independent nodes which are used to determine node with best height. It keeps pool updated with most recent state of network, prevents messing up charts in case of forks and other issues.


<?php
$lisk_nodes = array('localhost','123.123.123.123');
$lisk_ports = array('5000','5000');
return array(
    'host' => 'localhost',
	'username' => 'root',     //<- Database user
	'password' => 'dbpass',  //<- Database Password
	'bdd' => 'lisk', //<- Database name
	'lisk_host' => $lisk_nodes,
	'lisk_port' => $lisk_ports,
	'protocol' => 'http',
	'pool_fee' => '25.0%', //<- adjustable pool fee as float for ex. "25.0%"
	'pool_fee_payout_address' => '', //<- Pool revenue address
	'delegate_address' => '', //<- Delegate address - must be valid forging delegate address
	'payout_threshold' => '0.2', //<- Payout threshold in LSK
	'withdraw_interval_in_sec' => '604800', //<- Withdraw script interval represented in seconds
	'secret' => 'passphrase1', //<- Main passphrase the same your as in your forging delegate
	'secondSecret' => '', //<- Second passphrase, leave empty if only one enabled
	'fancy_withdraw_hub' => '', //<- Put here passphrase to withdraw from different account
	'public_directory' => 'public', //<- directory name of public dir served with webserver
	'cap_balance' => '150000000000000', //<- balance to cap voter votepower, default - anything over 1.5m LSK will be reduced to 1.5m
	'support_standby_delegates' => '5',	//<- automatically donate standby delegates
	'support_standby_delegates_amount' => '5000000000000',
	'slow_withdraw' => true //<- With payouts >1k lisk tx pool limit problem, it withdraws slower when true
);
?>

pool_fee_payout_address address specified for pool fee should be voting for delegate or should be manually added to table "miners".

Usage

(Managing and starting liskpool will be moved under one shell script)

Navigate to /private/ directory and start background scripts:

Node height checker, necessary even there is only one defined

screen -dmS bestnode php bestnode.php


Updating cache - this script updates and cache data

screen -dmS cacher php cacher.php


Block Processing - this script checks if delegate forged new block, if so it will split as defined in config

screen -dmS processing php processing.php


Updating charts - this script updates data to keep charts up to date.

screen -dmS stats php stats.php


Withdraw script - this script withdraws revenue as defined in config. It features multithreaded withdraw processing if your cpu has multiple cores or supports htt. Technically, it's more like forking rather threading, however it was simplier to implement and saves some time building php with zts enabled.

screen -dmS withdraw php withdraw.php


If you want to support Liskstats contributors and Liskstats itself use also script below. This script connects to Liskstats.net and retrieve all current contributors. Every contributor is added to split with "fake" votepower which is defined in processing.php.

screen -dmS liskstats php liskstats.php

Optional Balance checker - Simple script to compare total LISK value stored in database in reference to actual LISK stored on delegate account.

cd helpers
php check.php

All background scripts can be easily accessed with
NAME = "processing" or "stats" or "withdraw" or "bestnode" or "liskstats"
screen -x NAME
Example
screen -x processing

Forging

Liskpool works great along with Lisk-forging-failover, it's compatible with shared library. Just pull it in main directory. Then follow instruction from Lisk-forging-failover repository.

git clone https://github.com/karek314/Lisk-forging-failover
cd Lisk-forging-failover
bash setup.sh

Public API

Specified voter balance data for balance chart, respectively entitled pool balance, network balance and withdraw amount.

data/voters/ADDRESS.json
data/voters/balance/ADDRESS.json
data/voters/withdraw/ADDRESS.json

General data for charts

data/approval.json
data/balance.json
data/rank.json
data/voters.json
data/reserve.json
data/productivity.json

General pool info

api/info/

Current forged balance for each voter / contributor

api/info/forged/
api/info/forged/?by=ADDRESS

Liskstats.net good and bad nodes for processing.php

api/info/liskstats/?type=html
api/info/liskstats/?type=json

Logs

As soon any of background scripts gets excuted, logs directory will appear in private directory. It will store all logs of all background scripts.

Migration from Lisk Core 0.9.X branch to 1.0.0 / Master

Soon.

Migration from older version of pool

In past all chart data was stored in database tables, however with millions of rows and cheap vps it could have been possible bottleneck with thousands of voters and more. If you are pool operator and you want to keep all statistics history.

  1. Stop all background scripts
  2. Navigate to /helpers/ directory in /private/
  3. Execute php db2files.php all or screen -dmS dump php db2files.php all
  4. Wait until it finish, it can take hours for huge database. If your connection might drop, possibly execute this as background job choosing second command.
  5. Start updated background scripts.
  6. Tables pool_xxx and miner_balance can be deleted.

Contributing

If you want to contribute, fork and pull request or open issue.

License

Liskpool - MIT License,
Opensource libraries used
HTML5 Boilerplate v5.0 | MIT License
Plotly.js | MIT License
Lisk-PHP | MIT License
Modernizr 2.8.3 (Custom Build) | MIT License
Respond.js v1.4.2 | MIT License
jquery | MIT License
normalize.css v3.0.2 | MIT License