ChangeLog 3.x to 4.x

Default transactions

Change Name Type

x

transfer transaction

8

REMOVED

second passphrase transaction

9

x

register delegate transaction

10

UPDATE

multisignature transaction

12

UPDATE

vote transaction

13

ADDED

unlock transaction

14

ADDED

proof of misbehaviour transaction

15

Update: Multisignature transaction

The registration of a multisignature account has significantly in SDK 4.0.

Besides all mandatory properties of a transaction (type, senderPublicKey, etc.), the registration transaction needs the following:

  1. The asset property needs to contain the property mandatoryKeys. The value of this property is an array of pairwise distinct public keys. This array must be ordered lexicographically. Once the account is registered as a multisignature account, every outgoing transaction requires for every public key in mandatoryKeys a signature. The array may be empty.

  2. The asset property needs to contain the property optionalKeys. The value of this property is an array of pairwise distinct public keys. This array must be ordered lexicographically. Once the account is registered as a multisignature account, every outgoing transaction requires some signatures for some public keys in optionalKeys (the number of needed signatures depends on the numberOfSignatures property and may also be zero). The array may be empty.

  3. The sets of mandatory and optional keys, specified by mandatoryKeys and optionalKeys, must be disjoint; their union must have at least one element and at most 64 elements.

  4. The asset property needs to contain the numberOfSignatures property.

    • The value must be an integer between 1 and the total number of public keys of the account (sum of optional and mandatory keys).

    • The value must not be smaller than the length of the value of mandatoryKeys.

    • The value specifies how many signatures are needed for every outgoing transaction from the registered multisignature account, where signatures for mandatory and optional keys are counted.

  5. The signatures property of the transaction object is appended with signatures corresponding to the public keys contained in mandatoryKeys and optionalKeys. All public keys must have a corresponding signature. The signatures corresponding to mandatoryKeys are appended first, followed by those corresponding to optionalKeys, where the order of signatures is the same as the order of public keys in the respective array.

The properties lifetime and keysgroup are not required anymore.

The address of the multisignature account is the same as the one before the multisignature registration. That means, this address has to be used as the recipientID for balance transfers to this multisignature account.

Adding Sender Public Key to Transaction Objects

The senderPublicKey property has to be provided in all transactions. The value of this property is always the original public key of the account, i.e. the public key used for registering the multisignature account. This is the case even if this key does neither belong to the set of mandatory nor to the set of optional keys.

signatures replaces signature

Transactions in the Lisk SDK v3.x had multiple properties which can hold signatures: signature, signSignature and signatures. The signature and signSignature properties were removed and only the signatures property is kept. This property is used to hold the signatures necessary to validate transactions. The items of this array are byte buffers of length 64, or empty byte buffers.

For Multisignature Registration Transaction, signatures also contains signatures corresponding to the public keys participating in the multisignature account. Specifically, signatures is an array composed of a signature corresponding to the senderPublicKey followed by signatures for the public keys in mandatoryKeys and optionalKeys, where the order of signatures is the same as the order of public keys in the respective array.

For other transactions, signatures contains exactly one element.

The registration of a multisignature account is updated in the following way:

  • v4.x

  • v3.x

const tx = new transactions.MultisignatureTransaction({
    asset: {
        mandatoryKeys: [
            '9d3058175acab969f41ad9b86f7a2926c74258670fe56b37c429c01fca9f2f0f',
            '141b16ac8d5bd150f16b1caa08f689057ca4c4434445e56661831f4e671b7c0a',
            '3ff32442bb6da7d60c1b7752b24e6467813c9b698e0f278d48c43580da972135',
        ],
        optionalKeys: [],
        numberOfSignatures: 3,
    },
    nonce: '2',
    fee: '250000',
});
const tx = new transactions.MultisignatureTransaction({
    asset: {
        keysgroup: [
            '9d3058175acab969f41ad9b86f7a2926c74258670fe56b37c429c01fca9f2f0f',
            '141b16ac8d5bd150f16b1caa08f689057ca4c4434445e56661831f4e671b7c0a',
            '3ff32442bb6da7d60c1b7752b24e6467813c9b698e0f278d48c43580da972135',
        ],
        lifetime: 34,
        min: 2,
    },
    networkIdentifier: '7158c297294a540bc9ac6e474529c3da38d03ece056e3fa2d98141e6ec54132d'
});
For more detailed information about the introduced changes please refer to LIP 17: Make multisignature accounts more flexible, prevent spamming, and prevent signature mutability.

