Parameters

The Algorand protocol is parameterized by the following constants:

TIME CONSTANTS

These values represent durations of time.

SYMBOLDESCRIPTION
\(\lambda\)Time for small message (e.g., a vote) propagation in ideal network conditions
\(\lambda_{0min}\)Minimum amount of time for small message propagation in good network conditions, for \(p = 0\)
\(\lambda_{0max}\)Maximum amount of time for small message propagation in good network conditions, for \(p = 0\)
\(\lambda_f\)Frequency at which the protocol fast recovery steps are repeated
\(\Lambda\)Time for big message (e.g., a block) propagation in ideal network conditions
\(\Lambda_0\)Time for big message propagation in good network conditions, for \(p = 0\)

ROUNDS CONSTANTS

These are positive integers that represent an amount of protocol rounds.

SYMBOLDESCRIPTION
\(\delta_s\)The “seed lookback”
\(\delta_r\)The “seed refresh interval”

For convenience, we define:

  • \(\delta_b = 2\delta_s\delta_r\) (the “balance lookback”).

Timeouts

We define \(FilterTimeout(p)\) on a period \(p\) as follows:

  • If \(p = 0\) and a sufficient history of lowest credential arrival times is available, the \(FilterTimeout(p)\) is calculated dynamically based on the lower 95th percentile of the observed lowest credentials per round arrival time:

    • \(10\lambda_{0min} <= FilterTimeout(p) <= 2\lambda_{0max}\)

Refer to the non-normative section for details about the implementation of the dynamic filtering mechanism.

  • If \(p \ne 0\):

    • $\FilterTimeout(p) = 4$ seconds (which coincides with $2\lambda$)

This value is currently hardcoded in the reference implementation. However, it should be equal to \(2\lambda\).

We define \(DeadlineTimeout(p)\) on period \(p\) as follows:

  • If \(p = 0\):

    • \(DeadlineTimeout(p) = \Lambda_0\)
  • If \(p \ne 0\):

    • \(DeadlineTimeout(p) = \Lambda + \lambda\)

Values

PARAMETERVALUEUNIT
\(\delta_s\)2rounds
\(\delta_r\)80rounds
\(\lambda\)2seconds
\(\lambda_{0min}\)0.25seconds
\(\lambda_{0max}\)1.75seconds
\(\lambda_f\)300seconds
\(\Lambda\)15seconds
\(\Lambda_0\)4seconds