Cryptocurrency Code Review: Nuls

in #blockchain7 years ago

Disclaimer: These reviews are done as is from what is on display in the master branch of the repo’s made available. This review is not a comment on the overall project, scope, or success thereof. This was done as an educational review by me and any comments in the article are simply my opinion. It should not be used as any comment or advice on the project as a whole.

Review Date: 27/03/2018

“ NULS is a global blockchain open-source project which is a highly customizable modular blockchain infrastructure; it consists of a microkernel and functional modules. NULS provides smart contract, multi-chain mechanism and cross-chain consensus. It aims to break the technical barriers of blockchain, to reduce the cost of development, and to promote the usage of blockchain technology in the commercial field.”

Very active repository, lots of substance commits, good branches structure, good share of contributors.

So far pretty straight forward, nothing amazing yet, but nothing inherently bad. Could have added a tiny bit more error handling for my liking, but that will come with time.

At the bottom we see something that is a bit of a pet peeve of mine, and that’s evaluating a boolean and then returning a fixed boolean, this is where using boolean inference can be very handy, but again this is purely a personal preference. Nothing wrong with it.

Entity bean structure, now that’s something I haven’t seen in a very long time, flashbacks from my J2EE days.

Doesn’t look like the NodesResource has been implemented yet, might or might not be an issue, let’s continue.

Little sparse in the comments, so getting to grips with the flow is a bit difficult, but I can hardly comment about comments!

The RPC modules looks good, still a few items requiring implementation and not yet fully production level, but it looks close to completion.

Really not a fan of arguments as a string array, this means you don’t have type safety. This knows that there is an argument but it doesn’t know what the argument is, the length also assumes different types. I really don’t like seeing this in code.

So the arguments are fed in as a string because it is taken from the commandline, so in that case you grab them, you validate each one and cast as necessary for type safety and then you provide them to the function. Overall this is more secure and reads easier from a developer perspective. I’ll make a note for it to do a PR.

Consensus processor not yet done, pity, this is what I was looking forward to.

For the Node, it looks like accounts and wallets have been implemented, but I’m not seeing consensus or blocks yet.

The P2P code is straight forward, using Netty and lists for node.

DB module is a wrapper of mybatis

I like how the meeting rounds in consensus is done. Overall this is nice, good modular approach, in some places a bit rushed but overall good quality. At the same time there isn’t anything super wow here, but not everything has to be wow.

I really liked the consensus meetings, so let’s see about their roadmap

Highly customizable modular blockchain? Check
Microkernel and functional modules? Check
Smart contracts? Didn’t see them
Multi-chain mechanism? Didn’t explicitly see anything focusing around this, but you could have multiple chains in this architecture

Conclusion: They look like they are good on track to hit their milestones. Most of the heavy lifting has been done, from what I’m seeing currently I’m not 100% sure how they are beating or improving on Ethereum, but it is definitely another kind of blockchain in this space. I feel like it’s currently still lacking that core piece of innovation, but they have put down a good foundation, so they should be able to build something strong on top of it.

A comment I have to make though, this is essentially a research project, and there is nothing inherently wrong with it, as an investor you just have to understand that there are different rounds of investing, investing in a concept is Angel investing, it means you are a long way from seeing something real. They still have a very long roadmap ahead of them and will only start seeing a real production ready product by end of year, maybe even early 2019. So just be ready for that.

I’ll be keeping an eye on the code though, I think when they start expanding a bit on the cross-chains there will be some interesting bits to see.

Sort:  

Congratulations @andrecronje! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!