Development Update — Road to Core 1.0 Mainnet: July 12, 2018
Hello Lisk Community!
We’re getting closer and closer to the release of Lisk Core 1.0.0 to Mainnet! We want to assure the community that we are working diligently while also taking the appropriate time and measures to ensure that the release is of the highest quality.
The steps include making sure that all of our products — Lisk Elements, Lisk Explorer, Lisk Commander and Lisk Hub — are compatible with Lisk Core 1.0.0. The first compatible release candidate of Lisk Elements, 1.0.0-rc.0, is planned for release today. Regarding Lisk Commander, the current release candidate, 1.0.0-rc.0, is already compatible. The latest version of Lisk Explorer — 2.1.2 — was released today. For Lisk Elements and Lisk Commander, the next minor versions are already under development. Although we already have established communication channels with most major exchanges, we are continuing to reach others who we are not currently in touch with yet. Streamlined communication is the key to ensuring the migration is able to occur without issues; we will offer them any necessary assistance with this process.
Continuous updates & improvements to Documentation
In preparation for the release of Lisk Core 1.0.0 to Mainnet, we’re still constantly working to improve our documentation. We recently added a section about troubleshooting to provide solutions for the most common issues that can occur during the migration process, installation process and node management.
In the most recent version of the Troubleshooting Guide, you can learn what to do in the following cases:
- Installation script fails during binary installation because the PostgreSQL server is already installed
- npm install command fails because of an error related to the build process of sodium dependency
- Nothing is shown in the console after starting the Lisk Core application
- Delegate not found error message when trying to enable forging on the node
As stated in last week’s development update, Quality Assurance for Core 1.1.0 is moving as planned. This phase is expected to be completed by next week.
With Lisk Core boasting the largest development team at Lightcurve, we’re able to fully focus on the completion of 1.0.0 as well working on the releases that will follow; 1.1.0 and 1.2.0.
Further changes in the Core 1.2.0 version include:
Issue #1647: There was an inconsistency in our database schema as we’d used different data types among different tables for storing round numbers. After careful deliberation, we decided that sticking to the integer data type is sufficient.
Issue #750: We discovered an inconsistency related to the usage of this variable and passing scope when performing verification for different transaction types. We simplified the code by removing the usage of this and adjusting corresponding function calls to no longer pass the scope variable.
Issue #2125: We have a few different test types as part of our automated test suite. One of the test types involves integration testing. Integration tests spin up a small network of ten peers on a single machine to perform a series of tests focusing on stable communication between the peers, data integrity within the different nodes, proper transaction and blocks broadcasting. They also include tests for some features such as peers blacklisting, behavior of the nodes when they are run behind a firewall and a few others. We’ve experienced issues related to the stability of those tests for some time and because of that, we have decided to review them in order to figure out the actual cause of this behavior. As a result, we refactored those tests to ensure they can scale further. We’ve also identified a few test cases that need to be fixed and for this, we will open separate issues.
Issue #716: Lastly, there was an issue opened a while back to unify the way we store all LSK values like balances, fees, block rewards, transaction amounts, etc. Because JavaScript uses a double-precision floating-point format, there is a limit to which arithmetic calculations can be performed safely. Javascript can natively store and operate only on numbers between -(2^53–1) and 2^53–1. Any operation that goes beyond that margin can result in incorrect data. For example, expression Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 will result in evaluation true, which is mathematically incorrect. To avoid this issue, we’re using an external library called bignumber.js for performing arithmetic operations. We reviewed the usage of the values mentioned earlier in an entire application, and from now on, we’re storing them as instances of Bignum whenever possible. This will ensure that Lisk Core can handle very large amounts of LSK safely and securely. Regarding API endpoints, peers communication and saving numbers in the database, we’re converting them to the string data type.
Next Steps
1. Complete and perform QA on Lisk Core 1.0.0 2nd Release Candidate
Given that Mainnet is far more important than Testnet, our biggest focus right now is to complete and then perform QA on the second release candidate of Core 1.0.0, which we are working on for release to Testnet.
2. Include new security features in Lisk Core 1.0.0
We decided to include a few additional features in the Lisk Core 1.0.0 release to avert possible security risks related to the migration process. Issues are already open in GitHub for the corresponding 1.0.0-rc.2 milestone, however, we will describe them in detail in next week’s development update.
3. Update your tools to be compatible with 1.0.0 new REST API.
This release will be the final release before the actual Mainnet migration. Despite all of the steps that need to be taken prior to this event, it will take significantly less time to release Lisk Core 1.0.0 to Mainnet than it did to release Lisk Core 1.0.0 to Testnet. Users will still have a little more time to update their tools to be compatible with 1.0.0 new REST API.
4. Continue working on open issues for Lisk Core 1.2.0
We will continue to work on the open issues for version 1.2.0, which we will discuss in further detail in next week’s Weekly Update. And finally, please be sure to check the Lisk Documentation and Guidelines from time to time for continuous updates and improvements.
As always, please stay up-to-date via the #announcements and #network channels on Lisk.Chat and please contact maciek (Lisk Core Lead), JuanG (DevOps) or Mat (Community Manager) if you have any inquiries.
Thank you again for the continued support!
-The Lisk Team