Update: Vote transaction

The voting process now has certain changes which can be seen in the code snippet below.

For more detailed information about the introduced changes please refer to LIP 23: Introduce vote locking periods and new vote weight definition.

  • v4.x

  • v3.x

const tx = new transactions.VoteTransaction({
    asset:{
        votes:[
            { delegateAddress:'11750255083444888021L', amount: '-1000000000'},
            { delegateAddress:'64373847834494888026L', amount: '3000000000'}
        ]
    },
    nonce: '2',
    fee: '250000'
});
const tx = new transactions.VoteTransaction({
    asset: {
        votes: ['+9d3058175acab969f41ad9b86f7a2926c74258670fe56b37c429c01fca9f2f0f',
        '-141b16ac8d5bd150f16b1caa08f689057ca4c4434445e56661831f4e671b7c0a',
        '-3ff32442bb6da7d60c1b7752b24e6467813c9b698e0f278d48c43580da972135',
        ],
    },
    networkIdentifier: '7158c297294a540bc9ac6e474529c3da38d03ece056e3fa2d98141e6ec54132d',
});

Configuration structural changes

The structure of the configuration object has been improved.

BigInt replaces BigNum

In v4.0.0 BigInt is used to handle large numbers, like account balances and transfer amounts.

BigInt is a built-in JavaScript object and replaces the previously used BigNum object.

The balances of accounts are now saved as BigInt(previously string) in the Lisk SDK v4.0.0.

applyAsset() becomes asynchronous

The applyAsset() function of custom transaction has become asynchronous, so it is necessary to adjust the function in your implementation to something similar as shown below:

  • v4.x

  • v3.x

async applyAsset(store) {
        const sender = await store.account.get(this.senderId);
        // [...]
}
applyAsset(store) {
        const sender = store.account.get(this.senderId);
        // [...]
}

The store returns account as Account instances

The accounts that are returned from the store in transactions are now returned as instances of the Account class instead of pure objects.

Due to this, it is recommended to mutate the received account instance directly.

  • v4.x

  • v3.x

async applyAsset(store) {
        const sender = await store.account.get(this.senderId);
        sender.asset = { hello: this.asset.hello };
        store.account.set(sender.address, sender);
        // [...]
}
applyAsset(store) {
        const sender = store.account.get(this.senderId);
        const newObj = { ...sender, asset: { hello: this.asset.hello } };
        store.account.set(sender.address, newObj);
        // [...]
}

Dynamic fees

Static fees are replaced with dynamic fees (see: LIP 13: Replace static fee system by dynamic fee system).

The properties of custom transactions can now be updated as shown below:

  • Removed: The static FEE property in a custom transaction.

  • Added: The static property MIN_FEE_PER_BYTE. This defines the minimum amount of tokens that need to paid per byte of a particular transaction type. This defaults to 1000, but can be overwritten as desired.

  • Added: The static property NAME_FEE. This defines a specific amount of tokens that always need to be paid as a transaction fee, in addition to the fees generated by the MIN_FEE_PER_BYTE property. This defaults to 0, but can be overwritten as desired. Among the Lisk default transactions, only one transaction has a custom NAME_FEE: the delegate registration (Type 10) and with a NAME_FEE of 1000000000.

File: base_transaction.ts
export abstract class BaseTransaction {
    //[...]]
    public static MIN_FEE_PER_BYTE = BigInt(1000);
    public static NAME_FEE = BigInt(0);
    //[...]]
}

The specified fee must always be equal or higher to the defined minimum fee of the corresponding transaction type:

Minimum fee of a transaction = MIN_FEE_PER_BYTE * sizeof(trs) + NAME_FEE

Nonce replaces the timestamp in transactions

