presented by:
[Hamid Salehian]
Development of HTTP was initiated by Tim Berners-Lee at CERN in 1989.
wikipedia
The average lifespan of a web page is 100 days before it's gone forever.
All trivial compared to interplanetary networking.
Me: 1 X 6 X 200 = 1.2G
200 X (7.1 Bilion Views) = 1400 Petabyte
Iran Internet Lockdown
Distributed
Permanent
Merkle
THE
WEB
IPFS (Juan Benet) =
BitTorrent (Bram Cohen) + Git (Linus Torvalds) + Kademlia (Petar Maymounkov, David Mazières)
IPFS was launched in an alpha version in February 2015,
IPFS is a protocol:
IPFS is a file system:
IPFS is a web:
IPFS is modular:
IPFS uses crypto:
IPFS is p2p:
IPFS is a CDN:
IPFS has a name service:
where is the data
https://apod.nasa.gov/apod/image/2101/Chandrafirstlight_0.jpg
https://129.164.179.22/apod/image/2101/Chandrafirstlight_0.jpg
129.164.179.22
who has the data?
7PLGEr7+dNEnooD9P8hQEAD+11KN8bkNhfbTTqtDT8Skh1mvuSzOHxL3edynRBR2qOmzMdVakVEa13ZiOO5vBQxXPtKHEF2dXfAoQe53eaKgmTDTXhexwA9mBBL1ZFeSzekZ5wWRJDbv0IwY4Lt1ijn0F619W/zrjcmfCWsIBss=
Qmbnu2zADtcd3zfV2mEDc66i39g6zJG9d4i7jEgstxhgCs
image
binary
digest
CID : content identifier
ipfs://qmbnu2zADtcd3zfV2mEDc66i39g6zJG9d4i7jEgstxhgCs
https://ipfs.io/ipfs/Qmbnu2zADtcd3zfV2mEDc66i39g6zJG9d4i7jEgstxhgCs
each node:
2 nodes start communicating:
libp2p is the product of a long, and arduous quest of understanding -- a deep dive into the internet's network stack, and plentiful peer-to-peer protocols from the past. Building large-scale peer-to-peer systems has been complex and difficult in the last 15 years, and libp2p is a way to fix that. It is a "network stack" -- a protocol suite -- that cleanly separates concerns, and enables sophisticated applications to only use the protocols they absolutely need, without giving up interoperability and upgradeability. libp2p grew out of IPFS, but it is built so that lots of people can use it, for lots of different projects.
The routing layer is based on a DHT
distributed system that provides a lookup service similar to a hash table: key-value pairs are stored in a DHT
any participating node can efficiently retrieve the value associated with a given key.
removed with minimum workaround re-distributing keys.
keys are unique identifiers that map to particular values, which in turn can be anything from addresses to documents, to arbitrary data.
When searching for some value, the algorithm needs to know the associated key and explores the network in several steps. Each step will find nodes that are closer to the key until the contacted node returns the value or no more closer nodes are found. This is very efficient: Like many other DHTs, Kademlia contacts only O(log(n)) nodes during the search out of a total of n nodes in the system.
wikipedia
Used by: Gnutella and BitTorrent, Anycast
Similarity:
• exchange of data (blocks) in IPFS is inspired by BitTorrent
• tit-for-tat strategy (if you don’t share, you won’t get)
• get rare pieces first
Difference:
• separate swarm for each file in BitTorrent, one swarm for all (BitSwap in IPFS)
IPFS: BitSwap
BitTorrent
and FILE
A Merkle tree is a binary tree where the parent contains the hash of the concatenation of the hashes of the two children. This explains the integrity property: any change in a data block results in a change of the root node. With just a little bit of meta-data (uncles and parents, which can be untrusted) and a trusted root node, we can verify the validity of the block.
IPLD (objects) consist of 2 components:
Data — blob of unstructured binary data of size < 256 kB.
Links — array of Link structures. These are links to other IPFS objects.
Every IPLD Link has 3 parts:
Hash — hash of the linked IPFS object
Size — the cumulative size of linked IPFS object, including following its links
Tim Berners-Lee has been working on for ages, and his new company, Solid, is building a business around it.
addressing remote filesystems using the following scheme
/sfs/<Location>:<HostID>
where Location is the server network address, and:
HostID = hash(public_key || Location)
SFS: Self-Certified FileSystems