Post on 06-Jun-2020
Adam Uhlir
Full-stack dev
Studied distributed systems
Focus(ed) on Cloud
Following IPFS since 2017
Actively contributing to js-ipfs
Since 2018 expanded to DWeb
1 MB x 6 = 6 MB
30 requests
30 x 1 MB x 6 = 180 MB
Source: https://en.wikipedia.org/wiki/Internet_censorship_and_surveillance_by_country
Data retention ownership
Annual traffic of 3,3 ZB by 2021(1,2 EB in 2016; 120 PB in 2008)
Source: Cisco Visual Networking Index Report 2017
Peer-to-PeerHypermedia
Content-AddressableDistribution
Protocol
Peer-to-PeerHypermedia
Content-AddressableDistribution
Protocol
SFS DHT
#
#“Hello” → 09f7e02f1290be211da707a266f153b3
“hello” → e134ced312b3511d88943d57ccd70c83
http://www.example.com/cute/puppy.jpg Uniform Resource Locator (URL)
/ipfs/Qm34ced312b3511d88943d57ccd70c83Content Address Identifier (CID)
# Qm34ced31...
http://www.example.com/archives/index.html
Immutability Verification
Deduplication
Uniform Resource Locator (URL)
/ipfs/Qm34ced312b3511d88943d57ccd70c83Content Address Identifier (CID)
Merkle Tree/Links
hello.txt cat.jpg contract.doc dog.png
hash(hello.txt)
Hash A
hash(cat.jpg)
Hash B
hash(contract.doc)
Hash C
hash(dog.jpg)
Hash D
hash(A+B)
Hash AB
hash(C+D)
Hash CD
hash(AB+CD)
Hash ABCD
cute_dog.png
hash(cute_dog.jpg)
Hash D’
hash(C+D’)
Hash CD’
hash(AB+CD’)
Hash ABCD’
.├── big_file.js├── hello.txt└── my_dir ├── my_file.txt └── testing.txt
.
my_dir
testing.txtmy_file.txt
big_file.js hello.txt
Qm4jAk8km1QmZma94lk2
QmKj25hzp5
QmZma94lk2Qm4m291afx
Qm3qbWD
QmAcZt31f
Qm1u48FnZj
QmFjZ83íSfAD
.
my_dir
testing.txt
big_file.js
hello.txtmy_file.txt
Qm4jAk8km1
QmKj25hzp5
QmZma94lk2
Qm4m291afx
Qm3qbWD
Source: ConsenSys blog
/ipfs/Qm3qbWD/my_dir/testing.txt
How is the content found?Distributed Hash Table!
DHT
/ipfs/Qm34c...A
/ipfs/Qm34c...A231.142.154.214
231.142.154.214
BitSwap
Pinning
What about dynamic content?IPNS!
IPNS /ipns/<NodeId>/archives/index.html
IPFS /ipfs/QmZBuTfLH1LL/archives/index.html
Publickey
Privatekey
NodeId = hash(PubKey)
index.htmlPubKey/ipfs/QmZBuTfLH1LLSigned by PrivateKey
IPFS Object
IPNS /ipns/QmAjdsa241d/archives/index.html
Pub/Sub mechanism
Where does it fit in the world of Web?
DB → Blockchain / IPFS objects
Non-trusted execution→ Smart Contracts
Adoption plan
IPFS Gateway (gateway.ipfs.io)DNS TXT ‘dnslink’IPFS Companiongo-ipfs | js-ipfs
many others client libraries
DWeb Prague
meetup.com/dweb-prague
Thanks for listening!Questions?
adam@uhlir.devwww.uhlir.dev