The timestamp which was previously a required property has been replaced by a nonce.

Every account in the network has an individual nonce, which is a number that increments +1 each time the respective account sends a transaction to the network.

New accounts start always with a nonce equal to 0. After sending the first outgoing transaction, which should therefore include the nonce = 0, it will increment automatically +1.

const helloTransaction = new HelloTransaction({
    asset: {
        hello: 'Hello SDK 4.0',
    },
    fee: '116000',
    nonce: '0',
});

Nonces prevent transaction replays and enable users to invalidate transactions, if so required For more information about the reasoning behind this change, check out LIP 15: Enable transaction invalidation by using nonces instead of timestamps.

Updated signature of .sign(): network identifier and passphrase

The network identifier, which had to be specified when creating the transaction object in SDK 3.x, is now specified in the sign() method of the created transaction instance:

const networkIdentifier = cryptography.getNetworkIdentifier(
    "19074b69c97e6f6b86969bb62d4f15b888898b499777bda56a3a2ee642a7f20a",
    "Lisk",
);

const passphrase = 'My secret passphrase';

helloTransaction.sign(networkIdentifier,passphrase);

Accounts must maintain a minimum balance

LIP 25: Introduce minimum balance requirement for accounts introduces a new constant minBbalance, which is defining a minimum balance for all accounts in the network.

If the minimum balance for accounts is set to a reasonable value, it prevents the network from certain spam attacks, such as the creation of many new accounts with zero balance.

This possible attack becomes more relevant with SDK v4.0.0, as the dynamic fees allow much lower fees for nearly all default transactions, and therefore the transaction fees alone are not sufficient anymore to prevent this.

The minimum balance is a constant that is defined in the BaseTransaction class and defaults to 0.05 tokens.

