Building a more connected
world for creators.

Hello again!

Mediachain is a decentralized, open, and programmable media metadata library

Ethereum

Payments Logic

IPFS

Content retrieval

Mediachain

Content index

Decentralized Services Stack

Blockstack

Entity index

= White Pages

= Inventory

= Warehouse

= Cash Register

Motivation

Large Dataset Size (PB+ range)

High Cardinality (~1BN ingested)

Rich Structure

Can't store on-chain

Can't route through IPFS DHT

Can't store as dumb blobs or even bare IPLD

Motivation

Rich Structure

!!!

Better routing is possible

  • Related data tends to live together
  • Semi-hierarchical
“AC/DC — T.N.T.”  Elektra Records → Atlantic Records Group → Warner Music Group → RIAA → Music Industry

Better Content Routing

  • NOT the same as location addressing!
  • Still self-certifying, content-addressed under the hood
  • Permissionless if you want it to be

How do we accomplish this?

1. Identity

[~]% blockstack lookup arkadiy.id
{
    "profile": {
        "@type": "Person",
        "account": [
            {
                "@type": "Account",
                "identifier": "0cfe308259f0eb23d38fd7f274c18706ec52ce25",
                "service": "openbazaar"
            },
            {
                "@type": "Account",
                "identifier": "Qmefn9NSUDVXqM9fuGN93Up....",
                "service": "mediachain"
            },
            {
                "@type": "Account",
                "identifier": "parkan",
                "proofType": "http",
                "service": "twitter"
            }
            ...

Proofs transitively valid in Mediachain!

2. Namespaces!

(related to, but different from, Blockstack namespaces)

music.riaa.wmg.arg.elektra

(semantics/format *NOT FINAL*)

  • Not inherently valuable: folksonomy, not google adwords
  • Permissionless (universe.*) or governed

  • Permissions model can derive from underlying blockstack ns

2. Namespaces

[~]% blockstack lookup arkadiy.id
{
    "profile": {
        "@type": "Person",
        "account": [
           ...,
            {
                "@type": "Account",
                "identifier": "Qmefn9NSUDVXqM9fuGN93Up....",
                "service": "mediachain"
            },
            ...
        ],
        "mediachain": {
            "namespaces" : [
                "universe.dogs",
                "mediachainlabs"
                "music.warprecords"
            ]
        }
        ...

Putting it all together

  • mediachain directories listen for new peers announced through blockstack
  • valid namespace participation announces added to namespace:peerId mapping table
  • peerIds located through IPFS DHT
  • queries routed based on context

Putting it all together

podcasts.ethereum namespace + some smart contract magic = decentralized podcast marketplace

Mediachain Core: Curent Status


 

  • Golang and JS peers on top of libp2p

  • IPLD serialization (more or less)

  • multistream compatible ("mc" protocol), plays nice with IPFS

  • active now, 100MM+ routable objects from CC, museums, etc

Mediachain Core:

What Needs To Be Done


 

  • Finalize blockstack profile/ns semantics

  • Ditto for mediachain namespaces

  • blockstack server integration

  • IPFS Kad DHT peer lookup

Thanks!

@mediachain_

mediachain/concat

@parkan

arkadiy.id

mediachain/aleph

BONUS: Deploy

Copy of Mediachain: Blockstack ed. II

By Arkadiy Kukarkin

Copy of Mediachain: Blockstack ed. II

Presentation for Blockstack meetup 11/22/2016

  • 1,454