Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1RJcfss.
Juan Batiz-Benet makes a short intro of IPFS (the InterPlanetary File System), a new hypermedia distribution protocol, addressed by content and identities. He also discusses the IPLD data model and example data structures (unixfs, keychain, post). Filmed at qconsf.com.
Juan Batiz-Benet is an Independent Scientist.
2. InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/data-ipfs-ipld
3. Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
33. routing
network
exchange Bitswap HTTPBitTorrent
Kad DHTChord mDNSGossip Delegated
FTP
TOR
QUIC TORTCPuTP WebRTC WebSockets I2P
I2P
CJDNS UDT
libp2p - a collection of peer-to-peer protocols
for finding peers, and connecting to them
for finding content, and transferring it
34. libp2p - a collection of peer-to-peer protocols
TCP uTP QUIC SCTP BLE TOR I2PTransports
mDNS
boot
strap
DNS
Kad
DHT
PEX PKIDiscovery
Peer Routing mDNS
Kad
DHT
DNS DVs
mDNS
pub
sub
Kad
DHT
Content Routing
STUN TURN
ICE
Kad
ICE
NAT
Traversal
60. has pki based
identity
connects
to others
can be run
as a server
or embedded
in apps
app
can get more
from peers
an IPFS node
can store part
of the dag
62. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
63. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
93. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
114. user: @juanbenet
name: Juan Benet
user: @daviddias
name: David Dias
@juanbenet
follows
@daviddias
user: @timbl
name: Tim Berners-Lee
@juanbenet
follows
@timbl
@juanbenet follows
WEBAPP DATA
115. AUTHENTICATED
WEBAPP DATA
user: @juanbenet
name: Juan Benet
user: @daviddias
name: David Dias
@juanbenet
follows
@daviddias
user: @timbl
name: Tim Berners-Lee
@juanbenet
follows
@timbl
@juanbenet follows
signed by @juanbenet
118. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
123. value: QmW98pJrc6FZ6
validity: _____________
key: QmYJPtosPTfoC
sig: Qme8K1jxR7GPG
IPRS
is used for all
sorts of things
Records
are just IPLD objects
that link to other objects
value
key
public key
used to sign
124. IPRS Validity
- App-specific value
- Timestamps + TTL
- Cryptographic Freshness
- Ancestry (hash chain)
IPRS
is used for all
sorts of things
value: QmW98pJrc6FZ6
validity: _____________
key: QmYJPtosPTfoC
sig: Qme8K1jxR7GPG
Records
are just IPLD objects
that link to other objects
125. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
133. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
136. ÐΞVCON1
2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
140. jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
141. jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
/ipns/ipfs.io/foo/bar/baz.png
dns name
/dns/ipfs.io/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.pngcontent addr
142. jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
/ipns/ipfs.io/foo/bar/baz.png
dns name
/dns/ipfs.io/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.pngcontent addr
∞
60s-5m
143. jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipns/QmYJPtosPTfoCht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
/ipns/ipfs.io/foo/bar/baz.png
dns name
/dns/ipfs.io/foo/bar/baz.png
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
key name
content addr
60s-5m
∞
144. jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipns/QmYJPtosPTfoCht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
/ipns/ipfs.io/foo/bar/baz.png
dns name
/dns/ipfs.io/foo/bar/baz.png
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
key name
content addr
∞
1ms-1s
60s-5m
145. 2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
148. 2. structs in IPFS
- Merkle DAGs and Merkle Links
- IPLD: JSON + Merkle-Links
- IPRS: Records
- Mazieres Links for Good
- IPNS: Key Addressing
- DNS and other Human Friendly Names
- Git Versioning with Commits
- unixfs: representing POSIX files
150. which link
to others
directories are
also dag nodes
files are dag nodes
BIG files may be
split into many
unixfs as a dag
unixfs: representing POSIX files
158. ÐΞVCON1
3. structs on IPFS
- unixfs: Files as you know them
- commit: Git style versioning
- CRDTs: sane mutable data
- keychain: PKI and crypto artifacts
- persona: identity management
- post: sane communication
- html: hey! websites!
- boards: forums, reddit, 4chan
- starship: containers at hyperspeed
- blockchains: interconnected
159. value: QmW98pJrc6FZ6
validity: _____________
key: QmYJPtosPTfoC
sig: Qme8K1jxR7GPG
IPRS
is used for all
sorts of things
Records
are just IPLD objects
that link to other objects
value
key
public key
used to sign