Beam code review, interested in this one for a while and really want to see what they’re doing to improve Mimblewimble. Quick recap for those unfamiliar – the MW protocol is designed to be scalable, private, anonymous (named after tongue-tying silence spell from Harry Potter if you were wondering) and the Beam crew are trying to make it work better for all constituents. Note website is https://www.beam-mw.com – there is another Beam project out there, this is the relevant one. So what do they say.
“Anonymous, Lightning-Fast Gold, A Mimblewimble Implementation”
“MimbleWimble solves two key problems: privacy and scalability. Beam makes key improvements to the Mimblewimble protocol including scarcity, a reward pool for evangelism, and a safer mining algorithm called Equihash.”
So remember, on Mimblewimble the key focus areas are;
- Scalability & Size
Privacy is straight forward enough (abstractly speaking, not from an implementation point of view). Scalability and Size is what I love about the Mimblewimble specification.
So first, we need to explain that Mimblewimble (I just love saying it), is a UTXO based system and not a State based system. An UTXO based system is defined by inputs and outputs.
Inputs are from genesis or block rewards originally and can then be used from outputs. So we start with a block reward of 1 BTC as an input to miner A. Miner A can then use the input of 1 BTC to create 2 outputs 0.5 BTC to B and 0.5 BTC to C. B then uses the output from A (now input to B) of 0.5 BTC and sends it to D. This is a UTXO based system.
Mimblewimble defines that to know the state of the above: I don’t need to save 1 BTC to A, A 0.5 BTC to B, A 0.5 BTC to C, B 0.5 BTC to D, all I have to save is 0.5 BTC to C, 0.5 BTC to D, because that’s my finalized state.
This is great for scalability and how quickly new nodes can start in the network. So seeing a live Mimblewimble implementation is pretty awesome.
This is what the Beam team are (and have) built, a Mimblewimble implementation.
Jumping into the code we see C++
Good structures, good layout, good commenting.
All the defaults already implemented for p2p, node management.
Using secp256k1 for zero knowledge proofs, they also already have a working implementation of Bulletproofs.
Working Equihash implementation.
Beam Code Review Conclusion:
This is one of those, “It’s just good” projects. Lots of effort, lots of code, lots of hard work. Solid implementation.
Well done to the team, I look forward to the testnet.
Disclaimer: Crypto Briefing code reviews are performed by auditing what is on display in the master branch of the repo’s made available. This was performed as an educational review and any comments in the article are the opinion of the writer. It is normal for code to change rapidly, hence we timestamp our code reviews so that they present a snapshot at a moment in time. Information contained herein should not be used as any comment or advice on the project as a whole.
Beam Code Review Timestamp: June 4th, 2018 at 21:12 GMT