This is first and fully open source Lisk delegate forging pool (also known as delegate reward sharing). Written in PHP.
Tokens and blockchain apps
In further updates LiskPool will be adapated to work with custom apps and issuance of tokens.
Only public directory must be served with web server. While config.php and private should not be served. This repository contains only background core code and public api endpoints. Web interface is available in separate repository: https://github.com/thepool-io/liskpool-html Development of open source HTML interface version will not be continued.
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
Optionally, basic html interface
cd liskpool cd public git clone https://github.com/thepool-io/liskpool-html .
Setup mariadb server, nginx and import database scheme
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','126.96.36.199'); $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".
(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
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 NAMEExample
screen -x processing
git clone https://github.com/thepool-io/Lisk-forging-failover cd Lisk-forging-failover bash setup.sh
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
Current forged balance for each voter / contributor
As soon any of background scripts gets excuted, logs directory will appear in private directory. It will store all logs of all background scripts.
If you want to contribute, fork and pull request or open issue.
Liskpool - MIT License,
Opensource libraries used
Lisk-PHP | MIT License