Over the last few days, Nuo platform has faced some issues regarding the lender interests. This is a community update regarding what we have identified, how we have addressed these issues and the plan to improve the system in the near future.
Issue 1: Reserve pools of certain tokens namely BAT, ZRX and LINK had received a negative interest on Jun 29, 2019.
1. Ethereum congestion
Ethereum congestion: Nuo has 2 meta-transaction relayers which are responsible for relaying all transactions onchain eg. withdrawal of funds from trading account, creating reserve/trade/loan, liquidating trades, etc. These relayers broadcast the transaction on the ethereum network with a gas price of (fast). The value of (fast) is picked from https://ethgasstation.info/.
Usually the transaction completes within 2 minutes but in case of increasing network congestion the (fast) price obtained from EthGasStation isn’t enough and this leads to the transaction (and hence all subsequent transactions on the same relayer) being stuck in the ‘pending’ state until the gas price comes down once again and is selected by one of the miners. This is because EthGasStation is backward-looking and predicts future gasPrice based on recently mined blocks (recent history) which may not be true in such a situation. This leads to some delays in obtaining onchain confirmation for contract calls over the last few days when the network congestion has suddenly picked up.
While liquidating a trade, Nuo uses Kyber/Uniswap(based on best price) to convert back the trade token and/or the collateral token into the lending token. If the order size is big enough or if there are multiple orders waiting for the same exchange of tokens, there is usually a slippage associated with the decentralized exchanges in general.
For highly liquid tokens like ETH/DAI, ETH/WBTC, ETH/USDC, etc, the slippage in price is very less but for relatively illiquid tokens like ETH/BAT, ETH/ZRX, ETH/REP, ETH/Link, etc, the slippage is very high. In this particular instance, we saw a slippage of around 30% while liquidating from LINK to BAT. Hence, when the collateral value is not enough to repay back to the reserve pool, there is a ‘loss’ incurred by reserve pool. There were 4 particular transactions responsible for losses in BAT and REP reserve pool due to high slippage.
3. Transaction failure
There can be multiple reasons for a transaction(like stop loss margin call) to fail. Eg. certain transactions fail on kyber due to non-availability of liquidity at a particular time(but it usually works fine upon a retry) or certain transactions temporarily fail with “
gas required exceeds allowance or always failing transaction” error. We only learnt about these recently. The mechanism to cater to this would be to wait for the transaction to be re-broadcasted after a 30-minute interval.
In this particular instance, a few margin calls(due to stop loss) faced a much worse exchange rate of ETH to LINK, due to which the LINK reserve pool incurred a ‘loss’. There were 5 particular transactions responsible for losses in LINK reserve pool due to this issue.
Issue 2: Gains in Reserves in general do not match the lending APR displayed.
lend APR for a currency = (recent_past_annualised_rate + mid_term_future_annualised_rate) / 2
recent_past_annualised_rate for a currency = For i in last 30 days, Sum(interest paid in given currency on day i / active reserve volume of given currency on day i)
mid_term_future_annualised_rate for a currency = For i in next 90 days, Sum(interest expected in given currency due to already active loan’s tenure completion on day i / current active reserve volume of given currency)
1. Unique Token Behaviour
The interest earned in the reserve pool of every token has its own behaviour. DAI is borrowed usually for margin trading so the borrow duration is much lesser and the borrowed amount is usually paid out even before the predicted duration is over. Whereas, ETH is borrowed usually for over-collateralized loans so the borrow duration is much longer and the borrowed amount is usually paid out when the predicted duration is closing in. Since interest on reserve pools is earned when the borrowed amounts are paid out(or loan duration terminates), this leads to higher & faster returns on DAI but lower & slower returns on ETH.
2. Irregular returns
The lending APR mentioned is applicable for returns seen across a longer time frame(of 6–12 months). Users usually expect to earn that almost instantly, which is an expectation mismatch.
We have broken the action plan in 2 different phases depending on urgency and speed of executing each one.
- An actively monitoring system: A service will constantly be monitoring the transactions being broadcasted by the relay addresses. If it finds any transaction that is pending for more than 3 minutes, it will trigger an automatic rebroadcasting of the transaction with a higher gas value so that it gets picked up by the miners and does not clog the system. The system will keep re-broadcasting it with a higher (& higher) gas value for a max of 5 retries to prevent infinite cascade. This is currently live for trading account withdrawal transactions and will be rolled out to all other transaction types over the next week (Jul 16, 2019).
- Increase in buffer: To factor in the slippage, loans and margin trades have been getting liquidated (or margin called) with a buffer of 10% for loans and 5% for margin trades. These buffer values have been changed to 20% for loans and 10% for margin trades now. The reason for margin trades to have a lower buffer value is because the maximum stop loss percentage is currently 80% in Nuo. This gives the reserve pool an effective buffer of (10% + 20%) for margin trades before a ‘loss’ will be incurred in the reserve pool. As we increased this, we are glad to announce that none of the existing loans/trades were affected.
- More frequent liquidation retries: Failed transactions will now be retried within 5 minutes instead of the present day 30-minute interval. We are also in talks with Kyber to ensure that transactions do not fail even temporarily.
- Max limit: The max amount for loans and margin trades has been reduced from 25 eth to 15 eth. This has been done to battle with slippage. We will increase this slowly for certain tokens as we partner with more dexes with deeper liquidity.
- Clarity in Product: We will be making smaller UI related changes to bring some more clarity in the product. Eg.: We will be adding a column in the Lend Table to provide visibility to the exact amount of interest earned in every token pool in the last 30 days. Also, we will make it more clear that the lenders will be able to withdraw their funds from the reserve at any point except if all the funds in the reserve are loaned out. Also, we will provide more info about the state of trade/loan(safe/critical/danger/etc).
- FAQs updated: FAQs regarding a lot of questions that were asked during the last month have been updated. Please check out https://help.nuo.network/ for all answers.
Medium term plan
- Transparency via a new Nuoscan: We are working on a completely revamped Nuoscan which will be much faster and much more informative than the current one. We plan to launch this within the next 30 days(by Aug mid).
- Public Product Roadmap: We plan to launch a public roadmap with features and bug fixes. The approx timeline for this is mid August.
- Independent buffer values: Currently, buffer values are system-wide. We plan to introduce separate buffer on a per token level) depending on the liquidity of tokens. We will also introduce different max limits allowed per trade order. We should be implementing this by Jul end.
- Insurance fund creation: We are exploring the creation of an insurance fund which will be used to compensate for any loss that a future reserve pool might incur. This should be implemented by Q4 2019.
- Add more decentralized exchanges: We plan to add more DEXs in addition to Kyber and Uniswap to get the best rates for exchanges. This will also help us reduce slippage. This should be an on-going process over the next few months.
These action points should solve the issue of losses incurred in the reserve pool. Having said that, there might be other issues which might creep up later, so please bear in mind that there is still risk in putting funds into the reserve pool. FYI: the DAI, USDC, TUSD reserve pools have never incurred a loss till date. In fact, over the past 1 week, DAI reserve pool holders have been receiving an interest of 40% APR!.