Patent Publication Number: US-11050821-B2

Title: Computer-implemented system and method for updating a network&#39;s knowledge of the network&#39;s topology

Description:
FIELD OF INVENTION 
     This invention relates generally to system topology and methods of updating a system topology, and more particularly to changing peer-to-peer (P2P) system topologies and methods for updating a changing P2P system topology. The invention is particularly suited, but not limited, to distributed systems and methods using such distributed systems for implementing transactions and/or blockchain. 
     BACKGROUND OF INVENTION 
     In this document we use the term ‘blockchain’ to include all forms of electronic, computer-based, distributed ledgers. These include, but are not limited to blockchain and transaction-chain technologies, permissioned and un-permissioned ledgers, shared ledgers and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to herein for the purpose of convenience and illustration, it should be noted that the invention is not limited to use with the Bitcoin blockchain and alternative blockchain implementations and protocols fall within the scope of the present invention. 
     A blockchain is a consensus-based, electronic ledger which is implemented as a computer-based decentralised, distributed system made up of blocks which in turn are made up of transactions. Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output. Each block contains a hash of the previous block so that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception. Transactions contain small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language. 
     In order for a transaction to be written to the blockchain, it must be “validated”. Network nodes (miners) perform work to ensure that each transaction is valid, with invalid transactions rejected from the network. Software clients installed on the nodes perform this validation work on an unspent transaction (UTXO) by executing its locking and unlocking scripts. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain. Thus, in order for a transaction to be written to the blockchain, it must be i) validated by the first node that receives the transaction—if the transaction is validated, the node relays it to the other nodes in the network; and ii) added to a new block built by a miner; and iii) mined, i.e. added to the public ledger of past transactions. 
     Although blockchain technology is most widely known for the use of cryptocurrency implementation, digital entrepreneurs have begun exploring the use of both the cryptographic security system Bitcoin is based on and the data that can be stored on the Blockchain to implement new systems. It would be highly advantageous if the blockchain could be used for automated tasks and processes which are not limited to the realm of cryptocurrency. Such solutions would be able to harness the benefits of the blockchain (e.g. a permanent, tamper proof records of events, distributed processing etc) while being more versatile in their applications. 
     One area of current research is the use of the blockchain for the implementation of “smart contracts”. These are computer programs designed to automate the execution of the terms of a machine-readable contract or agreement. Unlike a traditional contract which would be written in natural language, a smart contract is a machine executable program which comprises rules that can process inputs in order to produce results, which can then cause actions to be performed dependent upon those results. 
     Another area of blockchain-related interest is the use of ‘tokens’ (or ‘coloured coins’) to represent and transfer real-world entities via the blockchain. A potentially sensitive or secret item can be represented by the token which has no discernible meaning or value. The token thus serves as an identifier that allows the real-world item to be referenced from the blockchain. 
     Various prior art methodologies are known for managing connections and routings within a network. Examples of such prior art methodologies are briefly described below. 
     US2014286344 relates to distributed connection establishment and restoration in a network. Connection constraints are flooded using an extension to a routing protocol being used to control forwarding on the network. Nodes maintain topology and a connection database and calculate routes for connections based on the constraints. If a node is on a calculated route for a connection it will install a forwarding state for the connection. Since each node has a consistent view of the network topology and has been provided with the constraints associated with the connection, each node on the network will calculate the same route for the connection. When a failure occurs, the nodes will calculate restoration paths for the connections on a network-wide priority basis to enable restoration paths to be created for the affected connections without requiring the restoration paths to be signaled. Time-stamps are used to allow events to be applied by nodes in a consistent order regardless of the order in which they arrive. 
     EP0752795 relates to link reservation in communications networks. A distributed means is described for setting up, taking down, and updating connections in a communications network, which is robust in the presence of failures. More specifically, a path for a connection is computed and reservation requests are simultaneously sent through separate channels to each of a set of nodes of the path for the connection to reserve and determine if resources are available for the connection. Upon acknowledgement that the links for the connection are available and have been reserved, a setup message is sequentially transmitted between the adjacent nodes along the path until the setup messages reaches the destination node. The switches in each node then configure themselves in response to the setup message so as to establish the connection. 
     US2004170151 relates to a dynamic network and routing method for a dynamic network. A dynamic network with a plurality of nodes is described in which it is provided that routing information is stored in local routing tables in nodes of the network. The nodes send an update request to other nodes for updating the local routing tables and the addressed nodes send an update response with updated routing information to the requesting nodes. 
     SUMMARY OF INVENTION 
     An issue with system topology is ensuring that the system is maintained in an effective and fast functioning state when topology changes occur, for instance due to new nodes or peers joining the system and/or due to nodes or peers leaving and returning to an operative state. 
     Thus, it is desirable to provide a solution which includes amongst its potential aims a system topology and/or method of updating a system topology in which changes in topology are detected effectively and/or rapidly. 
     Thus, it is desirable to provide a solution which includes amongst its potential aims a system topology and/or method of updating a system topology in which changes in topology are communicated effectively and/or rapidly within the system. 
     Thus, it is desirable to provide a solution which includes amongst its potential aims a system topology and/or method of updating a system topology in which changes in topology are updated throughout the network consistently and/or effectively and/or rapidly. 
     Such an improved solution has now been devised. The present invention is defined in the appended claims and/or in the statements of invention. 
     According to a first aspect of the invention there is provided a method of updating a network&#39;s knowledge of the network&#39;s topology, the method including:
         a) a topology data set incorporating a change in the topology of a network being received by a first node in the network, the topology data set being associated with a time indication;   b) the first node having a topology data set associated with a time indication:
 
