The Dark Forest: Private CRDTs as Global Database


A presentation at CascadiaJS in August 2022 in Sunriver, OR 97707, USA by Brooklyn Zelenka

Slide 1

Slide 1

🪐 The Dark Forest 🚀 Private CRDTs as Global Database or: “How to Power a New Internet” github.com/wnfs-wg github.com/fission-codes

Slide 2

Slide 2

Slide 3

Slide 3

BROOKLYN ZELENKA @expede Cofounder & CTO Fission Codes

Slide 4

Slide 4

BROOKLYN ZELENKA @expede Cofounder & CTO Fission Codes

Slide 5

Slide 5

BROOKLYN ZELENKA ✨ WNFS ✨ Dialog CAR Pool IPVM @expede Cofounder & CTO Fission Codes

Slide 6

Slide 6

The Situation 🤨

Slide 7

Slide 7

The Situation 🤨

  1. Services In 2022

Slide 8

Slide 8

The Situation 🤨

  1. Services In 2022 Alice Bob Carol

Slide 9

Slide 9

The Situation 🤨

  1. Services In 2022 Alice Bob Music Service 🎶 Carol

Slide 10

Slide 10

The Situation 🤨

  1. Services In 2022 Alice Alice’s Music Bob Bob’s Music Music Service 🎶 Carol Carol’s Music

Slide 11

Slide 11

The Situation 🤨

  1. Services In 2022 Alice Alice’s Music Bob Bob’s Music Music Service 🎶 Carol Carol’s Music Auth Service 💂

Slide 12

Slide 12

The Situation 🤨

  1. Services In 2022 Alice Alice’s Music Bob Bob’s Music Music Service 🎶 Carol Carol’s Music Auth Service 💂

Slide 13

Slide 13

The Situation 🤨

  1. Services In 2022 Alice Alice’s Music Bob Bob’s Music Music Service 🎶 Carol Carol’s Music Auth Service 💂

Slide 14

Slide 14

The Situation 🤨

  1. 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

Slide 15

The Situation 🤨

  1. 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

Slide 16

The Situation 🤨

  1. 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

Slide 17

The Situation 🤨

  1. 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

Slide 18

The Situation 🤨

  1. 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

Slide 19

The Situation 🤨

  1. 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

Slide 20

The Situation 🤨 2. Too Much In The Way

Slide 21

Slide 21

The Situation 🤨 2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷 Developer 👩💻

Slide 22

Slide 22

The Situation 🤨 2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 REST / JSON-RPC / GraphQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻

Slide 23

Slide 23

The Situation 🤨 2. Too Much In The Way Users 👨🏫👩🏭🧑⚕👷 Browser 🖥 REST / JSON-RPC / GraphQL ↕ Server ⚙ Data Store 🗃 DevOps 📤 Developer 👩💻

Slide 24

Slide 24

The Situation 🤨 3. Toxic Data • 2005: Credit card info in DB • 2015: Personal info in DB • 2025: Nothing in DB

Slide 25

Slide 25

What If… 🤔

Slide 26

Slide 26

What If… 🤔 Networked Data, Not Apps

Slide 27

Slide 27

What If… 🤔 Networked Data, Not Apps f f f Alice’s Stu Bob’s Stu Carol’s Stu

Slide 28

Slide 28

What If… 🤔 Networked Data, Not Apps Photo Gallery 🖼 f f f Alice’s Stu Bob’s Stu Carol’s Stu

Slide 29

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

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

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

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

Slide 33

What If… 🤔 Open Protocols Everywhere

Slide 34

Slide 34

What If… 🤔 Open Protocols Everywhere • HTTP being open lead to tons of innovation Networking 🔌

Slide 35

Slide 35

What If… 🤔 Open Protocols Everywhere • HTTP being open lead to tons of innovation • Open protocols for… Networking 🔌

Slide 36

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

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

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

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

Slide 40

What If… 🤔 Three Techniques

Slide 41

Slide 41