base_transaction.ts
//[...]
export abstract class BaseTransaction {
    MIN_REMAINING_BALANCE = BigInt('5000000'); // 0.05
//[...]

Updated genesis block for devnet

Due to the changes that have been introduced for the structure of transaction objects, the genesis block and it’s transactions were created new for Lisk SDK version 3.0.

New genesis account

Name Address Passphrase Description

Genesis account

5059876081639179984L

peanut hundred pen hawk invite exclude brain chunk gadget wait wrong ready

The genesis account holds all the tokens that are created in the devnet genesis block. It is utilized to vote for the forging genesis delegates in a convenient way during development.

API changes

The list of API changes only comprises of the parts of the API that changed from Lisk SDK 3.x to 4.x.

To see the complete API specification for Lisk SDK 4.x, please refer to the API reference.

Changes are grouped by the different API endpoints for the Lisk SDK.

Color legend

RED = Removed in Lisk SDK 4.x

GREEN = Added in Lisk SDK 4.x

Accounts

Query

GET /accounts
Description

Search for matching accounts in the system.

Parameters
Type Name Description Schema Default

Query

address
optional

Address of an account.

string (address)

Query

limit
optional

Limit applied to results.

integer (int32)

10

Query

offset
optional

Offset value for results.

integer (int32)

0

Query

publicKey
optional

Public key to query.

string (publicKey)

Query

secondPublicKey
optional

Second public key to query

string (publicKey)

Query

sort
optional

Fields to sort results by.

enum (balance:asc, balance:desc)

"balance:asc"

Query

username
optional

Delegate username to query.

string (username)

Get multisignature groups (Removed)

GET /accounts/{address}/multisignature_groups

Get multisignature memberships (Removed)

GET /accounts/{address}/multisignature_memberships

Account definition

Name Description Schema

address
required

The Lisk address is the human readable representation of the accounts owners public key. It consists of 21 numbers followed by a capital 'L' at the end.
Example : "12668885769632475474L"

string (address)

asset
optional

Any JSON stored in the account’s asset field.
Example : { "custom" : true, "field" : true }

object

balance
required

The current balance of the account in Beddows.
Example : "1081560729258"

string

delegate
required

Delegate

isDelegate
optional

The value indicating if the account is a delegate or not.

boolean

keys
required

MultisignatureAsset

missedBlocks
optional

Total number of blocks that the delegate has missed.
Example : 427

integer

nonce
required

The current nonce associated to an account for transaction processing.
Example : "154"

string

producedBlocks
optional

Total number of blocks that the delegate has forged.
Example : 20131

integer

productivity
optional

Productivity rate. Percentage of successfully forged blocks (not missed), by the delegate.
Example : 96.41

number

publicKey
required

The public key is derived from the private key of the owner of the account. This can be used to validate that the private key belongs to the owner, but does not provide access to the owners private key.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

secondPublicKey
optional

The second public key is derived from the second private key of an account, if the owner activated a second passphrase for her/his account.
This can be used to validate that the private key belongs to the owner, but does not provide access to the owners private key.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

rewards
optional

Total sum of block rewards that the delegate has forged.
Example : "510000000"

string

totalVotesReceived
optional

The total votes received by the delegate. Represents the total amount of Lisk (in Beddows), that the delegates voters voted for this delegate.
Example : "1081560729258"

string

unlocking
required

< Unlocking > array

username
optional

If the account is a delegate, it displays the username for it.
Example : "onedelegate"

string

votes
required

< Vote > array

AccountWithVotes definition

Name Description Schema

address
required

The Lisk address of the queried account.
Example : "12668885769632475474L"

string (address)

asset
optional

Any JSON stored in the account’s asset field.
Example : { "custom" : true, "field" : true }

object

balance
required

The balance of the queried account.
Example : "1081560729258"

string

delegate
optional

Delegate

publicKey
optional

Public key of the queried account.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

secondPublicKey
optional

The second public key is derived from the second private key of an account, if the owner activated a second passphrase for her/his account.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

username
required

Username of the account, if the queried account is a delegate.
Example : "isabella"

string (username)

votes
required

List of placed votes by the queried account.

< VoteWithDelegateProperties > array

votesAvailable
required

Number of votes that are available for the queried account. Derives from 101(max possible votes) - votesUsed(already used votes).
Example : 8

integer

Delegates

Query

GET /delegates
Parameters
Type Name Description Schema Default

Query

address
optional

Address of an account

string (address)

Query

limit
optional

Limit applied to results

integer (int32)

10

Query

offset
optional

Offset value for results

integer (int32)

0

Query

publicKey
optional

Public key to query

string (publicKey)

Query

search
optional

Fuzzy delegate username to query

string

Query

secondPublicKey
optional

Second public key to query

string (publicKey)

Query

sort
optional

Fields to sort results by

enum

username:asc

username:desc

productivity:asc

productivity:desc

missedBlocks:asc

missedBlocks:desc

producedBlocks:asc

producedBlocks:desc

voteWeight:asc

voteWeight:desc

totalVotesReceived:asc

totalVotesReceived:desc

"voteWeight:desc"

"totalVotesReceived:desc"

Query

username
optional

Delegate username to query

string (username)

Delegate definition

Name Description Schema

approval
optional

Percentage of the voters weight that the delegate owns in relation to the total supply of Lisk.
Example : 14.22

number

missedBlocks
optional

Total number of blocks the delegate has missed.
Example : 427

integer

producedBlocks
optional

Total number of blocks the delegate has forged.
Example : 20131

integer

productivity
optional

Productivity rate. Percentage of successfully forged blocks (not missed) by the delegate.
Example : 96.41

number

rewards
optional

Total sum of block rewards that the delegate has forged.
Example : "510000000"

string

username
required

The delegates' username. A delegate chooses the username by registering a delegate on the Lisk network. It is unique and cannot be changed later.
Example : "isabella"

string (username)

voteWeight
required

The voters weight of the delegate. Represents the total amount of Lisk (in Beddows) that the delegates' voters own. The voters weight decides which rank the delegate gets in relation to the other delegates and their voters weights.
Example : "1081560729258"

string

consecutiveMissedBlocks
optional

Number of blocks that the delegate missed consecutively.
Example : 10

integer

isBanned
optional

Whether the delegate is banned or not.
Example : false

boolean

lastForgedHeight
optional

Height of the block after the latest forging that was executed by the delegate.
Example : 100

integer

pomHeights
optional

Height of blocks where the delegate has been reported for misbehavior.

< integer > array

DelegateWithAccount definition (Removed)

Name Description Schema

account
required

Account

approval
optional

Percentage of the voters weight, that the delegate owns in relation to the total supply of Lisk.
Example : 14.22

number

missedBlocks
optional

Total number of blocks the delegate has missed.
Example : 427

integer

producedBlocks
optional

Total number of blocks the delegate has forged.
Example : 20131

integer

productivity
optional

Productivity rate. Percentage of successfully forged blocks (not missed) by the delegate.
Example : 96.41

number

rewards
optional

Total sum of block rewards that the delegate has forged.
Example : "510000000"

string

username
required

The delegates' username. A delegate chooses the username by registering a delegate on the Lisk network. It is unique and cannot be changed later.
Example : "isabella"

string (username)

voteWeight
required

The voters weight of the delegate. Represents the total amount of Lisk (in Beddows) that the delegates' voters own. The voters weight decides which rank the delegate gets in relation to the other delegates and their voters weights.
Example : "1081560729258"

string

DelegateWithVoters definition

Name Description Schema

address
required

The Lisk address of a delegate.
Example : "12668885769632475474L"

string (address)

balance
required

Account balance. Amount of Lisk the delegate account owns.
Example : "1081560729258"

string

publicKey
optional

The public key of the delegate.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

username
required

The delegates username. A delegate chooses the username by registering a delegate on the Lisk network. It is unique and cannot be changed.
Example : "isabella"

string (username)

voters
required

List of accounts that voted for the queried delegate.

< Voter > array

votes
required

The voters weight of the delegate. Represents the total amount of Lisk (in Beddows) that the delegates' voters own. The voters weight decides which rank the delegate gets in relation to the other delegates and their voters weights.
Example : 108877

integer

votes
required

Accounts which this delegate voted for.

< Vote > array

DelegateWithVotes definition (Removed)

Name Description Schema

address
required

The Lisk address of the queried account.
Example : "12668885769632475474L"

string (address)

balance
required

The balance of the queried account.
Example : "1081560729258"

string

publicKey
optional

Public key of the queried account.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

username
required

Username of the account, if the queried account is a delegate
Example : "isabella"

string (username)

votes
required

List of placed votes by the queried account.

Vote array

votesAvailable
required

Number of votes that are available for the queried account. Derives from 101 (max possible votes) - votesUsed(alreadu used votes)
Example : 40

integer

votesUsed
required

Number of votes that are already placed by the queried account.
Example : 2

integer

DelegatesResponse definition

Name Description Schema

data
required

List of delegates

DelegateWithAccount array

data
required

List of delegates.

< Account > array

links
required

object

meta
required

meta

meta

Name Description Schema

limit
required

Default : 10
Minimum value : 1
Maximum value : 101

integer (int32)

limit
required

Default : 10
Minimum value : 1
Maximum value : 103

integer (int32)

offset
required

Offset

Node

Query node/transactions/state

GET /node/transactions/{state}

GET /node/transactions

Parameters
Type Name Description Schema Default

Path

state
required

State of transactions to query

enum (pending, ready, received, validated, verified)

"verified"

Query

id
optional

Transaction ID to query.

string (id)

Query

limit
optional

Limit applied to results.

integer (int32)

10

Query

offset
optional

Offset value for results.

integer (int32)

0

Query

recipientId
optional

Recipient’s Lisk address

string (address)

Query

senderId
optional

Sender’s Lisk address.

string (address)

Query

senderPublicKey
optional

Sender’s public key.

string (publicKey)

Query

sort
optional

Fields to sort results by

enum

amount:asc

amount:desc

{set:cellbgcolor

} fee:asc

fee:desc

type:asc

type:desc

timestamp:asc

timestamp:desc

amount:desc

fee:desc

Query

type
optional

Transaction type (0-*)

integer

NodeStatus definition

Name Description Schema

chainMaxHeightFinalized
required

The largest height with precommits by at least 68 delegates. See https://github.com/LiskHQ/lips/blob/master/proposals/lip-0014.md
Example : 123

integer

currentTime
required

Current time of the node in milliseconds (Unix timestamp).
Example : 1533558858128

integer

height
required

Current block height of the node. Represents the current number of blocks in the chain on the node.
Minimum value : 1
Example : 123

integer

secondsSinceEpoch
required

Number of seconds that have elapsed since the Lisk epoch time (Lisk timestamp).
Example : 1533558858

integer

syncing
required

True if the node is syncing with other peers.
Example : false

boolean

unconfirmedTransactions
required

Number of unprocessed transactions in the pool.
Minimum value : 0
Example : 1

integer

Signatures

Post a signature (removed)

POST /signatures

Signature definition (removed)

Name Description Schema

publicKey
required

Public key of the account that intends to sign the multisignature transaction.
Example : "2ca9a7143fc721fdc540fef893b27e8d648d2288efa61e56264edf01a2c23079"

string (publicKey)

signature
required

Signature to sign the transaction. The signature can be generated locally, either by using Lisk Commander or with Lisk Elements.
Example : "2821d93a742c4edf5fd960efad41a4def7bf0fd0f7c09869aed524f6f52bf9c97a617095e2c712bd28b4279078a29509b339ac55187854006591aa759784c205"

string (signature)

transactionId
required

Unique identifier of the multisignature transaction to sign.
Length : 1 - 20
Example : "222675625422353767"

string (id)

SignatureResponse definition (removed)

Signature response.

Name Schema

data
required

data

links
required

object

meta
required

meta

data

Name Description Schema

message
required

Minimum length : 1

string

meta

Name Description Schema

status
required

Acceptance status for the signature
Example : true

boolean

MultisignatureGroup definition (removed)

Name Description Schema

address
required

The Lisk address is the human readable representation of the accounts owners' public key. It consists of 21 numbers followed by a big 'L' at the end.
Example : "12668885769632475474L"

string (address)

balance
required

The current balance of the account in Beddows.
Example : "1081560729258"

string

lifetime
required

The maximum amount of hours, that a transaction will wait for the minimum amount of signatures to be reached. If not enough members of a multisignature group sign the transaction in the defined lifespan, the transaction will be invalid.
Example : 72

integer

members
required

Account array

min
required

Minimum amount of signatures a transaction needs to be signed successfully by this multisignature account.
Example : 3

integer

publicKey
required

The public key is derived from the private key of the owner of the account. It can be used to validate that the private key belongs to the owner, but not provide access to the owners private key.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

secondPublicKey
optional

The second public key is derived from the second private key of an account, if the owner activated a second passphrase for her/his account.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

MultisignatureGroupsResponse definition (removed)

Name Description Schema

data
required

List of multisignature groups

MultisignatureGroup array

links
required

object

meta
required

object

MultisignatureAsset definition (added)

Name Description Schema

mandatoryKeys
optional

Mandatory multi-signature account members

< string > array

numberOfSignatures
optional

Number of required signatures

number

optionalKeys
optional

Optional multi-signature account members

< string > array

Transactions

Query

GET /transactions
Description

Search for a specified transaction in the system.

Parameters
Type Name Description Schema Default

Query

blockId
optional

Block ID to query.

string (id)

Query

data
optional

Fuzzy additional data field to query.

string (additionalData)

Query

fromTimestamp
optional

Starting unix timestamp

integer

Query

height
optional

Current height of the network.

integer (int32)

Query

id
optional

Transaction ID to query.

string (id)

Query

limit
optional

Limit applied to results.

integer (int32)

10

Query

maxAmount
optional

Maximum transaction amount in Beddows.

integer

Query

minAmount
optional

Minimum transaction amount in Beddows.

integer

Query

offset
optional

Offset value for results.

integer (int32)

0

Query

recipientId
optional

Recipients Lisk address.

string (address)

Query

senderId
optional

Senders Lisk address.

string (address)

Query

senderIdOrRecipientId
optional

Lisk address.

string (address)

Query

senderPublicKey
optional

Senders public key.

string (publicKey)

Query

sort
optional

Fields to sort results by

enum

amount:asc

amount:desc

fee:asc

fee:desc

type:asc

type:desc

timestamp:asc

timestamp:desc

amount:asc

Query

type
optional

Transaction type (0-*)

integer

Fees definition (Removed)

Name Description Schema

dappDeposit
required

Example : "10000000"

string

dappRegistration
required

Example : "2500000000"

string

dappWithdrawal
required

Example : "10000000"

string

delegate
required

Example : "2500000000"

string

multisignature
required

Example : "500000000"

string

secondSignature
required

Example : "500000000"

string

send
required

Example : "10000000"

string

vote
required

Example : "100000000"

string

Transaction definition

Name Description Schema

asset
required

object

blockId
optional

The ID of the block which this transaction is included in.
Length : 1 - 20
Example : "6258354802676165798"

string (id)

confirmations
optional

Number of times that this transaction has been confirmed by the network. By forging a new block on a chain, all former blocks and their contained transactions in the chain get confirmed by the forging delegate.
Minimum value : 0

integer

fee
required

Transaction fee associated with this transaction.
Example : "1000000"

string

height
optional

The height of the network, at the exact point in time when this transaction was included in the blockchain.
Minimum value : 1

integer

id
required

Unique identifier of the transaction. Derived from the transaction signature.
Length : 1 - 20
Example : "222675625422353767"

string (id)

nonce
required

Unique sequence of number per account.
Example : "1"

string

ready
optional

Only present in transactions sent from a multisignature account, or transactions type 4 (multisignature registration). False, if the minimum amount of signatures to sign this transaction has not been reached yet. True, if the minimum amount of signatures has been reached.
Example : false

boolean

receivedAt
optional

The timestamp of the exact point in time where a node discovered a transaction for the first time.

string (date-time)

senderId
optional

Lisk Address of the Senders account.
Example : "12668885769632475474L"

string (address)

senderPublicKey
required

The public key of the Senders account.
Example : "2ca9a7143fc721fdc540fef893b27e8d648d2288efa61e56264edf01a2c23079"

string (publicKey)

senderSecondPublicKey
optional

The second public key of the senders' account, if it exists.
Example : "2ca9a7143fc721fdc540fef893b27e8d648d2288efa61e56264edf01a2c23079"

string (publicKey)

signSignature
optional

Contains the second signature, if the transaction is sent from an account with second passphrase activated.
Example : "2821d93a742c4edf5fd960efad41a4def7bf0fd0f7c09869aed524f6f52bf9c97a617095e2c712bd28b4279078a29509b339ac55187854006591aa759784c205"

string (signature)

signature
required

Derived from a SHA-256 hash of the transaction object, that is signed by the private key of the account who created the transaction.
Example : "2821d93a742c4edf5fd960efad41a4def7bf0fd0f7c09869aed524f6f52bf9c97a617095e2c712bd28b4279078a29509b339ac55187854006591aa759784c205"

string (signature)

signatures
optional

string (signature) array

timestamp
required

Time when the transaction was created. Unix timestamp.
Example : 28227090

integer

signatures
required

< string (signature) > array

type
required

Describes the Transaction type.
Minimum value : 0

integer

TransactionRequest definition

Name Description Schema

asset
required

Displays additional transaction data. For example, this can include the vote data or delegate username.

asset

id
required

Unique identifier of the transaction. Derived from the transaction signature.
Length : 1 - 20
Example : "222675625422353767"

string (id)

fee
required

Fee for the transaction.
Example : "1000000"

string

nonce
required

Unique sequence of number per account.
Example : "0"

string

senderPublicKey
required

The public key of the senders' account.
Example : "2ca9a7143fc721fdc540fef893b27e8d648d2288efa61e56264edf01a2c23079"

string (publicKey)

signSignature
optional

Contains the second signature, if the transaction is sent from an account with a second passphrase activated.
Example : "2821d93a742c4edf5fd960efad41a4def7bf0fd0f7c09869aed524f6f52bf9c97a617095e2c712bd28b4279078a29509b339ac55187854006591aa759784c205"

string (signature)

signature
required

Derived from a SHA-256 hash of the transaction object, that is signed by the private key of the account who created the transaction.
Example : "2821d93a742c4edf5fd960efad41a4def7bf0fd0f7c09869aed524f6f52bf9c97a617095e2c712bd28b4279078a29509b339ac55187854006591aa759784c205"

string (signature)

signatures
optional

If the transaction is a multisignature transaction, all signatures of the members of the corresponding multisignature group will be listed here.

< string (signature) > array

timestamp
required

Time when the transaction was created. Unix timestamp.
Example : 28227090

integer

signatures
required

Derived from a SHA-256 hash of the transaction object, that is signed by the private key of the account who created the transaction.

< string (signature) > array

type
required

Describes the transaction type.
required

Describes the Transaction type.
Minimum value : 0

Unlocking definition (added)

Name Description Schema

amount
required

Amount the account voted the delegate for in multiples of 10 Lisk.
Example : "1000000000000"

string

delegateAddress
required

Lisk address of the delegate the queried account unvoted.
Example : "12668885769632475474L"

string (address)

unvoteHeight
required

Height at which the unvote should be valid.
Example : 50000.0

number

Voters

Query

GET /voters
Description

Attention: At least *one of the filter parameters must be provided.* Returns all votes received by a delegate.

Parameters
Type Name Description Schema Default

Query

address
optional

Address of an account.

string (address)

Query

limit
optional

Limit applied to results.

integer (int32)

10

Query

offset
optional

Offset value for results.

integer (int32)

0

Query

publicKey
optional

Public key to query.

string (publicKey)

Query

secondPublicKey
optional

Second public key to query.

string (publicKey)

Query

sort
optional

Fields to sort results by.

enum (publicKey:asc, publicKey:desc, balance:asc, balance:desc, username:asc, username:desc)

"publicKey:asc"

Query

username
optional

Delegate username to query.

string (username)

Voter definition

Name Description Schema

address
required

The Lisk address of the account that voted for the queried delegate.
Example : "12668885769632475474L"

string (address)

balance
required

Balance of the account that voted for the queried delegate.
Example : "1081560729258"

string

publicKey*
required

Public key of the account that voted for the queried delegate.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

votes
required

All votes the voter for the queried delegate voted for.

< Vote > array

Votes

Query

GET /votes
Description

Attention: At least *one of the filter parameters must be provided.* Returns all votes placed by an account.

Parameters
Type Name Description Schema Default

Query

address
optional

Address of an account.

string (address)

Query

limit
optional

Limit applied to results.

integer (int32)

10

Query

offset
optional

Offset value for results.

integer (int32)

0

Query

publicKey
optional

Public key to query.

string (publicKey)

Query

secondPublicKey
optional

Second public key to query.

string (publicKey)

Query

sort
optional

Fields to sort results by.

enum (username:asc, username:desc, balance:asc, balance:desc)

"username:asc"

Query

username
optional

Delegate username to query.

string (username)

Vote definition

Name Description Schema

address
required

Lisk address of the delegate the queried account voted for.
Example : "12668885769632475474L"

string (address)

amount
required

Amount the account voted the delegate for in multiples of 10 Lisk.
Example : "1000000000000"

string

delegateAddress
required

Lisk address of the delegate the queried account voted for.
Example : "12668885769632475474L"

string (address)

balance
required

Balance of the delegate the queried account voted for.
Example : "1081560729258"

string

publicKey
required

Public key of the delegate the queried account voted for.
Example : "968ba2fa993ea9dc27ed740da0daf49eddd740dbd7cb1cb4fc5db3a20baf341b"

string (publicKey)

username
required

Username of the delegate the queried account voted for.
Example : "liskhq"

string (username)

VoteWithDelegateProperties definition (added)

Name Description Schema

amount
required

Amount the account voted the delegate for in multiples of 10 Lisk.
Example : "1000000000000"

string

delegate
required

Delegate properties of the delegate for this vote.

object

delegateAddress
required

Lisk address of the delegate the queried account voted for.
Example : "12668885769632475474L"

string (address)