wherein, if the time indication for the topology data set received by the first node is more recent than the time indication for the first node&#39;s topology data set, that the first node&#39;s topology data set is updated by the topology data set received by the first node.
       

     The method may further provide, particularly after step b), that the first node sends to the network any updated first node topology data set. More preferably the method may further provide, particularly after step b), that the first node sends to the network the updated first node topology data when the second node topology data set results in an update to the first node topology data set. 
     The method may provide that the first node has adjacent nodes, the adjacent nodes being those nodes within a given adjacency measure of the first node, and may provide that the first node has neighbour nodes, the neighbour nodes being those outside of the given adjacency measure of the first node and within a given neighbour measure of the first node. The method may further provide that the first node sends the updated first node topology data set to adjacent nodes and neighbour nodes only. 
     The time indication associated with the topology data set received by the first node is generated by the node from which the topology data set was provided. The time indication may be a timestamp associated with the topology data set by the node from which the topology data set was provided. The time indication may be a time indication of the time of detection of the change in the network by the second node, or more preferably the time of sending of the change in the network to the first node by the second node. The time indication may be provided by a time vector clock of the node providing the topology data set. 
     The method may further provide that the first node&#39;s topology data set is updated by one or more of:
         a) changing the operational status for one or more links between nodes listed in the first node&#39;s topology data set;   b) adding one or more links between nodes not listed in the first node&#39;s topology data set;   c) removing one or more links between nodes listed in the first node&#39;s topology data set.       

     The method may further provide that it is a condition of the first node&#39;s topology data being updated that the topology data set received from a node in the network contains one or more links not in the first node&#39;s topology data set. The method may still further provide that it is a further condition that the first node&#39;s topology data set is only updated with respect to such links in the topology data set received from a node in the network which are within a given measure of the node. 
     The method may further provide that topology data set incorporating a change in the topology of the network is provided due to detection of an event in the network by a second node in the network. The event may be detected by the cessation of a message sent by a node in the network to the second node. The detection of the event may produce a change in the topology data set of the second node. The change in the topology data set of the second node may provide for the second node sending the change in the topology data set to at least the first node in the network. 
     The method may further, preferably between steps a) and b), ordering multiple topology data sets according to their respective time indications. One of the multiple topology data sets may be the first node&#39;s topology data set, with another one of the multiple topology data sets potentially being the second node&#39;s topology data set. One of the multiple topology data sets may be a topology data set from a third node, preferably with others of the multiple topology data sets being from further nodes. The ordering may establish which of the multiple topology data sets is the most recent of the multiple topology data sets. 
     The method may further provide that the most recent of the multiple topology data sets is used to update the first node&#39;s topology data set. The method may further provide that the topology data sets not associated with the most recent time indication are not used or are discarded. 
     The updated first node&#39;s topology data set may replace the prior first node&#39;s topology data set. 
     The method of updating a network&#39;s knowledge of the network&#39;s topology may further be a method of optimising connectivity within the network and/or optimising consistent data distribution within the network. 
     According to a second aspect of the invention there is provided a computer implemented system arranged to perform the method of the first aspect of the invention, potentially including a system arranged to perform any of the features, options and possibilities set out elsewhere within this document. 
     The computer implemented system may include a detector for the detection of changes in the topology of the network. The detector may detect changes effecting one or more nodes and/or one or more links. The detector may detect a change or changes in state, for instance from a first state to a second state and/or from a second state to a first state and/or may include one or more other states. 
     The computer implemented system may include update sorter for sorting updated topology data sets communicated within the network, particularly with respect to messages containing updated topology data sets. An update sorter may be provided such that messages are considered in the correct sequence or order or time of generation. 
     The computer implemented system may include a topology data set processor for processing of topology data sets, such that topology data sets are updated by topology date sets from other nodes in the network. 
     The computer implemented system may include a topology update communicator for updated topology data sets such that knowledge of changes in the topology of the network are shared within the network. A topology data set processor may provide the updating of a node&#39;s topology data set according to data from the topology data sets of further nodes. 
     According to a third aspect of the invention there is provided an arrangement within a network of nodes for updating the network with respect to changes in the topology of the network, the arrangement including a detector for the detection of changes in the topology of the network; and/or an update sorter for sorting updated topology data sets communicated within the network; and/or a topology data set processor for processing of topology data sets; and/or a topology update communicator for updated topology data sets such that knowledge of changes in the topology of the network are shared within the network. 
     The detector may detect changes effecting one or more nodes and/or one or more links. The detector may detect a change or changes in state, for instance from a first state to a second state and/or from a second state to a first state and/or may include one or more other states. 
     The update sorter may be provided for messages containing updated topology data sets. An update sorter may be provided such that messages are considered in the correct sequence or order or time of generation. 
     The topology data set processor for processing of topology data sets may be for topology data sets that are updated by topology date sets from other nodes in the network. 
     The topology data set processor may provide the updating of a node&#39;s topology data set according to data from the topology data sets of further nodes. 
     Therefore, in accordance with the invention there may be provided or further provided options, possibilities and features from amongst the following. 
     The network may be a distributed system of nodes. The distributed system may include one or more nodes in the form of clients and/or servers and/or peers. 
     A node may be an active electronic device or data communication equipment. A node may particularly be a router and/or workstation and/or server and/or host computer. A node may be a location capable of creating and/or receiving and/or transmitting information, for instance within the network, such as to one or more other nodes. 
     One or more or all of the nodes may be peers. Two or more or all of the nodes may be equal participants in the network, for instance in terms of privileges or abilities or capabilities. 
     The nodes in the network may be deemed the set of nodes. 
     The nodes may be connected by one or more links. A node may be connected to another node by one or more links. One or more or all of the links may be edges. 
     The distance between two nodes may be the sum of the links between those nodes, preferably the smallest number of links providing the connection between those nodes. The distance may be the hop. The distance may be the number of links, for instance such that directly linked nodes have a hop of value 1 and/or indirectly linked nodes have a hop of value&gt;/=2. The distance or hop may be defined as:
 
 d ( i,j )
 
where d is the distance between node i and node j.
 
     A node may be directly connected to another node when a limited number of links, preferably a single link, provides the connection. A node may be directly connected to one or more other nodes. Preferably a node connected directly to a node is connected to a node which is deemed an adjacent node. Preferably all of the other nodes connected directly to a node are adjacent nodes to that node. The adjacent nodes may be defined as:
 
 adj ( i )={ j∈V:d ( i,j )= r   adj }
 
