MILK is a token without decimal places. However, decimal places are useful in the context of Automated Market Makers that takes fees of 0.3% of the traded amount, often ceiling to 1 MILK token.
There are a number of drawbacks from a normal token swap:
We loose the trading history of MILK
MILK is distributed among many different platforms, hence not simple to snapshot
The goal of this proposal is to suggest a smart minting policy that allows the creation of wrapped MILK (wMILK). 1000000 of these Tokens would be equivalent to 1 MILK. It should be possible to wrap/unwrap MILK in a distributed manner. This allows circumventing the above drawbacks.
MILK will continue to be traded, but with much less volume. In any case we can merge the trading histories of both, by enabling matchmakers to wrap/unwrap MILK on the fly (more on that later)
No need to snapshot, as wrapping/unwrapping can happen anytime
In general it would make sense to move all bootstrapped liquidity of MILK/ADA on MuesliSwap into a new wMILK/ADA pool. All new orders are automatically placed against the wMILK/ADA pool, with merged orderbooks and history.
On the fly unwrapping:
When old user orders buy MILK, the matchmaker can swap wMILK/ADA, then unwrap the wMILK to fill the order
When old user orders sell MILK, the matchmaker can wrap the MILK and sell it to the wMILK/ADA pool
This should be possible to achieve within the normal swapping transaction, i.e. without risk for the matchmaker and no delay for the user.
Arbitrage between wrappend and normal MILK will maintain prices displayed by third parties.
Liquidity on DEXs that don’t support the merging will be reduced temporarily. It might make sense to offer transformation tools on muesliswap.
Please let me know of your opinions regarding this approach to bring decimal places to MILK. The procedure could be pioneered by first offering SNOW wrapping and seeing how it works out.
Thanks, Niels, for the proposal. I like the idea of doing it transparently for users by wrapping/unwrapping on the fly.
From a technical perspective, I think this is the right approach, but my concern is Branding. Calling the new Milk wMilk or wrapped Milk makes it a second-class token. For example, WBTC will always be a lower-quality coin compared to the real BTC. Is it possible to call the legacy Milk, Milk Classic or MilC? Or something similar different from Milk, for the new Milk to get the legacy branding? Like what Ethereum did after the hack, they called the old one Ethereum Classic and created a new one that kept the branding.
I understand the need to wrap, but why would we need to unwrap? Don’t we want to convert all Milk to the new divisible token? Shouldn’t we force the transformation to be done only in one way to ensure retiring the legacy Milk? In this case instead of wrapping/unwrapping, can we do a one way transformation and burn the old token automatically after each transformation? I only see one case where we may need to unwrap, and this is to fill old Milk buy orders , but I think this can be done easily with arbitrage. Also with price appreciation, these orders may never be filled anyways and unwrapping may never be needed
I suggest putting in place some incentives to help the transition to the new Milk. Because the three biggest wallets are (i) the project’s wallet, (ii) the staking wallet, and (iii) the liquidity pool wallet, and they represent more than 70% of the entire supply, I suggest the following to accelerate the transition
Transform the project’s Milk holding to the new Milk (41%)
Retire staking using the old Milk, or change the smart contract to wrap Milk automatically when unstaking. Those already staking won’t have anything changed, but if we unstake and restake in the new smart contract, next time we unstake we get the new Milk. We could also give higher rewards to the new Milk to incentivize almost 50% of the circulating supply to move to the new Milk
Move the bootstrap liquidity to the new Milk and put in place a higher yield (even temporarily) to incentivize the transformation
Instead of wrapping / unwrapping, is it possible to mint the wMilk and burn Milk with each transformation in a way that total supply of wMilk + total supply of Milk = 10,000,000
This is the way I see it going to be the best as well. Muesliswap MILK branding should be preserved just like in the example was explained with Ethereum. The other DEXes will not have problems to change the listing of “old classic” into MILC or such. MILK classic is a good name as the token is already over 1 year old, which is almost an eternity in crypto space.
In short: burn or swap the old indisible MILK “classic” where practical and safe. Then mint new divisible shiny MILK token.