This summer Fission attended IPFS Thing, a week-long gathering in Reykjavik, Iceland for the IPFS implementors community. During the event, CTO Brooklyn Zelenka gave a presentation on the Interplanetary Virtual Machine (IPVM). Here we'll break down how the IPVM could work and its benefits.

The Decentralized Web

First, let's begin with how the decentralized web is structured. In decentralized web architecture we use cryptographic hashing to represent data. We can then link to this data using content addressing. This is a shift from how the centralized web currently runs. That web is location-based. The decentralized web however, is content-based.

A CID, or Content Identifier, is a type of content addressing that includes both a cryptographic hash and a codec (used to encode and decode data). In other words, it identifies the data and provides a way to interpret it.

Think of a compiler that translates an interpreted language (EX: JavaScript) into a machine language (binary). CIDs work in a similar way except the process is built in.

Furthermore, If a CID can represent data, as well as a way to run that data, then in that case it can also be considered code. This concept is known as "code is data".

The IPVM Structure

When interacting with IPVM, there is a request and a response. That request is in the form of a CID. That CID is a combination of a content address for a program, and a content address for data. When we compute and receive a response, that response is also in the form of a CID.

IPVM Diagram

The Benefits

Once we recognize that code is data and understand the IPVM structure, we can enjoy not just the benefits of a decentralized system, but also work more efficiently.

We can use a distributed scheduler to decide who will run what operation.

We can use memoization to inform us if an operation has been run before so we can optimize our efforts and copy the CIDs of those outputs into our work, saving time and compute power.

We can use adaptive/hot spot optimazation and make popular operations faster by hardcoding frequently called arguments. There are so many possibilities!

You can learn more about IPVM by joining the IPVM community calls or viewing Brooklyn's full presentation and slides below.

IPVM Presentation Slides