Skip to content

Metrics

Each trilemma axis is measured through several metrics. Some apply to any blockchain system, others only to a specific consensus protocol. Where configurations with a differing number of validation nodes (VNs) are compared, an nn-based normalization is required so the values stay comparable.

Indicates how randomly the validation nodes that may propose a new block are selected — that is, how fairly the chances are distributed among the validation nodes. It uses Shannon entropy (in bits).

H=i=1npilog2(pi),pi=bij=1nbjH = - \sum_{i=1}^{n} p_i \cdot \log_2{(p_i)}, \quad p_i = \frac{b_i}{\sum_{j=1}^{n}b_j}

  • nn: number of VNs
  • bib_i: number of blocks that VN ii was allowed to propose
  • pip_i: probability, derived from bib_i, that a block is proposed by VN ii

Let k={iVN:pi>0}k = |\{ i \in VN : p_i > 0 \}| be the number of VNs with at least one block proposal, and let VNVN denote the set of all VNs. Then Hlog2(k)H \leq \log_2{(k)}, and max{log2(n)}    iVN:pi0\max \{ \log_2{(n)} \} \iff \forall i \in VN : p_i \neq 0.

For comparing configurations with a differing number of VNs (differing nn), an nn-based normalization is required:

Hnorm=Hlog2(n),H[0,log2(n)],Hnorm[0,1]H_{norm} = \frac{H}{\log_2{(n)}}, \quad H \in [ 0, \log_2{(n)} ], \quad H_{norm} \in [0, 1]

Hnorm=1H_{norm} = 1 holds when iVN  jVN:ij    pi=pj\forall i \in VN \; \forall j \in VN : i \neq j \implies p_i = p_j.

The degree to which validation nodes in a blockchain system are located in different places.

If a large number of validation nodes are geographically close together, natural disasters or political influences such as bans can affect those nodes and therefore the blockchain as a whole.

GD=(GDexclGDtarget)GDequalGDexclGDequalGD = \frac{(GD_{excl} - GD_{target}) - GD_{equal}}{GD_{excl} - GD_{equal}}

  • GDexclGD_{excl}: the dispersion measure when all validation nodes operate in a single location
  • GDequalGD_{equal}: the dispersion measure when all validation nodes are distributed equally across all available locations
  • GDtargetGD_{target}: the measure for the observed distribution

These quantities are derived from an auxiliary dispersion term GDauxGD_{aux}:

GDaux=(2log(N+1)(Nt)log(Nt+1)(Nt)log2(Nt)log(Nt+1)(Nt))i=1Nt(niμ)2Nt,μ=nNtGD_{aux} = \left( 2 - \frac{ \log_{(|N|+1)}(|N_t|) - \log_{(|N_t| + 1)}(|N_t|) }{ \log_2{(|N_t|)} - \log_{(|N_t + 1|)}(|N_t|) } \right) \cdot \sqrt{\frac{ \sum_{i = 1}^{|N_t|} (|n_i| - \mu)^2 }{|N_t|}}, \quad \mu = \frac{n}{|N_t|}

  • nn: number of VNs
  • N|N|: number of all locations
  • Nt|N_t|: number of occupied locations
  • ni|n_i|: number of VNs in location ii

A higher GDGD implies an even cross-location dispersion of VNs and increases the degree of decentralization.

Indicates the extent to which hashing power is distributed among all validating nodes that propose the next block. It uses the Nakamoto coefficient (NC):

NC=min{k[1,  ,n]:i=1kpithreshold}NC = \min \left\{ k \in [1, \ \dots \ , n]: \sum_{i = 1}^{k}p_i \geq threshold \right\}

  • pip_i: share of hashing power held by VN ii

A high NCNC implies a higher degree of decentralization.

Indicates the distribution of tokens held as stake among the validation nodes.

A node’s stake usually influences, roughly proportionally, the probability that it may validate a new block. If the stake is split such that, say, three nodes account for 60 % of it, those three nodes have decisive influence over the validation of new blocks and affect both the ability of other nodes to participate and the security of the blockchain.

This is measured with the Herfindahl–Hirschman Index (HHI):

HHI=i=1n(tittotal)2HHI = \sum_{i = 1}^{n} \left( \frac{t_i}{t_{total}} \right)^2

  • tit_i: the stake of VN ii
  • ttotalt_{total}: the total stake, ttotal=i=1tit_{total} = \sum_{i=1}t_i

For comparing configurations with a differing number of VNs (differing nn), an nn-based normalization is required:

HHInorm=HHI1n11n[0,1]HHI_{norm} = \frac{HHI - \frac{1}{n}}{1 - \frac{1}{n}} \in [0, 1]

HHInorm=0HHI_{norm} = 0 indicates an equal stake distribution, and HHI=0HHI = 0 a monopolistic one.

