Development Update — Road to Core 1.0 Mainnet: July 26, 2018
Hello Lisk Community!
We understand that you are just as excited about the release of Lisk Core 1.0.0 to Mainnet as we are! We want to say thank you for continuing to track our team’s progress on GitHub as we hone in on our biggest release to date. There are just a few steps left that need to be taken in order to coordinate the impending migration. Just to reiterate, we are still corresponding with exchanges that will need to properly migrate to Lisk Core 1.0.0. Since we are listed on many exchanges, we’ve had to communicate with respective parties and this takes time. In addition, we’ve been taking extra measures to make sure our product is as secure as possible; this is why the second release candidate (1.0.0-rc.2) is so important. We believe that quality takes time, and we stand behind this philosophy.
As always, we have outlined below all of the improvements and changes we have worked on over the past week.
Lisk Core 1.0.0-rc.2:
During the extensive test scenarios that we performed during the quality assurance (QA) round for the Lisk Core 1.0.0-rc.2 release, we found that the solution we’d initially implemented to solve issue #2199 did not completely solve it. For this reason, we began an investigation into it and opened two more issues, which we expect, when combined, will finally solve the problem.
Issue #2249: There is a possibility that particular nodes can perform a migration after the actual migration height; for this reason, their blockchains can end up containing invalid blocks — blocks with version 0, forged after the migration height. A scenario such as this one can happen if a node is migrated manually. To ensure a smooth migration experience and reduce the impact of those incorrectly migrated nodes on the network, we decided to add another blockchain validation rule during the node startup. We’re checking recent blocks during the start of the application and if there are invalid blocks, we can automatically delete them so that the node can synchronize with the correct chain without any issues.
Issue #2252: We added a simple ban mechanism to prevent blockchain synchronization with peers that have an invalid chain (blocks with version 0 after migration height). When we receive such a block from a randomly selected peer, we will just ban that peer temporarily for a few minutes. This mechanism should greatly improve network stability during the migration process and protect against malicious actors. In the future, we’re planning to introduce a more advanced ban mechanism which will be proposed by our Science Team after a sufficient period of research.
We also included one more issue for this release:
Issue #2243: We realized that our configuration migration script is not compatible with the current Lisk Core 1.0.0-rc.1 version that is running on the Testnet network. We adjusted the script to be compatible.
Lisk Core 1.2.0:
Issues #2239 and #2135: We finally decided to update the Node.js version that we’re currently supporting from 6.14.3 to 8.11.3. We’re very excited about it because the new version comes with many additional features. Some of them are:
-Use of async/await functions
-Static Error Codes
-N-API — Next generation APIs for Node.js
-Object Rest and Spread operator usage
-NPM 5 (Introduction of package-lock.json and faster package install)
-Support for HTTP/2 (faster, simpler, and more robust)
With the release of Lisk Core 1.2.0, we will still support both Node 6 and Node 8 for a minimum of one month. However, we can extend this period if necessary. Our final goal is to upgrade to Node 10 LTS, which will come later this year.
Issue #2179: Dedicated community member Simon Morgenthaler reported a bug in the /api/node/status endpoint. One of the properties returned by this endpoint, networkHeight, was returning incorrect data. We adjusted its algorithm to return the most popular height in the network instead of the highest one.
Issue #1731: We found a bug related to the transaction pool. When we expired transactions, we didn’t call the undoUnconfirmed function, which reverts changes already done to the u_balance column of the mem_account table in the database. This is rare because transactions normally do not stay in the transaction pool long enough to expire. We fixed the logic to ensure that even in such cases, changes done in the database by unconfirmed transactions will be undone.
Brand New Version of Documentation Site:
We’ve worked hard to make our documentation as comprehensive and user-friendly as possible and have released the latest version today! When making changes, we’ve addressed the feedback that we received from the community. The most important improvements are the following:
-We changed the structure of the main documentation pages for each of our products, including Lisk Core, Lisk Elements, Lisk Commander, Lisk Hub and Lisk Explorer. We standardized the Tables of Contents in which you can clearly see all of the sections and subsections related to a particular product.
-We improved the Lisk Core Migration page with a more user-friendly flow, further details and a short video which demonstrates what a successful migration should look like.
-The Lisk Core Configuration page now contains new instructions regarding forging — how to enable, disable and check your node’s current forging status.
The solutions for all the issues we found during the last round of QA for Lisk Core 1.0.0-rc.2 are already prepared with corresponding pull requests open and under review. We hope to merge them and start our next round of QA for that release tomorrow on Friday, July 27.
While our main focus is on the second release candidate, the size of our development team allows us to dedicate additional resources to the Lisk Core 1.2.0 release. We are working as quickly and efficiently as possible on this release while still taking all the appropriate steps to ensure its security and success. You can always check out the latest progress of this release on our GitHub in the corresponding Version 1.2.0 project.
As mentioned on the Lisk subreddit, we’ve decided it makes the most sense to hold the AMA once Lisk Core 1.0.0 is deployed to Mainnet.
We will continue to keep you updated as we stride through the final steps before the release to Mainnet.
-The Lisk Team