The Lisk protocol
This section gives an overview of the Lisk protocol, the set of rules followed by a blockchain created with the Lisk SDK using the default configuration. A blockchain that uses custom constants or adds custom transactions may therefore deviate from the protocol described here. The aim of this documentation is to provide a high-level overview of the protocol. A complete technical specification of most parts of the protocol is given in the respective Lisk Improvement Proposals.
At its core, a blockchain is a database shared across multiple computers. Operations on the database are called transactions. The data contained in a transaction specifies the operation to be performed. In an account-based blockchain, the validity of a new transaction is checked against a database of user accounts. An account is a portion of the database identified by the account address. This is opposed to UTXO-based blockchains (such as Bitcoin, see Wikipedia page), where there is no concept of account and the validity of a transaction is based on a database of referenced past transactions. The cost of processing the transaction and updating the blockchain is specified in the transaction fee and paid using tokens. Transactions are shared among users connected in a P2P network and are grouped together into blocks. The validity of a block (and all transactions within it) is determined against the accounts state. The consensus protocol specifies who has the right to forge a new block and how agreement on blocks is reached. After the block has been forged, it is added to the blockchain, and all state changes induced by the block transactions are applied.
The Lisk protocol is the formal set of rules that defines a blockchain created with the Lisk SDK. The Lisk protocol defines an account-based blockchain with a set of default transaction that are used to modify the accounts state. The account state and transaction logic is structured into modules. A module can define new account properties and a set of transactions acting on the whole account state. The Lisk SDK contains four default modules: Token, Sequence, Keys, and DPoS. Every account property except the address and every transaction of the Lisk protocol therefore belong to one of these four modules. The fees for transactions are paid with the chain native token. Transactions are gathered in blocks by delegates, which are selected using a Delegated Proof-of-Stake mechanism. Delegates agree on blocks using the Lisk-BFT consensus algorithm.
The following diagram depicts the main characteristics of the Lisk protocol.
This documentation is structured as follows:
Accounts: In this section the different properties of accounts are explained.
Transactions: This section outlines the default transactions present in the Lisk protocol.
Blocks: This section describes the different block properties and how new blocks are created.
Consensus algorithm: This section illustrates how the delegates eligible to create blocks are selected and how they reach agreement on new blocks.
Network: This section describes the Lisk P2P network used to exchange information such as blocks or transactions between nodes.
Lisk Mainnet: This section lists the properties specific to Lisk Mainnet.
Appendix: This section contains additional information related to the Lisk protocol.