Esempio n. 1
0
    def plot(self):
        """Builds relevant edges to display and creates next viegraph using them"""
        if self.first_time:
            self._update_first_message_labels()
            self.first_time = False

        edgelist = []
        edgelist.append(utils.edge(self.communications, 1, 'black', 'solid'))
        edgelist.append(
            utils.edge(self.self_communications, 1, 'black', 'solid'))

        self.next_viewgraph(self.view,
                            self.validator_set,
                            edges=edgelist,
                            message_colors=self.bet_fault_tolerance,
                            message_labels=self.message_labels)
Esempio n. 2
0
    def get_validator_chains(self):
        """Returns a list of edges main from validators current forkchoice to genesis"""
        vals_chain_edges = []
        for validator in self.validator_set:
            chain = utils.build_schedule(set([validator.my_latest_message()]))
            vals_chain_edges.append(utils.edge(chain, 2, 'blue', 'solid'))

        return vals_chain_edges
Esempio n. 3
0
    def plot(self):
        """Builds relevant edges to display and creates next viewgraph using them"""
        if self.first_time:
            self._update_first_message_labels()
            self.first_time = False

        edgelist = []
        edgelist.append(utils.edge(self.communications, 1, 'black', 'solid'))
        edgelist.append(utils.edge(self.self_communications, 1, 'black', 'solid'))

        self.next_viewgraph(
            self.view,
            self.validator_set,
            edges=edgelist,
            message_colors=self.bet_fault_tolerance,
            message_labels=self.message_labels
        )
Esempio n. 4
0
    def plot(self):
        """Builds relevant edges to display and creates next viegraph using them"""
        best_chain_edge = self.get_best_chain()

        validator_chain_edges = self.get_validator_chains()

        edgelist = []
        edgelist.append(utils.edge(self.blockchain, 2, 'grey', 'solid'))
        edgelist.append(utils.edge(self.communications, 1, 'black', 'dotted'))
        edgelist.append(best_chain_edge)
        edgelist.extend(validator_chain_edges)

        self.next_viewgraph(self.view,
                            self.validator_set,
                            edges=edgelist,
                            message_colors=self.block_fault_tolerance,
                            message_labels=self.message_labels)
Esempio n. 5
0
    def get_validator_chains(self):
        """Returns a list of edges main from validators current forkchoice to genesis"""
        vals_chain_edges = []
        for validator in self.validator_set:
            chain = utils.build_schedule(set([validator.my_latest_message()]))
            vals_chain_edges.append(utils.edge(chain, 2, 'blue', 'solid'))

        return vals_chain_edges
Esempio n. 6
0
    def plot(self):
        """Builds relevant edges to display and creates next viewgraph using them"""
        best_chain_edge = self.get_best_chain()

        validator_chain_edges = self.get_validator_chains()

        edgelist = []
        edgelist.append(utils.edge(self.blockchain, 2, 'grey', 'solid'))
        edgelist.append(utils.edge(self.communications, 1, 'black', 'dotted'))
        edgelist.append(best_chain_edge)
        edgelist.extend(validator_chain_edges)

        self.next_viewgraph(
            self.view,
            self.validator_set,
            edges=edgelist,
            message_colors=self.block_fault_tolerance,
            message_labels=self.message_labels
        )
    def report(self, num, name):
        """Display the view graph of the current global_view"""
        assert num == name and num == '', "...no validator or number needed to report!"

        if not self.display:
            return

        # Update the safe blocks!
        tip = self.network.global_view.estimate()
        while tip and self.block_fault_tolerance.get(
                tip, 0) != len(self.validator_set) - 1:
            oracle = CliqueOracle(tip, self.network.global_view,
                                  self.validator_set)
            fault_tolerance, num_node_ft = oracle.check_estimate_safety()

            if fault_tolerance > 0:
                self.block_fault_tolerance[tip] = num_node_ft

            tip = tip.estimate

        edgelist = []

        best_chain = utils.build_chain(self.network.global_view.estimate(),
                                       None)
        edgelist.append(utils.edge(best_chain, 5, 'red', 'solid'))

        for validator in self.validator_set:
            chain = utils.build_chain(validator.my_latest_message(), None)
            edgelist.append(utils.edge(chain, 2, 'blue', 'solid'))

        edgelist.append(utils.edge(self.blockchain, 2, 'grey', 'solid'))
        edgelist.append(utils.edge(self.communications, 1, 'black', 'dotted'))

        message_labels = {}
        for block in self.network.global_view.messages:
            message_labels[block] = block.sequence_number

        self.plot_tool.next_viewgraph(
            self.network.global_view,
            self.validator_set,
            edges=edgelist,
            message_colors=self.block_fault_tolerance,
            message_labels=message_labels)
Esempio n. 8
0
 def get_best_schedule(self):
     """Returns an edge made of the global forkchoice to genesis"""
     best_messages = self.view.estimate()['blocks']
     best_schedule = utils.build_schedule(best_messages)
     return utils.edge(best_schedule, 5, 'red', 'solid')
Esempio n. 9
0
 def get_best_chain(self):
     """Returns an edge made of the global forkchoice to genesis"""
     best_message = self.view.estimate()
     best_chain = utils.build_chain(best_message, None)[:-1]
     return utils.edge(best_chain, 5, 'red', 'solid')
Esempio n. 10
0
 def get_best_schedule(self):
     """Returns an edge made of the global forkchoice to genesis"""
     best_messages = self.view.estimate()['blocks']
     best_schedule = utils.build_schedule(best_messages)
     return utils.edge(best_schedule, 5, 'red', 'solid')
Esempio n. 11
0
 def get_best_chain(self):
     """Returns an edge made of the global forkchoice to genesis"""
     best_message = self.view.estimate()
     best_chain = utils.build_chain(best_message, None)[:-1]
     return utils.edge(best_chain, 5, 'red', 'solid')