Cryptocurrency News, ICO Reviews. Blockchain Features: 100% Ad Free & Independent

Grin Coin Code Review: A Fresh Slice Of Mimblewimble

Investors have a zest for... Grin Coin. The open source project delivers clean, cool code.

3,229

Grin Coin is a community-based project that launched with no “funny business”. It’s natively private, lightweight, resistant to ASIC mining, and it has made a big impact on the crypto sector despite the ongoing bear market. It’s based on Mimblewimble.

“Grin empowers anyone to transact or save modern money without the fear of external control or oppression. Grin is designed for the decades to come, not just tomorrow. “

No big promises, no big statements, clean value proposition. Off to a good start.

“Grin has no amounts and no addresses. Transactions can be trivially aggregated. To hide where a newly created transaction comes from, it gets relayed privately (a “random walk”) among peers before it is publicly announced.”

“MimbleWimble leverages cryptography to allow most of the past transaction data to be removed.”

I’ve covered MimbleWimble a few times before in other released reviews, so I won’t go into it to much, if you need a refresher you can look at my Beam review or my state compacting article.

 

 

1,856 commits, 109 contributors. I’ll repeat 109 contributors. That is a testament to open source work, no ICO, no expensive developers (and yes, blockchain developers are insanely expensive, just adding the word blockchain to their CV and they up their salary by 300%… that’s a rant for a different day, let’s dig in)

Rust development language. Normally I would skip the boiler plate, API/RPC/Crypto, but in this case I think it speaks a lot towards the overall project, since the value here isn’t how they do the “unicorn” stuff, but instead how they do the basics.

 

 

Great encapsulation, looking at the code shows equally fantastic abstraction;

 

 

Concise, well named and descriptive functions.

When functions aren’t self descriptive they add hefty comments;

 

 

Very neat and concise code. I’m going to run through the rest of the boilerplate, but so far it confirms my suspicions, this is a great code base to work off of.

/config/ is good
/util/ is good
/storage/ is good

A quick note on development. As a developer you often start out with a requirement, and your first code is beautiful, if fits that requirement perfectly, it’s well designed, architecture is solid, just the right balance between abstraction and ease of readability. Then come the scope changes, and additional requirements, and deadlines, and very quickly that once beautiful work of art changes to a horrible mess of spaghetti code.

All clearly defined projects start out beautiful.

This is a wonderful example of that, the specification was clear, what they wanted to achieve was clear, and the code is beautiful. Will it still be this beautiful in a year from now after scope creep? How will this wonderful code base accommodate changes? I don’t know, I’m excited to see though.

Wonderful documentation just as an fyi, great place for anyone to start that wants to know more about Grin.

 

 

Enough of the boilerplate, time for core and chain.

 

 

We want create_pow_context, and find_cycles()

 

 

I really don’t have much comment on the above, it’s exactly what they state it is. So… good job.

 

 

Short hashes for compacted blocks. Didn’t even read about that. Cool idea.

 

 

A freakishly simple, but beautiful implementation of compacting.

block.outputs — get all outputs in the block — filter out |x| x.is_coinbase() — cloned — collect.

 

Cut through compacting.


Grin Code Review Conclusion

Rangeproofs, cut through, Pedersen commitments. This is exactly what it set out to be, a secure (pow), private (rangeproofs), compactable (cut through) distributed solution built completely open source.

What I’ll add, it was built with passion, dedication, and love. The builders should be proud, it is a work of art. Simple, yet elegant. Concise, yet descriptive. Great implementation of a great idea.


You can chat about Grin Coin in our Telegram group.

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.

Grin Code Review Timestamp: January 30th 2019

 

News, And Only When It's NEWS
Sign up for our editor's picks, crypto trade updates, and DARE reports!
You can unsubscribe at any time, and we NEVER sell your info.

Leave A Reply

Your email address will not be published.

2 Comments
  1. Peter says

    If there is no amounts or addresses, what does it do? Might be cool to tell people a little bit about the coin rather than posting some meaningless code.

  2. Max Freeman says

    Hi Andre, love your site and the clear way you explain this stuff to a non-code genius audience!

    I can’t find your state compacting article and would like to educate myself further on this. Would you send me a link please? I searched for ‘state’ and it didn’t come up.

    Thanks!

    P.S. @Peter – it’s not that it has no amounts, it’s that they can’t be seen by external observers. Transactions are constructed in the wallet P2P involving “blinding factors”, it is kinda like temporary addresses of how to get money to you now rather than a permanent address like in Bitcoin. This stuff is head-meltingly complex and new content is getting created daily to help us understand, but it’s a really steep learning curve for sure. Mimblewimble is truly revolutionary

Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. AcceptRead More

X
X