What If… 🤔 Three Techniques Global Primary Keys 🗺 Portable Private Data 💾 BFT Concurrency 🔀

Slide 42

Slide 42

What If… 🤔 Three Techniques Global Primary Keys 🗺 Content Addressing Portable Private Data 💾 BFT Concurrency 🔀

Slide 43

Slide 43

What If… 🤔 Three Techniques Global Primary Keys 🗺 Portable Private Data 💾 Content Addressing Cryptrees / Dark Forest BFT Concurrency 🔀

Slide 44

Slide 44

What If… 🤔 Three Techniques Global Primary Keys 🗺 Portable Private Data 💾 BFT Concurrency 🔀 Content Addressing Cryptrees / Dark Forest Hash-Linked CRDTs

Slide 45

Slide 45

Content Addressing Truly Global Links 🗺

Slide 46

Slide 46

Content Addressing 🗺

Slide 47

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

Slide 48

Slide 48

Content Addressing 🗺 Addressing Stack

Slide 49

Slide 49

Content Addressing 🗺 Addressing Stack Physical Location 🗺 send(42.123.45.6, path) = content1 send(42.123.45.6, path) = content2

Slide 50

Slide 50

Content Addressing 🗺 Addressing Stack Virtual Address 📬 Physical Location 🗺 {DNS: IP} send(42.123.45.6, path) = content1 send(42.123.45.6, path) = content2

Slide 51

Slide 51

Content Addressing 🗺 Addressing Stack Content ID ☃ Virtual Address 📬 Physical Location 🗺 {hash(content): content} {DNS: IP} send(42.123.45.6, path) = content1 send(42.123.45.6, path) = content2

Slide 52

Slide 52

Content Addressing 🗺 Hash-Based Relationships

Slide 53

Slide 53

Content Addressing 🗺 Hash-Based Relationships { } Qm123456…: { data: nil, links: [ {name: “company”, hash: Qmabc…} {name: “industry”, hash: Qmzyx…} ] }

Slide 54

Slide 54

Content Addressing 🗺 Hash-Based Relationships { } { Qm123456…: { data: nil, links: [ {name: “company”, hash: Qmabc…} {name: “industry”, hash: Qmzyx…} ] } } Qmabcdef…: { data: “Fission”, links: [ {name: “city”, hash: Qm1gb…}, {name: “about”, hash: Qm0eN…} ] }

Slide 55

Slide 55

Content Addressing 🗺 Hash-Based Relationships { } { Qm123456…: { data: nil, links: [ {name: “company”, hash: Qmabc…} {name: “industry”, hash: Qmzyx…} ] } } Qmabcdef…: { data: “Fission”, links: [ {name: “city”, hash: Qm1gb…}, {name: “about”, hash: Qm0eN…} ] } Qm123456…/company/about/ceo => “Boris Mann”

Slide 56

Slide 56

Content Addressing 🗺 Hard & Soft Links

Slide 57

Slide 57

Content Addressing 🗺 Hard & Soft Links alice.fission.name

Slide 58

Slide 58

Content Addressing 🗺 Hard & Soft Links alice.fission.name bob.fission.name

Slide 59

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

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

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

Slide 62

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 63

Slide 63

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 64

Slide 64

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 65

Slide 65

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 66

Slide 66

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 67

Slide 67

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 68

Slide 68

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 69

Slide 69

Content Addressing 🗺 Content Addressed Storage Is Simple

Slide 70

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

Slide 71

Private Data Substrate Distributed Storage When The Pipes Are Broken 💾

Slide 72

Slide 72

Private Data Substrate 💾 Virtual Files & Directories

Slide 73

Slide 73

Private Data Substrate 💾 Virtual Files & Directories File Node Raw Data Metadata

Slide 74

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

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

Slide 76

Slide 76

Private Data Substrate 💾 Persistent Versioning

Slide 77

Slide 77

Private Data Substrate 💾 Persistent Versioning Photos@r0 Vacation Avatars@r0 beach.png caricature.jpg Revision 0

Slide 78

