-
Notifications
You must be signed in to change notification settings - Fork 7
Latest fee model ideas
Current ideas depend heavily on a Kyber integration which allows us to
- market buy LRC using other tokens at current market prices
- query the conversion rate between LRC and other tokens at current market prices
We are limited by the tokens Kyber supports for this.
All fees need to be payed in LRC and holding LRC will give a 50% discount on trading fees. This is achieved as follows.
If the order specifies it wants to pay X LRC we first check if the order can pay the complete X LRC. If he has all X LRC necessary for the payment, the miner/wallet is payed X LRC. If the order cannot pay the complete X LRC we will market buy 2X LRC using Kyber. X LRC is burned and X LRC is sent to the miner/wallet. The token used to buy LRC is (from top to bottom):
- WETH
- tokenB (if WETH is not supported by Kyber)
We do not consider using tokenS to purchase LRC as tokenS might all be sold to the next order in the ring. We do not want to re-calculate fill amounts because of fee exchange.
If none of the above can produce the needed amount of LRC, the ring cannot be settled.
Wallets should configure the percentage part of the fees (p) he wants, not the miner. By mining a fee, the miner implicitly accepts (1-p) as his fee, even (1-p) might be 0.
We want the fee model to be as flexible as possible to allow as many use cases as possible. For this we would need fee payments in tokens other than LRC.
The fee cost would be as follows for a specified fee cost of X LRC:
- User holds X LRC, pays X LRC => cost: X LRC
- User auto-buys LRC, pays X LRC and burns X LRC => cost: 2X LRC
- User pays in non-LRC token, burns for example 2X LRC worth of tokenS => cost: 3X LRC
I think we should only support #1 and #2.
The method used should always be the highest method possible on the list.
We can allow non-LRC fee payments by allowing the fee recipient to burn 50% of the fees he gets in non-LRC in tokens in LRC. In this case, the order itself does not need to buy double the LRC and burn half.
The miner could decide which mode he wants to use.
We could still force miners to be payed in LRC, but allow more flexibility with fee payments to wallet. Wallets could be paid in a combination of the following:
- a percentage of tokenS (pre-trading)
- a percentage of tokenB (post-trading)
- an LRC fee percentage (P)
Miners don't need to specify their fee-split percentage in this case. By mining the ring they accept a fee payment of (1-P) of the total LRC fee.
I think in all cases, miners do not specify the fee-split percentage.
Currently, in many cases the miners are also the wallets. So this mode could be used for all fee payments making LRC less important (because just part of the LRC fee is not needed to be profitable).
We need to verify the miner signing address is the same as one of the order owner; otherwise wallets can only get LRC split, no tokenS or tokenB fee are available.
A P2P trade is when the miner is also one of the owners of an order in the ring. In this case we could allow even more fee payments options for the wallet.
Here the ICO platform is the wallet and the ICO participant is the miner because he submits its own order. In this case the ICO platform wants 100% of all fees, so the miner (the ICO participant) will be okay with getting 0%.
This use case falls under the special case of P2P trades.
If two users trade such that A gives B 100X and B gives A 10Y, a 1% fee can be payed as follows:
- A gives B 99X and receives 10Y (miner gets 1X from B)
- A gives B 100X and receives 9.9Y (miner gets 0.1 Y from A)
- A gives B 99X and receive 9.9Y (miner gets 1X from A)
- A gives B 99X and receives 9.9Y (miner gets 0.1 Y from B)
1 and 2 are post-trading. 3 and 4 are pre-trading.