[Federated Network]

BlockOrg is ultimately a Programs Management tool. In this context, Programs is used in the logistical sense, all of the programs involved in organizing and running an organization, be that a work group, a corporation, or a community.

BlockOrg represents a suite of tools that work together to achieve this end. Various interfaces work for different functions, but at their core is an API that allows access to the database and blockchain. The BlockOrg network consists of Nodes that operate together to aggregate data, and achieve consensus when needed. Each node will consist of a database, and one or more blockchains.

For performance reasons, all interactions on the node will be committed to the database and then submitted to the appropriate blockchain. The Root Chain is the primary block chain and source of truth for the network. Everything that is stored permanently to the network will make its way to this chain, and will ultimately be aggregated to all nodes in the network.

The network is made up of clusters of nodes. Each of these clusters contains one or more Marshals, or trusted nodes that will coordinate consensus and aggregation of data within the cluster. The Marshals will answer to Generals. The General is a "central" node that acts as the voice of a cluster, communicating to the other clusters in the network. Access Nodes are the nodes that interact directly with applications, accepting data and generating blocks to offer up to the Marshals and Generals to add to the block chain.

[System Structure]

Based on the business logic of a given organization, a single node can potentially operate in all three roles. This allows for scenarios, when the network is young, where one or more clusters represent a single machine.

As implied above, the Root Chain can spawn branch chains. These branch chains may represent local or global chains intended for a specific purpose, such as a meeting, a chat room, or an election. The primary difference between a local and a global chain is that a global chain is aggregated to the entire network, while local chains stay within a specific cluster. When a global branch is spawned, an block is created on the Public Chain announcing the creation of the new chain, and information about the root block for the chain. When a branch chain is no longer needed, it is rolled into an archive, and that archive is added into a block announcing the end and/or results of the chain.

In accordance with the business logic of a given organization, or even simply the business logic of a given cluster, a cluster may maintain a local root chain. It will function much like the primary Root chain, but will deal with local interactions and chains instead of public ones. When a local chain is spawned or rolled up, it will be this chain where the information is recorded.

When a new cluster is created and added to the network, they will have the option to duplicate the entirety of the public Root chain and its branches, or simply the Root chain itself. This second option will still duplicate the archives containing the branches and their results, but will not have them in as easily navigable form.

** It is worth noting that as development proceeds, some of the terminology may change.