Block Consensus Contract

blkendt.xsat

This contract processes votes from validators on the hash of each Bitcoin block. When more than two-thirds of the validators submit the same hash for a block, and it matches the hash of the block data submitted by the Synchronizer, the block is considered to have reached consensus.

Actions

  • Endorse a block

TABLE config

scope

blkendt.xsat

params

  • {uint64_t} limit_endorse_height - limit the endorsement height. If it is 0, there will be no limit. If it is greater than this height, endorsement will not be allowed.

  • {uint16_t} limit_num_endorsed_blocks - limit the endorsement height to no more than the number of blocks of the parsed height. If it is 0, there will be no limit.

  • {uint16_t} min_validators - the minimum number of validators, which limits the number of validators that pledge more than 100 BTC at the time of first endorsement.

  • {uint16_t} consensus_interval_seconds - the interval in seconds between consensus rounds.

  • {uint64_t} xsat_stake_activation_height - block height at which XSAT staking feature is activated

example

{
  "limit_endorse_height": 840000,
  "limit_num_endorsed_blocks": 10,
  "min_validators": 15,
  "consensus_interval_seconds": 480,
  "xsat_stake_activation_height": 860000
}

TABLE endorsements

scope

height

params

  • {uint64_t} id - primary key

  • {checksum256} hash - endorsement block hash

  • {std::vector<requested_validator_info>} requested_validators - list of unendorsed validators

  • {std::vector<provider_validator_info>} provider_validators - list of endorsed validators

example

{
  "id": 0,
  "hash": "00000000000000000000da20f7d8e9e6412d4f1d8b62d88264cddbdd48256ba0",
  "requested_validators": [{
      "account": "alice",
      "staking": "10000000000"
   }
  ],
  "provider_validators": [{
      "account": "test.xsat",
      "staking": "10200000000",
      "created_at": "2024-08-13T00:00:00"
     }
  ]
}

STRUCT requested_validator_info

  • {name} account - validator account

  • {uint64_t} staking - the validator's staking amount

example

{
  "account": "test.xsat",
  "staking": "10200000000"
}

STRUCT provider_validator_info

  • {name} account - validator account

  • {uint64_t} staking - the validator's staking amount

  • {time_point_sec} created_at - created at time

example

{
  "account": "test.xsat",
  "staking": "10200000000",
  "created_at": "2024-08-13T00:00:00"
}

ACTION config

  • authority: blkendt.xsat

Configure endorsement status

params

  • {uint64_t} limit_endorse_height - limit the endorsement height. If it is 0, there will be no limit. If it is greater than this height, endorsement will not be allowed.

  • {uint16_t} limit_num_endorsed_blocks - limit the endorsement height to no more than the number of blocks of the parsed height. If it is 0, there will be no limit.

  • {uint16_t} min_validators - the minimum number of validators, which limits the number of validators that pledge more than 100 BTC at the time of first endorsement.

  • {uint64_t} xsat_stake_activation_height - block height at which XSAT staking feature is activated

  • {uint16_t} consensus_interval_seconds - the interval in seconds between consensus rounds.

ACTION endorse

  • authority: validator

Endorsement block

params

  • {name} validator - validator account

  • {uint64_t} height - to endorse the height of the block

  • {checksum256} hash - to endorse the hash of the block

ACTION erase

  • authority: utxomng.xsat

To erase high endorsements

params

  • {uint64_t} height - to endorse the height of the block

Last updated