MWEB Progress Update Thread

Hi David! You’re a big smart guy! You are a great fellow in your craft! We all know that we have prepared an amazing rocket for everyone! Litecoin will instantly take off thanks to your work in the crypto technology industry!!! Thank you very much!!!


April Progress:


I’ve re-written LIP-0002 based on feedback received. The revised version is available for review here. The LIP-0003 re-write is still in progress.

I’ve also improved some of our code documentation, and will continue to do so over the next few months.

Coding & Testing

Hector Chu has helped a lot these past 2 weeks with testing & coding. He tested the major flows and quickly identified & helped fix a number of bugs. He has also helped with adding functional tests to cover some of the untested & under-tested consensus rules.

I’ve been working through the litecoin side of the code, and doing my own pre-review of the code before submitting it for review. I was able to clean up a lot of the validation and mempool logic to harden it against attacks, as well as fix some bugs in the wallet code.

Reviews & Audits

Hector has finished his review of the libmw code[1]. I’ve addressed a number of the issues he found, and will continue to work through that list over the next few days.

Once the code for Litecoin’s v0.21 release has been reviewed, I’ll merge all of the MWEB code into that branch and submit the 2nd and 3rd code reviews (2nd=validation, mempool, & mining code; 3rd=wallet code).

I’ve also reached out to Quarkslab with the hope that they’ll have capacity to audit the design & code.


Instead of going over May’s tasks, which are going to be more of the same, I promised I’d discuss something fun about MWEB instead.

One thing that was proposed to Grin earlier this year by John Tromp was a “CoinSwap” service. If you’ve got a decent understanding of the math behind mimblewimble, then I recommend reading his proposal here.

This CoinSwap proposal aims to improve transaction unlinkability, much like a CoinJoin service does. But existing designs for MW CoinJoin services have a few important limitations. One is they currently require trusting the CJ server operator to not leak your transactions (there may be ways to eliminate that trust, but none have been found yet). Another is that using CoinJoin services have more annoying UX, since you must wait for the CJ server to aggregate enough transactions before the large CJ transaction is finally broadcasted and confirmed on chain.

CoinSwaps merely swap a single output for a different one of the same value (minus a very small fee). There’s no need to link any of your inputs together, risking revealing your identity to the CJ server operator. And you don’t have to trust any single server to preserve your privacy, since that trust can easily be spread over a large number of CoinSwap servers, with the requirement that only one of them needs to be honest in order to protect the privacy of all of the participants.

And this can all happen behind the scenes without any user interaction! When your wallet identifies new coins that were sent to you, it can automatically send those coins to the CoinSwap service to be trustlessly replaced with a different coin, so that once they’re mixed, even the person who sent you the coins won’t even be able to tell when or if you’ve spent them. The same can be done automatically for your change outputs when you send coins, or can just periodically be done by your wallet to ensure you’ve got clean coins.

The design appears to work as is, but I’m optimistic it can be improved even further to allow dynamic selection of coinswap operators. In its current form, the coinswap server list must be static. But if we allow the ability to easily add coinswap operators, you could always just add an additional one if there’s ever any fear that the existing servers have been compromised.

It’s worth keeping an eye on CoinSwaps. They help eliiminate Mimblewimble’s greatest weakeness (transaction linkability), and can easily be integrated into MWEB wallets, which means this is an excellent opportunity for someone to build a profitable business, while improving LTC’s fungibility at the same time.


CoinSwap is super interesting. Damn, I wish, I’d have some time to dig deep into MWEB. It’s amazing what all of you do and I hope some BTC and Grin developers will also help in the code review. The more eyes look at the code the better.


Hi David - Thanks for the update along with sharing the possibility of CoinShares to aid in privacy.

Let us know how we can help!


Is there a write-up detailing what level of privacy (and how) MWEB will provide to the users?


CoinSwaps sound like exactly what we need and will really add to the killer feature list. Awesome news =]


Excellent, this is what needs to happen - CoinJoin and UTXO management is not a noob-friendly process

