๐ช WebNative File System ๐ Beyond UnixFS: Extending IPFS for Edge Apps & Web3
github.com/WebNativeFileSystem
Slide 2
Slide 3
BROOKLYN ZELENKA
PHILIPP KRรGER
@expede CTO @ Fission
@matheus23 Protocol Engineer @ Fission
Wonโt have time to cover everything in depth. Come talk to us after, weโre friendly & happy to share what weโve learned along the way!
Slide 4
BROOKLYN ZELENKA
PHILIPP KRรGER
@expede CTO @ Fission
@matheus23 Protocol Engineer @ Fission
H C TE Wonโt have time to cover everything in depth. Come talk to us after, weโre friendly & happy to share what weโve learned along the way!
Slide 5
Beyond UnixFS ๐
Requirements Diagram Web3 Apps
Portable Data & Runtime
Hostile Hosts e.g. Browsers
Nonextractable Signing Keys
Web 2.0 Feature Partity
Access Control
Authenticated Data Content Addressed
Authorized Data
Encryption at Rest
Capability Auth
Collaborative
Extensible
Multiuser
Arbitrary Metadata
Concurrent
Kernel vs Userspace
Beyond UnixFS ๐
High-Level Layout
Public
Photos
Avatars
IPNS/DNSLink alice.fission.name
Secret
Apps
Photos
Apps
Family Photos
My Gallery
Slide 11
Beyond UnixFS ๐
High-Level Layout
Public
Photos
Avatars
IPNS/DNSLink alice.fission.name
Secret
Apps
Sharing Inbox
Photos
Apps
Family Photos
My Gallery
Keys and Keys Keysand and Pointers Pointers Pointers
Slide 12
Beyond UnixFS ๐
High-Level Layout
Public
Photos
Avatars
IPNS/DNSLink alice.fission.name
Secret
Apps
Sharing Inbox
Photos
Apps
Family Photos
My Gallery
Keys and Keys Keysand and Pointers Pointers Pointers
Sharing Outbox
Keys and Pointers
Slide 13
Public Files ๐ General WNFS Data Model Public
Photos
Avatars
Apps
Slide 14
Public Files ๐
Virtual Nodes
Slide 15
Public Files ๐
Virtual Nodes Raw IPLD Node
Slide 16
Public Files ๐
Virtual Nodes Raw IPLD Node
File Node
Raw Data
Metadata
Slide 17
Public Files ๐
Virtual Nodes File Node
Raw IPLD Node
Virtual Node
Raw Data
Consistent interface Arbitrary metadata Tags, creators, MIME, sources, &c
Metadata
Slide 18
Public Files ๐
Virtual Nodes File Node
Raw IPLD Node
Virtual Node
Raw Data
Consistent interface Arbitrary metadata Tags, creators, MIME, sources, &c
Metadata
Directory Node
Index
Metadata
Slide 19
Public Files ๐
Hard & Soft Links
Slide 20
Public Files ๐
Hard & Soft Links alice.fission.name
Slide 21
Public Files ๐
Hard & Soft Links alice.fission.name
bob.fission.name
Slide 22
Public Files ๐
Hard Links
Hard & Soft Links
New for the web! Direct reference
alice.fission.name
2 pointers ~ deduplicate bob.fission.name
Slide 23
Public Files ๐
Hard Links
Hard & Soft Links
New for the web! Direct reference
alice.fission.name
2 pointers ~ deduplicate bob.fission.name
Slide 24
Public Files ๐
Hard Links
Hard & Soft Links
New for the web! Direct reference
alice.fission.name
2 pointers ~ deduplicate bob.fission.name
Soft Links Symlink or web link (URL) Pointer ~ latest Latest may break
Secret Files ๐ฅท
Confluence One of the first Merkle CRDT papers was from PL ๐ Persistent data structure Automatic file-level reconciliation Pluggable sub-file reconciliation (forthcoming) Basis of upcoming BFT Datalog โat scaleโ work ๐
Slide 34
Secret Files ๐ฅท
Confluence One of the first Merkle CRDT papers was from PL ๐ 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 35
Secret Files ๐ฅท
Confluence
F
B
E
One of the first Merkle CRDT papers was from PL ๐ Persistent data structure D
Automatic file-level reconciliation Pluggable sub-file reconciliation (forthcoming) Basis of upcoming BFT Datalog โat scaleโ work ๐
A
C
Single File History / โCausal Shadowโ
Secret Files ๐ฅท
Skip Ratchet Ratchet keys for future (backwards) secrecy Skip ratchet KDF for log-time fast forwards
Slide 56
Secret Files ๐ฅท
Skip Ratchet Ratchet keys for future (backwards) secrecy Skip ratchet KDF for log-time fast forwards
Slide 57
Secret Files ๐ฅท
Skip Ratchet Ratchet keys for future (backwards) secrecy Skip ratchet KDF for log-time fast forwards
Inter e s ted in Ask the fu Brook ll pap lyn f er? or a p repri nt
Slide 58
Secret Files ๐ฅท
Write Access
Slide 59
Secret Files ๐ฅท
Write Access Bare Filter simple = Bloom.insert(element: iNumber, into: parentFilter) versioned = Bloom.insert(element: hash(aesKey), into: simple) Saturation nextStep = Bloom.insert(element: xof_hash(n++), into: prevStep) Repeat until threshold bits flipped โOptimalโ threshold depends on Bloom configuration, but often ~49% of bits