Metrics

A metric gets the aggregated data (see Aggregator) and outputs a relevant value. The metrics that have been implemented so far are the following:

  1. Nakamoto coefficient: The Nakamoto coefficient represents the minimum number of entities that collectively produce more than 50% of the total blocks within a given timeframe. The output of the metric is an integer.
  2. Gini coefficient: The Gini coefficient represents the degree of inequality in block production. The output of the metric is a decimal number in [0,1]. Values close to 0 indicate equality (all entities in the system produce the same number of blocks) and values close to 1 indicate inequality (one entity produces most or all blocks).
  3. Entropy: Entropy represents the expected amount of information in the distribution of blocks across entities. The output of the metric is a real number. Typically, a higher value of entropy indicates higher decentralization (lower predictability). Entropy is parameterized by a base rate α, which defines different types of entropy:
    • α = -1: min entropy
    • α = 0: Hartley entropy
    • α = 1: Shannon entropy (this is used by default)
    • α = 2: collision entropy
  4. HHI: The Herfindahl-Hirschman Index (HHI) is a measure of market concentration. It is defined as the sum of the squares of the market shares (as whole numbers, e.g. 40 for 40%) of the entities in the system. The output of the metric is a real number in (0, 10000]. Values close to 0 indicate low concentration (many entities produce a similar number of blocks) and values close to 1 indicate high concentration (one entity produces most or all blocks). The U.S. Department of Justice has set the following thresholds for interpreting HHI values (in traditional markets):
    • (0, 1500): Competitive market
    • [1500, 2500]: Moderately concentrated market
    • (2500, 10000]: Highly concentrated market
  5. Theil index: The Theil index is another measure of entropy which is intended to capture the lack of diversity, or the redundancy, in a population. In practice, it is calculated as the maximum possible entropy minus the observed entropy. The output is a real number. Values close to 0 indicate equality and values towards infinity indicate inequality. Therefore, a high Theil Index suggests a population that is highly centralized.
  6. Max power ratio: The max power ratio represents the share of blocks that are produced by the most "powerful" entity, i.e. the entity that produces the most blocks. The output of the metric is a decimal number in [0,1].
  7. Tau-decentralization index: The tau-decentralization index is a generalization of the Nakamoto coefficient. It is defined as the minimum number of entities that collectively produce more than a given threshold of the total blocks within a given timeframe. The threshold parameter is a decimal in [0, 1] (0.66 by default) and the output of the metric is an integer.

Each metric is implemented in a separate Python script in the folder metrics. Each script defines a function named compute_<metric_name>, which takes as input a dictionary of the form {'<entity name>': <number of resources>} (and possibly other relevant arguments) and outputs the corresponding metric values.