MEDIACHAIN

(a technical overview)

The State Of

Network Layout

  • Content Addressed
  • CBOR serialized
  • libp2p is Great

All objects are IPFS + IPLD objects

Data Objects

{
  "chain": {
    "@link": "QmfW62qzegxSRiht8MXmVhryWAF3MicsFpsk3hUF5MewPR"
  },
  "meta": {
    "translator": "GettyTranslator/0.1",
    "translated_at": "2016-06-30T20:05:05.100507",
    "raw_ref": {
      "@link": "QmNpndJVVS79PyavnLbpaD9BgLBF5akv9NQR7PPjXBKo6D"
    },
    "data": {
      "artist": "Reg Speller",
      "title": "...",
        ...
      ],
      "date_created": "2005-09-01T00:00:00-07:00"
    },
...
}

Structure layer

• Strict structure

• All fields required

• Enforced by transactors

• Object links

Data Objects

{
  "chain": {
    "@link": "QmfW62qzegxSRiht8MXmVhryWAF3MicsFpsk3hUF5MewPR"
  },
  "meta": {
    "translator": "GettyTranslator/0.1",
    "translated_at": "2016-06-30T20:05:05.100507",
    "raw_ref": {
      "@link": "QmNpndJVVS79PyavnLbpaD9BgLBF5akv9NQR7PPjXBKo6D"
    },
    "data": {
      "artist": "Reg Speller",
      "title": "...",
        ...
      ],
      "date_created": "2005-09-01T00:00:00-07:00"
    },
...
}

Resource layer

• Defined structure

• Not visible to transactors

• Translation metadata

Data Objects

{
  "chain": {
    "@link": "QmfW62qzegxSRiht8MXmVhryWAF3MicsFpsk3hUF5MewPR"
  },
  "meta": {
    "translator": "GettyTranslator/0.1",
    "translated_at": "2016-06-30T20:05:05.100507",
    "raw_ref": {
      "@link": "QmNpndJVVS79PyavnLbpaD9BgLBF5akv9NQR7PPjXBKo6D"
    },
    "data": {
      "artist": "Reg Speller",
      "title": "...",
        ...
      ],
      "date_created": "2005-09-01T00:00:00-07:00"
    },
...
}

Content layer

• Loose structure

• All fields optional

• Derived/translated metadata

Schema (Structure Layer)

Schema (Resource Layer)


"translator": "GettyTranslator/0.1",
"translated_at": "2016-06-30T20:05:05.100507",
"raw_ref": {
    "@link": "QmNpndJVVS79PyavnLbpa..."
},
"data": {
    ...
}

Versioned translator

Resource Layer


"translator": "GettyTranslator/0.1",
"translated_at": "2016-06-30T20:05:05.100507",
"raw_ref": {
    "@link": "QmNpndJVVS79PyavnLbpa..."
},
"data": {
    ...
}

Date

Resource Layer


"translator": "GettyTranslator/0.1",
"translated_at": "2016-06-30T20:05:05.100507",
"raw_ref": {
    "@link": "QmNpndJVVS79PyavnLbpa..."
},
"data": {
    ...
}

Original raw bytes (on IPFS)

Resource Layer

Schema (Content Layer)

  • Lightweight meta-schema

Content Layer

 

  • Derived

 

  • Exact structure TBD
  • Publish data object to IPFS
  • Generate corresponding JournalEntry
  • Ping transactors with JournalEntry

Writing

Reading/Reconciliation

 

  • Retrieve chain
  • Statements accepted or rejected at read time
  • Temporal ordering matters only for self-overrides
  • Basically a fold

Big
Un
Knowns

Consensus

+ scaling

Consensus

  • Currently: Raft, federated
  • Paxos? (probably not)
  • Tendermint/PBFT
  • Stellar
  • PoW?

Scaling

  • Hierarchical scaling (DNS)
  • Keyspace sharding (Couch, CockroachDB)
  • Blockchain sharding (Ethereum)
  • Topic sharding

Identity

+ reputation

Schema Translation

+ normalization

Canonical Identifiers

+ "unmerges"

Ultimate goal:

an open, permissionless system that captures many (sometimes overlapping, sometimes conflicting)

views of the world

Thank you!

http://mediachain-slack.herokuapp.com

@mediachain_

@parkan

mediachain/mediachain

(with an underscore)

Mediachain: a technical overview

By Arkadiy Kukarkin

Mediachain: a technical overview

  • 1,691