Slide 78

Private Data Substrate 💾 Persistent Versioning Photos@r0 Vacation Avatars@r0 beach.png caricature.jpg Revision 0 🕙

Slide 79

Slide 79

Private Data Substrate 💾 Persistent Versioning Photos@r0 Photos@r1 Vacation Avatars@r0 Avatars@r1 beach.png caricature.jpg headshot.png Revision 0 Revision 1 🕙

Slide 80

Slide 80

Private Data Substrate 💾 Persistent Versioning Photos@r0 ChildHasEvent Vacation Avatars@r0 beach.png caricature.jpg Photos@r1 InsertNew Revision 0 headshot.png Revision 1 🕙 Avatars@r1

Slide 81

Slide 81

Private Data Substrate 💾 Persistent Versioning Photos@r0 ChildHasEvent Vacation Avatars@r0 beach.png caricature.jpg Photos@r1 InsertNew Revision 0 headshot.png Revision 1 🕙 Avatars@r1

Slide 82

Slide 82

Private Data Substrate 💾 It’s All Just Maps

Slide 83

Slide 83

Private Data Substrate 💾 It’s All Just Maps

Slide 84

Slide 84

Private Data Substrate 💾 It’s All Just Maps

Slide 85

Slide 85

Private Data Substrate 💾 It’s All Just Maps

Slide 86

Slide 86

Private Data Substrate 💾 It’s All Just Maps

Slide 87

Slide 87

Private Data Substrate 💾 It’s All Just Maps

Slide 88

Slide 88

Private Data Substrate 💾

Slide 89

Slide 89

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

Slide 90

Private Data Substrate 💾 SubtleCrypto (WebCrypto) Source: caniuse.com

Slide 91

Slide 91

Private Data Substrate 💾 Non-Extractable Keys

Slide 92

Slide 92

Private Data Substrate 💾 Non-Extractable Keys

Slide 93

Slide 93

Private Data Substrate 💾 Non-Extractable Keys 🗝

Slide 94

Slide 94

Private Data Substrate 💾 Non-Extractable Keys 🦹 🗝

Slide 95

Slide 95

Private Data Substrate 💾 Non-Extractable Keys 🦹 🗝

Slide 96

Slide 96

Private Data Substrate 💾 Non-Extractable Keys 🦹 🏰🏰🏰🏰🏰🏰🏰 🗝

Slide 97

Slide 97

Private Data Substrate 💾 Non-Extractable Keys 🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝

Slide 98

Slide 98

Private Data Substrate 💾 Non-Extractable Keys 🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝

Slide 99

Slide 99

Private Data Substrate 💾 Non-Extractable Keys 🦹 🏰🏰🏰🏰🏰🏰🏰 📝 🗝

Slide 100

Slide 100

Private Data Substrate 💾 Non-Extractable Keys 🦹 📝 🏰🏰🏰🏰🏰🏰🏰 🗝

Slide 101

Slide 101

Private Data Substrate 💾 Self-Authenticating & Self-Authorizing

Slide 102

Slide 102

Private Data Substrate 💾 Self-Authenticating & Self-Authorizing 123 ACF CF4 C4A 0FC 1F3 A83 ED2 D55 823 247 81D F0A B92

Slide 103

Slide 103

Private Data Substrate 💾 Self-Authenticating & Self-Authorizing A7B ACF CF4 👩💻 C4A 0FC 1F3 A83 ED2 D55 823 247 81D F0A B92

Slide 104

Slide 104

Private Data Substrate 💾 Offline Access Control / Photos/ Sunriver/ food.jpg Iceland/ stage.png Docs/ notes.md harpa.svg

Slide 105

Slide 105

Private Data Substrate 💾 Offline Access Control / 🗝 Photos/ Sunriver/ food.jpg Iceland/ stage.png Docs/ notes.md harpa.svg

Slide 106

Slide 106

Private Data Substrate 💾 Offline Access Control / 🗝 Photos/ Sunriver/ Iceland/ Docs/ notes.md 🗝 food.jpg stage.png harpa.svg

