Nervos Network - code review and product test
Nervos is presented as a network of scalable and interoperable blockchains built on top of an open network. Built for the enterprise.
Nervos CKB (Common Knowledge Base) is aiming to support more general-purpose computation and storage, better scalability and more balanced economic incentives, and more friendly to mobile devices.
The Nervos networks’ goal is to become "the world’s common knowledge base, and the foundation of all types of decentralized applications".
These are quite challenging goals, for which there are of course numerous contenders.
However, with Jan Xie, who has background in the Ethereum foundation with work on scaling solutions, and several other high profile team members, we have high expectations on the technical achievements from this project. (Those looking for conclusion only and not interested in the technical details are invited to skip to end here)
As for consensus implementation, nodes in CKB network first authenticate the submitter of the transaction, then validate new states in the transaction with validators, and put valid transactions in the transaction pool.
Once a newblock is generated and received, new states in the block are committed into the CKB. The consensus model is a hybrid of Nakamoto (Bitcoin) and BFT (Byzantine Fault Tolerance), in an attempt to achive performance (from BFT) and security (from Bitcoin) under the same roof. We like this idea (as opposite to re-inventing the wheel) and believe they are on to something.
The Nervos Virtual Machine is running on clients that are kept synchronized through data bases and feed the chain pool with new transactions for validation. This further supports the scaling driven approach as application execution off-chain is much more efficient.
This requires that clients who submit blocks for validations are authenticated permissioned ones and can't be just anyone random call to the chain for validation.
The English version of the Nervos whitepaper (draft) suffers a bit by the translation from Chinese and contains some annoying repeats. We will thus not go further into the details described, but rather follow our tradition by diving straight into the code without further ado, by looking at the completeness of the product in the Nervos github, and our impression from installation and any potential possible run time test.
The NervosFoundation github covers Nervos CKB (layer 1 or base layer) and contains the following main elements:
rust-mDNS-responder & rust-medns-discover
Implements the protocol for multicast DNS and DNS-SD (Service Discovery). Both are forks. this is a good fundation for sending/receiving things over the Network Ports.
Helps to encrypt the network traffic according to open SSL standard
Fork of Rust implementation of the RocksDB. A persistent key-value store for fast storage environments and fundamental to CKB.
Fork of Rust language bindings for Bitcoin secp256k1 library (necessary to utilize btc consensus)
All in all, these repositories contains the foundation to build a product but not the CKB product itself. The only thing which is complete is the Nervos-web, which is not the focus of our interest, but something we believe will used to plug in their web-platform later on.
Cryptape is the second code repository and contains layer 2, which is the client side of Nervos. The code overall looks solid and contains the complete Neuron wallet example dapp for Android. We will install and try this out.
Installation comes without any issues and build is smooth in Android Studio. All libraries are up to date as they should.
The wallet runs (and is entirely in Chinese).
Conclusion: We see a, albeit solid, embryo to a product foundation with extensive and high quality code documentation (used Google translate from Chinese), which indicates a good start for the project, in that it doesn't re-invent the wheel but builds on forks of proven code.
We understand after talking to the team that the layer 1 repo doesn't represent the current state of the product (this is kept in private repo for now), but no ETA was shared at the time of writing this. The layer 2 repo is more complete but still in its early days. It looks nice but is far away from real product grade. It represents more of a proof of concept with a nice front end and a lot of hard coded things inside.
The lasting impression after looking into all of this is that the team is very qualified in what they are doing and we are very excited by the ideas presented in white paper and code documentation. However we would like to see much more realization from this point on, and hopefully open repos for us to study. Without this it is impossible to gauge the actual progress of the project.
We will continue to follow Nervos closely as we are very bullish on what they are aiming to achieve, and have well founded confidence in their ability to execute. We believe that this could potentially be one of the major success projects of 2018, as the project builds on a technically solid foundation and should be able to attract numerous commercial use cases once complete.
For enquiries on crypto related code reviews/tests please contact us on: [email protected]