where i is the node under consideration, j is the number of adjacent nodes within set of nodes V, and r adj  is the given adjacency measure.
 
     The given adjacency measure may be an adjacency radius. The given adjacency measure may be a number of links, for instance 1 link. 
     A node may be indirectly connected to a further node when a number of links greater than 1 link provides the connection. Preferably a node is indirectly connected to a further node when it is connected to the further node via one or more intermediate nodes, such as an adjacent node and/or further nodes, or when it is connected to the further node via two or more links in series. A node may be indirectly connected to one or more or all of the further nodes in the network. Preferably the further nodes within a given neighbour measure of the node, which are not adjacent nodes, are neighbour nodes to that node. The further nodes outside of a given neighbour measure of the node are preferably neither adjacent nodes nor neighbour nodes. The further nodes outside of a given neighbour measure of the node and neither adjacent nodes nor neighbour nodes are preferably still part of the set of nodes. The neighbour nodes may be defined as:
 
 N ( i )={ j∈V   i   d ( i,j )= H,adj ( i )⊆ N ( i )}
 
where i is the node under consideration, j is the number of neighbour nodes within set V within distance d(i,j) is the distance between node i and node j, adj(i) is the adjacent nodes for node i, and H is the given neighbour measure.
 
     The given neighbour measure may be a neighbour radius. The given neighbour measure may have a lower value and an upper value. The given neighbour measure may be a number of links, for instance with a common lower and upper value such as 2 links. The given neighbour measure is preferably larger than the given adjacency measure. 
     A node may part of a set of nodes, have one or more adjacent nodes and one or more neighbour nodes. Another node from within the set of nodes may have one or more or all adjacent nodes in common with the node or may have no adjacent nodes in common with the node. The another node may have one or more or all neighbour nodes in common with the node or may have no neighbour nodes in common with the node. 
     A detector for and/or detection of changes in the topology of the network may be provided. A detector for and/or detection of changes effecting one or more nodes and/or one or more links may be provided. The change or changes may be a change in state, for instance from a first state to a second state and/or from a second state to a first state and/or may include one or more other states. 
     A node may have a first state and a second state, the second state representing a change in a characteristic compared with the first state. The change in characteristic may be the node joining the set of nodes and/or the network. The change in characteristic may be the node re-joining the set of nodes and/or network. The change in characteristic may be the node starting to function or re-starting to function as a node in the set of nodes and/or network The change in characteristic may be the node leaving the set of nodes and/or network. The change in characteristic may be the node ceasing to function as a node in the set of nodes and/or network. 
     Preferably the link between a node and a further node directly connected to the node has a first state and a second state, the second state representing a characteristic change compared with the first state. The characteristic change may be the appearance of the link or access to the link. The characteristic change may be the re-appearance of the link or renewed access to the link. The characteristic change may be the disappearance of the link or loss of access to the link. 
     The characteristic change may be detected directly. Preferably the change in characteristic is detected indirectly, for instance using a test message. The test message may be sent by one node to the other node. The test message may be sent along a link. The test message is preferably sent repeatedly, preferably regularly. The test message may be sent at least once within a given time period and preferably at least once within any given repeat of that time period. The time period may be governed by a clock function in or associated with the node. 
     The lack of receipt of the test message by the node from the other node may indicate that the other node and/or the link there between has undergone a characteristic change. In particular the lack of receipt may indicate that the other node has left the network and/or the link has disappeared. Preferably the lack of receipt indicates that the other node has stopped functioning and/or the link has stopped functioning. Preferably the lack of receipt is considered with respect to a period of time. Preferably the period of time is a period greater than the time period during which the test message is repeated. Each node may maintain a timer, preferably a separate one for each link, so as to define the period of time in which receipt of the test message is expected. 
     The detection of a change of state for a node may generate a change to the node&#39;s topology data set. The detection of a change from a first state to second state may generate a change to the node&#39;s topology data set. The detection of a change from a second state to first state may generate a change to the node&#39;s topology data set. 
     The detection of a change from a first state, where the first state is a node which is joined to the network or functioning and/or a link which is accessible or functioning, to second state, where the second state is a node which is not joined to the network or not functioning and/or a link which is not accessible or not functioning, may generate a change to the node&#39;s topology data set. 
     The change to the node&#39;s topology data set may be a change to the status for a node or a link. The change to the status may be a change from an active status or live status or connected status to an inactive status or dead status or disconnected status. 
     The change to the node&#39;s topology data set may be the deletion of a node from the topology data set. The change to the node&#39;s topology data set may be the deletion of a link from the topology data set. 
     The detection of a change from a second state, where the second state is a node which is not joined to the network or not functioning and/or a link which is not accessible or not functioning, to a first state, where the first state is a node which is joined to the network or functioning and/or a link which is accessible or functioning, may generate a change to the node&#39;s topology data set. 
     The change to the node&#39;s topology data set may be a change to the status for a node or a link. The change to the status may be a change from an inactive status or dead status or disconnected status to active status or live status or connected status. 
     The change to the node&#39;s topology data set may be the addition of a node to the topology data set. The change to the node&#39;s topology data set may be the addition of a link to the topology data set. 
     The node&#39;s topology data set may be a topology table. The node&#39;s topology data set may be an imperfect data set compared with the complete data set possible for the node. 
     A node&#39;s topology data set, for instance a topology table, may comprise a list of the links known to that node at that time. A topology table may comprise a list of one or more or all of the possible links between that node and one or more, preferably all, of a selection of nodes for that node. The selection of nodes for that node may be one or more, preferably all, of the adjacent nodes for that node and/or one or more, preferably all, of the neighbour nodes for that node. The topology table may include a status for one or more, preferably all, of the links known to the node at that time. 
     When there is a change in the node&#39;s topology data set, the change in the node&#39;s topology data set may be communicated to one or more other nodes. When there is a change in the node&#39;s topology data set, preferably the entire node&#39;s topology data set may be communicated to one or more other nodes. The one or more other nodes may include one or more or all adjacent nodes. The one or more other nodes may include one or more or all neighbour nodes. The one or more other nodes may include one or more of all of the nodes in a set of nodes. 
     When another node receives a node&#39;s topology data set, the other node preferable evaluates whether the other node updates the other node&#39;s present topology data set with the node&#39;s topology data set or not. The evaluation may be performed by each another node receiving the node&#39;s topology data set, preferably with each evaluation being independent of the other evaluations. The evaluation may preferably establishes whether the other node&#39;s present topology data set is older or newer than the node&#39;s topology data set. Preferably where the other node&#39;s present data set is older, then the another node&#39;s present topology data set is updated from the node&#39;s topology data set. Preferably where the other node&#39;s present topology data set is newer, then the another node&#39;s present topology data set is not updated from the node&#39;s topology data set. 
     When the node receives another node&#39;s topology data set, the node preferable evaluates whether the node updates the node&#39;s present topology data set with the other node&#39;s topology data set or not. The evaluation may preferably establishes whether the node&#39;s present topology data set is older or newer than the other node&#39;s topology data set. Preferably where the node&#39;s present topology data set is older, then the node&#39;s present topology data set is updated from the other node&#39;s topology data set. Preferably where the node&#39;s present data set is newer, then the node&#39;s present topology data set is not updated from the other node&#39;s topology data set. 
     A message sorter for and/or message sorting of messages communicated within the network may be provided, particularly with respect to messages relating to changes in the topology of the network. A message sorter for and/or message sorting of messages may be provided such that messages are considered in the correct sequence or order or time of generation. 
     The node and another node may be provided with a clock function, such as a logical clock. The clock function may provide two data structures with a first being a record of local time and the second being a record of best known global time within the distributed system. For instance, a logical clock may provide a record of the local time through the clock function, for instance logical local time, and a local record of global time within the distributed system, such as logical global time. 
     Preferably each node in the system is provided with a clock function. 
     The clock function may assign a timestamp to one or more or all events in the system. An event may include the detection of a new node or new link. An event may include the detection of a change in status for a node or a link. An event may include the detection of the loss of a node or link. An event may include the node updating the node&#39;s topology data set. 
     The timestamps within the system preferably follow a monotonic property, most preferably increasing. Where two events are causally linked, then the effect event may be given a timestamp which is later than the cause event that lead to the effect event. 
     The clock function may be a vector time clock. The vector time clock may use time vectors. Each node may operate a separate time vector. Each node may use the time vector for that node to timestamp events for that node. Each time vector may be of form:
 
 T   i =( T   i1   , . . . ,T   in )
 
