mirror of
https://github.com/logos-storage/nim-mysticeti.git
synced 2026-01-04 06:33:11 +00:00
36 lines
933 B
Nim
36 lines
933 B
Nim
import ../basics
|
|
import ../signing
|
|
import ./members
|
|
|
|
type
|
|
Committee*[Dependencies] = ref object
|
|
members: seq[Identifier[Dependencies]]
|
|
stakes: seq[Stake]
|
|
Stake* = float64
|
|
|
|
func new*(T: type Committee, stakes: openArray[(Identifier, Stake)]): auto =
|
|
var committee = T()
|
|
for (member, stake) in stakes:
|
|
committee.members.add(member)
|
|
committee.stakes.add(stake)
|
|
committee
|
|
|
|
func size*(committee: Committee): int =
|
|
committee.members.len
|
|
|
|
func membership*(committee: Committee, identifier: Identifier): ?CommitteeMember =
|
|
let index = committee.members.find(identifier)
|
|
if index < 0:
|
|
none CommitteeMember
|
|
else:
|
|
some CommitteeMember(index)
|
|
|
|
func stake*(committee: Committee, member: CommitteeMember): Stake =
|
|
committee.stakes[int(member)]
|
|
|
|
func stake*(committee: Committee, identifier: Identifier): Stake =
|
|
if member =? committee.membership(identifier):
|
|
committee.stake(member)
|
|
else:
|
|
0
|