• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • Proof-checker-array
      • Soft
      • C
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • Taspi
      • Bitcoin
      • Riscv
      • Des
      • Ethereum
      • X86isa
      • Sha-2
      • Yul
      • Zcash
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Poseidon
      • Where-do-i-place-my-book
      • Axe
      • Bigmems
      • Builtins
      • Execloader
      • Aleo
        • Aleobft
          • Aleobft-static
          • Aleobft-stake2
          • Aleobft-dynamic
          • Aleobft-stake
          • Aleobft-proposals
            • Correctness
            • Definition
              • Initialization
              • Transitions
              • States
                • Committees
                  • Max-faulty-for-total
                  • Bonded-committee-at-round
                  • Active-committee-at-round
                  • Committee-members-stake
                  • Update-committee-with-transaction
                  • Committee-quorum-stake
                  • Lookback
                  • Committee-option
                  • Update-committee-with-transaction-list
                  • Committee-validators-stake
                  • Committee-after-blocks
                  • Same-bonded-committees-p
                  • Same-active-committees-p
                  • Committee-validator-stake
                  • Committee
                  • Committee-member-stake
                  • Committee-total-stake
                  • Committee-max-faulty-stake
                  • Committee-nonemptyp
                  • Committee-members
                  • Address-pos-map
                  • Genesis-committee
                • System-states
                • Certificates
                • Transactions
                • Proposals
                • Messages
                • Validator-states
                • Blocks
                • Addresses
              • Events
              • Reachability
          • Library-extensions
        • Leo
      • Solidity
      • Paco
      • Concurrent-programs
      • Bls12-377-curves
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • States

Committees

Committees.

Dynamic committees are one of the most distinctive features of AleoBFT. Starting with a genesis (i.e. initial) committee, validators join and leave the committe, by bonding and unbonding, which happens via transactions in the blockchain. Since every validator has its own view of the blockchain, it also has its own view of how the committee evolves. The agreement on the blockchains of the validators also provides an agreement on how the committee evolves, as proved elsewhere.

In our model a committee consists of a finite map from validator addresses to their bonded stake, the latter expressed as a positive integer whose exact units are irrelevant (cf. transaction). We introduce a fixtype to wrap the finite map, for greater abstraction and extensibility.

The genesis committee is arbitrary, but fixed for each execution of the protocol. Thus, we model the genesis committee via a constrained nullary function that returns the genesis committee. The genesis committee is globally known to all validators.

Each validator's view of the evolution of the committee is formalized via functions that operate on the blockchain, and that, starting with the genesis committee, calculate the committee at every block, by taking into considerations bonding and unbonding transactions. Blocks are produced at, and are associated with, (a subset of the) even rounds of the DAG. The notion of interest is that of the committee at a round, but this actually specializes into two notions, because of the committee lookback approach of AleoBFT.

One notion is that of the committee bonded at each round, i.e. the committee resulting from applying all the bonding and unbonding transactions up to that round to the genesis committee in order. There are actually two possible choices for defining this notion precisely, based on whether the committee bonded at an even round that has a block includes or excludes the transactions in that block. That is, do we consider the committee resulting at the end of that block to be the committee at that even round, or at the odd round that follows? The exact choice should not actually matter to correctness: so long as committees are used consistently, the two key intersection arguments for correctness, namely quorum intersection and successor-predecessor intersection, should work fine either way.

The other notion is that of the committee active at each round, i.e. the committee that is in charge of that round. This is the lookback committee: it is the bonded committee at a fixed number of previous rounds (``lookback''). The choice of when a bonded committee starts vs. ends discussed above affects the choice of when an active committee starts vs. ends.

Committees are not explicit components of the system states, but they are, in a way, derived components of validator states.

Subtopics

Max-faulty-for-total
Maximum number of units of stake associated to faulty validators, out of a total, for the protocol to be fault-tolerant.
Bonded-committee-at-round
Bonded committee at a given round.
Active-committee-at-round
Active committee at a given round.
Committee-members-stake
Total stake of a set of members of the committee.
Update-committee-with-transaction
Update a committee with a transaction.
Committee-quorum-stake
Quorum stake in a committee.
Lookback
Lookback amount.
Committee-option
Fixtype of optional committees.
Update-committee-with-transaction-list
Update a committee with a list of transactions.
Committee-validators-stake
Total stake of a set of validators with respect to a committee.
Committee-after-blocks
Calculate the committee after a list of blocks.
Same-bonded-committees-p
Check if two blockchains calculate consistent bonded committees.
Same-active-committees-p
Check if two blockchains calculate consistent active committees.
Committee-validator-stake
Stake of a validator with respect to a committee.
Committee
Fixtype of committees.
Committee-member-stake
Stake of a member of the committee.
Committee-total-stake
Total stake of validators in a committee.
Committee-max-faulty-stake
Maximum tolerated stake of faulty validators in a committee.
Committee-nonemptyp
Check is a committee is not empty.
Committee-members
Addresses of the members of the committee.
Address-pos-map
Fixtype of maps from addresses to positive integers.
Genesis-committee
Genesis committee.