Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


zen package, entirely written in python, provides True Block Weight utilities for DPOS pool.

Support this project

Liberapay receiving

Buy Ѧ and:

Supported blockchain

  • Ark


last release

bash <(curl -s 3.0.0

development version

bash <(curl -s


cd ~
./zen initialize

This command restarts relay.

zen command

cd ~
./zen --help
    zen (reset | initialize | snap-blockchain | rebuild | remove-custom-peer)
    zen (start-srv | stop-srv | log-zen | log-bg)
    zen configure <username> [-s <share> -w <wallet> -t <threshold> -e <excludes> -b <block-delay> -f <fee-level>]
    zen add-delegate <username> [-h <webhook-peer>]
    zen configure [--max-per-sender <max-per-sender> --fee-coverage --chunk-size <chubk-size>]
    zen (launch-payroll | resume-payroll | retry-payroll | check-applied) <username>
    zen adjust-forge <username> <value>
    zen remove-delegate [<username>]
    zen append-custom-peer <peer-list>

    -b --block-delay=<block-delay>    : block amount to wait beetween payroll
    -e --excludes=<excludes>          : coma-separated or file address list to exclude from payroll
    -w --wallet=<wallet>              : delegate funds wallet
    -f --fee-level=<fee-level>        : set the fee level for the delegate
    -h --webhook-peer=<webhook-peer>  : define the webhook peer to use
    -s --share=<share>                : delegate share rate (0.0<=share<=1.0)
    -t --threshold=<threshold>        : minimum amount for a payment
    -n --name-list=<name-list>        : *.tbw coma-separated name list
    --max-per-sender=<max-per-sender> : max transaction not considered as spam attack [default:300]
    --chunk-size=<chunk-size>         : max transaction per request [default:30]
    --fee-coverage                    : delegate covers transaction fees (flag)

    reset              : initialization starting from ark-core config folder
    initialize         : initialization starting from delegates configuration
    rebuild            : rebuild database from snapshots
    configure          : configure options for a given <username>
    start-srv          : start the true block weight server tasks
    stop-srv           : stop the true block weight server tasks
    log-zen/bg         : log true block weight server or background tasks
    launch-payroll     : create a payroll for <username> (true block weight status reseted)
    retry-payroll      : retry a specified payroll for <username> (true block weight status unchanged)
    resume-payroll     : resume existing <username> payroll (true block weight status unchanged)
    add-delegate       : add <username> without relay initialization (use if bip39 secret protection)
    remove-delegate    : remove delegate from list or specified by <username>
    snap-blockchain    : update snapshot or create it if no snapshot initialized yet
    append-custom-peer : append custom peer from comma-separated-peer or newline-separated-peer file
    remove-custom-peer : remove one or more custom peer from a selection list

Specific tweak

You should tweak the env.CORE_TRANSACTION_POOL_MAX_PER_SENDER value to fit the number of voter. If not, part of payroll will be considered as spam.

For example, if your delegate is upvoted by 100 wallets, set the value to 110 (100+10%) :

./zen configure --max-per-sender 110

Notice that relay have to be restarted then.

Notification system

4 notification types are available. Notification service is activated if a json configuration file is present in .json folder.

freemobile (french only) Notification option must be enabled in your Free mobile account. Then, copy your parameters in freemobile.json file :

    "user": "12345678", 
    "pass": "..."

twilio Copy your parameters in twilio.json file :

    "sid": "...",
    "auth": "...", 
    "receiver": "+1234567890", 
    "sender": "+0987654321"

Pushover Copy your parameters in pushover.json file :

    "user": "...",
    "token": "..."

Pushbullet Copy your API token in pushbullet.json file :

    "token": "..."

zen front-end

zen front-end


Andromeda (v1.2.0)

  • true block weight
  • secured payrolls
  • command line interface
  • light weight HTML front-end
  • multiple pool management

Boötis (v1.3.0)

  • enable remote delegate management
  • blockchain database rebuild
  • snapshot management
  • custom peer management

Boötis - minor tweaks (v1.3.1)

  • reward distribution improvement

Cassiopeia (v1.4.0)

  • automatic fee coverage
  • transaction history rebuild
  • delegate targetting

Cassiopeia - minor tweaks (v1.4.1)

  • fee coverage is now optional
  • delegate targetting is now optional

Cassiopeia - minor tweaks (v1.4.2)

  • ark-zen runs with both ark-core mainnet and devnet

Delphinus (v1.5.0)

  • ark-zen runs with ark-core 2.1.x
  • html front-end improvement

Eridanus (v1.6.0)

  • notification system added (SMS or push)
  • ark-zen runs with ark-core 2.2.x
  • added node checker

Fornax (v1.7.0)

  • ark-zen now runs in virtualenv
  • server auto-configuration using gunicorn and nginx
  • minor bugfixes and improvements

Fornax (v1.7.1)

  • setup script improvement
  • initialization improvement
  • added relay checker

Fornax (v1.7.2)

  • front-end improvement
  • added FAQ page
  • background tasks merged

Fornax (v1.7.3)

  • persona network compliancy

Gemini (v1.8.0)

  • dposlib 0.2.1 compliancy
  • ark v2.4.1 compliancy

Gemini (v1.8.1)

  • ark v2.5.1 compliancy

Hydrus (v1.9.0)

  • dposlib 0.2.2 compliancy
  • background tasks added
  • block computation daemonization
  • logging improvement
  • better error handling

Lupus (v2.0.0)

  • ark-core 2.6 compliancy
  • dposlib 0.3 compliancy
  • use multipayment transaction

Lupus (v2.0.1)

  • nonce bugfix
  • retry-payroll updated
  • bg module updated

Monoceros (v3.0.0)

  • virtualenv target choice on zen installation
  • zen and bg run as system services