where T i  is the local logical clock of node a and describes the logical time progress of node i from time 1 through to time n.
 
     One or more and preferably all of the nodes have at least partial knowledge of the logical time progress for one or more or all nodes, particularly the adjacent nodes and/or the neighbour nodes for that node. The at least partial knowledge of the logical time progress for another node may be of the form: T ij  where represents node i&#39;s latest knowledge of node j&#39;s local time, where j∈adj(i). The dimension of T may be denoted by dim(T i ), and dim(T i ) may be equal to the size of adj(i). 
     The time vector clock may operate according to one or more rules. The rules may include one or more or all of the following:
         1. One or more and preferably all of the nodes start with a local time of 0;   2. When an event occurs at a node the local time may be increase, for instance by an integer, preferably by the value 1;   3. When an event occurs at a node that node sends a message to one or more further nodes, preferably that the topology data set has changed;   4. When a further node receives a message, preferably of a change, that is deemed an event for that node, preferably therefore rule 2 is applied to the further node local time;   5. When a further node receives a message, preferably of a change, the further node local time is further increased in addition to the increase of rule 4, preferably the further node local time is further increased by the greater of the further node&#39;s local time after the increase of rule 4 or the further node&#39;s local time in the message;   6. A message sent by a node to a further node includes a local time for the node and all further nodes for which the node has knowledge of a local time, that local time may be different to the actual local time one or more further nodes at that time;   7. Where a message is newer than the last message received by a node, the topology data set of the message may be used to update the topology data set of the further node, preferably rule 4 and/or 5 is only applied where the message is newer and/or the message results in the topology data set of the further node being updated;   8. Where a message is older than the last message received by a node, the topology data set of the message may be discarded and/or not used to update the topology data set of the further node, preferably rule 4 and/or 5 the message is older and/or is not applied where the topology data set of the message is discarded and/or not used;       

     The vector time clock may operate according to one or more rules, where the rules include one or more or all of:
         The time stamp of the initial local event on a node i is all 0&#39;s except for the i th  entry which is 1;   If T ij =x, node i knows that the local time at node j has progressed up to x;   The vector T i  constitutes a node i&#39;s view of the logical global time;   Node i uses it to timestamp events;   The timestamp of a message is the element-wise max of the current timestamp and the incoming vector time stamp;   Before sending a message, node i updates its local time T ii ←T ii +1;   Upon receiving a message (m,T j ) from node j∈adj(i), node i executes the action of updating node i&#39;s logical global time by: ∀k∈adj(i), T ik ←max(T ik ,T jk ).       

     The broadcast algorithm for the one or more or all messages sent by one or more or all nodes may be a deterministic algorithm or a probabilistic algorithm. 
     A data set processor and/or processing of a data set may be provided such that knowledge of changes in the topology of the network is shared within the network. A data set processor and/or processing of a data set for a node&#39;s topology data set may be provided such that the node&#39;s topology data set is updated by data from the topology data set of further nodes. 
     A node&#39;s topology data set, for instance a topology table, may be constructed for a node, preferably each node. The node&#39;s topology data set may comprise the main topology view V i  for that node i. A node&#39;s topology data set may include a list of links known to the node. The links may be listed in the form l mn  where m is one node and n is another node. The form l mn  and l nm  may be used interchangeable with only one of those pairs being listed to provide the link in the list. T node&#39;s topology data set may include a designation for each link in the list. The designation may have one of two values, for instance 1 or ∞. The designation may relate to the operational status of the link, for instance a value when operational and a value when not operational. 
     Initially the list of links known to the node may be those nodes and hence links which are detected by the node, for instance due to the receipt of test messages from further nodes via those links. 
     Once messages containing further node&#39;s topology data sets are exchanged then the list of links known to the node may be, or may be supplemented by, those links in the messages from other nodes. Preferably a combination of the links known to a node and those links in the messages from other nodes form the node&#39;s topology data set. 
     A node&#39;s topology data set may be updated with respect to changes in operational status for a node or a link. A node&#39;s topology data set may be updated with respect to a node or link returning to operational status. A node&#39;s topology data set may be updated with respect to a new link or a new node being added to the network. A new node being added to the network may be sent a node topology data set from another node so as to provide a first node topology data set for that node. 
     A node&#39;s topology data set may be updated with data from within a message containing a further node&#39;s topology data set when one or more conditions are met. A condition may be that the further node&#39;s topology data set has a late timestamp than the node&#39;s topology data set. A condition may be that the there is a change in the designation, for instance from 1 to ∞ or from ∞ to 1, in respect of one or more links, particularly one or more links in both the node&#39;s topology data set and the further node&#39;s topology data set. A condition may be that the further node&#39;s topology data set contains one or more links not in the node&#39;s topology data set. A condition may be that the further node&#39;s topology data set contains one or more links not in the node&#39;s topology data set, together with a further condition that the node&#39;s topology data set is only updated with respect to such links in the further node topology data set which are within a given measure of the node. The given measure may be within the given adjacency measure or more preferably within the given neighbour measure. Links which are not within the given measure are preferably not added to the node&#39;s topology data set. 
     A node&#39;s topology data set may be updated upon receiving a message, m, of form m={V j ,T j } from node j at a given time T j , with node j having a topology data set or global topology view Vj, such that node uses it to update node i&#39;s topology data set or global topology view V i . 
     A node&#39;s topology data set may be updated where link l mn  is a link in both the node&#39;s topology data set, for instance node global view V i , and in the further node&#39;s topology data set, for instance further node global view V j , such that V i ∪V j . A node&#39;s topology data set being updated with information about link l mn  which is received in V j , may be conditional on the time stamp T j [t j ]&gt;T i [t j ], with the newer status for link l mn  being taken if the condition is true. 
     A node&#39;s topology data set may be updated where a link l pq  is a link in the further node&#39;s topology data set, for instance further node global view V j , that is not presently a link in the node&#39;s topology data set, for instance node global view V i . The information about link l pq  being added to the node&#39;s topology data set, for instance node global view V i , may be conditional on the distance between the nodes i and q being lower than the value for the adjacent nodes, horizon H. The condition may be that l ij +l jp     1   +l p     1     p     2   + . . . +l p     n     p +l pq &lt;H where l ij , l jp     1   , l p     1     p     2   , . . . , l p     n     p  are every active links of V i . 
     A node may send a message containing the node&#39;s topology data set to one or more further nodes whenever a change is made to the node&#39;s topology data set as a result of a message received by the node. Preferably a node may send a message containing the node&#39;s topology data set to only those one or more further nodes that are neighbour nodes and/or adjacent nodes. 
     A node may send a message containing the node&#39;s topology data set to one or more new nodes whenever the node is linked to the new node. Preferably a node may send a message containing the node&#39;s topology data set to only those one or more new nodes that are adjacent nodes to the node. 
     Multiple nodes within the system and/or the method may initiate an update independently of each other. Multiple updates may be active within the system and/or method at the same time, preferably with the timestamp controlling with updates are applied to the topology data set at which nodes. 
    
    
     
       BRIEF SUMMARY OF THE DRAWINGS 
       These and other aspects of the present invention will be apparent from and elucidated with reference to, the embodiment described herein. An embodiment of the present invention will now be described, by way of example only, and with reference to the accompany drawings, in which: 
         FIG. 1  is an example of a network topology diagram illustrating nodes, adjacent nodes and neighbouring nodes; 
         FIG. 2  is an illustration of a system of vector clocks; 
         FIG. 3  depicts an execution of a broadcast algorithm, without the presence of any topology changes (failed or lost messages); 
         FIG. 4  is an illustration of a global network used to describe the operation of an embodiment of the invention; and 
         FIG. 5  is an illustration of the exchange of messages between nodes with time used to describe an embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     A central problem for unstructured peer-to-peer (P2P) networks is topology maintenance. For instance, how to properly update neighbour variables when nodes join and leave the network and/or when nodes crash abruptly. The invention is concerned with a topology update algorithm. 
     Within P2P networks, there is a need for searching, information dissemination, broadcasting and the like need to know “who is connected to whom” or “who knows whom”. In this context a number of broadcast algorithms are known, such as probabilistic algorithms and deterministic algorithms. 
     Epidemiological Algorithms or Gossip Protocols are probabilistic in nature and they do not rely on fixed topologies. Nodes exchange information with random neighbours to implement a diffusion-like computation pattern, and as a result the system converges to a state where all the nodes know the message. Gossip protocols are scalable because each node sends only a fixed number of messages, independent of the number of nodes in the network. In addition, a node does not wait for acknowledgments nor does it take some recovery action should an acknowledgment not arrive. They achieve fault-tolerance against intermittent link failures and node crashes because a node receives copies of a message from different nodes. No node has a specific role to play, and so failed node will not prevent other nodes from continuing sending messages. Hence, there is no need for failure detection or specific recovery actions. 
     A drawback of gossip protocols is the number of messages that they send. One class of gossip protocols (anti-entropy protocols) send an unbounded number of messages in nonterminating runs. 
     Spanning Tree Algorithms such as breadth-first search are a class of deterministic algorithms. Spanning trees provide a simple way to visualize networks as “backbones”, i.e. a minimal set of edges that connect nodes. The idea is simple; a spanning tree is first constructed and used to collect local data variables from each node, and then aggregate the data towards the root node (or sink node). Each node transmits its value to its own parent. At each non-leaf node, the value of its child nodes, in addition to its own value, is processed before transmitting the result up the tree. Since breadth-first protocol does not generate a node in the tree until all the nodes at shallower levels have been generated, it always finds a shortest path to a node. Spanning tress are a very efficient form of information distribution and collection, and in how they calculate the new topology of the network. 
     In general, structures like spanning trees are considered structurally fragile: single vertex or edge failure causes the broadcast to fail. 
     The topology-update problem is the problem of keeping the knowledge of the network topology at each network site current, when the network topology is dynamic, i.e. when links fail and recover at arbitrary times. The correct operation of any topology algorithm depends strongly on the way in which links status changes (failures and repairs) are detected by the network nodes and other factors. 
     There are several subtleties in the challenges that underlay the use of topology algorithms and which should be accounted for in any solution:
         A link may experience several topology changes within a short time. Other network nodes must eventually determine which changes was the most recent. Nodes must be able to distinguish between old and new information about the status of a link.   While a topology algorithm is running, additional topology changes may occur. The topology algorithm must be capable of either incorporating new information during execution, or of starting a new algorithm version. If different versions are used, each node must be able to determine which is the most recent version.   The repair of a single link can cause two parts of the network which were disconnected to reconnect. Each part may have out-of-date topology information about the other. The algorithm must ensure that the two parts eventually agree, and adapt the correct network topology.       

     The ability for a network to realise changes within itself is important for fast and effective communication through the network and for the network to function fully. As an example, in order to provide a fast payment network for digital currencies, the transactions and other information must be shared through the distributed network completely and quickly. 
     In a method which relies on threshold cryptosystems to protect secrets by distributing shares to participants, a network consisting of a set of merchants who collectively hold a subset of the secret shares is first constructed. The second half of the secret share is held by the customer(s). The merchant network performs important tasks, such as creating signatures, updating key shares, defining the threshold level, validating transactions etc. Their ability to collaborate and communicate, and to be aware of the network topology is essential in these situations. 
     In the following description, we present an algorithm that allows each merchant node to maintain a correct view of the network topology despite link and node failures. The algorithm allows the network to automatically return to a stable configuration within a finite number of steps (so called “self-stabilisation”) and uses logical clocks to accurately capture the causality relation between events. The topology updating protocol is event driven, i.e. it is activated when some change is detected. 
     The system includes steps for:
         detecting changes in the topology;   ordering those changes by occurrence; and   constructing a new topology reflecting the changes.       

     To enable a full description of the invention, it is useful to understand a mathematical model of a network. 
     Referring to  FIG. 1 , a series of nodes (labelled 1 to 8) are provided. Each of the nodes is provided with a link (or edge) to another node. The series of nodes form a set, where V is the number of nodes in the set. 
     The network can be represented by a graph G=(V,E) where V is the set of nodes, each having a distinct identity, and E is the set of edges (or links). 
     The mathematical model uses the following definitions: 
     Definition 1. (A definition of “Hop”) The distance d(i,j) between two nodes i and j is equal to the minimum number of links connecting the nodes. Thus in  FIG. 1 , the distance between node 6 and node 1 is two links and in the case of node 8 and node 1 just one link. 
     Definition 2. (A definition of “Adjacent Nodes) The adjacent nodes, adj(i), for node i in set V, i∈V, are nodes j in set V, j∈V, within defined distance or adjacent radius r adj . Hence:
 
 adj ( i )={ j∈V:d ( i,j )= r   adj }
 
     Definition 3. (A definition of “Neighbour Nodes”) The neighbour nodes, N(i), for node i in set V, i∈V, are nodes j in set V, j∈V, within defined distance or horizon radius H≥r adj . Hence:
 
 N ( i )=[ j∈V:d ( i,j )= H,adj ( t )⊆ N ( i )]
 
     In  FIG. 1 , if we chose adjacent radius, r adj =1, then the adjacent nodes to node (peer) 1 are represented in red; namely nodes 2, 3, 4, 7, 8. If we chose the horizon radius H=2, then the neighbour nodes are represented in blue; namely nodes 5 and 6. 
     Detecting Changes 
     Clearly to be able to account for a topological change, there is a need to be able to detect such a change. 
     Topological changes may occur at any time. Thus, we make the following assumptions about the system to capture any kind of initial faults. Each node i in the network maintains the identities of its adjacent neighbours in a list, adj(i). Node i periodically sends a test messages “I&#39;m alive” to its adjacent nodes. Referring to  FIG. 1 , node 4 would send such messages to node 1 only, whereas node 1 would send such messages to nodes 2, 3, 4, 7, 8. 
     The frequency of the dispatch of “I&#39;m alive” messages has a large impact on the efficiency of the error detection mechanism. To achieve a short error detection time, the “I&#39;m alive” messages have to be sent and checked very frequently. 
     Each processor in a node i has a local clock that is used to measure time intervals. The clocks at different nodes may not be synchronized with each other. For each link (i,j), node i maintains a timer t ij  for its adjacent nodes j∈adj(i). If node does not receive the “I&#39;m alive” message from node j within a time interval δt, it assumes that the link (i,j) is no longer available and removes j from its adjacent node set. It then updates its current (possibly wrong) topology table T i . A topology table is a list of the operational status of the links that are directly connected to node i. Thus referring to  FIG. 1 , node 1 sends an “I&#39;m alive” message to node 4 and node 4 should send an “I&#39;m alive” message to node 1. If node 1 does not received such message from node 4 in the defined time period, then node 4 is removed from the topology table T 1  for node 1. Then the adjacent nodes for node 1 in topology table T 1  would be nodes 2, 3, 7 and 8 only. 
     The above consideration forms a first topology update rule, namely:
         1. When a node detects that an adjacent link has failed, the failed status is entered in the node&#39;s main topology table.       

     It is desirable to share this updated topology table with other nodes in the set of nodes, V. When this occurs, a node updates its own topology table according to the topology table received from the adjacent node. Hence, a second topology update rule is formed, namely:
         2. When a node receives an entire main topology table from a neighbour, it updates its main topology table by using the main topology update algorithm (described below).
 
