MEDIACHAIN

An open data network for creative works

An increasingly centralized internet has stifled innovation 

                               and created problems for publishing, discovery, attribution, and monetization of media.

Platform network effects are impossible to compete with 

Creator identity divorced from works

Even open data still siloed

Solution: a protocol for publishing, discovering, and reusing media metadata

Participants make Statements about a work

Statements

by: Pablo Picasso
title: Bull
year: 1958

-Love, MoMA

can be derived from existing metadata through Translators

Statements

signed with the participant's keypair

Statements

walked to form a complete picture

Chain

title: Horse and Barge,
artist: David Cox

-Tate
title: Horse and Barge,
artist: ???,
year: 1820

-MoMA
title: Horse and Barge,
artist: David Cox,
year: 1820

anyone can contribute, but untrusted statements discarded at read time

Tree

title: Horse and Barge,
artist: David Cox

-Tate
title: Horse and Barge,
artist: ???,
year: 1820

-MoMA
title: Horse and Barge,
artist: David Cox,
year: 1820
title: I Like Cheese

-Donald Trump
  • Content Addressed
  • Self-certifying
  • libp2p is Great

All objects are IPFS + IPLD objects

Data Objects

{
 "type" : "entityUpdate"
 "chain" : { "@link": "QmeP3JJgXunsiVKZ4f...." }
 "entity" : { "@link": "Qmek3AJg4un1iQvZ41...." }
 "signatures" : <Signatures>
 "author" : { "@link": "QmbTcS3DuahG3npWb...." }
 "title" : "Horse and Barge"
  ... ; other metadata updates
}

ArtefactUpdateCell

Chain

Qm000... = Nil
QmCCC... = ArtefactCreationCell {
 "type" : "artefactCreatedBy"
 "chain" : {"@link" : Qm000...}
 "artefact" : {"@link" : QmBBB...}
 "entity" : {"@link" : QmAAA...}
 "signatures" : {...}
 }
QmIII... = ArtefactUpdateCell {
 "type" : "artefactUpdate"
 "chain" : {"@link" : "QmCCC..."}
 "artefact" : {"@link" : "QmBBB..."}
 "title" : "Time May Change Me"
 ...
 }

Journal

ChainEntry {
 "type"  : "update"
 "ref"   : {"@link" : "QmBBB..."}
 "chain" : {"@link" : "QmCCC..."}
 "chainPrevious": {"@link" : "Qm000..."}
 "timestamp" : "..."
 }
ChainEntry {
 "type"  : "update"
 "ref"   : {"@link" : "QmBBB..."}
 "chain" : {"@link" : "QmIII..."}
 "chainPrevious": {"@link" : "QmCCC..."}
 "timestamp" : "..."
 }

Only piece that needs quorum!

Full example at http://tiny.cc/mediachainExample

Network 

Transactor

Transactor

Transactor

Transactor

Quorum

Reader

Indexer

Writer

IPFS

IPFS

IPFS

Federated design

Raft consensus

Writing

1. Publish statement to IPFS

2. Send chain entry to a transactor

Done!

Reading

Reader nodes receive syndication

build internal representation

(official reader client: mediachain/L-SPACE uses OrientDB)

Entity {
 "type" : "entity"
 "name" : "Hellen Green"
 "keychain"  : {"@link" : "QmAAABBB..."}
 "platform" : "~cargocollective"
 "cargocollective_user" : "+hellengreen"
 "signatures" : {...}
}

Identity

???

???

???

Missing Piece

Critical for authorship + payments

blockstack id?

Key management???

RFC

http://tiny.cc/mediachainRFC

Thank you!

http://mediachain-slack.herokuapp.com

@mediachain_

@parkan

mediachain/mediachain

We're Hiring!

(with an underscore)

Mediachain: Blockstack ed.

By Arkadiy Kukarkin

Mediachain: Blockstack ed.

Presentation for Blockstack meetup 5/4/2016

  • 1,823