• Title: Advanced File Index (AFIX)
  • Author: [email protected]
  • Contributors:
  • Status: Draft
  • Updated: 1/10/2017

Abstract

AFIX is a collection of content which seeks to address the problem of finding content without relying on a centralized database. Traditionally, we have utilized centralized hubs to share and download content such as Twitter and Reddit for social media, Youtube for videos, TPB for files, etc. These centralized hubs have become target by those in power enforcing biased moderation to further an agenda. This system seeks eliminate the concentration and abuse of power by removing the ability to moderate content by a central authority.

Definitions

  • AFIX: Advanced File Index
  • IPFS: Interplanetary File System
  • Content: Any form of distributed media (files, thoughts/textual, etc.)
  • Gateway: A collection of specialized web based user interfaces used to navigate through AFIX
  • TxId: A reference to data within a blockchain (short for transaction identifier)
  • Metadata: Additional information which further describes the content

Specification

AFIX leverages the use of blockchain technology which creates an immutable ledger of information where in a collection of AFIXObject can be derived.

We define an AFIXObject as a JSON compliant object with the following format:

{  
   "layer": [String],
   "data": [String],
   "metadata": [Object|Null]
}
                        
The only standardly defined AFIXObject.layer type is “ipfs” where in AFIXObject.data must be a compliant IPFS file hash. Specialized user interfaces allow a user means to browse the database of AFIXObject and navigate through it no different then how a traditional website presents information to the user and effectively allows them to navigate through said website’s backend database.

Concept Reference

Within the Bitcoin protocol, there exists the script opcode OP_RETURN[3] where in arbitrary data can be embedded. A transaction with the txid txid1 is created, relayed and eventually included in a block block1 which contains a output with an OP_RETURN referencing the IPFS file hash ipfshash1.

When an observer sees block1 it also sees the specialized transaction output for txid1 with the data ipfshash1. Using ipfshash1 the observer then tries to download the corresponding file via the IPFS network. If successful, the downloaded content is validated using the specification. The downloaded content as per the specification should contain at least 3 fields, layer, data, and metadata. The observer then indexes the txid, layer, data, and metadata into a database which can later be queried against.

From this, each observer of the blockchain ends up with the same database of content which can be queried against no different than how a traditional website functions with the aid of specialized user interfaces.

Since each observer retains their own local copy, and the blockchain is immutable it is not feasibly possible for anyone to censor content as this would be akin to being able to censor a transaction on the blockchain.

Concept Implementation Reference (WIP)

Rationale

The use of a blockchain ensures that the database collection of AFIXObject retains the same censorship resistance and immutability that other transaction or operations on the blockchain has.

The use of IPFS is elected as the standard data storage layer type as it has a cohesive standard method of content distribution which natively integrates well into the web. This is in contrast to other data storage layer and reference models such as the Torrent protocol. Recently, there has been developments to bring Torrent to the web browser via WebTorrent[4], however adoption has been slow and is not quite at a production ready point.

The AFIXObject definition makes use of the JSON specification which has become a highly popularized format of data on the web by simply requiring a few key fields and data types to be adhered to. Since gateways are intended to be built using web frameworks, JSON goes directly hand in hand with this approach.

The decision for gateways or collections of user interfaces to be purely web based is made with the idea in mind of having public gateways that be accessed easily by thousands of users without the requirement of them needing to download to install anything. It has been shown[5], that such gateways by using a client’s computational power while they remain on said gateway is a viable alternative to forcing the user to experience potentially malicious ads. Should a user not want to give away their resources to 3rd party for ease of access, they can install and run their own local gateway rather than using a public one.

Notes

This document does not look to address in depth:

  • The type or details of the blockchain used by AFIX
  • The type of database used to store the collection of AFIXObject
  • Incentivized models to ensure content continues to be accessible on data storage layers
  • Incentivized models for allowing the public use of a gateway