Ordering Changes
       

     As noted above, updated topology table messages are only sent in response to topological change that has been detected. Since all messages sent in the network are subject to delay, a node can never be certain that it knows the correct topology at some instant of time. One or more of the updated topology table messages may be older and out of date compared with the status noted in another updated topology message, irrespective of its time of reception. Causal ordering broadcast (as detailed in Raynal, M., and Singhal, M.,—Capturing Causality in Distributed Systems—1996 IEEE), ensures that if two messages are causally related and have the same destinations, they are delivered to the application in their sending order. 
     The invention uses a system of logical clocks, where every node (peer) has a logical clock that is advanced using a set of rules described below. As a result, every message is assigned a timestamp, by which a process can infer the causality relation between events. The timestamps assigned to events obey a monotonicity property; they are always increasing. That is, if an event a causally effects an event b, the timestamp of a is smaller than the timestamp of b. Event b is the effect of event a in that case. 
     The logical clock advances according to the following rules; vector time clocks. 
     In a system of vector clocks, the time domain is represented by a set of finite-dimensional, non-negative integer vectors. Each node t maintains a vector T i =(T i1 , . . . , T in ), where T ii  is the local logical clock of node i and describes the logical time progress of node t from time 1 through to time n. 
     T ij  represents node i&#39;s latest knowledge of node j&#39;s local time where node j∈adj(i). 
     We denote the dimension of T i  by dim(T i ), and we have dim(T i ) equal to the size of adj(i). 
     The time stamp of an initial local event on node i is all 0&#39;s except for the i th  entry, which is 1. If T ij =x, node i knows that the local time at node j has progressed up to x. The vector T i  constitutes node i&#39;s view of the logical global time; node t uses it to timestamp events. The time stamp of a received message is the element-wise max of the current stamp and the incoming vector time stamp. 
     This operation is illustrated in  FIG. 2  in relation to three nodes, A, B and C. At each node, local time is initially 0. When an event occurs at node C, then node C increases its local clock time to 1 and notifies node B. When node B receives the message, no other events have been notified to node B and so the node B local time is still 0. Node B has now experienced an event and so node B updates the node B local time by 1. As the node B local time was 0 this gives a value of 1. In addition, Node B also amends the node B local time by adding the greater of the updated node B local time (value now 1) or the node B local time in the message (value 0 in the example). Hence, the amended node B local time is 2 and node B then notifies node A of the change. 
     Node A goes through a similar process of updating by 1 and amending by the addition of 1 to result in a message to node B of A:2 B:2 C:1. By the time node B receives this message, node B has noted another independent event and has communicated that to C. Thus there is an update of node B by 1, but the amendment is the addition of 1 to the node B local time (3 by this point) rather than the addition of 1 to the node B local time in the message (only 2 at this time). Hence the new message sent to A has a value of B:5 (3+1+1 and not 2+1+1). 
     Subsequent messages are dealt with in the same manner. The second message sent by node B at time 3 is independent of the other messages discussed above, message one (C to B), message two (B to A) and message four (A to B) and message five (B to C). 
     The above consideration forms the logical clock update rules, namely:
         1. Before sending a message, node updates its local logical time T ii ←T ii +1.   2. Upon receiving a message (m,T j ) from node j∈adj(i), node i executes the following sequence of action
           a. Update its logical global time as follows: ∀k∈adj(i), T ik ←max(T ik ,T jk )   
               

       FIG. 3  depicts an execution of the broadcast algorithm without any failed or lost message. We do not specify the broadcast algorithm (deterministic or probabilistic) and we do not provide a definition for neighbour nodes. We assume that nodes 1, 2, and 3 are all adjacent nodes, i.e. (2,3)∈adj(1), (1,3)∈adj(2), and (1, 2)∈adj(3). Node 1 generates first message (m 1 ,T 1 ) sends it randomly or deterministically according to the chosen broadcast algorithm to nodes 2 and 3. Node 3, triggered by message (m 1 ,T 1 ) from node 1 generates a new second message (m 2 ,T 3 ) and sends that the nodes 1 and 2. Node 1, triggered by message (m 2 ,T 3 ) from node 3 generates a new third message (m 3 ,T 1 )) and sends that to nodes 2 and 3. 
     Significantly, by the time node 2 receives the second message (m 2 ,T 3 ) from node 3, node 2 has already received (m 3 ,T 1 ) from node 1. Node 2 knows the order of these messages from the methodology outlined above. Hence, node 2 discards the second message (m 2 ,T 3 ) and makes use of the third message, (m 3 ,T 1 ) guaranteeing the integrity of the message contents. 
     Constructing the Updated Topography 
     Having detected changes and having ensured the correct ordering of those changes at nodes, the manner in which a node establishes the new topography is discussed below. 
     The following algorithm is used by each node i to construct its main topology view V i . We refer to the single bidirectional link between nodes m and n as either l mn  or l nm . Each entry in the topology table V i  is a link l mn  or l nm . Links can take on one of two values 1 or ∞. When a link is operational the value is set to 1. When the link is dead the value is set to co. 
     Upon receiving a message m={V j ,T j } from node j at a given time, node uses it to update its global view V i . 
     Let link l mn  be a link in both global views, V i ∪V j . The information about links l mn  is updated due to the received V j , if the time stamp T j [t j ]&gt;T i [t j ]. The newer status for link l mn  is taken. 
     Let l pq  be a link in V j  that is not presently a link in V i . The information about link l pq  is added to the global view V i , if the distance between the nodes i and q is lower than the value for the adjacent nodes, horizon H. That is l ij +l jp     1   +l p     1     p     2   + . . . +l p     n     p +l pq &lt;H where l ij , l jp     1   , l p     1     p     2   , . . . , l p     n     p  are every active link of V i    
     Hence changes in a link&#39;s operational status are updated, links returning to operational status are added and new links appearing in the network are added. When a link returns to the network or a new link is added to the network, the topology algorithm ensures that it is provided with a copy of the up to date topology table. 
     The above consideration forms the communication rules, namely:
         1. When a link status entry in a node&#39;s main topology table changes, a message containing the new topology table is sent to the neighbour nodes.   2. When the link protocol at a node detects that an adjacent link has become operational, the node transmits its entire main topology table over that link.       

     An example of suitable code for the protocol is: 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                  1: 
                 for every V j  received do 
               
            
           
           
               
               
            
               
                  2: 
                 begin 
               
            
           
           
               
               
            
               
                  3: 
                 if T j [t j ] &gt; T i [t j ] then 
               
            
           
           
               
               
            
               
                  4: 
                 begin 
               
            
           
           
               
               
            
               
                  5: 
                 T i [t j ] = T j [t j ] 
               
               
                  6: 
                 for every link l mn  ∈ V i  ∪ V j  do 
               
            
           
           
               
               
            
               
                  7: 
                 begin 
               
            
           
           
               
               
            
               
                  8: 
                 V i [l mn ] = V j [l mn ] 
               
            
           
           
               
               
            
               
                  9: 
                 end 
               
               
                 10: 
                 for every link l mn  ∈ V j  and l mn  ∉ V i  do 
               
            
           
           
               
               
            
               
                 11: 
                 begin 
               
            
           
           
               
               
            
               
                 12: 
                 if V i [l ij ] + V i [l jp     1   ] + ... + V i [l p     n     m ] 
               
               
                   
                 + V j [l mn ] &lt; H then 
               
            
           
           
               
               
            
               
                 13: 
                 begin 
               
            
           
           
               
               
            
               
                 14: 
                 V i [l mn ] = V j [l mn ] 
               
            
           
           
               
               
            
               
                 15: 
                 end 
               
            
           
           
               
               
            
               
                 16: 
                 end 
               
            
           
           
               
               
            
               
                 17: 
                 end 
               
            
           
           
               
               
            
               
                 18: 
                 end 
               
               
                   
               
            
           
         
       
     
     A worked example of the topology updating algorithm is now described with reference to the network in  FIG. 4 . 
     We assume r adj =1 and H=2. Hence, relative to node 1, nodes 2 and 3 are adjacent nodes and nodes 4 and 5 are neighbouring nodes. 
     At the initial stage, the topological views of nodes 1, 2 and 3, i∈(1,2,3), are: 
     
       
         
           
             
               
                 V 
                 1 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           13 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           34 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 V 
                 2 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           23 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 V 
                 3 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           13 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           23 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           34 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           45 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
           
         
       
     
     As a consequence, node 3 has a main topology view which is more informed and complete than nodes 1 and 2. 
     Referring back to the method of ordering messages detailing changes, the logical clocks T i  are: 
                 T   1     =     (             t   1     =   1                 t   2     =   1                 t   3     =   1           )       ,       T   2     =     (             t   1     =   0                 t   2     =   0                 t   3     =   0           )       ,       T   3     =     (             t   1     =   0                 t   2     =   0                 t   3     =   0                 t   4     =   0           )             
