[NuPool] Announcing: Trustless liquidity pool operation “NuPool” on Bittrex.com has started

Announcing: Trustless liquidity pool operation “NuPool” on Bittrex.com

I. Introduction

In a nutshell: You run a program that places NBT and BTC orders on an exchange at 1 USD with a very small spread. The program will send proofs of those orders to a server which in turn pays you interest in the form of NuBits.

Welcome to NuPool, the first trustless liquidity pool operation run by the community members @woolly_sammoth, @creon and @willy. It will be formally run by @woolly_sammoth.

The “NuPool” operation is a result of the trustless liquidity pool beta maintained by @creon, which is documented here.
This is a shareholder funded operation, which has been granted 1800 NBT in this motion.

II. What we do

The “NuPool” operators will provide a server, that will validate the liquidity your client submits to us.
You’ll always remain in full control of your funds throughout the operation of the pool.

Quick facts:

  • 20,000 NBT liquidity target on Bittrex.com
  • 30 day operation maximum compensation of 7.5% per month (0.25% per day)
  • Minimum payout of 1 NBT
  • Payouts every 24 hours

Users compete with each other through a predefined “minimal interest rate”, by which the users tell us the minimal interest they are willing to provide liquidity for.
Please note that orders provided with the lowest specified rates will be used first to fill the target. Once filed, orders that demand higher minimum interest rates will not get compensated.

III. What you do

You’ll set up and maintain one of our two clients (client.py or Plunge.) Once the client is set-up correctly, there is very little effort required to keep it running. Checking the logs on a regular basis is highly recommended.
Running this client 24/7 is also recommended. A stable and responsive internet connection is a must.

IV. Risks

Participating in the NuPool has several risks:

  • Hedging: Traders might be able to successfully hedge against you. This means that people speculate on the BTC price movement and buy NBT from you at a low price and sell them back to you when the price is high (or vice versa).

  • Exchange Default: This means that the exchange itself might cease the operation and won’t return the customers funds. A situation like this has happened many times in the past (most prominently on BTER a while ago).

  • Connection Issues: If you are running an automated trading bot then it requires a stable internet connection to perform actions. If your internet is suddenly broken, or your computer restarts without closing the client software correctly, then there might be open orders left on the exchange which won’t get closed until the connection is re-established. This would allow other traders to take advantage of your mis-priced orders

Important: The pool operators are never in control of your funds and are not responsible for any financial loss that might occur because of any reason whatsoever. Taking these risks is what you are getting compensated for. Please make sure that you understand what kind of service you are providing during participation and don’t use any money you can’t afford to lose

Trading Bot


By using any software in this package you declare to have accepted the afore-mentioned risks.

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

V. Chances

By using the said software connecting to the “NuPool” operation, your highest possible return will be 7.5% for the length of this operation (30 days.)

VI. Getting started

VII. Support

Support can be reached over the following channels:


Can the pool operator steal my money?

No! Cryptography allows the user proof to the server that the orders are placed without giving it access to the funds. The data sent to the server only allows to view the current order status.

So I cannot lose money?

You can lose money if people are successfully hedging against you or if the exchange gets hacked. It is this risk what you are getting paid for. There is a lot of information in this forum on this topic and there are ways to transform the hedging risk into a calculable fee. Note that users are fully responsible for their funds used in the operation. More details can be found at point IV “Risks” in this thread.

Is this legal?

The server will be ensured to run as a completely legal operation. The legal situation regarding participation depends on your home country. It is often considered similar to Bitcoin mining, but this doesn’t have to be the case. (We are not able to give any legal advice at all regarding this, so please consult an expert if you are not sure).

Do I need a good computer to run the client?

No, you only require a stable internet connection and Python.

Is there a minimum or maximum amount of liquidity I can provide?

There is no minimum. However, the server only pays interest up to a certain amount of liquidity, which is 10,000 NBT on each side in this operation.

Why is my client only placing very small orders although I have more funds on the exchange?

