👨‍🔧Co-ordinator

The Co-ordinator is a replicated service using Proof-of-Reputation Consensus. At regular time intervals, the leader Co-ordinator replicated and broadcasts a block to other subscribed services. Only the leader Co-ordinator processes RPCs and broadcasts blocks. If the leader fails, the new leader continues generating blocks, carrying on from the most recently created block.

Digest Transaction Notification's

Validators call this RPC to notify the Co-ordinator service about a transaction it has received from Beacons. The notification contains the compact transaction, a list of which input hashes the Validator attests are presently available to spend in its UHS, and the block height the attestations are valid for. Once the Co-ordinator has received a notification attesting to every input for a given transaction, the Co-ordinator adds the transaction to the current block and marks the inputs as spent in a cache. The Co-ordinator maintains the spend input cache for a fixed number of prior blocks. This allows the Co-ordinator to accept attestations from Validators with a stale block height as the Co-ordinator can check the spent input cache to ensure the attestations are still valid despite not being from the most recent view of the UHS. If a transaction does not receive a full set of notifications for each input hash before being evicted from the cache, the Co-ordinator calls the "digest error" RPC on the watchtower with the transaction ID and which UHS elements did not receive timely notifications. Similarly, if a Validator sends a transaction notification for which its inputs are already in the spent input cache, the Co-ordinator submits this error to the watchtower.

Get Block

Archivers use this RPC to retrieve missed blocks from the Co-ordinator. If the Co-ordinator leader fails after replicating a new block but before broadcasting it, the archiver will need to request the block from the new leader. The archiver can use this RPC to request blocks at a specific height.

Prune Block

Archivers use this RPC to notify the Co-ordinator cluster that all blocks including and below the given block height have been persisted for long-term storage. This allows the Co-ordinator to delete historic blocks from memory.

Last updated