Phase 1:
 
     Node 3 sends the first message m 1 ={V 3 ,T 3 [t 3 ]=1} to node 1 and node 2. 
     Phase 2: 
     Nodes 1 and 2, that is i∈(1,2), checks if T 3 [t 3 ]&gt;T i [t 3 ]. As the first message this is the case and so nodes 1 and 2, that is nodes it, update their logical clock T i  and their view V i . In practice this means the addition to V 1  of l 23  as that link was previously unknown to node 1. Whilst link l 45  was also unknown to node 1, V 1  is not updated to include link l 45  as that link is outside of the allowable neighbour node limit; l 13 +l 34 +l 45 &gt;H. The resulting updates to T and V for nodes 1 and 2 are: 
     
       
         
           
             
               
                 T 
                 1 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           t 
                           1 
                         
                         = 
                         0 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           2 
                         
                         = 
                         0 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           3 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 T 
                 2 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           t 
                           1 
                         
                         = 
                         0 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           2 
                         
                         = 
                         0 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           3 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 V 
                 1 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           13 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           23 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           34 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 V 
                 2 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           13 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           23 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           34 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
           
         
       
     
     If node 1 sends a similar message m 2 ={V 1 ,T 1 [t 1 ]=1} to node 2, then node 2 updates its logical clock: 
     
       
         
           
             
               T 
               2 
             
             = 
             
               ( 
               
                 
                   
                     
                       
                         t 
                         1 
                       
                       = 
                       1 
                     
                   
                 
                 
                   
                     
                       
                         t 
                         2 
                       
                       = 
                       0 
                     
                   
                 
                 
                   
                     
                       
                         t 
                         3 
                       
                       = 
                       1 
                     
                   
                 
               
               ) 
             
           
         
       
     
     The topological view V 2  for node 2 is unchanged as it already knows about links l 12 , l 13 , l 23  and l 34 . As there is no change in V 2  node 2 does not broadcast a new message. 
     Phase 3: 
     The link (edge) l 34  is now dead. Node 3 detects this change due to a lack of test message from node 4. As a consequence, node 3 updates the view to include that operational status for l 34 . The updated view is: 
     
       
         
           
             
               V 
               3 
             
             = 
             
               ( 
               
                 
                   
                     
                       
                         l 
                         13 
                       
                       = 
                       1 
                     
                   
                 
                 
                   
                     
                       
                         l 
                         23 
                       
                       = 
                       1 
                     
                   
                 
                 
                   
                     
                       
                         l 
                         12 
                       
                       = 
                       1 
                     
                   
                 
                 
                   
                     
                       
                         l 
                         34 
                       
                       = 
                       ∞ 
                     
                   
                 
                 
                   
                     
                       
                         l 
                         45 
                       
                       = 
                       1 
                     
                   
                 
               
               ) 
             
           
         
       
     
     Node 3, because there is a change, sends a new message m 3 ={V 3 ,T 3 [t 3 ]=2} to node 1 and node 2. In this example we are assuming that m, does not reach node 2 (or has not yet reached node 2). 
     Phase 4: 
     Node 1 updates its logical clock T 1  and its view V 1  having performed the checks outlined above. This gives: 
                 T   1     =     (             t   1     =   1                 t   2     =   0                 t   3     =   2           )       ,       V   1     =     (             l   12     =   1                 l   13     =   1                 l   23     =   1                 l   34     =   ∞           )             
