Trust-less liquidity pool
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 form of NuBits.
In order to participate in the pool beta you need to perform the following steps:
- Create a new exchange account at Bitcoin.co.id, BTER, CCEDK, or Poloniex and provide it with some funds
- Create an API key on the exchange which will provide you with two values, an
api-key and an
- Download the client beta software from here: https://github.com/creon-nu/nu-pool/releases/latest
- Extract the archive and switch to the
python subfolder you will find within the extracted directory.
- Create a file called
users.dat (or on Windows optionally
users.txt) in the following format:
payout-nubits-address btc exchange api-key api-secret bid-interest ask-interest
payout-nubits-address is the NBT address you want to receive payouts on,
exchange corresponds to the exchange name (bitcoincoid, bter, ccedk, or poloniex), and
api-secret are the values obtained in step 2. The last two numbers are the minimal daily interest rates in percent (1% = 1.0) you want to get for the buy and sell side of the market respectively.
You can add several lines in this file for different exchanges!
BQRKF4X8gFLyHGVeym8tuff57PcJczYPVg btc poloniex 85BQTQG1-N3D3PFKX-YUNIHIO1-WQCWTRER 1234abc 0.8 1.2
Important: Please do not add a payout address which is not an NBT address. The server is only able to process payouts in NBT.
- Run the client:
Make sure you have python installed (should be the case):
sudo apt-get install python
Run the client in a terminal from the python folder:
@Ben confirmed that you can proceed as on Linux.
Windows: (I tested this on Windows 8, would be nice to get some feedback if this works for you)
Download and install Python for Windows:
Go into the python folder of the archive extracted in step 4
Create a new text file called
users and add your exchange information
Double click the
beta.bat file to start the client
Let me know if you have any issues with the installation. After starting a correctly configured client you should see some output like this:
INFO: poloniex - balance: 0.00039520 rate 0.33% efficiency: 100.00% rejects: 0 missing: 0 - btc - ask: 0.6278 x 1.00%, 1.4946 x 0.66%, 3.6106 x 0.00% - 85BQTQG1-N3D3PFKX-YUNIHIO1-XXXXXXX
The balance shows the amount of unpaid NBT. Efficiency describes how many of your proofs were able to be credited. The client tries to auto adjust in the case that the efficiency drops below 80%. If you have continuously problems with low efficiency values, then please send me a message.
During the beta run the server pays 7.75% per month (0.25% per day) for each exchange and order side up to 200 NBT liquidity. Click here for more information on the payed beta. [Beta Phase 1 complete]
During phase 2 of the beta the pool will pay up to 1% per day for each exchange and order side up to 50 NBT. [Beta Phase 2 complete, see posts for conclusions]
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 payed 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.
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. (I am 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 can be seen on the server page.
Why is my client only placing very small orders although I have more funds on the exchange?
This means that other participant's 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.
I thought it might be appropriate to update the original post for newcomers. Here is the text originally posted:
Original Post (Idea)
The Nu Lagoon proposed by @henry is a great concept and allows really everyone who is able to use a wallet to participate. In total I see two major difficulties for liquidity providers (besides having the funds available):
Running the NuBot, which essentially breaks down to three tasks that have to be accomplished:
1.1 Being able to run a java program on a computer
1.2 Make an exchange account and create an API access
1.3 Configure the NuBot json files
The custodial grant, which means
2.1 Write a proposal
2.2 Advertise the proposal to some extend
2.3 Be available to answer questions and to provide updates
People will differently weight these two main points - I personally experience the second one as more "work" than the first one. So while @henry's pool idea provides a way to completely avoid both aspects, I'd like to suggest a pool idea that only eliminates (2) for the customers and makes (1) easier.
Background for non-nerds: The communication with an exchange API is very similar to the public / private key system you know from cryptocurrencies (here its usually called API key and API secret). This means you proof to the exchange that you are eligible to access the data by signing the request with a private key and to send the request together with the public key. Each request furthermore contains a "nounce", which usually has to be set to the current time.
The idea is to take advantage of this system.
- Register at the pool operator (bitmessage/website/whatever) by providing your API key and an NBT payout address
- Run the NuBot (with multiple-custodians=true to sync the walls)
- Create requests to show your orders on the exchange, sign them with the API secret, and send them to the pool operator
- Get a custodial grant
- Run a server that receives requests from users
- Validate incoming orders by calling the exchange API
- Send a payout to the NBT address given in the registration of the corresponding API key
- Submit sum of orders as liquidity
So the pool operator here doesn't even need to run a NuBot, while all participants do. Also note that the configuration on the side of the participants is extremely easy, because they don't need a Nu daemon and also know the exchange. The pool operator could even provide a fully functional json config file and the user only needs to provide and API key and the corresponding secret.
Note that with this approach the participants never have to trust the pool operator (the only thing the pool operator could do is not sending the payout). Some software would be required, but nothing complicated. What do you think?