For this discussion, we’ll be looking at Litecoin. However this issue likely applies to other coins such $BTC, $XMR and maybe even $ETH. However the Incognito network volume of those assets is much larger than $LTC. With $LTC being a recent addition to Incognito, it’s easier to review Litecoin’s full transaction history with Incognito.
CONTEXT
When $LTC is shielded, Incognito generates a single use address to receive the coin.
Here we see that single-use shielding address Lba4WKQybGoZMwv4LEJKsZjVAj2HVRh8uy received 4.35 $LTC. Address MS8g7KDz3atp82qrQidtqBXtpHimNr2Uwp is a change address in the bottom transaction.
About fifteen seconds later we see the received $LTC automagically sent to LLD6JTeDP8smXDFQf1FiGwoQeaeWWvqSMd which is Incognito’s $LTC vault. It is here in the vault this new $LTC mingles with the existing $LTC represented on the network, making new friends and generally enjoying the big party at it’s new home.
It’s important to remember that both Lba4W…8uy (as a single use receive address) and LLD6J…SMd (the vault address) are BOTH controlled by Incognito’s $LTC bridge. For every shield transaction, the receive address will be different but still controlled by Incognito’s $LTC bridge.
THE ISSUE
Let’s take a look at the amount of $LTC reported by the external network explorer.
Blockchair (and any other $LTC explorer) reports the address currently holds 52.43 $LTC.
Now let’s compare this amount with the $pLTC reported by the Incognito network explorer:
These snapshots were taken today at the same time. The $LTC vault holds 52.43 $LTC while there are 52.52 $pLTC tokens minted on the network. That, ladies and gentlemen, is NOT a 1:1 peg.
Why the difference? I’ll tell you. It’s “internal” transaction fees. To be certain, I pulled the transaction history for all^ 204 transactions involving LLD6J…SMd. The fees representing transfers in (shielding) and out of (unshielding) the vault equals 0.0865$LTC. 52.4319 (vault balance) + 0.0865 (total tx fees) = 52.5184. Yep, there’s the missing $LTC.
The automagic transfer of received funds from the single use address to the vault address is an on-chain transfer. On-chain transfers, of course, incur miner fees. These fees appear to be deducted from the vault balance but are not represented in the corresponding pToken allocations.
WHAT’S THE BIG DEAL?
Miner fees are small, right? Eventually these small miner fees will begin to add up to a not insignificant amount of missing value in the $LTC vault. Should a crypto bank-run occur, the last user in line is going to have a very nasty surprise.
Consider this example (fees are exaggerated for clarity’s sake):
- The Incognito vault has a balance of 0 $LTC.
– - Alice shields 10 $LTC.
- Incognito mints 10 $pLTC and deposits them to Alice’s Incognito address.
- Incognito transfers the 10 $LTC to the vault. The transfer deducts 0.5 $LTC in miner fees.
- The Incognito vault holds 9.5 $LTC. The Incognito network has 10 $pLTC.
- Bob shields 10 $LTC.
- Incognito mints 10 $pLTC and deposits them to Bob’s Incognito address.
- Incognito transfers the 10 $LTC to the vault. The transfer deducts 0.5 $LTC in miner fees.
- The Incognito vault holds 19 $LTC. The Incognito network has 20 $pLTC.
– - Alice unshields her 10 $pLTC.
- Incognito withdraws 10 $pLTC from Alice’s Incognito address and burns them.
- Incognito transfers 10 $LTC from the vault to Alice’s external LTC address. The transfer deducts 0.5 $LTC in miner fees from the vault balance.
- The Incognito vault holds 8.5 $LTC. The Incognito network has 10 $pLTC.
– - Bob unshields his 10 $pLTC.
- Incognito withdraws 10 $pLTC from Bob’s Incognito address and burns them.
- However there are only the 8.5 $LTC left after transaction fees – so Bob only receives 8 $LTC, after his own unshielding transaction fee?
With large volume coins such as $BTC, $XMR and even $ETH, it does seem unlikely the entire balance of pTokens would ever be redeemed revealing the above issue for the last transactor. But the issue would still exist.
Conversely with mid and small volume coins such as $LTC, $DASH, $ZIL, etc, one can see how it is plausible for the entire network pToken balance to be redeemed (for one reason or another) leaving the last transactor without a complete redemption of burn pTokens.
As-is, $LTC has been available on Incognito for about 6 weeks. In that six weeks, $10 in value has already been eroded by fees. In a year, that will be over $90 at the current shield/unshield rate. In all likelihood, it will be much more.
SOLUTIONS?
I don’t know what the solution should be. Should some of the DAO funds be used to make the vault “whole” again? Should the “internal” vault transfers be deducted from the pToken minted? Perhaps both? Perhaps neither? Maybe this becomes a good first use for the oft-proposed DAO community governance?
^ Current as of 2030 UTC on 1/27/2021.