BROOKLYN ZELENKA
✨ WNFS ✨ Dialog CAR Pool IPVM
@expede Cofounder & CTO Fission Codes
Slide 6
The Situation 🤨
Slide 7
The Situation 🤨
Services In 2022
Slide 8
The Situation 🤨
Services In 2022 Alice
Bob
Carol
Slide 9
The Situation 🤨
Services In 2022 Alice
Bob
Music Service
🎶 Carol
Slide 10
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Music Service
🎶 Carol
Carol’s Music
Slide 11
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Music Service
🎶 Carol
Carol’s Music
Auth Service
💂
Slide 12
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Music Service
🎶 Carol
Carol’s Music
Auth Service
💂
Slide 13
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Music Service
🎶 Carol
Carol’s Music
Auth Service
💂
Slide 14
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Music Service
Photo Service
🎶 Carol
🖼
Carol’s Music
Auth Service
💂
Slide 15
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Music Service
Photo Service
🎶 Carol
🖼
Carol’s Music
Auth Service
💂
Social Media
📜
Slide 16
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Bob’s Posts
Music Service
Photo Service
Social Media
🎶 Carol
🖼
Carol’s Music
📜 Carol’s Posts
Auth Service
💂
Slide 17
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Bob’s Posts
Music Service
Photo Service
Social Media
🎶 Carol
🖼
Carol’s Music
📜 Carol’s Posts
Auth Service
💂
Slide 18
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Music Service
Photo Service
🎶 Carol
Bob’s Posts
🖼
Carol’s Music
Carol’s Posts
Auth Service
💂
Slide 19
The Situation 🤨
Services In 2022 Alice
Alice’s Music
Bob
Bob’s Music
Bob’s Photos
Music Service
Photo Service
🎶 Carol
🖼
Carol’s Music
Auth Service
💂
Slide 20
The Situation 🤨
2. Too Much In The Way
Slide 21
The Situation 🤨
2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷
Developer 👩💻
Slide 22
The Situation 🤨
2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 REST / JSON-RPC / GraphQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Slide 23
The Situation 🤨
2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 REST / JSON-RPC / GraphQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻
Slide 24
The Situation 🤨
3. Toxic Data
• 2005: Credit card info in DB • 2015: Personal info in DB • 2025: Nothing in DB
Slide 25
What If… 🤔
Slide 26
What If… 🤔
Networked Data, Not Apps
Slide 27
What If… 🤔
Networked Data, Not Apps
f
f
f
Alice’s Stu
Bob’s Stu
Carol’s Stu
Slide 28
What If… 🤔
Networked Data, Not Apps Photo Gallery
🖼
f
f
f
Alice’s Stu
Bob’s Stu
Carol’s Stu
Slide 29
What If… 🤔
Networked Data, Not Apps Photo Gallery
🖼 Alice’s Stu
Bob’s Stu
Carol’s Stu
Social Media
f
f
f
📜
Slide 30
What If… 🤔
Networked Data, Not Apps Photo Gallery
🖼 Alice’s Stu
Bob’s Stu
Music Player
f
f
f
🎶
Carol’s Stu
Social Media
📜
Slide 31
What If… 🤔
Networked Data, Not Apps Photo Gallery
🖼 Auth Service Alice’s Stu
Bob’s Stu
Music Player
f
f
f
🎶
Carol’s Stu
Social Media
📜
💂
Slide 32
What If… 🤔
Networked Data, Not Apps Photo Gallery
🖼 Alice’s Stu
Bob’s Stu
Music Player
f
f
f
🎶
Carol’s Stu
Social Media
📜
Slide 33
What If… 🤔
Open Protocols Everywhere
Slide 34
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation
Networking 🔌
Slide 35
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation • Open protocols for…
Networking 🔌
Slide 36
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation • Open protocols for… • Auth: interop without pre-negotiation Auth 🎟 Networking 🔌
Slide 37
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation • Open protocols for… • Auth: interop without pre-negotiation • Data: ubiquitous “dumb” storage
Data 💾 Auth 🎟 Networking 🔌
Slide 38
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation • Open protocols for… • Auth: interop without pre-negotiation • Data: ubiquitous “dumb” storage • Compute: local & remote lambdas
Compute ⚙
Data 💾 Auth 🎟 Networking 🔌
Slide 39
What If… 🤔
Open Protocols Everywhere
• HTTP being open lead to tons of innovation • Open protocols for… • Auth: interop without pre-negotiation • Data: ubiquitous “dumb” storage • Compute: local & remote lambdas
Compute ⚙
Data 💾 Auth 🎟 Networking 🔌
Slide 40
What If… 🤔
Three Techniques
Slide 41
What If… 🤔
Three Techniques
Global Primary Keys 🗺
Portable Private Data 💾
BFT Concurrency 🔀
Slide 42
What If… 🤔
Three Techniques
Global Primary Keys 🗺
Content Addressing
Portable Private Data 💾
BFT Concurrency 🔀
Slide 43
What If… 🤔
Three Techniques
Global Primary Keys 🗺
Portable Private Data 💾
Content Addressing
Cryptrees / Dark Forest
BFT Concurrency 🔀
Slide 44
What If… 🤔
Three Techniques
Global Primary Keys 🗺
Portable Private Data 💾
BFT Concurrency 🔀
Content Addressing
Cryptrees / Dark Forest
Hash-Linked CRDTs
Slide 45
Content Addressing Truly Global Links 🗺
Slide 46
Content Addressing 🗺
Slide 47
Content Addressing 🗺
The limitation of local knowledge is the fundamental fact about the setting in which we work, and it is a very powerful limitation – Nancy Lynch, A Hundred Impossibility Proofs for Distributed Computing
Content Addressing 🗺
Hard & Soft Links alice.fission.name
Slide 58
Content Addressing 🗺
Hard & Soft Links alice.fission.name
bob.fission.name
Slide 59
Content Addressing 🗺
Hard & Soft Links alice.fission.name
Hard Links New for the web! Direct reference 2 pointers ~ deduplicate bob.fission.name
Slide 60
Content Addressing 🗺
Hard & Soft Links alice.fission.name
Hard Links New for the web! Direct reference 2 pointers ~ deduplicate bob.fission.name
Slide 61
Content Addressing 🗺
Hard & Soft Links alice.fission.name
Hard Links New for the web! Direct reference 2 pointers ~ deduplicate bob.fission.name
Soft Links Symlink or web link (URL) Pointer ~ latest Latest may break
Slide 62
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 63
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 64
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 65
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 66
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 67
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 68
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 69
Content Addressing 🗺
Content Addressed Storage Is Simple
Slide 70
Content Addressing 🗺
Upshot
• Names that leak no additional info • A consistent way to reference data • Self-verifying data for low/no-trust environment • Hard links on the web
Slide 71
Private Data Substrate
Distributed Storage When The Pipes Are Broken 💾
Slide 72
Private Data Substrate 💾
Virtual Files & Directories
Slide 73
Private Data Substrate 💾
Virtual Files & Directories File Node
Raw Data
Metadata
Slide 74
Private Data Substrate 💾
Virtual Files & Directories File Node
Virtual Node
Raw Data
Consistent interface Arbitrary metadata Tags, creators, MIME, sources, &c
Metadata
Slide 75
Private Data Substrate 💾
Virtual Files & Directories File Node
Virtual Node
Raw Data
Consistent interface Arbitrary metadata Tags, creators, MIME, sources, &c
Metadata
Directory Node
Index
Metadata
Private Data Substrate 💾
Cryptography is a tool for turning lots of different problems into key management problems Dr. Lea Kissner, Google’s Global Lead of Privacy Technologies
Slide 90
Private Data Substrate 💾
SubtleCrypto (WebCrypto)
Source: caniuse.com
Slide 91
Private Data Substrate 💾
Non-Extractable Keys
Slide 92
Private Data Substrate 💾
Non-Extractable Keys
Slide 93
Private Data Substrate 💾
Non-Extractable Keys
🗝
Slide 94
Private Data Substrate 💾
Non-Extractable Keys
🦹
🗝
Slide 95
Private Data Substrate 💾
Non-Extractable Keys
🦹
🗝
Slide 96
Private Data Substrate 💾
Non-Extractable Keys
🦹 🏰🏰🏰🏰🏰🏰🏰 🗝
Slide 97
Private Data Substrate 💾
Non-Extractable Keys
🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝
Slide 98
Private Data Substrate 💾
Non-Extractable Keys
🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝
Slide 99
Private Data Substrate 💾
Non-Extractable Keys
🦹 🏰🏰🏰🏰🏰🏰🏰 📝 🗝
Slide 100
Private Data Substrate 💾
Non-Extractable Keys
🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝
Slide 101
Private Data Substrate 💾
Self-Authenticating & Self-Authorizing
Fault-Safe Concurrency 🔀
Gossiping Out of Order
t→
🎨
Slide 129
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
Slide 130
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
Slide 131
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
Slide 132
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
Slide 133
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
Slide 134
Fault-Safe Concurrency 🔀
Gossiping Out of Order 🟢
🎨
🔴
🟡
🔴
t→
🟢
🟢
🟡
❎
Slide 135
Fault-Safe Concurrency 🔀
Entropy Isn’t What It Used to Be
Slide 136
Fault-Safe Concurrency 🔀
Entropy Isn’t What It Used to Be
Slide 137
Fault-Safe Concurrency 🔀
Properties Save the Day
Slide 138
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
Slide 139
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
merge
merge
Slide 140
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
merge
merge
Slide 141
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
merge
merge
Slide 142
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
merge
merge
Slide 143
Fault-Safe Concurrency 🔀
Properties Save the Day Commutative
merge
merge
Associative
Slide 144
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
merge
merge
merge
merge
Slide 145
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
merge
merge
merge
merge
Slide 146
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Slide 147
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
(
) merge
Slide 148
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
(
) merge
Slide 149
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
(
) merge
Slide 150
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
(
) merge
merge
Slide 151
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
(
) merge
merge
Slide 152
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
(
) merge
merge
Slide 153
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
Slide 154
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
Slide 155
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
Slide 156
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
Slide 157
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
Slide 158
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
fill
Slide 159
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
fill
Slide 160
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
fill
Slide 161
Fault-Safe Concurrency 🔀
Properties Save the Day Associative
Commutative
( merge
merge
) merge
merge
Idempotent
(
) merge
merge
fill
fill
Slide 162
Fault-Safe Concurrency 🔀
Temporal Confluence
Slide 163
Fault-Safe Concurrency 🔀
Temporal Confluence BFT-CRDTs Persistent data structure Automatic file-level reconciliation Pluggable sub-file reconciliation (forthcoming) Basis of upcoming BFT Datalog “at scale” work 😉
Slide 164
Fault-Safe Concurrency 🔀
Temporal Confluence BFT-CRDTs Persistent data structure Automatic file-level reconciliation Pluggable sub-file reconciliation (forthcoming) Basis of upcoming BFT Datalog “at scale” work 😉
Single File History / “Causal Shadow”
Slide 165
Fault-Safe Concurrency 🔀
Temporal Confluence BFT-CRDTs
F
B
⭐E⭐
Persistent data structure Automatic file-level reconciliation
D
Pluggable sub-file reconciliation (forthcoming) Basis of upcoming BFT Datalog “at scale” work 😉
A
⭐C⭐
Single File History / “Causal Shadow”
Slide 166
Fault-Safe Concurrency 🔀
Multiplayer Docs (Incl. Encryption) F
B
⭐E⭐
D
A
⭐C⭐
Slide 167
Fault-Safe Concurrency 🔀
Multiplayer Docs (Incl. Encryption) F
B
⭐E⭐
D
A
⭐C⭐
Slide 168
Fault-Safe Concurrency 🔀
Multiplayer Docs (Incl. Encryption) F
B
⭐E⭐
D
A
⭐C⭐
Slide 169
Fault-Safe Concurrency 🔀
Multiplayer Docs (Incl. Encryption) F
B
⭐E⭐
D
A
⭐C⭐
Slide 170
Fault-Safe Concurrency 🔀
Alternate History, Same State
Slide 171
Fault-Safe Concurrency 🔀
Alternate History, Same State
null
Slide 172
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶
😺
null
🐙
Slide 173
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶😺
🐶
😺
null
🐙
Slide 174
Fault-Safe Concurrency 🔀
Alternate History, Same State
😺🐙
🐶😺
🐶
😺
null
🐙
Slide 175
Fault-Safe Concurrency 🔀
Alternate History, Same State 🐶😺 🐙
😺🐙
🐶😺
🐶
😺
null
🐙
Slide 176
Fault-Safe Concurrency 🔀
Alternate History, Same State 🐶😺 🐙
😺🐙
🐶😺
🐶
😺
null
🐙
🐙🦋
Slide 177
Fault-Safe Concurrency 🔀
Alternate History, Same State 🐶😺 🐙
😺🐙
🐶😺
🐶
😺🐙🦋
😺
null
🐙
🐙🦋
Slide 178
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶😺 🐙🦋
🐶😺 🐙
😺🐙
🐶😺
🐶
😺🐙🦋
😺
null
🐙
🐙🦋
Slide 179
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶😺 🐙🦋
🐶😺 🐙
😺🐙
🐶😺
🐶
😺🐙🦋
😺
null
🐙
🐙🦋
Slide 180
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶😺 🐙🦋
🐶😺 🐙
😺🐙
🐶😺
🐶
😺🐙🦋
😺
null
🐙
🐙🦋
Slide 181
Fault-Safe Concurrency 🔀
Alternate History, Same State
🐶😺 🐙🦋
🐶😺 🐙
😺🐙
🐶😺
🐶
😺🐙🦋
😺
null
🐙
🐙🦋
Slide 182
Wrap Up
Thoughts & Field Notes 🎁
Slide 183
Wrap Up 🎁
Requirements Diagram Next Gen Distributed Apps
Web 2.0 Features
Collaborative
Portable Data & Runtime
Hostile Hosts e.g. Browsers
Multiuser Nonextractable Signing Keys Concurrent
Local First Access Control
Authenticated Data Content Addressed
Authorized Data
Encryption at Rest
Capability Auth
Extensible
Arbitrary Metadata Kernel vs Userspace
Slide 184
Wrap Up 🎁
Requirements Diagram Next Gen Distributed Apps
Web 2.0 Features
Collaborative
Portable Data & Runtime
Hostile Hosts e.g. Browsers
Multiuser Nonextractable Signing Keys Concurrent
Local First Access Control
Authenticated Data Content Addressed
Authorized Data
Encryption at Rest
Capability Auth
Extensible
Arbitrary Metadata Kernel vs Userspace
Slide 185
Wrap Up 🎁
Better Together
Slide 186
🏔🎉 Thank You, CascadiaJS 🇨🇦🇺🇸 github.com/ucan-wg github.com/wnfs-wg More in-depth at Strange Loop 2022 (or talk to us today)