Accepting Block
From the point of view of a transaction, an accepting block is the block that merges a given transaction into the Virtual Selected Parent Chain (VSPC). Transactions are considered accepted once merged into VSPC by a chain block. Technically speaking, chain blocks do not merge transactions directly. Rather, chain blocks merge blocks. As a result, transactions inherit their containing block’s acceptance status (and accepting block). Additionally, the accepting block of a transaction is used to determine the number of confirmations.
See Also: Chain Block, Virtual Selected Parent Chain (VSPC)
Anticone
The anticone of a given block, let’s say block Block B, are blocks that are neither in B’s past nor future. Anticone is a BlockDAG concept. Understanding the past and future of a block helps to conceptualize anticone. Blocks that are reachable from B are part of B’s past. Blocks that B is reachable from are part of B’s future. Blocks in B’s anticone have ambigious ordering relative to B. Blocks in the anticone are often the result of concurrent creation or P2P block propagation timing. Anticone is also a critical component of GHOSTDAG’s block coloring mechanism.
See Also: BlockDAG, Block Coloring, Future, Past
Blue Block
A well-connected block likely mined by an honest node. Blocks are either classified as blue or red by GHOSTDAG’s block coloring mechanism. A block is classified as blue if the number of blue blocks within it’s anticone is within the k-cluster bound. Blue blocks count towards Blue Score, Blue Work, and pay the miner of the given block, among other things.
See Also: Block Coloring, Red Block
Blue Score
The number of blue blocks in a given block’s past. Blue score is calculated by summing the selected parent’s blue score and the number of blue blocks in the given block’s mergeset. Stored in the block’s header, blue score can be thought of as the “weight” of a block’s history within the honest portion of the DAG. Blue score drives several mechanisms in Kaspa - including DAA score and difficulty adjustment.
Reference: Blue Score & Blue Work (KaspaCom)
See Also: Blue Block
Blue Work
Blue work is the cumulative proof-of-work of all blue blocks in a block’s past. Effectively measuring the total computational effort (sum of difficulty values) of the blue set at a given block. Red blocks are excluded from the calculation. Tip selection and parent selection are based on blue work, highlighting the importance of blue work in consensus and security.
Reference: Blue Score & Blue Work (KaspaCom)
Chain Block
Chain blocks are a subset of dynamically chosen, special blocks within Kaspa’s BlockDAG. Conceptually, chain blocks form a backbone throughout the DAG, merging other blocks into this backbone. Formally this backbone is called the virtual selected parent chain (VSPC). Each chain block merges blocks into the VSPC, known as a mergeset. In Kaspa’s BlockDAG, blocks can have multiple parents. The parent block with the highest blue score is selected as the selected parent. Chain blocks play a critical role in block and transaction ordering.
See Also: Blue Score, Virtual Selected Parent Chain (VSPC)
Child Block
Child blocks are blocks which directly reference the given block. Using block B as an example, B’s children are blocks which directly reference B in their header. This reference is stored in the block’s parents field. Child blocks are part of a block’s future.
See Also: Future
Block Coloring
PHANTOM GHOSTDAG classifies all valid (valid from a structural and PoW perspective) blocks as Red or Blue. Where color generally indicates how well connected a given block is in the DAG. A block’s color then dictates it’s role in consensus mechanisms, security, block rewards, etc.
See Also: Blue Block, Red Block
Compute Mass
A measure quantifying the computational cost of a transaction. Compute mass is a calculation over various transaction components, where each component carries a different weight. For example, signature operations are a heavily weighted component. Resulting in a multi-sig transaction having a larger computer mass than a single signature transaction.
See Also: Storage Mass, Transient Mass
DAA Score
DAA score is the number of blue blocks + merged & rewarded red blocks. This formula accounts for all rewarded blocks in the network, providing a comprehensive measure of progress. DAA Score increases at roughly the number of blocks per second. At Kaspa’s current target BPS of 10, DAA score increaseby roughly 10 per second. DAA Score is used in network events/upgrades (e.g. the Crescendo fork was activated at a DAA Score of 110,165,000), timestamp estimation, certain transaction lock times, and more.
Difficulty Adjustment Algorithm
The algorithm which adjusts mining difficulty on the Kaspa network, to ensure actual block production rate is at approximately the target production rate. Current target block rate is 10 blocks per second.
Effective TPS (e-TPS)
A measure of DAG capacity utilization relative to the number of available transactions in the mempool. A max value of 1.0 (100%) indicates DAG throughput is handling current demand. While a value of 0.0 (0%) indicates DAG capacity is largely filled with duplicate transactions, even though the mempool has a much larger number of unique transactions available for inclusion.
Reference: e_tps in rusty-kaspa
Future
The future of a block, let’s say block B, are blocks that B is reachable from. This can be via direct or indirect reference. Where direct references are children that reference B in their header. Indirect references are blocks that do not directly reference B in their header, but are able to reach B by following edges. Future blocks are provably created after the given block.
See Also: Past
Mergeset
The set of blocks that a given block has merged into the DAG. These are blocks in the past of the given block, but not in the past of it’s selected parent.
Parent Blocks
In PHANTOM GHOSTDAG , blocks can have multiple parents referenced in the parents
field of the block header. When a block is mined, all known DAG tips are referenced as parents.
See Also: Tips
Past
The past of a block, let’s say block B, are all blocks reachable from B. Past blocks can be referenced directly, in B’s header. These are direct parents. Or indirectly, where B does not reference the past block in B’s header, but the past block is reachable from B by following edges between blocks.
See Also: Future
Pruning
Kaspa nodes by default prune data older than (approximately) 30 hours. This is done to reduce node storage requirements. Which in turn lowers node hardware requirements, promoting decentralization. Block data, including transactions and headers, are pruned. The UTXO set is retained completely and contains all data required for transaction validation. The specific block in the DAG at which all earlier data is pruned is known as the pruning point. Kaspa nodes can be ran in archival mode, where pruning does not occur. Or with an optional parameter specifiying data retention.
Red Block
Red blocks are blocks in the DAG which are not well connected. A block is red if the number of blue blocks in it’s anticone is larger than k-cluster parameter. Red blocks are valid as they meet proof of work requirements. However, Kaspa’s consensus mechanism penalizes creation of red blocks. Red blocks are merged into the DAG, but rewards are not paid to the red block miner. Instead, rewards are paid to the miner of the merging blue block. In some cases, rewards are not paid for red blocks at all.
See Also: Blue Block, Block Coloring
Selected Parent
In PHANTOM GHOSTDAG , blocks are mined referencing all known DAG tips. This often results in a block having multiple parent blocks. From all parent blocks, one block is chosen as the Selected Parent. Formally, the selected parent is the parent block with the highest Blue Work.
Selected Tip
Selected tip is last block of the VSPC. Selected tip is chosen based on the largest the virtual block’s selected parent.
See Also: Virtual Selected Parent Chain (VSPC)
Sink
The selected parent of the virtual block. Effectively, sink is the same as selected tip.
Reference: get_sink in rusty-kaspa
Storage Mass
Defined in KIP-9, storage mass is a mechanism that helps regulate growth of the UTXO set. From a (very) high level, transactions that create many UTXOs, or dust UTXOs, will carry a higher storage mass.
See Also: Compute Mass, Transient Mass
Tips
Tips are blocks in the DAG that do not have children blocks. Formally defined in PHANTOM GHOSTDAG as “the set of blocks with in-degree 0 (usually, the most recent blocks).” Tips can be thought of as the most recent edge or frontier of the DAG. Honest miners reference all known tips while mining.
Transient Mass
Defined in KIP-13, transient mass helps control overall block size. Transient mass is equal to the serialized size of a transaction multiplied by 4. Since blocks are constrained to 500,000 mass, and target block size is 125KB, the factor of 4 was selected (500,000 mass / 125,000 bytes = 4 mass per byte.)
See Also: Compute Mass, Storage Mass
Unique Transaction
In Kaspa’s BlockDAG, the same transaction can be included in multiple blocks. For that reason, many metrics are based on unique transactions. Specifically, the same transaction that appears in multiple blocks is considered one unique transaction.
See Also: Effective TPS
Unique TPS (u-TPS)
The number of Unique Transactions per second.
See Also: Unique Transaction
Virtual Block
Often referred to as just “virtual”, the virtual block is a conceptual, non-existing block. Virtual points to all DAG tips (known by the local node) as its parents. It can be thought of as an un-mined block, the next block to be mined. However, virtual is not a full block template - it does not contain transactions, among other required block data. Virtual’s GHOSTDAG data is inherited by the block template.
See Also: Tips
Virtual Selected Parent Chain (VSPC)
Conceptually, the Virtual Selected Parent Chain (VSPC) is a chain of blocks which form a backbone through the DAG. Each block in the VSPC is a chain block. Given that chain block status is dynamic, the VPSC inherits this dynamic property. Each chain block merges other blocks into the VPSC, formally known as the block’s mergeset. The mergeset includes blocks in the past of given chain block B, but not in the past of B’s parent. The VSPC plays a primary role in transaction acceptance, block and transaction ordering.
See Also: Chain Block