Update for Friday August 24th, 2018
The burst of activity continues and loads of smaller things tackled this week (seems to be the mode all developers are in at the moment). The core chain code is looking more robust by the week, lots of speed and other improvements being done and quite a few smaller quality of life things are being addressed. There’s a Work-in-Progress (and still under revision) list of things that need to be in place for MainNet: https://github.com/mimblewimble/docs/wiki/Functionality-for-Mainnet, and the next few weeks/months will most definitely be focused on ensuring all of the items on this list are addressed.
As for my own work this week (in no particular order):
Two major(ish) issues with the wallet fixed; the fact that the reported height of outputs in the wallet was not always reliable, and that wallet restore hadn’t been updated. These were addressed via:
-
Adding functionality to retrieve a block header by an unspent output commit … this builds on work done earlier to include a PMMR index in each block, which makes it possible to search through the header chain to find the block an arbitrary unspent output is contained in. This in turn makes it possible to get the height, which means the height of an output in the wallet can be refreshed with the correct values after dandelion propagation or a wallet restore (both lacking earlier). I’ve tried to do this as efficiently and simply as possible, though there is a chance this may need to be revisited later depending on the performance of large wallets.
-
Ensure wallet heights are always correct - Just using the above functionality to ensure the heights in a wallet are refreshed correctly once they appear in the UTXO set.
-
Wallet Restore fixes + updates In addition to including the above, a few changes and updates needed to be made to the entire process to support recent developments (the code was a little bit out of date). Most importantly, I added some automated tests to test the process at a basic level and ensure the contents of both pre and post-restore wallets match exactly (which should help ensure that bit of code doesn’t fall out of date again)
And a few other non-wallet issues
-
Automated test for 1325 There’s some particular oddness with larger transactions that everyone’s been looking at nobody’s yet been able to track down… I’ve jumped in a bit as well by creating a test that tries to replicate the issues… (and to nobody’s surprise, the test seems to work fine) Whether or not this ends up being useful to anyone remains to be seen, but that’s the nature of the business.
-
Batch Verify proofs during validation a small update but also did a bit of benchmarking to ensure batch verification is indeed faster in all cases.
And finally, a bit of a wallet thinkabout, particularly on the subject of how wallets can communicate easily and safely (as opposed to the NAT-negotiation hell the process currently entails) and catching up on details of some technologies that could provide solutions. This is still being thought about and under active discussion, so I won’t go into too much detail at the moment (but you can see most of the discussion to date on the dev gitter channel).
Of course, you didn’t think you were going to get away this week without any mentiong of my current funding campaign and thanks to the few kind souls who’ve started it moving already! Takeup hasn’t been as definite or as quick as the previous ones, but I think we can probably put that down to the fact that it’s the tail end of the summer season. I hope the community will see fit to re-hire me for the coming few months once everyone is back at their desks!
That’s it for now, enjoy the weekend dreaming of a rack stuffed with new 2080ti’s.