Deprecated Transactions

This appendix contains historical documentation and is presented for transaction types that are no longer supported but still active within the system. These transactions refer to legacy applications support and should not be used. They are documented here for completeness.

Applications Registration Transaction

An Application registration transaction (type 5) is a transaction used to register an application used for a sidechain. Refer to section 7 for more information about blockchain applications. The following fields are needed in order to issue an application registration transaction:

Category: The category of the application
Name: The name of the application
Type: The type of the application
Link: A link to download the application

Additional fields can be specified:

Description: The description of the application
Icon: The icon of the application
Tags: Tags of the application

Once those fields have been specified, the system will compute the account's public key, and start building the transaction’s data block described in the following figure:

This data block is then signed using the account's secret, and the signature is appended to the data block. The system will compute the fee of the transaction. In the present implementation, the fee for an application registration is 500 Lisk. The following is a representation of the resulting JSON object that will be broadcast to the network:

{
    "type": 5,
    "amount": 0,
    "senderPublicKey": Public key of the sender,
    "timestamp": Timestamp,
    "recipientId": null,
    "signature": Signature of the data block,
    "id": Id of the transaction,
    "fee": 50000000000,
    "senderId": Id of the sender,
    "asset": {
        "dapp": {
            "category": The category of the application,
            "name": The name of the application,
            "type": The type of the application,
            "link": The link of the application,
            "description": The description of the application,
            "icon": The icon of the application,
            "tags": Tags of the application
        }
    }
    ...
}

The final size of the transaction may vary a depending on the amount of content. In general, the resulting object will range between 150 to 200 bytes. The applicationId will be identical to the transactionId.

In Transfer transaction

An In Transfer transaction is a transaction used to transfer funds from the main chain to an application’s side chain. In order to issue an In Transfer transaction, three fields must be specified:

  • Secret: The secret of the account
  • Amount: Amount of Lisk to transfer
  • dappId: Id of the application

Once these fields have been specified, the system can then compute the account's public key, and begin building the transaction’s data block with a maximum 73 bytes described in the following figure:

This data block is then signed using the account's secret, and the signature is appended to the data block. The system will then compute the fee of the transaction. In the present implementation, the fee for an In Transfer is 0.1 Lisk.

The following is a representation of the resulting JSON object that will be broadcast to the network:

{
    "type": 6,
    "amount": Amount to transfer,
    "senderPublicKey": Public key of the sender,
    "timestamp": Timestamp,
    "recipientId": null,
    "signature": Signature of the data block,
    "id": Id of the transaction,
    "fee": 10000000,
    "senderId": Id of the sender,
    "asset": {
        "inTransfer": {
            "dappId": Id of the application
        }
    }
    ...
}

The final size of the transaction, with the signature, will be 136 bytes, and with a second signature, 200 bytes.

Out Transfer Transaction

An Out Transfer transaction is a transaction used to transfer funds from the application’s side chain to the main chain. An Out Transfer transaction may only be issued by the owner of an application. The following fields are required in order to issue an Out Transfer transaction:

  • Secret: The secret of the application owner account
  • recipientId: The Id of the user issuing the withdraw
  • Amount: The amount of Lisk to transfer
  • TransactionId: The Id of the withdraw transaction on the application’s side chain
  • dappId: The Id of the application

Once these fields have been specified, the system will then compute the account's public key, and begin building the transaction’s data block with a maximum 93 bytes.

This data block is then signed using the account's secret, and the signature is appended at the end. We then need to compute the fee of the transaction. In the present implementation, the fee for an Out Transfer transaction is 0.1 Lisk.

The following is a representation of the resulting JSON object that will be broadcast to the network:

{
    "type": 7,
    "amount": Amount to transfer,
    "senderPublicKey": Public key of the sender,
    "timestamp": Timestamp,
    "recipientId": Id of the recipient,
    "signature": Signature of the data block,
    "id": Id of the transaction,
    "fee": 10000000,
    "senderId": Id of the sender,
    "asset": {
        "outTransfer": {
            "dappId": Id of the application,
            "transactionId": Id of the withdrawal transaction
        }
    }
    ...
}

The final size of the transaction, with the signature, is 157 bytes, and with a second signature, 221 bytes.