close-circle
Close

The Wired

A project log for Metaverse Lab

Experiments with Decentralized VR/AR Infrastructure, Neural Networks, and 3D Internet.

alusion 04/19/2016 at 01:180 Comments

32c3: Gated Communities

UPDATE*** Visit the 32c3 WebVR gallery here: https://kool.website/32c3/

I periodically reflect back on my experience first time attending Europe's largest hacker conference. The Chaos Communication Congress is an annual four-day conference on technology, society and utopia and is going onto its 33rd year. I planned my trip in advance with the goal of participating in the congress with some amazing virtual art. The response was amazing and a very positive feeling to be amongst the most brilliant minds in the world. I made sure this experience is one I'll never forget.

During CCC I sampled various bits around the congress and created my own mini congress inside AVALON.

https://ipfs.io/ipfs/QmXwG57htZagbFUHdJsnyB9vuqkva2mfbFq4LiQhetKBq7/

Successful test with Pirateox GL-inets. AVALON nodes configured in a meshnet.

Congress inside the congress, multiple people can connect to the AVALON mesh network and congregate inside a private virtual world. You can use Avahi to browse for services that are being broadcast on the local network. The command-line tool can be used to see mesh connected nodes and their ipv6 address. With Janus, you can just open a portal to that room.

http://janusweb.metacade.com/#janus.url=https://ipfs.io/ipfs/QmXwG57htZagbFUHdJsnyB9vuqkva2mfbFq4LiQhetKBq7/


Interplanetary Scale

Using IPFS, we can build a global distributed supercomputer to upgrade the internet to a metaverse.

The goal of IPFS (InterPlanetary File System) is to connect all devices with the same system of files, like the web plus Git and Bittorrent. In some ways, this is similar to the original aims of the Web. It creates a P2P swarm that allows the exchange of IPFS objects that aims to make the web faster, safer, and more open.
https://hackaday.io/project/5077/log/18650-general-update

Issues with HTTP works that are not scaling with our uses of the network and our uses of the web in general. In terms of how websites store data on the internet, HTTP is quite brittle. We need protocol to reason how data moves and properties in links that you have to check integrity or cryptographic proofs.

The core problem with HTTP is that it's location addressed (IP address / domain name to access computers to server information you're requesting: problem when you can't access those resources). Short lifespan to websites and links become stale / broken. (Internet Archive has been trying to make backups, IPFS can make it more automatic).

IPFS enables websites that are completely distributed, do not have any origin, can run on client side browsers without any service to talk to.

Read this excellent comparison of HTTP versus IPFS here:
https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html

Quick Summary of IPFS

libp2p is the guts of the IPFS network

IPFS is a protocol:

IPFS is a filesystem:

IPFS is a web:

IPFS is modular:

IPFS uses crypto:

IPFS is p2p:

IPFS is a CDN:

IPFS has a name service:

Example Use Cases:

IPFS delivers speed which is important for having quality WebVR.

Ideally we will need a pubsub (publish subscribe) system in order to achieve milisecond resolution on the network. IPFS knows this: https://github.com/ipfs/notes/issues/64

Experiments

Gallery 1: http://janusweb.metacade.com/#janus.url=http://ipfs.io/ipfs/QmWr3KSK8U5xHK8eN76xJYZLxL2kYwt5gHE3uHisqeYF8Q/

IPFS used for hosting the Janus web app with functioning multiplayer support.

Comparing JanusVR (left) versus JanusWeb (right), need to fix the lighting of certain objects.

32c3: http://janusweb.metacade.com/#janus.url=https://ipfs.io/ipfs/QmXwG57htZagbFUHdJsnyB9vuqkva2mfbFq4LiQhetKBq7/

The total size of the room is < 100mb. It has been seeding for 3 months and loads very fast now.

JanusWeb rendering has some bugs such as the lack of alpha channels for GIFs and transparent images and duplicate textures seen in the background photospheres.

Gallery 2: http://janusweb.metacade.com/#janus.url=http://ipfs.io/ipfs/QmYVbaf1seCvuFveHZZKcEM3bfEJDZfa2cL6KTZFwAkxcG/stage1.html

Shader support is buggy right now, this Tango scan has the metallic gold color stuck by the disco light shader from Metaverse Party.

Running the entire JanusWeb app on IPFS

There were a number of steps I took to get here. I first had to import files janusweb.js janusweb.css from elation and media/ from elation and edit the index.html file to look something like this:

<!DOCTYPE html>
<html>
  <head>
    <title>JanusWeb</title>
    
    <link rel="stylesheet" type="text/css" href="janusweb.css" media="all" />
    <script src="janusweb.js"></script>
  </head>
  <body>
    <script>elation.janusweb.init()</script>
  </body>
</html>

There's also a config file one has to setup, although this step in the process is looking to be automated in the future. https://github.com/jbaicoianu/janusweb/blob/master/scripts/config.js

After configuration, you can ipfs add -r the directory and grab the last hash representing the root. I published the latest hash to my IPFS id. The IPNS system allows anyone tand choose to share thao store a reference to an IPFS hash under the namespace of your peerID ( hash of your public key ). This is an immutable ID meaning it won't change when you update it. View examples.

IPNS: /ipns/QmYqXsApqs4BwU1eLBDMjV9XYeP4XCgjZgw2UYrJh1GAK3/

So close. Next time this is updated I'll have it.


Links

Janus Art Galleries: http://imgur.com/a/s9ovA

Distributed, peer-to-peer chat application on IPFS called Orbit: https://github.com/haadcode/orbit

c-base created the most badass IPFS deaddrop.

https://github.com/c-base/ipfs-deaddrop

https://github.com/ipfs/ipfs/blob/master/README.md#who-designed-it

https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0#.26qm803nv

http://whatdoesthequantsay.com/2015/09/13/ipfs-introduction-by-example/

32c3 had a lot of cool talks, videos are freely available to public here: https://media.ccc.de/c/32c3

Discussions