Grin++ - Grin for Windows

I’ve spent the last 5-6 weeks working on a C++ implementation of the Grin protocol for Windows (and later Mac & Linux). If Grin is to become as important and as widely used as most of us hope, it’s crucial that windows-first clients are available that are easy to use for everyday users, which is what I hope this project will eventually evolve into. Right now though, it’s just a sad repo with minimal functionality that’s filled with raw code that often freezes, crashes, and corrupts data. At this point, it entirely lacks a wallet and even an API to interact with it. It just sits there operating on an incomplete version of the protocol, validating some (but not all) of the data that it receives, and occasionally broadcasting it to (way too many) peers. The code is almost entirely undocumented, aside from a readme that has a few steps about how to build, and that lists major pieces of functionality missing. This is where I hope some of you can step in!

Although there’s obviously very much to do to get this puppy ready for mainnet, I’m finally confident enough that the overall structure is in place, and I’m ready and willing to work with any and all developers (C, C++, UI, etc.) who would like to contribute to this project. The code was written in a very modular way with the hope that anyone could jump in anywhere they felt comfortable and have lots of freedom to develop without fear of stepping on anyone else’s toes. If you’re looking to help out, some good places to start would be:

  • Build the code, and update the build docs as necessary
  • Run the code, and log issues for any crashes/hangs/errors/etc.
  • Add better logging throughout the project
  • Add REST APIs to the ‘Server’ project
  • Write unit and/or functional tests for the Core, Crypto, PMMR, or BlockChain projects
  • Add documentation to the code wherever it can add clarity
  • Start designing a UI that’s friendly to even those that aren’t the most tech-savvy.
  • Start building out the wallet logic.
  • Fix the numerous bugs in MMR validation
  • Search the codebase for the 100s of TODOs

Or just message me, and I’ll help you find something that you’d enjoy working on. I’m on the grin/dev and grin/lobby gitter channels most of the time, or you can direct message me. My email is also easy to find for those who don’t mind waiting an hour or two for a response.


What are the limitations with enabling Windows in the Rust implementation? Sorry if I am making you repeat yourself.

Buildng natively: problems with croaring, might be fixable by fixing build script. Haven’t looked further into it
Building cross platform: there’s a known WSL bug that prevents LMDb from working

These issues might be fixable, but so far no one in the community has done so.

For more information see mimblewimble/grin#2062