def _make_reservoir(self, handpicked_addresses): try: reservoir = self.alice.get_stakers_reservoir( duration=self.duration_periods, without=handpicked_addresses) except StakingEscrowAgent.NotEnoughStakers: # TODO: do that in `get_stakers_reservoir()`? reservoir = StakersReservoir({}) return MergedReservoir(handpicked_addresses, reservoir)
def _make_reservoir(self, handpicked_addresses): addresses = { ursula.checksum_address: 1 for ursula in self.alice.known_nodes if ursula.checksum_address not in handpicked_addresses } return MergedReservoir(handpicked_addresses, StakersReservoir(addresses))
def make_federated_staker_reservoir(known_nodes: FleetSensor, exclude_addresses: Optional[Iterable[ChecksumAddress]] = None, include_addresses: Optional[Iterable[ChecksumAddress]] = None): """ Get a sampler object containing the federated stakers. """ # needs to not include both exclude and include addresses # so that they aren't included in reservoir, include_address will be re-added to reservoir afterwards include_addresses = include_addresses or () exclusion_set = set(include_addresses) | set(exclude_addresses or ()) addresses = {} for ursula in known_nodes: if ursula.checksum_address in exclusion_set: continue addresses[ursula.checksum_address] = 1 # add include addresses return MergedReservoir(include_addresses, StakersReservoir(addresses))
def make_decentralized_staker_reservoir(staking_agent: StakingEscrowAgent, duration_periods: int, exclude_addresses: Optional[Iterable[ChecksumAddress]] = None, include_addresses: Optional[Iterable[ChecksumAddress]] = None, pagination_size: int = None): """ Get a sampler object containing the currently registered stakers. """ # needs to not include both exclude and include addresses # so that they aren't included in reservoir, include_address will be re-added to reservoir afterwards include_addresses = include_addresses or () without_set = set(include_addresses) | set(exclude_addresses or ()) try: reservoir = staking_agent.get_stakers_reservoir(duration=duration_periods, without=without_set, pagination_size=pagination_size) except StakingEscrowAgent.NotEnoughStakers: # TODO: do that in `get_stakers_reservoir()`? reservoir = StakersReservoir({}) # add include addresses return MergedReservoir(include_addresses, reservoir)