This means that other participants are offering a better minimal interest rate and therefore will be prioritized when liquidity is compensated up to the target value (see question above). If your client sees that the own liquidity will not be compensated then it will remove those funds. If you are not planning to reduce your minimal interest rate, then you may want to consider removing some of these funds from the exchange to reduce your risk.


Just to clarify: The liquidity operation on Bittrex has officially started!

Please use the client release designed for this operation: https://github.com/creon-nu/nu-pool/releases/latest

Don’t hesitate to ask any question you might have. Let’s make this a success. Thanks!


This is quite likely to a certain extent since nbt stability primary use is the hedge vs bitcoin.
We would have to eliminate nbt/btc pairs from exchanges to eliminate such a risk.

Awesome job!

It seems to be in German. Anyway to change the language in English?

I would be very interested in that actually. I think a lot of providers want to know if the maximum interest rate offered is enough. In other words, they want to know (including me) in which case it is sufficient and in which case it is not.
I have in mind the downtrend of bitcoin’s price as a particular situation.

Done, my bad.

1 Like

@Creon is the brains behind this calculation. I’ll have to bow to his knowledge before giving an answer on how an answer can be arrived at.

1 Like

These are the future market options that you can find on big Exchanges like OKCoin or Bitfinex, which allow you some kind of BTC price guarantee for a certain time period. @JordanLee mentioned it somewhere in the general context of LPCs.

Of course the ideal solution would be automatic, i.e. the client automatically secures any order placed by such a future market contract. Again, I still have to look into it to say if this is feasible or even possible as I imagine it.

If someone here is familiar with these trading tools, then I would appreciate to have a small chat about it.

Right. The main thread related to hedging against the loss in value of BTC when you are custodian on NBT/BTC using some kind of derivatives is here, I believe.
Having an automatic hedging feature, that would for example directly deduce the cost of protection from your payout would be awesome.

First payouts have been sent: http://blockexplorer.nu/transactions/f967026943990e665a80265f520ae1c36271232189280016122c4b453f5f886c

About two hours ago I started to recognize a problem with Bittrex. The server only barely gets requests validated and I think some of you will have an efficiency of around 0 now. Sometimes it recovers for a while, but all data during those (long) periods is faulty. When talking to Bittrex they already warned me that Cloudfare might throttle the server, but I cannot say if this is in any way related to our current problem.

What I did now is to modify the Bittrex client in the way that it ensures that only one order per market side will be placed at a time. This means previous orders will simply be removed before placing a new one. This will reduce the number of calls to the exchange and hopefully solve our problem for now:



We will update the server once @woolly_sammoth and @willy are awake. (I restarted the server, see below). The server will not accept more than two orders (buy/sell) in a request of a user, such that requests from old client in some cases will get rejected. So please update the client as soon as possible to avoid getting rejects.

I can only hope that it will improve the situation. Furthermore I am eagerly trying to get in contact with Bittrex to get more information from their side. Don’t know what else to say than sorry - with 10 users and more than 7000 NBT liquidity on day one the operation already scaled to a multiple of the beta and these problems were hardly observable from my tests.

Important: When the server restarts, all balances will be reset to zero. I will personally take care that all open balances will be sent (manually) when we restart the server. Furthermore be assured that your funds are not at risk, also not on the current server. The trading bot is not affected by all this, its only the server <-> exchange communication which creates this problem.

Thank you for your understanding.

EDIT: Its totally unfeasible right now. I will restart the server. Again, update your client as soon as possible to avoid getting rejects. Thanks!

EDIT2: The server was restarted. Lost balances will be sent soon.

EDIT3: All open balances have been sent. Everyone with a balance below 0.015 NBT got 0.015 NBT. Please let me know if anyone did not receive a payout.

1 Like


not sure why nobody else wrote anything, however, I think I found the remaining bug in the Bittrex wrapper which prevents the bot from replacing orders after a BTC price movement.


I know this all is very nasty and should have been discovered during beta. It just never reached the scale to see it.

Let’s hope that things are finally resolved now. I really can’t thank you enough for your support, especially over the last 12 hours.


