An XLattice node is a network component that can send and receive messages and has some (potentially shared) local store. The node has unique identifier and one or more addresses.
A node identifier, its nodeID, is a 160-bit number chosen by a crypto-strength random number generator. While it is theoretically possible for two nodes to have the same nodeID, it is not likely that this will occur within the lifetime of the universe.
A node's address is one at which it can be reached through an overlay to which the node is connected. This might be, or might contain, an Internet Protocol (IP) address and port number.
An XLattice network is built from nodes of various types. The most fundamental type is a client which connects a user to one or more lattices, networks. The client may either create its own network (lattice) or may join an existing one. The first time that it joins a lattice it must get a node ID from the network's authentication servers.
|client||1:N||connects a single user to the network|
|server||N:1 or N:M||maintains persistent shared storage for a group of nodes; such servers may be replicated|
|consensus||N:1, M:M||a specialized server, one of a cluster, the M members of which authenticate decisions by voting among themselves using Byzantine protocols|
|broker||N:N||routes messages according to network policy, possibly doing protocol translation|
|filter||1:1||filters messages according to local policy|
Nodes vs Platforms
Nothing prohibits there being several types of node on one platform. It is expected that some XLattice resources will be more permanent and widely shared, and that some smaller and more transient groups of users will organize themselves into small groups (lattices). In such small groups the server nodes supporting persistence and certifying identities would run on user machines.