Slide 107

Slide 107

Private Data Substrate 💾 Offline Access Control / 🗝 Photos/ Docs/ 🗝 Sunriver/ Iceland/ notes.md 🗝 food.jpg stage.png harpa.svg

Slide 108

Slide 108

Private Data Substrate 💾 Offline Access Control / / 🗝 Photos/ Docs/ Photos/ 🗝 🗝 Sunriver/ food.jpg Iceland/ stage.png notes.md harpa.svg pdx.jpg plane.png Docs/

Slide 109

Slide 109

Private Data Substrate 💾 Offline Access Control Photos/ Sunriver/ food.jpg stage.png notes.md pdx.jpg plane.png

Slide 110

Slide 110

Private Data Substrate 💾 Offline Access Control Shared Sunriver/ food.jpg stage.png Photos/ notes.md pdx.jpg plane.png

Slide 111

Slide 111

Private Data Substrate 💾 Private Nodes

Slide 112

Slide 112

Private Data Substrate 💾 Private Nodes Binary Encrypted Node 🔒 Encrypted Node 🔒 Encrypted Node 🔒

Slide 113

Slide 113

Private Data Substrate 💾 Private Nodes Binary CBOR Encrypted Node 🔒 Virtual Node Encrypted Node 🔒 Index Encrypted Node 🔒 🔑 🔑 Metadata

Slide 114

Slide 114

Private Data Substrate 💾 Private Nodes Binary CBOR Encrypted Node 🔒 AES256 Encrypted Node 🔒 Virtual Node 🔑 Index Encrypted Node 🔒 🔑 🔑 Metadata

Slide 115

Slide 115

Private Data Substrate 💾 Private Nodes Binary CBOR Encrypted Node 🔒 AES256 Encrypted Node 🔒 Virtual Node 🔑 Index Encrypted Node 🔒 🔑 🔑 Metadata

Slide 116

Slide 116

Private Data Substrate 💾 Reconstruction Virtual Node Virtual Node 🔑 Index 🔑 🔑 Metadata 🔑 🔑 🔑 Index Metadata

Slide 117

Slide 117

Private Data Substrate 💾 Dark Forest

Slide 118

Slide 118

Private Data Substrate 💾 Dark Forest

Slide 119

Slide 119

Fault-Safe Concurrency Safely Merge Unreliable Updates 🔀

Slide 120

Slide 120

Fault-Safe Concurrency 🔀 Causal Islands 🏖🏝

Slide 121

Slide 121

Fault-Safe Concurrency 🔀 Causal Islands 🏖🏝

Slide 122

Slide 122

Fault-Safe Concurrency 🔀 Causal Islands 🏖🏝

Slide 123

Slide 123

Fault-Safe Concurrency 🔀 Causal Islands 🏖🏝

Slide 124

Slide 124

Fault-Safe Concurrency 🔀 Gossiping Out of Order

Slide 125

Slide 125

Fault-Safe Concurrency 🔀 Gossiping Out of Order

Slide 126

Slide 126

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🎨

Slide 127

Slide 127

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🎨

Slide 128

Slide 128

Fault-Safe Concurrency 🔀 Gossiping Out of Order t→ 🎨

Slide 129

Slide 129

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡

Slide 130

Slide 130

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡

Slide 131

Slide 131

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡

Slide 132

Slide 132

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡

Slide 133

Slide 133

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡

Slide 134

Slide 134

Fault-Safe Concurrency 🔀 Gossiping Out of Order 🟢 🎨 🔴 🟡 🔴 t→ 🟢 🟢 🟡 ❎

Slide 135

Slide 135

Fault-Safe Concurrency 🔀 Entropy Isn’t What It Used to Be

Slide 136

Slide 136

Fault-Safe Concurrency 🔀 Entropy Isn’t What It Used to Be

Slide 137

Slide 137

Fault-Safe Concurrency 🔀 Properties Save the Day

Slide 138

Slide 138

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative

