Anchoring

In a private blockchain, transactions are processed by a certain number of participants known in advance. Thus, there is a threat of information spoofing, because the number of participants is quite small compared to a public blockchain where anyone can join the network. When using PoS consensus algorithm in a private blockchain, the threat of overwriting that blockchain becomes real.

The anchoring mechanism was developed to increase participant confidence in the date placed in a private blockchain. Anchoring checks the data in a blockchain for invariability, which is achieved by publishing data from a private blockchain to a public one, where data spoofing is unlikely due to the larger number of participants and blocks. Published data represents a signature and a height of blocks in a private network. This connectivity between two or more networks increases their resistance, because any attempt to forge or alter data using a long-range attack would require attacking all connected networks.

How does anchoring work in the Waves Enterprise blockchain

Схема анкоринга в Targetnet

Targetnet anchoring scheme

Anchoring process is shown below:

  1. Anchoring configurations are set in the configuration file of the private blockchain node. Users should use recommended values for configurations to avoid anchoring malfunctioning.

  2. Each height-range is an anchoring transaction that contains block data at current-height - threshold and is broadcasted to the Targetnet by the anchoring node. The Data Transaction with a key-value list is used as an anchoring transaction. The node then requests height of the broadcasted transaction.

  3. The node then checks the Targetnet height each 30 seconds until its height reaches the height of the created transaction + height-above.

  4. When the required Targetnet height is reached and the presence of previously created data transactions are confirmed, another anchoring data transaction is created in the private blockchain.

Transaction structure for anchoring

Targetnet transaction consists of the following fields:

  • height - the height of the chosen block from the private blockchain.

  • signature - the signature of the chosen block from the private blockchain.

The private blockchain transaction consists of the following fields:

  • height - the height of the chosen block from the private blockchain.

  • signature - the signature of the chosen block from the private blockchain.

  • targetnet-tx-id - the Targetnet anchoring transaction ID.

  • targetnet-tx-timestamp - the timestamp of the Targetnet anchoring transaction.

Errors during the anchoring

Errors can occur at any step during anchoring. In case of any error in the private blockchain the Data Transaction containing the error code and the description is always published. The error transaction includes the following data:

  • height - the height of the chosen block from the private blockchain.

  • signature - the signature of the chosen block from the private blockchain.

  • error-code - the error code.

  • error-message - the error message.

Error types

Code

Message

Possible cause

0

Unknown error

An unknown error occurred during the send of the transaction to the Targetnet

1

Fail to create data transaction for Targetnet

Creating of the transaction to be sent to the Targetnet failed

2

Fail send transaction to Targetnet

The transaction publication to the Targetnet failed (it could be
a JSON request error)

3

Invalid http status of response from Targetnet
transaction broadcast

The Targetnet has returned an HTTP code other than 200 after the
transaction publication

4

Fail to parse http body of response from Targetnet
transaction broadcast

The Targetnet has returned an unknown JSON after
the transaction publication

5

Targetnet return transaction with id='$TargetnetTxId'
but it differ from transaction that we sent
id='$sentTxId

The Targetnet has returned mismatched ID after
the transaction publication

6

Targetnet didn't respond on transaction info request

The Targetnet has not responded to the request about the transaction info

7

Fail to get current height in Targetnet

Failed to get current Targetnet height

8

Anchoring transaction in Targetnet disappeared after
height rise enough

The anchoring transaction has disappeared from the Targetnet after
its height evened height-above value

9

Fail to create sidechain anchoring transaction

Fail to public the anchoring transaction in the private blockchain

10

Anchored transaction in sidechain was changed during
Targetnet height arise await, looks like
a rollback has happened

Anchored transaction in sidechain was changed during Targetnet height
arise await, looks like a rollback has happened