Mediachain
Q1 2017 Tech Overview
DDEX RIN
???
Today
GRD
Mediachain
Data Model
[ISRC, ISWC, spotify URI, etc] =>
[statement, statement, statement]
["T-070.232.940-5", "USSM19902990", "spotify:track:1OOtq8tRnDM8kG2gqUPjAj"] =>
...
Statements
StatementMsg = {
id: string,
publisher: string,
namespace: string,
body: <metadata ref>,
timestamp: number,
signature: Buffer
};
- wrap metadata with crypto identity, ts, etc
- used to generate indexes
- can represent single item to multi-TB archive
Metadata Objects
- anything that's representable in JSON
- packed as CBOR/IPLD
- good at single statements, expandable to full graph representation
Schemas
- accept anything
- encourage semantically versioned schema specifications (w/validation)
- schema specs = first class objects
- snowplow/schema-guru, jsonschema, etc compatible
Schemas
- schema tag indexes ("give me stuff I understand")
- building up to translation
Namespaces
music.spotify.recordings
music.umg.interscope.suretone.compositions
music.sme.*
u.music.*
Namespaces
music.spotify.recordings
music.sme.*
}
cross-namespace query gives complete results
Reconciliaton
- Read-time (can be cached)
- Only include who you trust
- Conflicts flagged/surfaced
Updates
- Update events sent to PubSub
- CRDT/CALM style updates, no total ordering
- First class retractions
Integrity + Security
- Everything is signed + content addressed/self-certifying
- Can linearize + checkpoint journal into a blockchain for extra paranoia
IPFS+
- p2p app construction toolkit
- crypto-friendly
- wide support
Datastore
- metadata in RocksDB
- statements in SQLite
- 5000+ inserts/sec single node
- mostly 1:1 IPFS compatible
- can easily be HFile, haystack, etc
APIs
- REST
- aleph repl
- MCQL
APIs
SELECT FROM music.* WHERE 'wki:isrc' = 'USSM19902990'
music.spotify
music.sonybmg
SELECT FROM music.* WHERE 'wki:isrc' = 'USSM19902990'
music.spotify
music.sonybmg
SELECT FROM music.* WHERE 'wki:isrc' = 'USSM19902990'
mediachain-q1-2017-tech
By Arkadiy Kukarkin
mediachain-q1-2017-tech
- 1,489