Critical bug report

On March 18, 2021 a GRIN developer contacted the MWC development team with a critical bug report related to the rangeproof caching logic and the GRIN developers recommended not using the network until a fix had been safely implemented[https://forum.grin.mw/t/resolved-do-not-use-grin-grin-wallet-grin-ironbelly-until-further-notice/8620].

MWC exchanges were immediately notified about this critical bug and requested to halt trading, deposits and withdraws.

The GRIN network was affected and a fix [https://github.com/mimblewimble/grin/releases/tag/v5.0.3] was implemented with a rewind of the blockchain.

Unfortunately, these types of unexpected events have happened in Bitcoin and other distributed consensus networks [https://en.wikipedia.org/wiki/List_of_bitcoin_forks].

Because MWC is a fork of GRIN, it therefore contained the same bug. The MWC development team is implementing a similar fix; however, it may take slightly longer to take complete effect. The rewind will take place at block 693,000 which was on March 13th. Any transactions before that block will be unaffected.

Consequently, following the example of the GRIN developers the MWC developers recommend not using the MWC network until a fix has been safely implemented. The rewind is expected to affect about six days of the blockchain. The plan is for legitimate transactions, to the extent possible, to be included so end users are not significantly affected.

The fix, rewind, testing and implementation are expected to take a few days. Users will be able to download an updated version of the wallet to get the rewind to take effect sooner. After that it may take up to a week for users with non-upgraded nodes to get a correction to their transaction history.

We salute all of the warriors for monetary sovereignty and finding and fixing these bugs. This is hard work!

3 Likes

Thanks to everyone’s dedication and quick actions, the rewind of the chain to block 694,858 has been a success! The new chain has reached the same hash rate as before, and is still increasing.

Let’s outline some of the next steps :
-All MWC network nodes (including but not limited to the Exchanges, Mining pools, etc) are expected to update their nodes to the latest 4.3.0 version, and to switch to using the new chain. Miners should not mine on the old chain (for the nodes which have a version lower than 4.3.0) any more. https://github.com/mwcproject/mwc-node/releases/tag/4.3.0. IMPORTANT for EXCHANGES: after upgrading, the old chain data will NOT be kept. To keep the old chain data for the purpose of cleaning up your transactions, you will need to backup your old chain data together with your old binary (chain_data and wallet_datarespectively).

1 Before the new chain height catches up to the inflated chain height, it is strongly advised to NOT make deposit/withdraw/trading or any transactions, just continue to HODL! We will make an announcement once the new chain height passes the old (inflated) chain height. We will make an announcement once the new chain height passes the old (inflated) chain height.
2 If you previously received “inflated” coins they will vanish on the new chain as if they never existed. Exchanges and mining pools may have their own strategy to handle their user’s account balance.
3 AVOID making transactions with any MWC Wallet (all implementations, including but not limited to mwc-wallet, mwc-qt-wallet, mwc-713, etc.) We strongly advise that you wait until we anounce that the new chain has passed the old chain height.

Current wallets will show wrong balance for next 7 days or so, avoid using them, new wallets will be released soon.

We want to thank you for your patience in advance and will continue to keep you up to date.

There are new wallet Releases available to fix temporary impacts from the chain rewind to make wallets available again immediately.
Please update as soon as possible and don’t use older wallet versions!

This hotfix enables the wallet to re-scan balances before blockheight is higher than the inflated chain.
Therefore the wallet will be able to reflect the real balance on the corrected chain as it is right now.

Hotfix for cli-wallet: https://github.com/mwcproject/mwc-wallet/releases/tag/4.1.2
Hotfix for MWC713: https://github.com/mwcproject/mwc713/releases/tag/4.1.2
Hotfix for GUI Wallet: https://github.com/mwcproject/mwc-qt-wallet/releases/tag/1.2.2