[NuPool] Getting Started - Chapter 3: Client Configuration

Chapter 3: Client Configuration

Important: Neither the developer of this software, nor the liquidity operation on NuPool.net is in any way related to the official Nu core-team.

This chapter describes how to install and configure the console based client.

After completing the steps described in Chapter 2 you will have two values from Bittrex we will need now: Key and Secret. Please don’t forget to set the permissions as shown below:

Installing Python

If you are on Linux or Mac OS, then you don’t need to install Python because it comes with the operating system. On Windows you can download and install Python from here:

Installing the Client

  1. Download the client software from here: Release TLLP-v1.0 · verc/trustless-liquidity-pool · GitHub
  2. Extract the archive and switch to the folder extracted
  3. If you are on Windows then go to the windows folder, otherwise go to the unix folder

Note: The software is completely platform independent. The only purpose of different folders for Windows and Unix based systems is to provide specialized starting scripts. You can also just call the script within the python folder if you prefer.

Configuring the Client

Open the file pool.conf in a text editor of your choice (on Windows please use Notepad). On the top of the file you will see three parameters:

# NuBits payout address
address = XXX
# API key from the exchange
apikey = XXX
# API secret from the exchange
apisecret = XXX

Enter your Key obtained in the previous chapter as value for apikey and your Secret as value for apisecret.
The value for address must be a valid NuBits address. No other payout addresses are possible.

Important: For security reasons it is impossible to change the payout address of a registered key. If you want to change your payout address, please create a new API key and secret pair and use it together with your new payout address.

Optional Parameters

  • interest: The minimal interest rate at which you want to get payouts in percent (0.25% = 0.25). Set this value to 0 to only allow for the pool’s maximum (this will lead to minimal payout). You can specify two interest rates for the bid and ask side by separating them with a comma, e.g. 0.25,0.1

  • ordermatch: This tells the trading bot to place orders even if they would match with an existing order. Set this value only to True if you know what you are doing. The default value is False.

  • trading: The trading bot used to place and reset the orders. Possible values are pybot, which is the internal bot, nubot, which is the official trading bot of the Nu dev team, or none to disable the trading bot completely. Note that your client will work 100% correctly if you just place your orders manually in the correct price range. The nubot is furthermore not supported yet but it should be the case soon.

Please do not change the remaining parameters (server, unit, exchange). If you change any of these parameters, then you won’t be able to connect to the pool anymore

Starting the Client

With a fully configured pool.conf you can start the client by making a double click on the file client. On Windows this file might be shown as client.bat and it might be the case that smart screen won’t allow the program to start, unless you click “further information” and then on “run anyway”.

Finally a terminal should open showing an output like this:

2015/04/09-02:18:23 INFO: bittrex - balance: 0.01775243 rate: 0.25% ppm: 0.00053809 efficiency: 100.00% rejects: 0 missings: 0 - btc - bid: 294.0214 x 0.25% - ask: 15.9180 x 0.25% - xxxxxxxxxxxxxxxxxxxxxxx

  • balance:
    The total amount of unpaid NBT.
  • rate:
    Your effective interest rate, which corresponds to the expected daily interest rate you will get for the orders currently placed.
  • ppm:
    Payout per minute. The amount of NBT that were added to your balance over the last minute.
  • efficiency/rejects/missings:
    If the connection to the server or to the exchange is bad, then the server will not be able to validate your orders and therefore cannot compensate your liquidity. If a request never reached the server, you will see it by a non-zero number of missings. If your requests reach the server, but cannot be validated at the exchange, then you will see a non-zero number of rejects. The efficiency corresponds to the fraction of all requests which are neither a missing nor a reject. Your client will automatically try to fix efficiency issues, so if you are experiencing low efficiency values then please give the client up to 30 minutes to optimize its behavior.
  • bid/ask:
    The total sum of your orders as recognized and compensated by the server on the corresponding side of the market.

The client will always ensure that the effective interest does not stay below the minimal interest rate specified. If the required interest rate cannot be obtained, then the bot will remove orders from the market. If you are not planning to decrease your minimal interest rate, then you should consider removing these funds from the exchange.

Please allow the client up to 5 minutes to output data.

Remark for former beta users: The old system with the users.dat can still be used. You just have to pass the users.dat as first parameter to client.py and use eu.nupool.net as second parameter. Alternatively the data can also be read from the standard input by providing - as input file. You can even apply the multi-line format in the pool.conf and it will be read correctly.

Stopping the Client

You can stop the client by hitting CTRL+C. It will not terminate immediately! This is because it will need to remove all orders from your exchange which can take several seconds. In your own interest, please allow the client to shutdown correctly.


Up and running with .25%/day.

Very clear. Straightforward. I am glad to see an explanation of each parameter.


I would say that you need to multiply that number by 3600 because the rate displayed seems to be a daily rate.
For example I get 0.25% as a rate.

Right the rate shown there is a daily rate to be consistent with the pool.conf. However it is calculated as estimate over the last 60 seconds. I’ll clarify that, thanks!

Raspi setup guide:

wget https://github.com/creon-nu/nu-pool/archive/0.92.zip
unzip 0.92.zip
cd nu-pool-0.92/unix
echo “apikey=xxx” >> pool.conf
echo “apisecret=xxx” >> pool.conf
echo “address=xxx” >> pool.conf
nohup ./client &

EDIT: This will of course work for any Linux system. Please also make sure to replace the “xxx” above with your values.

Hi Everyone,

Been following NuBits for awhile and finally putting more time into it. I find this interesting.
I was wondering how does one setup pool.conf to work with more than one exchange? In the past with users.dat file, it was as simple as in just adding another line. Is it possible with pool.conf? Thanks for the help.

The old method still works. Just switch to the python folder, write your users.dat and run it as first parameter of the client, i.e.

./client.py users.dat eu.nupool.net

The config file syntax is not designed for multiple exchanges due to the one dimensional structure. I still have to think about it how to make it convenient for multiple exchanges, maybe a let the user just provide multiple conf files.

EDIT: Just to clarify, in the current operation only Bittrex is supported.

Ah got it. Thanks for the syntax and clarifying it’s only bittrex right now. I missed that part.