Phase 5:
 
     Node 1 acts promptly and sends the message m 4 ={V 1 ,T 1 [t 1 ]=2}. 
     Phase 6: 
     On receiving message m 4 , node 2 performs the mentioned checks and then node 2 updates T 2  and V 2  accordingly 
     
       
         
           
             
               
                 T 
                 2 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           t 
                           1 
                         
                         = 
                         2 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           2 
                         
                         = 
                         0 
                       
                     
                   
                   
                     
                       
                         
                           t 
                           3 
                         
                         = 
                         1 
                       
                     
                   
                 
                 ) 
               
             
             , 
             
               
                 V 
                 2 
               
               = 
               
                 ( 
                 
                   
                     
                       
                         
                           l 
                           12 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           13 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           23 
                         
                         = 
                         1 
                       
                     
                   
                   
                     
                       
                         
                           l 
                           34 
                         
                         = 
                         ∞ 
                       
                     
                   
                 
                 ) 
               
             
           
         
       
     
     Further changes would be detected, messaged, ordered and updated in the same manner. 
     It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be capable of designing many alternative embodiments without departing from the scope of the invention as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the claims. The word “comprising” and “comprises”, and the like, does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. In the present specification, “comprises” means “includes or consists of” and “comprising” means “including or consisting of”. The singular reference of an element does not exclude the plural reference of such elements and vice-versa. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.