Monet code review, hard to focus on just the code because the whole idea is very cool. Mobile ad hoc blockchains to decentralize P2P, this is the very nature of a disruptive technology.
I’m going to try to keep this review more professional than my Holochain one. But I have to admit I’m excited.
Decentralized apps, not dApps, are sexy. And yes, Decentralized apps are dApps, but I don’t know how else to change the terminology. There is a difference between an app that happens to be decentralized and an app that focuses on the process of decentralizing something else. Right? So let’s break the two down.
Decentralized app, we have some application that is peer to peer creating a small localized mesh between us, it does not talk to a server, but uses each peer to use as a hop to communicate.
dApps are applications that run in blockchains (normally a VM), while these are also decentralized apps, they are something else.
Monet allows for easy decentralized apps that reach consensus via Babble protocol. There is an important architectural difference here, with a blockchain consensus is inherent in the chain itself. Here consensus is removed, consensus as a service as it were. You give it a sequence of message events and it will figure out the correct ordering for you. This gossip based consensus is based on HashGraph, so this does raise some questions with regards to the patent and how much is really changed vs does it infringe, but that’s not a conversation for this review.
But yes, you could do the same using HashGraph SDK, since the SDK itself also allows for consensus as a service. Tendermint as well actually.
I got a bit side tracked there, let’s jump into the code.
Starting with cmd/babble/main.go
Usual high caliber triggers, neat code, strong commenting, error checking, so off to a great start.
Credit given where code is re-used.
Good test coverage.
Android and Java libraries.
HashGraph sync events.
Keeping track of peers, we still have the full network awareness issue of HashGraph, but not going to go into the specifics now.
Great design abstraction, node implements the minimum required implementation of the consensus engine. Could still completely separate the engine and have nodes feed into it. Great to see. Let’s jump into the consensus implementation.
Uses badger DB for disk syncing and has an in memory store struct. Very sexy wrapper.
Packages rounds into blocks.
Good optimization considerations.
There is a lot more, but really, this is just fantastic.
Monet Code Review Conclusion:
Fantastic code, great idea, the team clearly know what they are doing. I’m going to be going through all of the rest of their code as well.
This is amazing.
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.
Monet Code Review Timestamp: July 7th 2018