The graph is the conceptual basis for web3 networks. A graph is a distributed representation of a state of affairs created by our interactions with each other. The graph is at once the outcome of these interactions and the source of truth about those states of affairs. The graph, properly constructed, is not merely a knowledge repository, but a perceptual system that draws on the individual experiences and contributions of each node. This informs not only what we learn, but how we learn.
The internet and the World Wide Web began as decentralized networks of interconnected servers and web sites. Over time, however, it came to be dominated by large platforms. What happened?
What happened was that the web needed an index. We each had our own list of bookmarks, but we couldn’t share and reconcile these lists. Subject categorization, originally thought of as the domain of academic libraries, was eventually delegated to services like Alta Vista and Yahoo, and indexing was replaced with the functionality of the first search engines.
It was also difficult to share other contents, things like articles, messages and journal entries. Programmers could build their own web sites, but most people couldn’t. So, we delegated this functionality as well. Web 2.0 was born and platforms began to host our content and manage our connections to other people.
This brings us to today. Because we can’t store and share our own data directly, even the simplest exchange requires an intermediary, a trusted platform, to hold our content and remember what we said to each other. Over time, however, this relationship has become strained.
Web3 is a response to this. It began as the idea that each of us should be able to manage and share our data directly with other people and has evolved into a specific set of protocols defining how such a structure could exist. It is an unfinished product, and still evolving.
The graph is the conceptual basis for web3 networks. It’s sometimes difficult to see this. Each domain defines the graph slightly differently, with an emphasis on different features, and with different names for each of the parts.
We don’t have to use a blockchain in order to use a distributed network. But as we’ll see later, the blockchain is an effort to answer a key question that comes up when using any sort of network technology: why should I believe anything I hear over the network?
But let’s not get ahead of ourselves. Again, there are different domains, different terminologies, and different areas of emphasis. The terms ‘graph’ and ‘network’, for example, essentially refer to the same thing, but with a difference in emphasis. I tend to use the word ‘graph’ when thinking of the formal properties of a network, and ‘network’ when thinking of the physical properties of a graph.
Some common networks:
- A social network (or social graph) which is made up of people (and sometimes bots pretending to be people) connected by relations of ‘friending’ or ‘following’ and interacting by means of ‘texting’ or ‘messaging’.
- A neural network, which is made up of neurons (or, in computers, artificial neurons), connected by means of axons or connections, interacting by means of ‘pings’ or ‘signals’
- A financial network, which is made up of accounts, which have ‘balances’ of various sizes, and which are connected through contracts and interact through transactions
- A semantical network (such as the Semantic Web), which is a collection of resources connected through an ontology and which interact through logical relations with each other.
In all of these, the core idea is the same. We have a set of entities (sometimes called nodes or vertices) that are in some way connected to each other (by means of links or edges or transactions or whatever you want to call the linkage and the interaction through the linkage).
Graphs, and especially dynamic graphs, have special properties, the results of which can be found in social network theory, in modern artificial intelligence, and in economic and political theory. A graph (or a network) is, importantly, a distributed representation of a state of affairs. There’s no specific place where the state of affairs is represented; is is spread out across the network.
In a social network, that state of affairs might be a community; in a neural network, it might be a concept; and in a financial network, it might be an economy; in a semantical network, it might be a representational state. A specific state of affairs - the current state of the economy, say - isn’t created and located in any specific space; the network itself as a whole contains that state.
In connectivism we have explored the idea of thinking of knowledge as a graph, and of learning as the growth and manipulation of a graph. A core proposition is that this state of affairs contained in the graph or network constitutes knowledge, and that learning is therefore the creation, development and traversal of the network that constitutes that knowledge. Yet the question can still be asked, what makes it knowledge?
In the Semantic Web, we are faced with a similar sort of question. What is the “source of truth” of a distributed representation in the Semantic Web? What grounds ontologies, or assertions of trust in the Web of Trust?
These are precisely the sort of questions that have led us to depend on platforms. The platform acts as the source of truth; the data is kept in a repository or store created by the platform and fed (or ‘crowdsourced’) by the community. The truth of the representational state is grounded in the authority of the platform, which becomes untrustworthy when there are competing platforms or when platforms are manipulated by bad actors.
Web3 ultimately represents a dissatisfaction with that solution, a (well-founded) distrust of platforms, and a desire for individual autonomy and accountability. The solution proposed by Web3 (or various versions of Web3) incorporates elements of identity, immutability and community.
These combine to create what might be thought of as a shared graph. Statements describing interactions between entities, or changes of the state of an entity, are chained together in an immutable hashgraph. This hashgraph is at once the outcome of the mechanisms created by Web3, and the source of truth for those mechanisms. (*)
The data structures we can build using these technologies have created a new type of content. One well-known example is BitCoin, which is based on the recording of transactions in a blockchain, which is essentially a has chain. Another example is the collection of updated versions of software stored in GitHub, which manages version control and software replication using DAGs. Attribution networks, conceptual networks, websites - all these can be represented using graphs.
The graph as a form of content can be contrasted with traditional narrative structures. A narrative is linear, perhaps threaded, beginning from a premise, state of affairs, or other truth, and leads logically and conceptually to a conclusion. None of this is true of a graph. The story, if there is any, is in the connections, in the links. The source of truth, is there is any, lies in how those links are created and maintained.
As repositories of knowledge, graphs enable the same data to be viewed from a variety of perspectives. Manipulations of and inferences from these data structures allow us to draw inferences and make new connections - drawing associations between similar entities, for example, or connecting entities associated through Nearest Neighbor (NN) functions. And as dynamic systems, changing and developing as a result of new input, graphs can form the basis for neural networks that can categorize, associate and recognize phenomena in the world.
In education, in news media, in history - we are drawn toward the idea of the narrative the single actor, the causal explanation, the conclusion or lesson to be drawn from an experience. “These historical narratives seduce you into thinking you really understand what’s going on and why things happened, but most of it is guessing people’s motives and their inner thoughts,” says Alex Rosenberg.
Representing the same set of states as a graph serves as a corrective to this tendency. It helps learners understand that each idea connects to another, and it’s not the individual idea that’s important, but rather how the entire graph grows and develops. It protects us from categorization errors and helps prevent things like confirmation bias. Showing connections rather than quantities enables us to see the complexity and interdependence of things.
Graphs and graph theory demonstrate in a concrete way how everything depends on something else, and helps us place our understanding of ourselves, or knowledge, and our work into a wider context. Hashgraphs take this a step further by illustrating fundamental knowledge-creation mechanisms such as cloning, forking, versioning and merging. These new mechanisms form the basis for learning (as opposed to, say, listening and reciting). These new skills become the new literacies.
And it changes our understanding of where this knowledge come from. A graph - and hence, knowledge - is not merely a representational system, but is rather a perceptual system, where the graph is not merely the repository, but a growing and dynamic entity shaped by - and shaping - the environment around itself. Thinking and perceiving are not two distinct states, but one and the same state. Remembering is a physical process based in experience. To learn about something is to experience that thing through all facets of perception - sensation, reflection, interactivity.
(*) A hashgraph is a mathematical construction. Take the description of an entity (any entity) and use that as the input to a hash function. The output is a string of characters unique to that description. So, for example:
The quick red fox ===>(function)===> %%#%#@@$42
The quick blue fox ===>(function)===> 54565^*&*&822
The quick red fox. ===>(function)===> $47**&*877^%2
The idea of the hash is that you can’t change even one character of the string without changing the hash. And a hash is a one-way function; you cannot figure out the value of the string based on the hash alone.
Now, take a second description of a state of affairs. String that together with the hash from the first description, and hash those together. Now the second has guarantees that you cannot change either the first or second string without changing the hash.
A chain created like this is called a Merkle chain. There are also Merkle trees, where branches contain hashes of the leaves, and trunks contain hashes of the branches. And there are Merkl graphs, where interactions and changes of state are recorded by adding to the graph (much th way the future doesn’t change the past, but instead, adds on to the past).
The directional acyclic graph (DAG) is an example of such a graph. In a DAG the links are directional - they point from one entity to another entity. And they are acyclical - they point from a previous state to a subsequent state. Thus a DAG is a permanent representation of a series of states in a network or graph through time. It’s like the entries in your bank statement - each entry depicts a specific event in time, and each description depends on all the previous descriptions.