MWEB Progress Update Thread

Hi everyone!

I’m David Burkett, the developer of Grin++. I’ve been working with ecurrencyhodler, Charlie, and others for several months now to design a Mimblewimble extension block so that LTC users can have confidential transactions and more fungible money.

I spoke a bit about our progress at the LTC Conference last month, but for those who are unaware, we’ve published 2 new LTC improvement proposals (LIPs):

LIP-0002: lips/lip-0002.mediawiki at master · litecoin-project/lips · GitHub
This describes extension blocks, and how they can be implemented and activated in LTC.

LIP-0003: lips/lip-0003.mediawiki at master · litecoin-project/lips · GitHub
This is all about Mimblewimble on LTC.

After the conference, much has happened. The first big announcement is that the LTC Foundation has graciously decided to fund my efforts to implement the MW extension block, and to continue working on Grin++! More details about that will be announced shortly, but I want to thank you all for the opportunity.

Since that was announced, great progress has been made. On the Grin++ side, I’ve implemented payments via TOR. Mimblewimble requires interacting with the receiver to build a transaction collaboratively, so by using TOR for that interaction, we’re able to use familiar-looking addresses, a simpler set-up, and much better privacy.

Also, I’ve performed the first ever (AFAICT) pre-broadcast Mimblewimble CoinJoin. For those familiar with Mimblewimble, you may know that at the time transactions are included in a block, they are already joined with all other transactions in that block. The Achilles heel of mimblewimble privacy though, has always been that transactions are broadcast before they’ve had a chance to be joined with other transactions. That means nodes monitoring the network can see the original input-to-output links of most transactions. Sending a transaction directly to a CoinJoin server before broadcasting is one of many different techniques we can use to combat that.

On the LTC side, I started by familiarizing myself with the existing code by completing the LTC Dev Training Session. This meant starting with the latest bitcoin source, and making all modifications necessary to get it to sync.

After that, I got to work re-designing the Grin++ codebase in a way that will allow LTC to reuse Grin++ with minimal modifications. The design is beyond the scope of this update, but I’ll formally write-up the design sometime over the next few weeks and link it here.

Going forward, I will be providing monthly progress updates to keep everyone in the loop on what progress has been made. They’ll likely be much more succinct than this one, but I thought it would be good to take a few extra minutes with this first update to let everyone know who I am, where we’re at, and set some expectations for the future.

Thanks for reading, and thanks again for all of your support!

44 Likes

Thanks for the update David. We are excited to begin testing & using litecoin MW.

Plus the option to use coinjoin prior to a transaction would be a great benefit for those who need private transactions.

Do we have anyone working on a wallet that will support LTC MW? Loshan? Or Kerry?

7 Likes

David, it would be great if you could also post your updates on the large number of folks on www.bitcointalk.org in the Litecoin Thread.

Here is the link:

It is silly that as large as that group is on www.bitcointalk.org NO dev seems to post anything of note

in any manner on there. It would also be nice to see monthly updates on there as well to expand the

info on litecoin on another platform.

later

Brad

8 Likes

Hey David! Awesome to get updates on this thread. Great to hear the progress :wink:

2 Likes
5 Likes

As promised, here’s a brief write-up of the design. Mimblewimble Design (libmw)

3 Likes

Hi David. Thanks for the update.

December Progress:

After months of planning, development of the mimblewimble extension block has officially started! My efforts this month focused mostly around restructuring the core logic that will be shared between Grin++ and LTC. This involves all of the logging, serialization, crypto, error handling, and common data structures (headers/blocks/txs).

Most of this was already written for Grin++, but since some parts were hurriedly coded on a tight time schedule, I’m using this opportunity to go over every line with a fine-tooth comb. As part of this, I’m standardizing patterns that were originally followed inconsistently, backfilling missing tests, and adding better documentation.

The LTC priorities for January will be:

  1. Determine build method - Since the code will now be spread across a few repos, a slightly more complex build process is necessary. I’m still figuring out the best way to handle this, but am currently leaning toward a simplified version of libbitcoin’s build system (GitHub - libbitcoin/libbitcoin-build: Libbitcoin Build System)
  2. Define all LTC models - Determine the exact fields and serialization format of the headers & kernels (including signatures)
  3. Move the database implementations over to libmw-core, cleanup to match new standards, and add full tests.

