SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Top 5 DeFi Applications
Top 5 DeFi ApplicationsTop 5 DeFi Applications
Top 5 DeFi Applications
101 Blockchains
 

Was ist angesagt? (20)

Understanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
Understanding Proof of Work (PoW) and Proof of Stake (PoS) AlgorithmsUnderstanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
Understanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
 
Redecentralizing the Web: IPFS and Filecoin
Redecentralizing the Web: IPFS and FilecoinRedecentralizing the Web: IPFS and Filecoin
Redecentralizing the Web: IPFS and Filecoin
 
Hyperledger
HyperledgerHyperledger
Hyperledger
 
Blockchaindev #1 - Ethereum Smart Contracts 101
Blockchaindev #1 - Ethereum Smart Contracts 101Blockchaindev #1 - Ethereum Smart Contracts 101
Blockchaindev #1 - Ethereum Smart Contracts 101
 
Introduction to Filecoin
Introduction to Filecoin   Introduction to Filecoin
Introduction to Filecoin
 
Hyperledger Fabric Architecture
Hyperledger Fabric ArchitectureHyperledger Fabric Architecture
Hyperledger Fabric Architecture
 
Hyperledger fabric 20180528
Hyperledger fabric 20180528Hyperledger fabric 20180528
Hyperledger fabric 20180528
 
Blockchain and Cryptocurrencies
Blockchain and CryptocurrenciesBlockchain and Cryptocurrencies
Blockchain and Cryptocurrencies
 
Smart Contract & Ethereum
Smart Contract & EthereumSmart Contract & Ethereum
Smart Contract & Ethereum
 
Ethereum-Cryptocurrency (All about Ethereum)
Ethereum-Cryptocurrency (All about Ethereum) Ethereum-Cryptocurrency (All about Ethereum)
Ethereum-Cryptocurrency (All about Ethereum)
 
Blockchain - HyperLedger Fabric
Blockchain - HyperLedger FabricBlockchain - HyperLedger Fabric
Blockchain - HyperLedger Fabric
 
Introduction to Ethereum
Introduction to EthereumIntroduction to Ethereum
Introduction to Ethereum
 
Blockchain Intro to Hyperledger Fabric
Blockchain Intro to Hyperledger Fabric Blockchain Intro to Hyperledger Fabric
Blockchain Intro to Hyperledger Fabric
 
Top 5 DeFi Applications
Top 5 DeFi ApplicationsTop 5 DeFi Applications
Top 5 DeFi Applications
 
Ethereum Blockchain with Smart contract and ERC20
Ethereum Blockchain with Smart contract and ERC20Ethereum Blockchain with Smart contract and ERC20
Ethereum Blockchain with Smart contract and ERC20
 
Ethereum (Blockchain Network)
Ethereum (Blockchain Network)Ethereum (Blockchain Network)
Ethereum (Blockchain Network)
 
Hyperledger Fabric Application Development 20190618
Hyperledger Fabric Application Development 20190618Hyperledger Fabric Application Development 20190618
Hyperledger Fabric Application Development 20190618
 
Presentation on Implementing Blockchain (IOTA) Technology into Smart Home
Presentation on Implementing Blockchain (IOTA) Technology into Smart HomePresentation on Implementing Blockchain (IOTA) Technology into Smart Home
Presentation on Implementing Blockchain (IOTA) Technology into Smart Home
 
Blockchain HyperLedger Fabric Internals - Clavent
Blockchain HyperLedger Fabric Internals - ClaventBlockchain HyperLedger Fabric Internals - Clavent
Blockchain HyperLedger Fabric Internals - Clavent
 
Hyperledger Overview - 20181024
Hyperledger Overview - 20181024Hyperledger Overview - 20181024
Hyperledger Overview - 20181024
 

Ähnlich wie 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
 

Ähnlich wie 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
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
 
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
 

Mehr von C4Media

Mehr von 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
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (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...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

Data Structures in and on IPFS