Launch of Betanet v6
We're thrilled to announce the arrival of Betanet v6!
Through Lisk Core v4.0.0-beta.1 and Lisk SDK v6.0.0-beta.1, this latest upgrade brings with it the long awaited Lisk interoperability solution, and we need the help of our dedicated community to ensure its success.
Community participation in this beta testing is crucial, and serves two main purposes. First, it provides valuable insights into real-world usage that can't be replicated in a controlled environment. Second, feedback is instrumental in identifying bugs and potential product enhancements.
The exact duration of this beta testing is uncertain at this point, but we expect it to last several months. Your patience, participation, and feedback during this phase are greatly appreciated.
Please join us on this exciting journey towards a superior and seamless user product launch!
Resources for Betanet v6
The Lisk Faucet was updated to 4.0.0 to support the Betanet changes. You can use this to obtain betanet LSK tokens for all your testing.
Attention! Currently we're working on known issues and will have them fixed soon. In the meantime, please reach out to the Lisk team via lisk.chat to get betanet LSK.
Lisk Desktop v3.0.0-beta.0 can be downloaded and used for all of your betanet transactions. Please note that this version of Lisk Desktop will NOT work with the currently running Mainnet and Testnet chains.
Lisk Mobile v3.0.0-beta.0 is in pre-release, but will not be released on the proper iOS and Android stores until the mainnet launch. Therefore, if you would like to become a tester, reach out to us via lisk.chat.
Furthermore, the Lisk SDK documentation and Lisk Core documentation have been updated to reflect all new changes that have been implemented. Please note that the following betanet specific information is not in the documentation:
- Lisk Service public API: https://betanet-service.lisk.com/api/v3/
- Lisk Core public API: https://betanet.lisk.com/api/v3/
- p2p Port #: 7667
Hardware Wallet Testing
If you wish to test your Ledger hardware wallets, you can use the following steps to do so through Lisk Desktop: How to use the Ledger hardware wallet.
Users should download the latest version of ledger-lisk here: https://github.com/Zondax/ledger-lisk/releases/tag/v1.0.3
In order for sidechains to be accessible on the wallets, developers who register a sidechain must submit their off chain metadata to the app registry repository.
You can see an example of it being used here.
New Protocol Features
LIP 0037 - Use message tags and chain identifiers for signatures
Message tags for signatures have now been implemented. These message tags are prepended to the binary messages before being signed. A unique tag has to be used for each message type (transaction, block header, etc.), and in particular for each schema. This ensures that a signature for one message cannot be a valid signature for another message that serializes to the same binary message.
Replay attacks for arbitrary messages are also prevented by using chain identifiers in both transaction and block header signatures.
LIP 0038 - Introduce BLS signatures
BLS signatures have been introduced, which specifies how to create and validate compact aggregate signatures.
LIP 0039 - Introduce sparse Merkle trees
Sparse Merkle trees are now implemented in the Lisk protocol. A sparse Merkle tree is an authenticated data structure that allows to validate a key-value dataset with a single hash value, the Merkle root. It differs from a regular Merkle tree in that every element of the dataset occupies a fixed position in the tree, given by its key, and the resulting Merkle root depends only on the final dataset and not on the order of insertion.
LIP 0040 - Define state model and state root
The state model of a Lisk blockchain and the construction of the state tree from which the state root is calculated has been implemented.
LIP 0041 - Introduce Auth module
The Auth module has been introduced, which is responsible for handling and verifying nonces and for transaction signature validation, including transactions from multisignature accounts.
LIP 0042 - Define state transitions of Reward module
The Reward module was introduced, which provides the base reward system for a blockchain developed with the Lisk SDK
LIP 0043 - Introduce chain registration mechanism
A command was implemented to allow a sidechain to be registered on the Lisk mainchain. Similarly for sidechains, a mainchain registration command was implemented as well.
LIP 0044 - Introduce Validators module
A validator module was introduced, which is responsible for validating the eligibility of a validator for generating a block and the block signature. It also maintains information about the registered validators in its module store and provides the generator list.
LIP 0045 - Introduce Interoperability module
The Interoperability module was introduced, which provides basic functionalities to transmit information between interoperable chains in the Lisk ecosystem using cross-chain messages. This includes the properties, serialization, and initial values of the module.
LIP 0046 - Define state and state transitions of Random module
The Random module was introduced, which validates the inputs and computation of outputs for the commit and reveal process for a Lisk blockchain.
LIP 0048 - Introduce Fee module
The Fee module was introduced, which is responsible for handling the fee of transactions. It allows chains to choose the token used to pay the fee and to define a minimum fee for transactions to be valid.
LIP 0049 - Introduce cross-chain messages
The cross-chain message schema, which is the generic message processing and the base error handling, was implemented. Base cross-chain messages allow all chains in the ecosystem to read and understand the base properties of messages..
LIP 0050 - Introduce Legacy module
The Legacy module was implemented, which maintains all accounts on the Lisk mainchain that received balance transfers to their address in the old 8-byte format and for which no public key is associated. The Legacy module also implements a command allowing validators without a BLS key to register one.
LIP 0051 - Define state and state transitions of Token module
A Token module was introduced that is used for minting, burning, and transferring of fungible tokens. All chains in the ecosystem may use this to handle and transfer tokens in a coherent, secure, and controlled manner.
LIP 0053 - Introduce cross-chain update mechanism
Cross-chain update transactions were implemented, which are used to post certified information and cross-chain messages in Lisk ecosystem chains. These transactions are the carriers of the information transmitted between chains.
LIP 0054 - Introduce sidechain recovery mechanism
New commands were introduced to the Lisk ecosystem: state recovery, message recovery, liveness termination, state recovery initialization, and message recovery initialization.
The state recovery command is used to recover entries from the module store of a terminated sidechain.
The message recovery command allows users to recover cross-chain messages that are pending in the outbox of an inactive or terminated sidechain.
The liveness termination command terminates a sidechain that violated the liveness condition.
The state and message recovery initialization commands are used to initialize the state and message recovery process, respectively.
LIP 0055 - Update block schema and block processing
The block header schema was updated to add several new properties discussed previously here.
LIP 0056 - Add weights to Lisk-BFT consensus protocol
The Lisk-BFT consensus protocol was generalized to allow for different BFT weights of the participating validators, which may also change over time. The BFT weight is the weight attributed to the prevotes and precommits cast by a validator and therefore determines to what extent the validator contributes to finalizing blocks.
LIP 0057 - Define state and state transitions of PoS module
The PoS (proof-of-stake) module was introduced, which is responsible for handling validator registration, staking, and computing the validator weight.
LIP 0058 - Define BFT store and block processing logic
The BFT store, which is responsible for maintaining the consensus participants, their BFT weights and all information related to the consensus vote, and the block processing logic related to the Lisk-BFT consensus protocol, was defined.
LIP 0059 - Introduce unlocking condition for incentivizing certificate generation
An additional incentive for validators and stakers in PoS was implemented. This incentive is given for generating certificates by requiring the generation of a certificate for a certain height before tokens previously used for staking can be unlocked.
LIP 0060 - Update genesis block schema and processing
Specifications of the genesis block were updated to meet the new requirements and characteristics of the new state model.
LIP 0061 - Introduce certificate generation mechanism
A certificate generation mechanism has been introduced. This mechanism determines how unsigned certificates can be computed from blocks and how they are signed using BLS signatures.
LIP 0062 - Use pre-hashing for signatures
Pre-hashing for signatures has been implemented, which includes transactions, block headers and certificate signatures. With this, signing on memory limited devices such as hardware wallets is now possible.
LIP 0063 - **Define mainnet configuration and migration for Lisk Core v4 The configuration of Lisk Core v4, which includes the selection of modules and the choice of some configurable constants, is defined. Also, the migration process from Lisk Core v3 to Lisk Core v4 was created.
LIP 0064 - Disallow non-required properties in Lisk codec
Lisk codec is now stricter. This is achieved by requiring every schema property to be marked as required. This significantly simplifies the rules, making the serialization method much less error-prone.
LIP 0065 - Introduce events and add events root to block headers
A mechanism was introduced to emit events from the application domain during the block processing. This allows inclusion or non-inclusion proofs for events, proving whether an event was emitted during the block processing.
LIP 0066 - Introduce tree based key derivation and account recovery
Deriving private keys from a single source of entropy is now possible, through either Ed25519 or BLS key derivation.
LIP 0067 - Introduce a generic keystore
A generic keystore was introduced which can be used in the wallet to encrypt a user's private keys. It can also be used by the block generator module to store generator keys.
LIP 0068 - Define new transaction schema
A new schema was implemented to serialize transactions. The main change is to replace module and command identifiers by the corresponding names, which are of the string type.
LIP 0069 - Update Lisk SDK modular blockchain architecture
The Lisk SDK architecture was updated to include the block lifecycle and hooks.
LIP 0070 - Introduce reward sharing mechanism
An on-chain reward sharing mechanism was implemented for the Lisk ecosystem. It is also included as an additional part of the PoS module.
LIP 0071 - Introduce dynamic block rewards module
The Dynamic Block Rewards module was introduced, which is responsible for providing the base reward system for the Lisk blockchain, according to the validator weight. This module is mainly used for Proof-of-Stake (PoS) in the Lisk ecosystem.
It is expected that issues will be discovered throughout the Betanet testing process. To view a list of the current issues, check the public repo.
The Road Ahead
The development and internal alpha testing for Lisk SDK 6.0.0 and Lisk Core 4.0.0 have now been successfully completed. At the moment, the external security audit for Lisk SDK 6.0.0 and Lisk Core 4.0.0 is in progress. After thorough testing of the Betanet v6 and the resolution of the external security audit, we will start to plan for both the Testnet and the Mainnet releases.
Disclaimer: In the future communications we will refer to the new Betanet as 'v4.0.0' to be aligned with the current version of Lisk Core.