I also will be working on a faster sync mechanism for Grin next month, which LTC will directly benefit from.

For those technical-minded readers who want to follow along as changes are made, feel free to “watch” the following repos:
https://github.com/GrinPlusPlus/libmw-core
https://github.com/GrinPlusPlus/libmw-ltc

9 Likes

Thanks for the updates, David! :grin:

1 Like

I have been spiking on MW so we have a plan moving forward but I have just begun. It will be great to launch Litewallet at the same time as Litecoin Core. But it more likely that we will need to do some testing after the updates are live. One of the tech debt issues is tLTC support for iOS.

4 Likes

Hi Kerry that’s great. We would love to see confidential transactions added into litewallet supporting MimbleWimble

In regards to the last statement about tLTC die iOS what is this?

this is testnet LTC. The code was forked from Breadwallet which was one of the first BTC mobile wallets. They had testnet BTC and the idea was the LTC should have testnet LTC as well. It requires some refactoring in the codebase.

1 Like

January Progress:

The biggest news from January is that I’ve found a way to support non-interactive transactions in Mimblewimble! The biggest difficulty with using MW is the need for sender and receiver to communicate, which requires receiver to be online when sending. My proposal, along with an updated version of the write-up that will be released soon, eliminates that need. This removes a major UX hurdle, limits long-term maintenance requirements, and supports receiving via cold-storage, making hardware wallets easier to support.

On the development side, the build process has been determined for libmw, and local builds are working for libmw-ltc (checkout libmw-core and libmw-ltc to the same parent directory, and you should be able to build libmw-ltc). I’ll setup CI/CD in the next month or so, but the important part is multi-repo local builds are working.

I’ve also built out a robust Database framework with transactional capabilities to support atomic updates across multiple tables, and have implemented the block database querying and updates, which is coin-agnostic, and has been partially tested using LTC-specific header and block models.

The security audit results are back from Grin++, so I’ve applied all fixes to Grin++ and libmw, and will be awaiting final review from the auditors. The audit turned out to be a humbling lesson in just how complicated C++ really is. I’ve learned enormously as part of the process, and the Grin++ & libmw codebases are significantly better as a result. A huge thanks again to the contributors in the Grin, Beam, and LTC communities who made that audit possible.

On the Grin++ side, we’ve had a successful planned hardfork, our pre-hardfork syncing issues have been resolved, and Grin++ 0.7.5 is available now which has turned out to be the most stable release yet. For the first time since Grin++'s creation, the support channels are finally quiet, which means more time to focus on actual development. As long as things remain quiet, and I don’t have to focus on putting out fires, I expect an even faster development pace over the coming months.

The priority for February will be to implement the consensus rules for the LTC EB, including all validation and a full suite of tests. This is the most important part of the code, so it will be time consuming to make sure all of the details are correct, and the code has full test coverage. Once that’s complete, I will work on the API for the extension block, so we can start integrating libmw into the existing LTC codebase.

I will also focus on getting the new one-sided tx proposals thoroughly reviewed, and if no major security concerns are found, I will create an LIP for community feedback.

15 Likes

Thanks for the update. We are looking forward to reviewing the litecoin improvement proposal in March.

1 Like

Thanks for the update :+1:

1 Like

Thanks for the update, David! You rock. :grinning:

1 Like

great going

1 Like

Thanks for the update! Glad to hear about the progress!

We need this. We also need more than just this and the usual bitcoin core updates as well.

Any new ideas that are separate from bitcoin core updates like Mimblewimble that make

Litecoin further unique from BTC? Right now the ‘scam coins’ forked coins of Bitcoin, BCH and BSV

are more silver to gold than LTC unfortunately only further enhancements above and beyond BTC

will loft LTC back into at least the same price range as the above scam coins. It still boggles the mind

that LTC is as low in price as it is compared to BCH and BSV. :frowning:

Thanks updata. I will wail new

1 Like