Slide 139

Slide 139

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative merge merge

Slide 140

Slide 140

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative merge merge

Slide 141

Slide 141

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative merge merge

Slide 142

Slide 142

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative merge merge

Slide 143

Slide 143

Fault-Safe Concurrency 🔀 Properties Save the Day Commutative merge merge Associative

Slide 144

Slide 144

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative merge merge merge merge

Slide 145

Slide 145

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative merge merge merge merge

Slide 146

Slide 146

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge

Slide 147

Slide 147

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge ( ) merge

Slide 148

Slide 148

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge ( ) merge

Slide 149

Slide 149

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge ( ) merge

Slide 150

Slide 150

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge ( ) merge merge

Slide 151

Slide 151

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge ( ) merge merge

Slide 152

Slide 152

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge ( ) merge merge

Slide 153

Slide 153

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge

Slide 154

Slide 154

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill

Slide 155

Slide 155

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill

Slide 156

Slide 156

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill

Slide 157

Slide 157

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill

Slide 158

Slide 158

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill fill

Slide 159

Slide 159

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill fill

Slide 160

Slide 160

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill fill

Slide 161

Slide 161

Fault-Safe Concurrency 🔀 Properties Save the Day Associative Commutative ( merge merge ) merge merge Idempotent ( ) merge merge fill fill

Slide 162

Slide 162

Fault-Safe Concurrency 🔀 Temporal Confluence

Slide 163

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

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

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

Slide 166

Fault-Safe Concurrency 🔀 Multiplayer Docs (Incl. Encryption) F B ⭐E⭐ D A ⭐C⭐

Slide 167

Slide 167

Fault-Safe Concurrency 🔀 Multiplayer Docs (Incl. Encryption) F B ⭐E⭐ D A ⭐C⭐

Slide 168

Slide 168

Fault-Safe Concurrency 🔀 Multiplayer Docs (Incl. Encryption) F B ⭐E⭐ D A ⭐C⭐

Slide 169

Slide 169

Fault-Safe Concurrency 🔀 Multiplayer Docs (Incl. Encryption) F B ⭐E⭐ D A ⭐C⭐

Slide 170

Slide 170

Fault-Safe Concurrency 🔀 Alternate History, Same State

Slide 171

Slide 171

Fault-Safe Concurrency 🔀 Alternate History, Same State null

Slide 172

Slide 172

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶 😺 null 🐙

Slide 173

Slide 173

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐶 😺 null 🐙

Slide 174

Slide 174

Fault-Safe Concurrency 🔀 Alternate History, Same State 😺🐙 🐶😺 🐶 😺 null 🐙

Slide 175

Slide 175

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙 😺🐙 🐶😺 🐶 😺 null 🐙

Slide 176

Slide 176

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙 😺🐙 🐶😺 🐶 😺 null 🐙 🐙🦋

Slide 177

Slide 177

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙 😺🐙 🐶😺 🐶 😺🐙🦋 😺 null 🐙 🐙🦋

Slide 178

Slide 178

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙🦋 🐶😺 🐙 😺🐙 🐶😺 🐶 😺🐙🦋 😺 null 🐙 🐙🦋

Slide 179

Slide 179

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙🦋 🐶😺 🐙 😺🐙 🐶😺 🐶 😺🐙🦋 😺 null 🐙 🐙🦋

Slide 180

Slide 180

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙🦋 🐶😺 🐙 😺🐙 🐶😺 🐶 😺🐙🦋 😺 null 🐙 🐙🦋

Slide 181

Slide 181

Fault-Safe Concurrency 🔀 Alternate History, Same State 🐶😺 🐙🦋 🐶😺 🐙 😺🐙 🐶😺 🐶 😺🐙🦋 😺 null 🐙 🐙🦋

Slide 182

Slide 182

Wrap Up Thoughts & Field Notes 🎁

Slide 183

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

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

Slide 185

Wrap Up 🎁 Better Together

Slide 186

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)