We are happy to announce that the TypeScript Core 1.0.0 is now available for download.
Since my last Medium post the development team have been extremely busy writing unit tests to ensure we hit almost all possible outcomes for each piece of code that has been written in the new core.
The Importance of Testing
Blockchain technologies are, by definition, trustless. This means that you don’t have to trust any third party when performing or receiving a transaction. In reality everyone is trusting the code that enforces the intrinsic rules of any blockchain. It’s not a secret, and neither news, that if the code is buggy disasters could (and probably will) happen.
After more than 250 builds the development team reached an outstanding 99% code coverage.
Does this mean that RISE is bug free? Probably not. But having such a high percentage of code coverage gives the team (and you) more confidence that most edge cases and possible attack vectors have been tested.
What are the Benefits of Core 1.0.0?
As promised in my previous Medium post, the core was rewritten so that the inner-code dependencies were easier to both manage and test. In fact we are using a great node library (written in TypeScript) that helped us achieve IoC.
We also updated all third party dependencies to ensure that we have the latest code available leveraging “free” bugfixes and performance improvements.
The core is now shipped in a self-contained package file that contains all the needed dependencies that the core requires to run. This is a big improvement since 0.x.x core as the installation of such third-party software was delegated to the node-operator. Reducing human intervention in the process will augment the network stability in both the short and long term.
A Path Toward a More Maintainable and Flexible Code
There is no doubt that the new core is several orders of magnitude more maintainable than how it used to be.
As previously mentioned, it is not just a TypeScript rewrite we have been working on. We have also:
- Achieved full Inversion of Control by rewiring and rewriting inner-dependencies
- Refactored the folders structure
- Created unit and integration tests for almost every single line of code
- Migrated from callbacks-style code to Promise+async+await code
- Leveraged decorators for some meta programming
- Integrated Travis for automated test builds with notification on fails
Even if the core can still be improved by several factors I am very pleased with the outcome achieved so far by Matteo, Jose and the guys from PixelPlex.
A Word About Security Improvements
Security is one of the most important aspects to consider when talking about blockchain technologies. With this in mind we decided to deprecate some of the APIs that allowed users to send their passphrases through the network.
From 1.0.0 users that used to delegate the transactions creation and signing to the node will need to adapt and use an offline-signing library, such as this, to sign their transactions.
1.0.0 Core Statistics
Here are some nerdy/geeky stats for the data-crunchers among you:
- 750+ git commits
- almost 2000 unit tests
- 16000+ lines of code
- 37000+ lines of code just for the tests
- 80+ closed issues
- 50+ closed pull requests
- 30+ delegate testers in the Typescript testnet channel
- more than 15k transactions sent during the test period to stress-test the network.
NOTE: These stats does not include internal tools that were built to ease the testing process.
We believe a video is worth more than 1000 words so we invite you to enjoy this short video.
We have already created GitHub projects that will be constantly updated with the issues and the tasks we would like to implement for each new version.
In the next minor version we will try to keep backward compatibility and we will try to enforce new security along with a way faster transaction processor. With 1.1.0 we will try to push the boundaries and achieve a fair amount of theoretical transactions processed per second without giving up on security.
Also we will allocate some development resources to get a totally renewed and improved RISE wallet.
I am also happy to announce that we will spend some time integrating the RISE blockchain into one of the most secure and used hardware wallet: Ledger Nano S!
Some Final Words
I would like to thank all RISE developers who contributed to achieve such a milestone.
A thank you note is also due to our friends at OXY who contributed in the creation of this new core version and we are happy to announce that they will “adopt” it for their blockchain very soon.
We invite everyone to download the new RISE core and give it a try, fill a bug or reach out to us if you feel you could help us to improve it. Instructions are available at our Github repository.
RISE Vision PLC (token symbol RISE) is an ecosystem for developers, offering a platform for the development of decentralised applications powered by a community driven Delegated Proof of Stake (DPoS) blockchain.
For more information, please visit the RISE website: https://rise.vision/
You can also find RISE Vision on Twitter: @RiseVisionTeam