It seems like the 0.92 version works properly. Server validations are very well timed and this with the same amount of users as last night. The trading bot also replaces orders correctly, even after many subsequent BTC price movements.

Note that you weren’t able to place your bid orders earlier because someone placed an ask order below 1 USD value and nobody of you set ordermatch=True. So while this was unfortunate, it in fact was the correct behavior. I am running a bot now with above flag set, so it should clean out those orders as long as they aren’t too large.

This is the good news I guess, while the bad news is that we will have to do another server restart. This issue is not a big one and we can schedule this to any time we want and arrange it that you will get your open balances paid in the moment where we restart the server, so there really should be no disadvantage for your, except that your balance will be paid earlier.


If a sell order is to low, does the bot place buy orders just below that low sell order? It would be sweet if this were an option.

The server allows your price to deviate from its own price by not more than 0.5%. If your trading bot tries to place an order and there is a matching order, then it first tries to adapt the price such that it could place the order. However, if this price deviation is more than 0.5% then it also won’t place the order because it wouldn’t get compensated.

With ordermatch=True it will behave as above but if the deviation is larger than 0.5% in the end then the trading bot will just place the order at the server price and therefore match the existing order.

Of course you can argue that you are buying or selling NBT for a discount in those cases, but on the other hand it is gambling because you don’t know how the BTC price will change. That’s why the default behavior is to not match those orders.

1 Like

After some extra testing this evening, the latest version of the client and server have been seen to act correctly on Bittrex.
A server restart was required which was undertaken at around 20:45 UTC. All outstanding balances have been paid in this transaction:
(Any account which had a balance of less than 0.01 was sent 0.01 NBT)

It is highly reccomended that everyone updates to the new client to take advantage of these recent fixes and ensure prompt and correct payout. The latest code can be found here: https://github.com/creon-nu/nu-pool/releases/latest

There has been a lot of effort put in by the pool operators over the last 24 hours with the mammoth bug fixing session last night by @creon being of particular note. I’d like to thank everyone who has participated so far in the Trustless pool for their continued support.


I have received two interest payments.Is it possible to distribue interest only after it has accumulated above a certain amount?

This is the actual system. Every 24 hours all balances above 1 NBT will be send out. We also had a regular payout about 27 hours ago.

The whole Bittrex API problem however required to update the server (twice), which always resets all user balances to 0, so we performed the payouts manually based on the log files.

Don’t you think if the interest policy is “7.5%/mo” or “1500 NBT proportional to coin-hour contributions”, which ever is greater, then there would be more incentive to participate, because if there are a few participants, they will set to split the whole reward? This needs to get pre-approved by the shareholders tho.

If you have a daily notice showing what reward rate would be if participation keeps at current level until term-end, then people can evaluate risk-reward often.

Generally I think shareholders should consider encouraging liquidity provision when everyone wants to pull the fund. It has two aspects:

  1. encourage liquidity provision when liquidity is low. This is partly taken care of by the fixed total reward above.

  2. encourage liquidity provision on the less liquid side (i.e. incentivise buy/sell balancing).

Its not necessarily “1500 NBT proportional to coin-hour contributions”. The variable interest rate system ensures both points you bring up.

You can, and should, specify the minimal interest rate you are willing to get in the pool.conf. Every NBT which is above the target (10,000 NBT currently) will be compensated at lower interest rates as specified by the users. However, you will never get a larger payout by increasing your own minimal interest rate. Its based on the dutch multiple-item auction model and I formally described it here:

So if one side is overloaded, then people will get less interest on this side and there is an incentive to shift funds to the other side of the market where the interest rate is larger.

The problem with the max rate is that it can be too low to encourage fund providers. For example when the price of BTC is plummeting, people pull their fund. Argueablly this is the time the wall is needed. If for example if there is only one person proving 100 NBT, then if everyone knows this person will collect all 1500 NBT reward in the end for 3000 coin-days, then many people might want to jump in because the reward is 1500%/mo.

Yes this takes care of it.