Glossary
This page contains explanations of common terms used within Fairblock.
General
Threshold IBE
Identity-based encryption is a form of encryption based on some identifying conditions. Fairblock uses threshold IBE so that no single party controls the decryption keys.
Threshold encryption
Threshold encryption is a form of cryptography that allows a private key to be derived as long as a certain threshold of network participants come together to aggregate their private keyshares.
Fairblock uses Threshold IBE, which allows validators to generate a share of the private key using their Master Secret Keyshare once a condition (ID) is met on-chain.
Validators then submit their derived private keyshares to fairyring
,
which can construct the derived private key once the threshold of validator keyshare submissions is met.
Public key
A public key is a large cryptographic value that is used to encrypt data. The public key is publicly visible and used to identify some encrypted data. The public key is derived from the private key, a randomly generated cryptographic value that is needed to decrypt data. In asymmetric encryption and its derivatives, public keys are openly known, while private keys are only made available to owners or receivers of some dataset and signify true owners of data. In Fairblock, we use a Master Public Key (MPK) that is used to encrypt every transaction within an epoch. The MPK is discarded after the end of an epoch.
Block height
The block height is the current length of the blockchain network. It is the number of blocks preceding the current block in a network. The height of the genesis block of a blockchain is zero.
Derived private key
The derived private key is a unique key corresponding to a certain encryption condition (ID) and is required for a chain to decrypt encrypted transactions. The derived private key is obtained by aggregating a threshold number of derived private keyshares.
Frontrunning
Frontrunning is an example of bad-MEV (maximal extractable value
) where MEV searchers can observe a user's unexecuted profitable trade in a mempool and manipulate the ordering of transactions within a block. The most common type of frontrunning is sandwich attacks.
Public keys
Active public key
The active public key is the Master Public Key (MPK) that is being used to encrypt every transaction during the current epoch of fairyring
.
The active public key (ActivePubKey
) is replaced by the queued public key (QueuedPubKey
) at the beginning of a new epoch.
The MPKs are derived from the Master Secret Key, which is generated by the ShareGenerationClient
.
Queued public key
The queued public Key (QueuedPubKey
) is the queued MPK that will replace the ActivePubKey
at the start of a new epoch.
Keyshares
fairyringclient
Every validator on fairyring
runs fairyringclient
, which is responsible for updating the MSK share each time it changes,
deriving the private keyshare from the MSK for each ID (condition for which transactions are encrypted/decrypted),
and then sending that derived private keyshare to fairyring
.
The submitted keyshares are then used to construct the derived private key.
ShareGenerationClient
The ShareGenerationClient
is responsible for generating the MSK and distributing it to the validator network using VSS
(Verifiable Secret Sharing).
Refer to ShareGenerationClient
for more details.
Note: The ShareGenerationClient
will soon be replaced by distributed key generation (DKG).
Malicious validators
Malicious validators in fairyring
are designated as malicious if they send incorrect private keyshares to fairyring
or skip blocks.
Proof of authority
Proof of authority (POA) is a consensus mechanism that gives a vetted, designated number of validators permission to validate transactions on the network.