SlideShare a Scribd company logo
Module:
Mutable Content
ResNetLab on Tour
a
CONTENT ADDRESSING CONTENT DISCOVERY
& ROUTING
CONTENT EXCHANGE
● Chunking
● Linking Chunks
in Merkle DAGs
● From Data to
Data Structures with IPLD
● Anatomy of the IPFS CID
● Routing & Provider
Records
● DHT-based Routing
● Gossip-based Routing
● Bitswap
● GraphSync
MUTABLE NAMES &
MESSAGE DELIVERY
● Dynamic Data
● IPNS
● PubSub
● CRDTs
IPFS Components
Agenda
➔ Motivation
➔ Messaging Layer
◆ IPFS/libp2p PubSub
◆ PubSub Routers (Floodsub & Gossipsub)
➔ Mutable Pointers
◆ Self-Certified Names (IPNS)
◆ IPNS over DHT, PubSub & DNS
➔ Type Systems for Distributed Applications
◆ Conflict Free Replicated Data Types (CRDT)
➔ Access Controls for Distributed Applications
◆ Cryptographic ACL / Capabilities System
➔ Examples of tools and libraries available in the ecosystem
Motivation
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
Enable Web 2.0 like
Rich Experiences
in the Web 3.0
Without mandating
centralized infrastructure
➔ IPFS gives us immutable identifiers (CIDs), however, Rich Web Apps need dynamic
content that changes rapidly
➔ Ability to create, edit and update existing data, from text to images, videos and so on.
➔ Propagating updates to other participants, created a shared view into the latest state
of a dataset
➔ Grant and revoke read and write permissions to data
➔ Support multiple interaction patterns, from one-to-many (e.g. Blog), many-to-many (e.g.
Social Networks) and many-to-one (e.g. RSS/feed subscriptions)
What is Mutable Content about?
Needed to support multiple classes of applications
OSI Layer System
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
OSI Layer System
libp2p
➔ Process Addressing
➔ End-to-End Connections
➔ End-to-End Encryption
➔ Reliability
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
Messaging Layer
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
Benefits
➔ Layer for distributing updates
➔ Message Oriented Comms -> Simple to program
➔ Support for different topologies -> Different types
of interaction patterns supported
➔ Loose Coupling -> Separation of Concerns
➔ Scalable -> Adapt as your network grows
A Messaging Layer supported by
P2P PubSub is key for supporting
different interaction patterns
Challenges
➔ Permission-less network -> can’t control who
join/leaves
➔ Network topology is bottom-up (e.g. brokerless)
➔ Network Churn
➔ Optimizations for Latency/Bandwidth/Delivery
Guarantees are about tradeoffs, not one-size fits all
➔ Topic based interface
➔ Design Goals
◆ Reliability: All messages get delivered to all peers
subscribed to the topic.
◆ Speed: Messages are delivered quickly.
◆ Efficiency: The network is not flooded with excess
copies of messages.
◆ Resilience: Peers can join and leave the network
without disrupting it. There is no central point of
failure.
◆ Scale: Topics can have enormous numbers of
subscribers and handle a large throughput of
messages.
◆ Simplicity: The system is simple to understand and
implement. Each peer only needs to remember a
small amount of state.
IPFS/libp2p PubSub
➔ Parameterizable
➔ Two main implementations
◆ FloodSub
◆ Gossipsub
➔ Design
◆ Simplest possible design
◆ Ambient Peer Discovery (e.g. IPFS Main Network’s DHT, MulticastDNS and
other systems)
◆ Routing is achieved by Flooding
➔ Pros
◆ Robust delivery guarantees, even in the presence of high
network churn
◆ Minimum latency delivery
➔ Cons
◆ Huge bandwidth overhead
(duplicate messages received)
◆ Unbounded degree flooding
(wasterful)
FloodSub
Time
FloodSub
➔ Simulation
◆ 100 peers
◆ 5 msg/s
◆ Run for 2s
◆ Time expansion 10x
for visualisation
➔ Bleeding edge P2P PubSub
➔ Design
◆ Self Stabilizing algorithm
◆ 2 Networks: Metadata (control plane) & Message (data plane)
◆ Nodes establish local meshes with reciprocal agreements on subscriptions
◆ Degree bounded by default to 6
◆ Nodes send Gossip with
● GRAFT & PRUNE to establish peering agreements
● Gossip about what messages have been delivered and seen
◆ Eager push/Lazy pull model
◆ Scoring function to reward benevolent peers and penalize bad behaving peers
◆ Support for protocol extensions
➔ Pros
◆ Resilient to Churn
◆ Resilient to Sybil, Eclipse & Spam Attacks
◆ Minimizes Bandwidth usage
➔ Cons
◆ For small networks, it doesn’t achieve the same minimum latency guarantees as
Floodsub
Gossipsub with
hardening extensions
➔ Simulation
◆ 100 peers
◆ 5 msg/s
◆ Run for 2s
◆ Time expansion 10x
for visualisation
Gossipsub with
hardening extensions
➔ Evaluation Performed with over 10 000 peers
➔ Demonstrated successfully how Gossipsub is resilient to a variety of attacks
➔ The implementation of Gossipsub and the code used for the evaluation is all Open Source
➔ Paper Publish with evaluation and Architecture
Evaluation Report & Paper
➔ Documents all known challenges & existing solutions
➔ Invitation for collaboration in solving the challenges at new lengths
Open Problem Statement
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Map (OSI Layer System)
Mutable Pointers
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
Goals
➔ No central central coordinator to distribute
updates
➔ Ability to certify that the updates originate
from the author
Decentralized updates are a
requirement for several use cases
Challenges
➔ Different expectations of delivery depending on
the application
➔ Scalability (# of nodes) and frequency
(# of updates)
➔ Self-Certified Naming
➔ Design
◆ Verifiability:
◆ Versatility: A name can point to one or more
immutable addresses
◆ Transport independent: Not be tied to a specific
method of distribution.
➔ Names (aka Pointers) are referenced by the
PublicKey of the signer vs. the Content of the
name
IPNS, the
InterPlanetary NameSystem
➔ Several implementations:
◆ IPNS over DHT
◆ IPNS over PubSub
◆ IPNS over DNS
◆ IPNS over ETH Domains
◆ IPNS over Namecoin (one of the first
implementations)
◆ IPNS over QRCodes? NFC? BLE Beacons?
Multiple possibilities
➔ Each name is a Public/Private Key Pair
➔ The Private Key is used to signed statements (aka records)
containing the state of the name
➔ The Public Key is used by clients for
◆ Discovering the new records published
◆ Certify the record update was indeed issued by the author
➔ Every time the owner of the name wants to issue an update, it
simply creates a new record, signs it and broadcasts it over
one of the selected transports (e.g DHT, PubSub, DNS, etc)
➔ Human Readable naming is enabled via a registrar. Examples:
◆ DNS some-domain.com -> TXT Record /ipns/Qm_CID of
Public Key.. -> /ipfs/Qm_CID of content
◆ UnstoppableDomains some-domain.crypto -> /ipns/Qm_CID
of Public Key.. -> /ipfs/Qm_CID of content
IPNS Architecture
➔ Documents all known challenges & existing solutions
➔ Invitation for collaboration in solving the challenges at new lengths
Open Problem Statements
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Map (OSI Layer System)
IPNS
➔ “A distributed system is one in which the failure of a computer you
didn't even know existed can render your own computer unusable.”
Leslie Lamport
➔ Synchronization errors happen
◆ Simultaneous Writers
◆ Propagation Delay
➔ Distributed Consensus is not a trivial problem
➔ There must be a better way! 💡
Mutable Pointers are not enough
for Distributed Applications
Type Systems for
Distributed Apps
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
Goals
➔ No need for central coordinator and avoid
central points of failure and/or chokepoints
(e.g. case for Operational Transforms)
➔ Support multiple times of collaboration
Convergent state and/or
Consensus over Distributed Data
Challenges
➔ Avoid resource intensive and slow constructions
(e.g. PBFT, Nakamoto Consensus, etc)
➔ Support Web scale
➔ Fast sync, Snapshotting and Garbage Collection
➔ Fairly new and large field of distributed
systems research
➔ Design
◆ Merge function is defined a priority and
distributed to all participants
◆ Independent of the order of the events received,
all participants will know how to merge the
events and converge on the same state
➔ CRDTs are not a one-size fits all data
structure, instead they are many data
structures that fit specific use cases:
◆ G-Set (Grow-only Set)
◆ 2P-Set (Two-Phase Set)
◆ LWW-Element-Set (Last-Write-Wins-Element-Set)
◆ OR-Set (Observed-Remove Set)
◆ Sequence/Ordered Set
◆ Many more..
Conflict-Free Replicated Data
Types (CRDTs)
➔ Pros
◆ Order of reception is not important, as long as the
events arrive
◆ Does not require any live interactivity with all
participants
◆ Can be used to build all sorts of applications, from
collaborative doc editors, chats and much more
➔ Cons
◆ Can generate a lot of non-trivially garbage collectable
objects for long running programs
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Map (OSI Layer System)
IPNS
CRDT
Access Controls for
Distributed Apps
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
Goals
➔ Grant and Remove access to data
➔ No need for central coordinator and avoid
central points of failure and/or chokepoints
(e.g. case for Operational Transforms)
➔ Support multiple times of collaboration
Access Controls
Challenges
➔ Avoid resource intensive and slow constructions
(e.g. PBFT, Nakamoto Consensus, etc) to agree
on the ACL
➔ Support Web scale
➔ Fast sync, Snapshotting and Garbage Collection
➔ Private collaborations over data in a Public Network
➔ Design
◆ Symmetric Keys give Read Access
● Only the ones with the key can decrypt and therefore
read
◆ Asymmetric Keys give Write Access
● Similar to how IPNS gives ownership of who is trusted to
updated the Record
➔ Pros
◆ Fine grain control of Read & Write Access
◆ Authorship is verifiable
◆ Does not require a centralized party for coordination
➔ Cons
◆ Require nodes to have a way to synchronize on the latest
state of ACL to ensure that only nodes allowed receive the
latest updates
Cryptographic ACLs
aka Capabilities Systems
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Map OSI Layer System onto DWeb Stack
IPNS
CRDT Cryptographic ACL
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Map OSI Layer System onto DWeb Stack
IPNS
CRDT Cryptographic ACL
➔ Open Source Collaborative Text Editor
➔ IPNS to get the latest release the App
➔ IPFS to load the contents
➔ Public Key Pair & Symmetric Key at the URL
➔ CRDT to create the shared state
➔ PubSub to distribute messages
➔ Features
◆ Real-time collaboration
◆ Conflict-Free
PeerPad as an example of the
vertical integration
Available Tools &
Libraries
Motivation
Messaging Layer
Mutable Pointers
Type Systems for
Distributed Apps
Access Controls for
Distributed Apps
Mutable Content
Tools & Libraries
libp2p
Application Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
PubSub
Open Source Libraries & Tools Available
IPNS
CRDT Cryptographic ACL
Thank you for watching
Reach out in case you have questions or comments!
resnetlab@protocol.ai https://github.com/protocol/ResNetLab/discussions

More Related Content

What's hot

Zookeeper 활용 nifi clustering
Zookeeper 활용 nifi clusteringZookeeper 활용 nifi clustering
Zookeeper 활용 nifi clustering
NoahKIM36
 
Query and audit logging in cassandra
Query and audit logging in cassandraQuery and audit logging in cassandra
Query and audit logging in cassandra
Vinay Kumar Chella
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Edureka!
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
Christian Johannsen
 
IPFS: The Permanent Web
IPFS: The Permanent WebIPFS: The Permanent Web
IPFS: The Permanent Web
Sivachandran Paramsivam
 
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical ApproachSlides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
DATAVERSITY
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basics
nickmbailey
 
Working With a Real-World Dataset in Neo4j: Import and Modeling
Working With a Real-World Dataset in Neo4j: Import and ModelingWorking With a Real-World Dataset in Neo4j: Import and Modeling
Working With a Real-World Dataset in Neo4j: Import and Modeling
Neo4j
 
High throughput data replication over RAFT
High throughput data replication over RAFTHigh throughput data replication over RAFT
High throughput data replication over RAFT
DataWorks Summit
 
Ceph Block Devices: A Deep Dive
Ceph Block Devices:  A Deep DiveCeph Block Devices:  A Deep Dive
Ceph Block Devices: A Deep Dive
Red_Hat_Storage
 
Inside the InfluxDB storage engine
Inside the InfluxDB storage engineInside the InfluxDB storage engine
Inside the InfluxDB storage engine
InfluxData
 
Module: the modular p2 p networking stack
Module: the modular p2 p networking stack Module: the modular p2 p networking stack
Module: the modular p2 p networking stack
Ioannis Psaras
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101
KubeAcademy
 
Ceph Introduction 2017
Ceph Introduction 2017  Ceph Introduction 2017
Ceph Introduction 2017
Karan Singh
 
What's New in Apache Hive
What's New in Apache HiveWhat's New in Apache Hive
What's New in Apache Hive
DataWorks Summit
 
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Zalando Technology
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Model
ebenhewitt
 
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRestPGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overview
PritamKathar
 
Scaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on KubernetesScaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on Kubernetes
Databricks
 

What's hot (20)

Zookeeper 활용 nifi clustering
Zookeeper 활용 nifi clusteringZookeeper 활용 nifi clustering
Zookeeper 활용 nifi clustering
 
Query and audit logging in cassandra
Query and audit logging in cassandraQuery and audit logging in cassandra
Query and audit logging in cassandra
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
 
IPFS: The Permanent Web
IPFS: The Permanent WebIPFS: The Permanent Web
IPFS: The Permanent Web
 
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical ApproachSlides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basics
 
Working With a Real-World Dataset in Neo4j: Import and Modeling
Working With a Real-World Dataset in Neo4j: Import and ModelingWorking With a Real-World Dataset in Neo4j: Import and Modeling
Working With a Real-World Dataset in Neo4j: Import and Modeling
 
High throughput data replication over RAFT
High throughput data replication over RAFTHigh throughput data replication over RAFT
High throughput data replication over RAFT
 
Ceph Block Devices: A Deep Dive
Ceph Block Devices:  A Deep DiveCeph Block Devices:  A Deep Dive
Ceph Block Devices: A Deep Dive
 
Inside the InfluxDB storage engine
Inside the InfluxDB storage engineInside the InfluxDB storage engine
Inside the InfluxDB storage engine
 
Module: the modular p2 p networking stack
Module: the modular p2 p networking stack Module: the modular p2 p networking stack
Module: the modular p2 p networking stack
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101
 
Ceph Introduction 2017
Ceph Introduction 2017  Ceph Introduction 2017
Ceph Introduction 2017
 
What's New in Apache Hive
What's New in Apache HiveWhat's New in Apache Hive
What's New in Apache Hive
 
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Model
 
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRestPGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overview
 
Scaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on KubernetesScaling your Data Pipelines with Apache Spark on Kubernetes
Scaling your Data Pipelines with Apache Spark on Kubernetes
 

Similar to Module: Mutable Content in IPFS

Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?
Anton Nazaruk
 
Everything you always wanted to know about Distributed databases, at devoxx l...
Everything you always wanted to know about Distributed databases, at devoxx l...Everything you always wanted to know about Distributed databases, at devoxx l...
Everything you always wanted to know about Distributed databases, at devoxx l...
javier ramirez
 
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre ZembBuilding a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
StreamNative
 
The Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
The Open Source and Cloud Part of Oracle Big Data Cloud Service for BeginnersThe Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
The Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
Edelweiss Kammermann
 
Glusterfs and openstack
Glusterfs  and openstackGlusterfs  and openstack
Glusterfs and openstackopenstackindia
 
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
HostedbyConfluent
 
(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference
Timothy Spann
 
Music city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lakeMusic city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lake
Timothy Spann
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open source
Timothy Spann
 
Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?
ScyllaDB
 
Pacemaker+DRBD
Pacemaker+DRBDPacemaker+DRBD
Pacemaker+DRBDDan Frincu
 
Apache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-AriApache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-Ari
Demi Ben-Ari
 
Big data conference europe real-time streaming in any and all clouds, hybri...
Big data conference europe   real-time streaming in any and all clouds, hybri...Big data conference europe   real-time streaming in any and all clouds, hybri...
Big data conference europe real-time streaming in any and all clouds, hybri...
Timothy Spann
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
NATS
 
Lec+3-Introduction-to-Distributed-Systems.pdf
Lec+3-Introduction-to-Distributed-Systems.pdfLec+3-Introduction-to-Distributed-Systems.pdf
Lec+3-Introduction-to-Distributed-Systems.pdf
samaghorab
 
HPC Controls Future
HPC Controls FutureHPC Controls Future
HPC Controls Future
rcastain
 
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpStrimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
José Román Martín Gil
 
Hadoop Ecosystem and Low Latency Streaming Architecture
Hadoop Ecosystem and Low Latency Streaming ArchitectureHadoop Ecosystem and Low Latency Streaming Architecture
Hadoop Ecosystem and Low Latency Streaming Architecture
InSemble
 
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
Docker-Hanoi
 

Similar to Module: Mutable Content in IPFS (20)

Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?
 
Everything you always wanted to know about Distributed databases, at devoxx l...
Everything you always wanted to know about Distributed databases, at devoxx l...Everything you always wanted to know about Distributed databases, at devoxx l...
Everything you always wanted to know about Distributed databases, at devoxx l...
 
Cloud storage
Cloud storageCloud storage
Cloud storage
 
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre ZembBuilding a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
Building a Messaging Solutions for OVHcloud with Apache Pulsar_Pierre Zemb
 
The Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
The Open Source and Cloud Part of Oracle Big Data Cloud Service for BeginnersThe Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
The Open Source and Cloud Part of Oracle Big Data Cloud Service for Beginners
 
Glusterfs and openstack
Glusterfs  and openstackGlusterfs  and openstack
Glusterfs and openstack
 
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
 
(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference
 
Music city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lakeMusic city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lake
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open source
 
Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?
 
Pacemaker+DRBD
Pacemaker+DRBDPacemaker+DRBD
Pacemaker+DRBD
 
Apache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-AriApache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-Ari
 
Big data conference europe real-time streaming in any and all clouds, hybri...
Big data conference europe   real-time streaming in any and all clouds, hybri...Big data conference europe   real-time streaming in any and all clouds, hybri...
Big data conference europe real-time streaming in any and all clouds, hybri...
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
 
Lec+3-Introduction-to-Distributed-Systems.pdf
Lec+3-Introduction-to-Distributed-Systems.pdfLec+3-Introduction-to-Distributed-Systems.pdf
Lec+3-Introduction-to-Distributed-Systems.pdf
 
HPC Controls Future
HPC Controls FutureHPC Controls Future
HPC Controls Future
 
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpStrimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
 
Hadoop Ecosystem and Low Latency Streaming Architecture
Hadoop Ecosystem and Low Latency Streaming ArchitectureHadoop Ecosystem and Low Latency Streaming Architecture
Hadoop Ecosystem and Low Latency Streaming Architecture
 
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
ContainerDayVietnam2016: Kubernetes State-of-the-art Container Management Pla...
 

Recently uploaded

假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
zyfovom
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
cuobya
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
ukwwuq
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 

Recently uploaded (20)

假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 

Module: Mutable Content in IPFS

  • 2. a CONTENT ADDRESSING CONTENT DISCOVERY & ROUTING CONTENT EXCHANGE ● Chunking ● Linking Chunks in Merkle DAGs ● From Data to Data Structures with IPLD ● Anatomy of the IPFS CID ● Routing & Provider Records ● DHT-based Routing ● Gossip-based Routing ● Bitswap ● GraphSync MUTABLE NAMES & MESSAGE DELIVERY ● Dynamic Data ● IPNS ● PubSub ● CRDTs IPFS Components
  • 3. Agenda ➔ Motivation ➔ Messaging Layer ◆ IPFS/libp2p PubSub ◆ PubSub Routers (Floodsub & Gossipsub) ➔ Mutable Pointers ◆ Self-Certified Names (IPNS) ◆ IPNS over DHT, PubSub & DNS ➔ Type Systems for Distributed Applications ◆ Conflict Free Replicated Data Types (CRDT) ➔ Access Controls for Distributed Applications ◆ Cryptographic ACL / Capabilities System ➔ Examples of tools and libraries available in the ecosystem
  • 4. Motivation Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 5. Enable Web 2.0 like Rich Experiences in the Web 3.0
  • 7. ➔ IPFS gives us immutable identifiers (CIDs), however, Rich Web Apps need dynamic content that changes rapidly ➔ Ability to create, edit and update existing data, from text to images, videos and so on. ➔ Propagating updates to other participants, created a shared view into the latest state of a dataset ➔ Grant and revoke read and write permissions to data ➔ Support multiple interaction patterns, from one-to-many (e.g. Blog), many-to-many (e.g. Social Networks) and many-to-one (e.g. RSS/feed subscriptions) What is Mutable Content about?
  • 8. Needed to support multiple classes of applications
  • 9. OSI Layer System Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer
  • 10. OSI Layer System libp2p ➔ Process Addressing ➔ End-to-End Connections ➔ End-to-End Encryption ➔ Reliability Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer
  • 11. Messaging Layer Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 12. Benefits ➔ Layer for distributing updates ➔ Message Oriented Comms -> Simple to program ➔ Support for different topologies -> Different types of interaction patterns supported ➔ Loose Coupling -> Separation of Concerns ➔ Scalable -> Adapt as your network grows A Messaging Layer supported by P2P PubSub is key for supporting different interaction patterns Challenges ➔ Permission-less network -> can’t control who join/leaves ➔ Network topology is bottom-up (e.g. brokerless) ➔ Network Churn ➔ Optimizations for Latency/Bandwidth/Delivery Guarantees are about tradeoffs, not one-size fits all
  • 13. ➔ Topic based interface ➔ Design Goals ◆ Reliability: All messages get delivered to all peers subscribed to the topic. ◆ Speed: Messages are delivered quickly. ◆ Efficiency: The network is not flooded with excess copies of messages. ◆ Resilience: Peers can join and leave the network without disrupting it. There is no central point of failure. ◆ Scale: Topics can have enormous numbers of subscribers and handle a large throughput of messages. ◆ Simplicity: The system is simple to understand and implement. Each peer only needs to remember a small amount of state. IPFS/libp2p PubSub ➔ Parameterizable ➔ Two main implementations ◆ FloodSub ◆ Gossipsub
  • 14. ➔ Design ◆ Simplest possible design ◆ Ambient Peer Discovery (e.g. IPFS Main Network’s DHT, MulticastDNS and other systems) ◆ Routing is achieved by Flooding ➔ Pros ◆ Robust delivery guarantees, even in the presence of high network churn ◆ Minimum latency delivery ➔ Cons ◆ Huge bandwidth overhead (duplicate messages received) ◆ Unbounded degree flooding (wasterful) FloodSub Time
  • 15. FloodSub ➔ Simulation ◆ 100 peers ◆ 5 msg/s ◆ Run for 2s ◆ Time expansion 10x for visualisation
  • 16. ➔ Bleeding edge P2P PubSub ➔ Design ◆ Self Stabilizing algorithm ◆ 2 Networks: Metadata (control plane) & Message (data plane) ◆ Nodes establish local meshes with reciprocal agreements on subscriptions ◆ Degree bounded by default to 6 ◆ Nodes send Gossip with ● GRAFT & PRUNE to establish peering agreements ● Gossip about what messages have been delivered and seen ◆ Eager push/Lazy pull model ◆ Scoring function to reward benevolent peers and penalize bad behaving peers ◆ Support for protocol extensions ➔ Pros ◆ Resilient to Churn ◆ Resilient to Sybil, Eclipse & Spam Attacks ◆ Minimizes Bandwidth usage ➔ Cons ◆ For small networks, it doesn’t achieve the same minimum latency guarantees as Floodsub Gossipsub with hardening extensions
  • 17. ➔ Simulation ◆ 100 peers ◆ 5 msg/s ◆ Run for 2s ◆ Time expansion 10x for visualisation Gossipsub with hardening extensions
  • 18. ➔ Evaluation Performed with over 10 000 peers ➔ Demonstrated successfully how Gossipsub is resilient to a variety of attacks ➔ The implementation of Gossipsub and the code used for the evaluation is all Open Source ➔ Paper Publish with evaluation and Architecture Evaluation Report & Paper
  • 19. ➔ Documents all known challenges & existing solutions ➔ Invitation for collaboration in solving the challenges at new lengths Open Problem Statement
  • 20. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Map (OSI Layer System)
  • 21. Mutable Pointers Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 22. Goals ➔ No central central coordinator to distribute updates ➔ Ability to certify that the updates originate from the author Decentralized updates are a requirement for several use cases Challenges ➔ Different expectations of delivery depending on the application ➔ Scalability (# of nodes) and frequency (# of updates)
  • 23. ➔ Self-Certified Naming ➔ Design ◆ Verifiability: ◆ Versatility: A name can point to one or more immutable addresses ◆ Transport independent: Not be tied to a specific method of distribution. ➔ Names (aka Pointers) are referenced by the PublicKey of the signer vs. the Content of the name IPNS, the InterPlanetary NameSystem ➔ Several implementations: ◆ IPNS over DHT ◆ IPNS over PubSub ◆ IPNS over DNS ◆ IPNS over ETH Domains ◆ IPNS over Namecoin (one of the first implementations) ◆ IPNS over QRCodes? NFC? BLE Beacons? Multiple possibilities
  • 24. ➔ Each name is a Public/Private Key Pair ➔ The Private Key is used to signed statements (aka records) containing the state of the name ➔ The Public Key is used by clients for ◆ Discovering the new records published ◆ Certify the record update was indeed issued by the author ➔ Every time the owner of the name wants to issue an update, it simply creates a new record, signs it and broadcasts it over one of the selected transports (e.g DHT, PubSub, DNS, etc) ➔ Human Readable naming is enabled via a registrar. Examples: ◆ DNS some-domain.com -> TXT Record /ipns/Qm_CID of Public Key.. -> /ipfs/Qm_CID of content ◆ UnstoppableDomains some-domain.crypto -> /ipns/Qm_CID of Public Key.. -> /ipfs/Qm_CID of content IPNS Architecture
  • 25. ➔ Documents all known challenges & existing solutions ➔ Invitation for collaboration in solving the challenges at new lengths Open Problem Statements
  • 26. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Map (OSI Layer System) IPNS
  • 27. ➔ “A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.” Leslie Lamport ➔ Synchronization errors happen ◆ Simultaneous Writers ◆ Propagation Delay ➔ Distributed Consensus is not a trivial problem ➔ There must be a better way! 💡 Mutable Pointers are not enough for Distributed Applications
  • 28. Type Systems for Distributed Apps Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 29. Goals ➔ No need for central coordinator and avoid central points of failure and/or chokepoints (e.g. case for Operational Transforms) ➔ Support multiple times of collaboration Convergent state and/or Consensus over Distributed Data Challenges ➔ Avoid resource intensive and slow constructions (e.g. PBFT, Nakamoto Consensus, etc) ➔ Support Web scale ➔ Fast sync, Snapshotting and Garbage Collection
  • 30. ➔ Fairly new and large field of distributed systems research ➔ Design ◆ Merge function is defined a priority and distributed to all participants ◆ Independent of the order of the events received, all participants will know how to merge the events and converge on the same state ➔ CRDTs are not a one-size fits all data structure, instead they are many data structures that fit specific use cases: ◆ G-Set (Grow-only Set) ◆ 2P-Set (Two-Phase Set) ◆ LWW-Element-Set (Last-Write-Wins-Element-Set) ◆ OR-Set (Observed-Remove Set) ◆ Sequence/Ordered Set ◆ Many more.. Conflict-Free Replicated Data Types (CRDTs) ➔ Pros ◆ Order of reception is not important, as long as the events arrive ◆ Does not require any live interactivity with all participants ◆ Can be used to build all sorts of applications, from collaborative doc editors, chats and much more ➔ Cons ◆ Can generate a lot of non-trivially garbage collectable objects for long running programs
  • 31. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Map (OSI Layer System) IPNS CRDT
  • 32. Access Controls for Distributed Apps Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 33. Goals ➔ Grant and Remove access to data ➔ No need for central coordinator and avoid central points of failure and/or chokepoints (e.g. case for Operational Transforms) ➔ Support multiple times of collaboration Access Controls Challenges ➔ Avoid resource intensive and slow constructions (e.g. PBFT, Nakamoto Consensus, etc) to agree on the ACL ➔ Support Web scale ➔ Fast sync, Snapshotting and Garbage Collection
  • 34. ➔ Private collaborations over data in a Public Network ➔ Design ◆ Symmetric Keys give Read Access ● Only the ones with the key can decrypt and therefore read ◆ Asymmetric Keys give Write Access ● Similar to how IPNS gives ownership of who is trusted to updated the Record ➔ Pros ◆ Fine grain control of Read & Write Access ◆ Authorship is verifiable ◆ Does not require a centralized party for coordination ➔ Cons ◆ Require nodes to have a way to synchronize on the latest state of ACL to ensure that only nodes allowed receive the latest updates Cryptographic ACLs aka Capabilities Systems
  • 35. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Map OSI Layer System onto DWeb Stack IPNS CRDT Cryptographic ACL
  • 36. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Map OSI Layer System onto DWeb Stack IPNS CRDT Cryptographic ACL
  • 37. ➔ Open Source Collaborative Text Editor ➔ IPNS to get the latest release the App ➔ IPFS to load the contents ➔ Public Key Pair & Symmetric Key at the URL ➔ CRDT to create the shared state ➔ PubSub to distribute messages ➔ Features ◆ Real-time collaboration ◆ Conflict-Free PeerPad as an example of the vertical integration
  • 38. Available Tools & Libraries Motivation Messaging Layer Mutable Pointers Type Systems for Distributed Apps Access Controls for Distributed Apps Mutable Content Tools & Libraries
  • 39. libp2p Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer PubSub Open Source Libraries & Tools Available IPNS CRDT Cryptographic ACL
  • 40. Thank you for watching Reach out in case you have questions or comments! resnetlab@protocol.ai https://github.com/protocol/ResNetLab/discussions