Indicates the inequality of the total tokens held by (validation) nodes.

This uses the Gini coefficient:

Gini=i=1nj=1ntitj2ni=1ntiGini = \frac{ \sum_{i=1}^{n} \sum_{j=1}^{n} |t_i - t_j| }{ 2n \cdot \sum_{i=1}^{n}t_i }

  • nn: number of VNs
  • tit_i: number of tokens held by VN ii

For comparing configurations with a differing number of VNs (differing nn), an nn-based normalization is required:

Gininorm=Gininn1[0,1]Gini_{norm} = Gini \cdot \frac{n}{n-1} \in [0, 1]

Describes the cost, in fiat currency, of gaining control over a blockchain system through an attack.

A high CoA is intended to make attacking a blockchain system economically unattractive.

CoA=th×c×i=1nsiCoA = t_h \times c \times \sum_{i=1}^{n}s_i

  • tht_h: the minimum share of network resources required to gain control over consensus
  • cc: monetary cost per unit of resource
  • sis_i: the number of resources controlled by VN ii

Describes the degree to which a blockchain system continues to operate consistently and correctly despite random or byzantine faults.

FT={ΔThroughputDiff,ΔConfLatDiff}FT = \{ \Delta ThroughputDiff, \Delta ConfLatDiff \}

ThroughputDiffThroughputDiff denotes the drop in the maximum achievable throughput under failure:

ThroughputDiff=ThroughputNThroughputFThroughputDiff = |Throughput_N - Throughput_F|

ConfLatDiffConfLatDiff denotes the increase in confirmation latency under failure:

ConfLatDiff=ConfLatNConfLatFConfLatDiff = |ConfLat_N - ConfLat_F|

  • NN: value during normal operation of the blockchain
  • FF: value with faults occurring during operation

Denotes the ability of a blockchain system to provide correct services continuously.

Reliability reflects the probability that the system keeps functioning correctly without interruption.

We assume exponentially distributed failure times with a constant hazard rate λ\lambda:

R(t)=Pr[T>t]=eλt,λ=1MTBFR(t) = \text{Pr}[T > t] = e^{-\lambda \cdot t}, \quad \lambda = \frac{1}{MTBF}

There is also the variant in which R(t)R(t) is expressed via the mean time between failures (MTBF):

R(t)=et/MTBF,MTBF=TotalOperationalTimeNumberOfFailuresR(t) = e^{-t / MTBF}, \quad MTBF = \frac{\text{TotalOperationalTime}}{\text{NumberOfFailures}}

Indicates the proportion of blocks that were propagated in a blockchain system but not finalized into the main chain within a given period.

SBR=NumberOfStaleBlocksNumberOfConfirmedBlocksSBR = \frac{NumberOfStaleBlocks}{NumberOfConfirmedBlocks}

The rate of first inclusions of transactions over an observation window.

TPS=NumOfConfTrt1t0TPS = \frac{\text{NumOfConfTr}}{t_1 - t_0}

  • NumOfConfTr\text{NumOfConfTr}: number of independent transactions
  • t0t_0: start of the observation window
  • t1t_1: end of the observation window

The time span from submitting a transaction to its first inclusion in the blockchain.

TFL=tincltpropTFL = t_\text{incl} - t_\text{prop}

  • tpropt_\text{prop}: timestamp when the transaction was issued
  • tinclt_\text{incl}: timestamp when the first block containing the transaction was validated

The time span from proposing new blocks to their confirmation.

CLempCL_\text{emp} gives the estimated confirmation latency:

CLemp=BConfTimeBPropTimeCL_\text{emp} = BConfTime - BPropTime

  • BPropTimeBPropTime: the point in time when the block was proposed
  • BConfTimeBConfTime: the point in time when the block was confirmed

CLconfCL_\text{conf} computes the confirmation latency taking into account the number of safety confirmations bNb' \in \mathbb{N} and the average block creation interval:

CLconf=b×BCICL_\text{conf} = b' \times BCI

Some blockchain systems (such as Ethereum) first justify a block and confirm it in the following epoch. For such procedures, CLepochCL_\text{epoch} describes the confirmation latency:

CLepoch=ef×TTJ,TTJ=el×slot_timeCL_\text{epoch} = e_f \times TTJ, \quad TTJ = e_l \times slot\_time

  • efe_f: number of epochs until finalization
  • ele_l: number of slots per epoch
  • slot_timeslot\_time: duration of one slot

Describes the degree to which a blockchain system is operational and delivers consistent, timely responses.

It is often measured as the ratio between confirmed and total transactions.

Availability=NumOfConfTrNumOfTrAvailability = \frac{NumOfConfTr}{NumOfTr}

  • NumOfConfTrNumOfConfTr: number of confirmed transactions
  • NumOfTrNumOfTr: total number of transactions