32c3: Gated Communities
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.
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.
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.
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:
Quick Summary of IPFS
libp2p is the guts of the IPFS network
IPFS is a protocol:
- defines a content-addressed file system
- coordinates content delivery
- combines Kademlia + BitTorrent + Git
IPFS is a filesystem:
- has directories and files
- mountable filesystem (via FUSE)
IPFS is a web:
- can be used to view documents like the web
- files accessible via HTTP at http://ipfs.io/<path>
- browsers or extensions can learn to use ipfs:// directly
- hash-addressed content guarantees authenticity
IPFS is modular:
- connection layer over any network protocol
- routing layer
- uses a routing layer DHT (kademlia/coral)
- uses a path-based naming service
- uses bittorrent-inspired block exchange
IPFS uses crypto:
- cryptographic-hash content addressing
- block-level deduplication
- file integrity + versioning
- filesystem-level encryption + signing support
IPFS is p2p:
- worldwide peer-to-peer file transfers
- completely decentralized architecture
- no central point of failure
IPFS is a CDN:
- add a file to the filesystem locally, and it's now available to the world
- caching-friendly (content-hash naming)
- bittorrent-based bandwidth distribution
IPFS has a name service:
- IPNS, an SFS inspired name system
- global namespace based on PKI
- serves to build trust chains
- compatible with other NSes
- can map DNS, .onion, .bit, etc to IPNS
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
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.
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.
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.
So close. Next time this is updated I'll have it.
Janus Art Galleries: http://imgur.com/a/s9ovA
c-base created the most badass IPFS deaddrop.
32c3 had a lot of cool talks, videos are freely available to public here: https://media.ccc.de/c/32c3