Great stuff @David <3


Hello David,

Novice here. I have a question that in no way meant to be a criticism is really coming from me trying to understand the project. With the rollout of MWEB is there any concern of how companies like paypal may perceive this privacy feature?


Nice I support the idea by David

Hey Curtis, great question. I feel companies won’t care but governments will and they can pressure companies to comply with standards.

Look at Monero, hard to find a place online or IRL that you can buy or swap Monero… and the IRS (US taxation agency) have a 625,000 USD bounty out for anyone that can crack their privacy.

For me, as a user, more privacy features the better - whether every company under the sun will take LTC is not important to me.


CoinSwap sounds friggin perfect! I’m a new recruit, portfolio severely down since buying in but I believe in LTC, and the amount of work that the developers have got going on, both in this forum and on various subreddits, is astounding. And props to Charlie for giving LTC major brand recognition!!

MWeb will bring serious fungibility to Litecoin, it’s an extremely exciting development, and to know how much code and how much painstaking work goes into it makes me that much more excited for its implementation!


From what I understand mweb will be an opt-in feature, though I’m not sure how that will effect the feelings of potential users.

Can someone please explain to me why coinswap is so interesting, if there are options to use dex for LTC (e.g. thorchain)?

They’re unrelated. Coinswap is a privacy technology used to obscure the ownership & origins of coins. DEXes (like Thorchain) are for converting between different asset types.


Thank you very much for the clarification. So it is not about swapping between currencies but within LTC for privacy purposes. It’s clear now, and I agree: a great feature. Thank you for all the work!

May Progress:

Coding & Testing

We’ve made the following significant improvements to the code over this past month:

  1. Unified the build process to support existing release strategies. We originally intended on sharing the libmw codebase with Grin++, so the new code used a different technology (cmake) for managing builds than the existing litecoin code.
    That plan turned out to be unworkable due to significant differences in the Grin and MWEB protocols, so there was no longer a reason to continue using 2 different build management solutions.
    We’ve stopped using cmake entirely now, and just include the libmw code as part of the existing (automake) build. We’ve also downgraded from C++ 17 to C++ 14 to support gitian builds, which is how we generate verifiable releases.

  2. Removed superfluous interfaces and boilerplate code. This also stemmed from the fact that we no longer need to share logic with Grin++.
    We had a rigid interface layer that prevented us from calling the existing litecoin code from within the new libmw library, which resulted in the need to duplicate serialization, logging, and other infrastructure code within libmw.
    Since litecoin is now the only consumer of libmw, we were able to eliminate this artificial separation, resulting in less code (and hopefully fewer bugs) overall.

  3. Working automated builds for multiple platforms. The automated builds are working again for linux, and now also a windows build is being generated with each code commit.
    This has allowed for quicker feedback from changes, and opened the door for non-developers to help out with testing without needing to build the code themselves.

Reviews & Audits

We’re still struggling to get developers to review the libmw code. The code has changed quite a bit since the PR was first submitted though, so I will likely be closing it and creating a number of new, smaller, and hopefully more digestible PRs over the coming weeks.

I met with Quarkslab yesterday to discuss what we need audited, and I will continue to work with them over the next week or two while they gather what they need to do their initial assessment & estimate for the audit.

We remain on track for activation around the end of the year, barring no major surprises from the auditors :slight_smile:


Nice work. We appreciate the continued updates & progress being made.

1 Like

Excellent! Would also love to understand what EB features will become available outside MW, if any. The community appreciates your diligence David, Litecoin Facebook group is reacting positively to this update ((no suprise))

1 Like

Hi Niclaz,

Thank you for your response. I like your prospective. Litecoin is meant to be a currency. If it’s used as such it’s better for adaptation. My concern was for Paypal since it is such a large adaptation of the currency. However, as another user mentioned it is likely an opt-in so this may not even effect its use on Paypal.

1 Like

Thanks, happy to share my point of view.

I always push for permissionless use of LTC and any crypto. Paypal is a custodial wallet and it takes fees on your use of it.

F*** that