The internet of data structures (IoDS) is emerging as one of the most significant advancements in data within the last decade.
HTTP (the hypertext transfer protocol) is the foundation communication the World Wide Web. Hypertext is structured text that enables us to access content throughout the web, using logical links (hyperlinks) between nodes containing data. But what if HTTP was no longer needed? What if there was a better way to communicate and connect data. IPFS (interplanetary file system) is a globally distributed storage system. Content is addressable and shared through a peer-to-peer hypermedia distribution protocol.
URLs are out; hashes are in.
The movement from HTTP to IPFS
Previously, I described the IPFS storage model and the benefits for healthcare. Today, we’ll step a layer deeper into how the structure is designed and I’ll offer an introduction to the IPFS stack.
Where does IPFS fit into our existing infrastructure? How do you communicate the value of this technology and the application of business transformation? Those questions are exactly what we’ll be tackling.
HTTP uses hyperlinks that translate into locations to connect discrete objects and data sets. IPFS is like HTTP, but instead of using locations provided by a group of servers, IPFS uses a peer-to-peer network to share context using hash values or hashes. In IPFS, content is addressable using hashes, the hashed value of the content.
IPFS is a Merkle addressed transport protocol for distributed data structures. The IPFS stack breaks down into three general buckets, each offering particular value.
- Using the data: applications (the IPFS stack)
- Defining the data: naming, Merkle-DAG (IPNS, IPLD)
- Moving the data: exchanges, routing, network (Libp2p)
These three primary buckets further divide into five broad categories that compose the infrastructure stack.
- Applications: Etherpad, VLC, Git, Ethereum, Whisper
- Naming: DNS, IPNS, EthNames, Namecoin or IPLD
- Exchange: BitTorrent, Bitswap, FTP, HTTP
- Routing: Gossip, Chord, Kad DHT, mDNS, Delegated, I2P, TOR
- Network: CJDNS, UDT, uTP, WebRTC, QUIC, TCP, WebSockets, I2P, TOR
Accessing files on IPFS
It’s easier to understand IPFS if we frame it next to concepts we’re already familiar with, like DNS.
The below HTTP example shows a typical website URL for a company logo and the host name translated into an IP address using DNS. Next, the IPFS example offers a comparative example using the IPNS (interplanetary naming system) and IPFS working together. IPNS allows the storage of a reference to an IPFS hash under the namespace of your peerID (the hash of your public key). This IPFS hash references an addressable object in IPFS, using a hash value that points to a hash object linked to another hash object until your destination is found.
IPFS also achieves immutability by separating key management from file system security. The filenames contain public keys making them self-certifying pathnames. Public key hashes, resolve pointers that are signed with a private key to access content.
- http://peterbnichol.com/linktohash/logo.jpeg (domain name service)
- http://10.11.12.13/linktohash/logo.jpeg (IP address)
- /ipns/ReE45fRer5LR3/linktohash/logo.jpeg (InterPlanetary name service – optional)
- /ipfs/ReE78kGrd5KJ2/linktohash/logo.jpeg (hash address)
The process of linking by objects is similar to how inodes operate, except using hash values. An inode is a data structure on a file system that stores all the information about a file except its name and its actual data.
Posting content with IPFS
IPFS offers a unique approach to addressing and moving content within a network. If other peers were uninterested in your content, then the standard paid backup solutions (AWS, Azure, Swam) could be leveraged. Also, unlike other peer-to-peer distributed networks, IPFS only downloads explicitly required data. IPFS does not pull full copies of data.
Publishing content to IPFS is similar to publishing content through a private blockchain. It’s also possible to distribute content on IPFS and then remove yourself as a host who serves that content (remove the need for infrastructure?). Here is an example of posting data in an IPFS world:
- Create content
- Generate key names
- Sign content
- Distribute to peer-to-peer network
- Register key name and point to hash of public key
In theory, this process removes the need for locally owned and managed infrastructure. In practice, standard paid backup services may be required such as those listed above.
What will be impacted?
Any products, services or interactions that leverage storage or save data have the potential to be affected. This foundational technology layer will affect where data is stored (traditional databases to IPFS) and how data is accessed (URLs to hashes). Every platform that requires linked and encrypted communications has the potential to benefit from IPFS. Dapps and mobile applications will quietly shift to internet of data structures as scale and interoperability become increasingly critical.
Distributed denial-of-service (DDoS) attacks would be harder to execute on platforms running IPFS. HTTP routes static traffic to a central server, this decreases the attack surface, making targeted attacks more efficient. However, IPFS is a distributed storage system. By using IPFS and distributing the attack surface across peers, this makes conducting DDoS attacks significantly more difficult because content can be accessed through the distributed storage network.
Innovative leaders are learning about IPFS: what it is, where it impacts the organization and how it can be used to create a strategy to leverage this foundational technology.