def generate_execution(num_validators, num_rounds, network_delay_func, get_creators): execution_string = '' commands_on_round = {r: [] for r in range(num_rounds)} sent_from = {v: set() for v in range(num_validators)} for curr_round in range(num_rounds): creators = get_creators() for creator in creators: msg_name = get_random_str(10) commands_on_round[curr_round].append(make_com('M', creator, msg_name)) for receiver in range(num_validators): delivery_round = curr_round + network_delay_func(creator, receiver, curr_round) if delivery_round >= num_rounds: continue if receiver not in sent_from[creator]: send_command = 'SJ' sent_from[creator].add(receiver) else: send_command = 'S' commands_on_round[delivery_round].append( make_com(send_command, receiver, msg_name) ) # sort so all make commands during a round happen first for command in sorted(commands_on_round[curr_round]): execution_string += command + ' ' return execution_string
def set_initial_messages(self, initial_estimates): for validator in self.global_validator_set: initial_message = Bet(initial_estimates[validator.name], dict(), validator, 0, 0) self.register_message(initial_message, get_random_str(10)) validator.initialize_view([initial_message])
def set_initial_messages(self): initial_message = Block( None, dict(), self.global_validator_set.get_validator_by_name(0), -1, 0) self.register_message(initial_message, get_random_str(10)) for validator in self.global_validator_set: validator.initialize_view([initial_message])
def set_initial_messages(self, genesis_estimate, create_name): validator = self.global_validator_set.get_validator_by_name(0) blocks = set([None]) inputs = set([int(i) for i in genesis_estimate]) outputs = self.create_rules[create_name](inputs, len(inputs)) estimate = {'blocks': blocks, 'inputs': inputs, 'outputs': outputs} initial_message = Block(estimate, dict(), validator, -1, 0) self.register_message(initial_message, get_random_str(10)) for validator in self.global_validator_set: validator.initialize_view([initial_message])
def set_initial_messages(self, num_shards): shards = 0 genesis_blocks = set() shard_id_gen = self.get_shard_id_gen() for validator in self.global_validator_set: if shards == num_shards: break shard_id = shard_id_gen() estimate = { 'prev_blocks': set([None]), 'shard_ids': set([shard_id]) } genesis = Block(estimate, dict(), validator, -1, 0) genesis_blocks.add(genesis) shards += 1 self.register_message(genesis, get_random_str(10)) for validator in self.global_validator_set: validator.initialize_view(genesis_blocks)