SlideShare una empresa de Scribd logo
1 de 182
ipfs.io
@juanbenet
2015-11-17
DATASTRUCTURES
IN + ON
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
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
ÐΞVCON1
1. IPFS introduction
2. structs in IPFS
3. structs on IPFS
ÐΞVCON1
1. IPFS introduction
2. structs in IPFS
3. structs on IPFS
DISTRIBUTED
PERMANENT
MERKLE
THE WEB
2,387,990,609
2,387,990,609
477.6 PB
Disconnected / Offline
Ubiquitous Computing + IoT
Natural Disasters
surprise oppression censorship
Human Disasters
Data Control
Awful Security Model
NOT AUTHENTICATED
NOT ENCRYPTED
AT REST
PermanentDistributed Safer
SmarterOffline
Faster
a protocol to upgrade the web
a web of merkle-links
SFS
web
DHT+
web
DHT
SFS
routing
network
exchange
merkledag
naming
applications
The Stack
routing
network
exchange
IPLD
naming
applications
IPNS
Bitswap
Kad DHT mDNS
QUIC TCPuTP WebRTC WebSockets
Git ChatVLCEtherpad Bitcoin
CJDNS UDT
routing
network
exchange
IPLD
naming
applications
IPNSDNS Namecoin
Bitswap HTTPBitTorrent
Kad DHTChord mDNSGossip Delegated
FTP
TOR
QUIC TORTCPuTP WebRTC WebSockets
Git BitcoinVLCEtherpad
I2P
I2P
CJDNS UDT
Ethereum
EthNames
Chat
routing
network
exchange
merkldag
naming
applicationsThe Stack
Defining the Data
Moving the Data
Using the Data
IPLD
libp2p
IPNS
routing
network
exchange
merkldag
naming
applicationsThe Stack
Defining the Data
Moving the Data
Using the Data
IPLD
libp2p
IPNS
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
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
Transports
Discovery
Peer Routing
NAT Traversal
Content Routing
libp2p
Transports
Discovery
Peer Routing
NAT Traversal
Content Routing
libp2p
routing
network
exchange
merkldag
naming
applicationsThe Stack
Defining the Data
Moving the Data
Using the Data
IPLD
libp2p
IPNS
routing
network
exchange
merkledag
naming
applications
IPNSDNS Namecoin
Bitswap HTTPBitTorrent
Kad DHTChord mDNSGossip Delegated
FTP
TOR
QUIC TORTCPuTP WebRTC WebSockets
Git BitcoinVLCEtherpad Chat
I2P
I2P
CJDNS UDT
INTERNET
OF
DATA
routing
network
exchange
merkledag
naming
applications
IPNSDNS Namecoin
Bitswap HTTPBitTorrent
Kad DHTChord mDNSGossip Delegated
FTP
TOR
QUIC TORTCPuTP WebRTC WebSockets
Git BitcoinVLCEtherpad Chat
I2P
I2P
CJDNS UDT
INTERNET
OF
DATA STRUCTURES
WEB 2.0
WEB 3.0
bundled in FreeNAS
used by dozens of co’s/org’s
used to archive data of
a web of merkle-links
http://10.20.30.40/foo/bar/baz.png
location path
http://example.com/foo/bar/baz.png
http://10.20.30.40/foo/bar/baz.png
you
http://10.20.30.40/foo/bar/baz.png
10.20.30.40
you
HTTP
http://10.20.30.40/foo/bar/baz.png
location path
http://example.com/foo/bar/baz.png
QmW98pJrc6FZ6hash( ) ->
http://
location path
http://
/ipns/example.com/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
http://10.20.30.40/foo/bar/baz.png
10.20.30.40
you
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
HTTP
http://10.20.30.40/foo/bar/baz.png
10.20.30.40
you
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
IPFS
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
immutable
content addr
MERKLE LINK “URI”
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
immutable
content addr
MERKLE LINK
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
“URI”
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
key name
MAZIERES LINK
mutability
content addr
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
/ipns/example.com/foo/bar/baz.png
key name
dns name
/dns/example.com/foo/bar/baz.png
human readability
content addr
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
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
ÐΞVCON1
1. IPFS introduction
2. structs in IPFS
3. structs on IPFS
ÐΞ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
ÐΞ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
a web of merkle-links
cvs/svn
cvs/svn
cvs/svn
merkle tree
plan9: fossil + venti
a web of merkle-links
http://10.20.30.40/foo/bar/baz.png
10.20.30.40
you
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
IPFS
/ipns/example.com/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
foo
bar
baz.png
QmW98pJrc6FZ6
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
foo:HB
HB
HC
HD
bar:HC
baz.png:HDQmW98pJrc6FZ6
foo
bar
baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
foo:HB
HB
HC
HD
bar:HC
baz.png:HDQmW98pJrc6FZ6
foo
bar
baz.png
MERKLE LINK
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
immutable
content addr
MERKLE LINK “URI”
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
immutable
content addr
MERKLE LINK
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
“URI”
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ÐΞ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
a common hash-chain format
IPLD
for distributed data structures
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
content path
foo:HB
HB
HC
HD
bar:HC
baz.png:HDQmW98pJrc6FZ6
foo
bar
baz.png
MERKLE LINK
jbenet @ earth : ~ > ipfs add -r ~/demo/basic
added QmajFHHivh25Qb2cNbnnnEeUe1gDLHX9ta7hs2XKX1vazb basic/cat.jpg
added QmZ7uhHuR3zctKYgiyEntay5xreRyE9NtE8TDQSnxvkE2R basic/foo.jpg
added QmTz3oc4gdpRMKP2sdGUPZTAGRngqjsi99BPoztyP53JMM basic/test/bar
added QmTz3oc4gdpRMKP2sdGUPZTAGRngqjsi99BPoztyP53JMM basic/test/baz/b
added QmYNmQKp6SuaVrpgWRsPTgCQCnpxUYGq76YEKBXuj2N4H6 basic/test/baz/f
added QmX1ebVUtfY11ZCpVmqyE5mDoN62SpLd8eLPpg5GGV1ABt basic/test/baz
added QmYNmQKp6SuaVrpgWRsPTgCQCnpxUYGq76YEKBXuj2N4H6 basic/test/foo
added QmNtpA5TBNqHrKf3cLQ1AiUKXiE4JmUodbG5gXrajg8wdv basic/test
added QmWNj1pTSjbauDHpdyg5HQ26vYcNWnubg1JehmwAE9NnU9 basic/tree-in-cosmos.jpg
added QmbtJUxwLnQ1UF1E8xnjgcZsdGaDdztz7S6rg3rNYcGV9m basic/vm/Makefile
added QmTagEY4NYY8WZkfSWM2xpyH71J7z78Usz2QJRoDaaE8qJ basic/vm/disk.vdi
added QmeLW1ZJPDeLMp7WC4gWTkYvQyAMQECwSVsox3jWdvQpJ5 basic/vm/vbox
added QmbtJUxwLnQ1UF1E8xnjgcZsdGaDdztz7S6rg3rNYcGV9m basic/vm/vm/Makefile
added QmRXgisKJmSSii3UUTn9QqvhKoAAcyt7CqNbFFSpGamB9k basic/vm/vm/disk.vdi
added QmQjgMyaqgouThuGFkZQNNaJpa7QawR4P2yRv7N1Y2ffsE basic/vm/vm
added QmVu5LxhbDo866EmmFJF8zNNfdXvn35FjavhREHrfxWGuA basic/vm
added QmTToTPSAn4y9KRxueN8zHtNye7cupdFstVP3ChJKizpJv basic
jbenet @ earth : ~ > ipfs object get --enc=json QmTToTPSAn4y9KRxueN8zHtNye7cupdFstVP3ChJK
{
"Links": [
{
"Name": "cat.jpg",
"Hash": "QmajFHHivh25Qb2cNbnnnEeUe1gDLHX9ta7hs2XKX1vazb",
"Size": 139795
},
{
"Name": "foo.jpg",
"Hash": "QmZ7uhHuR3zctKYgiyEntay5xreRyE9NtE8TDQSnxvkE2R",
"Size": 1048832
},
{
"Name": "test",
"Hash": "QmNtpA5TBNqHrKf3cLQ1AiUKXiE4JmUodbG5gXrajg8wdv",
"Size": 277
},
{
"Name": "tree-in-cosmos.jpg",
jbenet @ earth : ~ > ipfs object get --enc=protobuf QmTToTPSAn4y9KRxueN8zHtNye7cupdFstVP3
1
" .̧,EfZ;!˄nlr8cat.jpg1
" ,JU>ttX^o)P>LHNfoo.jpg@-
"=D"YЯ
~_[}test<
" weoۡJ
C<H83Ctree-in-cosmos.jpg4-
" pP?ALuzG|Jbvm
IPLD
- merkle-links secure, immutable
- merkle-paths /ipfs/Qmabc…xyz/foo/bar.jpg
- universal nestable URIs
- serialization JSON, PB, XML, RLP
- canonical hashing safe
JSON
{
"username": "@VannevarBush",
"followers": [
"@FredTerman",
"@ClaudeShannon",
"@DougEngelbart",
...
]
}
JSON —> IPLD
{
"username": "@VannevarBush",
"followers": [
"@FredTerman",
"@ClaudeShannon",
"@DougEngelbart",
...
]
}
{
"username": "/ipfs/QmWxCC8BrWSUJR2AJQZu7TE
"followers": [
"/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn
"/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHd
"/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvE
...
]
}
JSON —> IPLD
{
"user": "14321431543254",
"followers": [
"76547653654363",
"85876587647564",
"53476458759856",
...
]
}
{
"user": "/ipfs/QmWxCC8BrWSUJR2AJQZu7TEniAa
"followers": [
"/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn
"/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHd
"/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvE
...
]
}
YML —> IPLD
---
username: @VannevarBush
followers:
- @FredTerman
- @ClaudeShannon
- @DougEngelbart
---
username: /ipfs/QmWxCC8BrWSUJR2AJQZu7TEniAa6
followers:
- /ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9
- /ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdt
- /ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEY
jbenet @ earth : ~ > ipld cat —-fmt json QmWxCC8BrWSUJR2AJQZu7TEniAa6ZinkDLB6zNwBdWTZkL
{
"username": "@VannevarBush"
"name": "Vannevar Bush"
}
Representing Objects
jbenet @ earth : ~ > ipld cat —-fmt json QmWxCC8BrWSUJR2AJQZu7TEniAa6ZinkDLB6zNwBdWTZkL
{
"username": "@VannevarBush"
"name": "Vannevar Bush"
}
jbenet @ earth : ~ > ipld cat —-fmt json QmZqLhjZiFsp7gz1BQ5oBaLY6JegUuKbHyVQY6jFK36KBW
{
"user": {"mlink": "/ipfs/QmWxCC8BrWSUJR2AJQZu7TEniAa6ZinkDLB6zNwBdWTZkL"},
"followers": [
{"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"},
{"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"},
{"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ"},
...
]
}
Representing Objects
jbenet @ earth : ~ > ipld cat —-fmt json QmZqLhjZiFsp7gz1BQ5oBaLY6JegUuKbHyVQY6jFK36KBW
{
"user": {"mlink": "/ipfs/QmWxCC8BrWSUJR2AJQZu7TEniAa6ZinkDLB6zNwBdWTZkL"},
"followers": [
{"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"},
{"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"},
{"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ"},
...
]
}
jbenet @ earth : ~ > ipld cat —-fmt json 
QmZqLhjZiFsp7gz1BQ5oBaLY6JegUuKbHyVQY6jFK36KBW/followers
[
{"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"},
{"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"},
{"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ"},
...
]
Merkle Path Traversals
jbenet @ earth : ~ > ipld cat —-fmt json 
QmZqLhjZiFsp7gz1BQ5oBaLY6JegUuKbHyVQY6jFK36KBW/followers
[
{"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"},
{"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"},
{"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ"},
...
]
jbenet @ earth : ~ > ipld cat —-fmt json 
QmZqLhjZiFsp7gz1BQ5oBaLY6JegUuKbHyVQY6jFK36KBW/followers/0
{
"username": "@FredTerman"
"name": "Fred Terman"
}
Merkle Path Traversals
jbenet @ earth : ~ > ipld cat —-fmt json $dir
{
"foo": {
"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"
"mode": "0755",
"owner": "jbenet"
},
"cat.jpg": {
"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"
"mode": "0644",
"owner": "jbenet"
},
"doge.jpg": {
"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ",
"mode": "0644",
"owner": "jbenet"
}
}
Link Properties
jbenet @ earth : ~ > ipld cat —-fmt json $dir
{
"foo": {
"mlink": "/ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj"
"mode": "0755",
"owner": "jbenet"
},
"cat.jpg": {
"mlink": "/ipfs/QmVDGZWUgo4beprgwcmppoaBXxSainGHdtBfhcXXqHUV5Y"
"mode": "0644",
"owner": "jbenet"
},
"doge.jpg": {
"mlink": "/ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ",
"mode": "0644",
"owner": "jbenet"
}
}
file systems - dir
jbenet @ earth : ~ > ipld cat —-fmt yml $gitcommit
---
tree: {mlink: e4647147e940e2fab134e7f3d8a40c2022cb36f3}
parents:
- {mlink: /ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj}
- {mlink: /ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ}
author:
mlink: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa
name: Juan Batiz-Benet
email: juan@benet.ai
time: "1435398707 -0700"
committer:
mlink: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa
name: Juan Batiz-Benet
email: juan@benet.ai
time: "1435398707 -0700"
message: "Merge pull request #7 from ipldnn(WIP) records + merkledag specs"
versioning data structures - git
WEB 3.0
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
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
Contract
LEGAL RECORDS
Signed Contract
signed by “Bill”
signed by “Joe”
Joe’s Legal Agreements
Secure Timestamp
ÐΞ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
DNS
is used for all
sorts of things
DNS
is used for all
sorts of things
type: A
sub: subdomain
value: 104.236.176.52
TTL: 180s
IPRS
is used for all
sorts of things
value: QmW98pJrc6FZ6
validity: _____________
key: QmYJPtosPTfoC
sig: Qme8K1jxR7GPG
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
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
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
ÐΞ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
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
key name
MAZIERES LINK
mutability
content addr
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
public
key
secret
key
QmW98pJrc6FZ6
public
key
QmW98pJrc6FZ6
secret
key
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
QmW98pJrc6FZ6
public
key
QmW98pJrc6FZ6
secret
key
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
signed by
QmYJPtosPTfoC
QmW98pJrc6FZ6
public
key
QmW98pJrc6FZ6
secret
key
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
signed by
QmYJPtosPTfoC
QmW98pJrc6FZ6
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.pngcontent addr
/ipns/jbenet.eth/foo/bar/baz.png
key name
human readability
/eth/jbenet/foo/bar/baz.png
eth name
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ÐΞ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
public
key
QmW98pJrc6FZ6
secret
key
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
signed by
QmYJPtosPTfoC
QmW98pJrc6FZ6
public
key
QmW98pJrc6FZ6
secret
key
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
QmYJPtosPTfoC
value: QmW98pJrc6FZ6
key: QmYJPtosPTfoC
validity: _____________
sig: Qme8K1jxR7GPG
IPRS Record
ÐΞ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
/ipns/QmYJPtosPTfoC/foo/bar/baz.png
/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
/ipns/example.com/foo/bar/baz.png
key name
dns name
/dns/example.com/foo/bar/baz.png
human readability
content addr
fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
jbenet @ earth : ~ > dig TXT ipfs.io
; <<>> DiG 9.8.3-P1 <<>> TXT ipfs.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37227
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ipfs.io. IN TXT
;; ANSWER SECTION:
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
;; Query time: 169 msec
;; SERVER: 209.244.0.3#53(209.244.0.3)
;; WHEN: Tue Nov 17 16:44:28 2015
;; MSG SIZE rcvd: 98
DNS Links
jbenet @ earth : ~ > dig TXT ipfs.io
; <<>> DiG 9.8.3-P1 <<>> TXT ipfs.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37227
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ipfs.io. IN TXT
;; ANSWER SECTION:
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
;; Query time: 169 msec
;; SERVER: 209.244.0.3#53(209.244.0.3)
;; WHEN: Tue Nov 17 16:44:28 2015
;; MSG SIZE rcvd: 98
DNS Links
jbenet @ earth : ~ > dig TXT ipfs.io
ipfs.io. 120 IN TXT "dnslink=/ipfs/QmTgNJEgQaCqRht9KSXNyZsCp2xpHZmBRms28NRMmtcERp"
DNS Links
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
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
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
∞
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
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
versioning data structures - git
jbenet @ earth : ~ > ipld cat —-fmt yml $gitcommit
---
tree: {mlink: e4647147e940e2fab134e7f3d8a40c2022cb36f3}
parents:
- {mlink: /ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj}
- {mlink: /ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ}
author:
mlink: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa
name: Juan Batiz-Benet
email: juan@benet.ai
time: "1435398707 -0700"
committer:
mlink: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa
name: Juan Batiz-Benet
email: juan@benet.ai
time: "1435398707 -0700"
message: "Merge pull request #7 from ipldnn(WIP) records + merkledag specs"
versioning data structures - git
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
unixfs: representing POSIX files
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
unixfs: representing POSIX files
unixfs: representing POSIX files
ÐΞVCON1
1. IPFS introduction
2. structs in IPFS
3. structs on IPFS
ÐΞ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
ÐΞ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
CRDTs: lattices as IPFS objects
CRDTs: lattices as IPFS objects
ÐΞ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
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
Keychain - cryptographic artifacts as IPFS objects
parent: QmPARENT1
key fmt: _____________
keydata: _____________
parent: QmPARENT2
key fmt: _____________
keydata: _____________
Keychain - cryptographic artifacts as IPFS objects
parent: QmPARENT1
key fmt: _____________
keydata: _____________
parent: QmPARENT2
key fmt: _____________
keydata: _____________
parent: 0
key fmt: _____________
keydata: _____________
Keychain - cryptographic artifacts as IPFS objects
for CA system
Keychain - cryptographic artifacts as IPFS objects
for Web of Trust
ÐΞ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
ÐΞ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
ÐΞ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
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
merkle-containers
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
ipfs.io
@juanbenet
2015-11-17
DATASTRUCTURES
IN + ON
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/data-
ipfs-ipld

Más contenido relacionado

La actualidad más candente

Accelerating Ceph with RDMA and NVMe-oF
Accelerating Ceph with RDMA and NVMe-oFAccelerating Ceph with RDMA and NVMe-oF
Accelerating Ceph with RDMA and NVMe-oF
inside-BigData.com
 

La actualidad más candente (20)

IPFS: A Whole New World
IPFS: A Whole New WorldIPFS: A Whole New World
IPFS: A Whole New World
 
Module: Content Routing in IPFS
Module: Content Routing in IPFSModule: Content Routing in IPFS
Module: Content Routing in IPFS
 
Deploying IPv6 on OpenStack
Deploying IPv6 on OpenStackDeploying IPv6 on OpenStack
Deploying IPv6 on OpenStack
 
IPFS introduction
IPFS introductionIPFS introduction
IPFS introduction
 
OpenSSL Basic Function Call Flow
OpenSSL Basic Function Call FlowOpenSSL Basic Function Call Flow
OpenSSL Basic Function Call Flow
 
Interconnecting Neutron and Network Operators' BGP VPNs
Interconnecting Neutron and Network Operators' BGP VPNsInterconnecting Neutron and Network Operators' BGP VPNs
Interconnecting Neutron and Network Operators' BGP VPNs
 
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpecОбеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpec
 
Boost Your Neo4j with User-Defined Procedures
Boost Your Neo4j with User-Defined ProceduresBoost Your Neo4j with User-Defined Procedures
Boost Your Neo4j with User-Defined Procedures
 
DPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet ProcessingDPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet Processing
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
 
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RCThe Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with Janus
 
Accelerating Ceph with RDMA and NVMe-oF
Accelerating Ceph with RDMA and NVMe-oFAccelerating Ceph with RDMA and NVMe-oF
Accelerating Ceph with RDMA and NVMe-oF
 
Cisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to LibfabricCisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to Libfabric
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPd
 
Dpdk performance
Dpdk performanceDpdk performance
Dpdk performance
 
BGP Update Source
BGP Update Source BGP Update Source
BGP Update Source
 

Similar a Data Structures in and on IPFS

June 2004 IPv6 – Hands on
June 2004 IPv6 – Hands on June 2004 IPv6 – Hands on
June 2004 IPv6 – Hands on
Videoguy
 
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
Alexandre Passant
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 

Similar a Data Structures in and on IPFS (20)

RDM#2- The Distributed Web
RDM#2- The Distributed WebRDM#2- The Distributed Web
RDM#2- The Distributed Web
 
ONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDXONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDX
 
How Netflix Directs 1/3rd of Internet Traffic
How Netflix Directs 1/3rd of Internet TrafficHow Netflix Directs 1/3rd of Internet Traffic
How Netflix Directs 1/3rd of Internet Traffic
 
June 2004 IPv6 – Hands on
June 2004 IPv6 – Hands on June 2004 IPv6 – Hands on
June 2004 IPv6 – Hands on
 
Upperside WebRTC conference - WebRTC intro
Upperside WebRTC conference - WebRTC introUpperside WebRTC conference - WebRTC intro
Upperside WebRTC conference - WebRTC intro
 
ORTC Library - Introduction
ORTC Library - IntroductionORTC Library - Introduction
ORTC Library - Introduction
 
Codeless pipelines with pulsar and flink
Codeless pipelines with pulsar and flinkCodeless pipelines with pulsar and flink
Codeless pipelines with pulsar and flink
 
Apache NiFi Crash Course Intro
Apache NiFi Crash Course IntroApache NiFi Crash Course Intro
Apache NiFi Crash Course Intro
 
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuffBuildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuff
 
WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)
 
Protocol Labs, David Dias, TADSummit 2018
Protocol Labs, David Dias, TADSummit 2018Protocol Labs, David Dias, TADSummit 2018
Protocol Labs, David Dias, TADSummit 2018
 
Update on IPv6 activity in CERNET2
Update on IPv6 activity in CERNET2Update on IPv6 activity in CERNET2
Update on IPv6 activity in CERNET2
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
Semwebbers, LODers, what PubSubHubbub can do for you (SemTech)
 
IBM Impact session Ed addison nuts and bolts ws
IBM Impact session Ed addison nuts and bolts wsIBM Impact session Ed addison nuts and bolts ws
IBM Impact session Ed addison nuts and bolts ws
 
Real time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafkaReal time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafka
 
ION Islamabad - Opening Remarks
ION Islamabad - Opening RemarksION Islamabad - Opening Remarks
ION Islamabad - Opening Remarks
 
Dataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San Jose
Dataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San JoseDataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San Jose
Dataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San Jose
 
Apache NiFi Crash Course - San Jose Hadoop Summit
Apache NiFi Crash Course - San Jose Hadoop SummitApache NiFi Crash Course - San Jose Hadoop Summit
Apache NiFi Crash Course - San Jose Hadoop Summit
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300
 

Más de C4Media

Más de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

Data Structures in and on IPFS