๐Ÿช WebNative File System ๐Ÿš€ Beyond UnixFS: Extending IPFS for Edge Apps & Web3 github.com/WebNativeFileSystem

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!

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!

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 ๐Ÿš€ Drive (File Explorer)

Beyond UnixFS ๐Ÿš€ High-Level Layout

Beyond UnixFS ๐Ÿš€ High-Level Layout IPNS/DNSLink alice.fission.name

Beyond UnixFS ๐Ÿš€ High-Level Layout Public Photos Avatars Apps IPNS/DNSLink alice.fission.name

Beyond UnixFS ๐Ÿš€ High-Level Layout Public Photos Avatars IPNS/DNSLink alice.fission.name Secret Apps Photos Apps Family Photos My Gallery

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

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

Public Files ๐Ÿ“‚ General WNFS Data Model Public Photos Avatars Apps

Public Files ๐Ÿ“‚ Virtual Nodes

Public Files ๐Ÿ“‚ Virtual Nodes Raw IPLD Node

Public Files ๐Ÿ“‚ Virtual Nodes Raw IPLD Node File Node Raw Data Metadata

Public Files ๐Ÿ“‚ Virtual Nodes File Node Raw IPLD Node Virtual Node Raw Data Consistent interface Arbitrary metadata Tags, creators, MIME, sources, &c Metadata

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

Public Files ๐Ÿ“‚ Hard & Soft Links

Public Files ๐Ÿ“‚ Hard & Soft Links alice.fission.name

Public Files ๐Ÿ“‚ Hard & Soft Links alice.fission.name bob.fission.name

Public Files ๐Ÿ“‚ Hard Links Hard & Soft Links New for the web! Direct reference alice.fission.name 2 pointers ~ deduplicate bob.fission.name

Public Files ๐Ÿ“‚ Hard Links Hard & Soft Links New for the web! Direct reference alice.fission.name 2 pointers ~ deduplicate bob.fission.name

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

Public Files ๐Ÿ“‚ Persistent Versioning

Public Files ๐Ÿ“‚ Persistent Versioning Photos@r0 Vacation Avatars@r0 beach.png caricature.jpg Revision 0

Public Files ๐Ÿ“‚ Persistent Versioning Photos@r0 Vacation Avatars@r0 beach.png caricature.jpg Revision 0 ๐Ÿ•™

Public Files ๐Ÿ“‚ Persistent Versioning Photos@r0 Photos@r1 Vacation Avatars@r0 Avatars@r1 beach.png caricature.jpg headshot.png Revision 0 Revision 1 ๐Ÿ•™

Public Files ๐Ÿ“‚ Persistent Versioning Photos@r0 ChildHasEvent Vacation Avatars@r0 beach.png caricature.jpg Photos@r1 InsertNew Revision 0 headshot.png Revision 1 ๐Ÿ•™ Avatars@r1

Public Files ๐Ÿ“‚ Persistent Versioning Photos@r0 ChildHasEvent Vacation Avatars@r0 beach.png caricature.jpg Photos@r1 InsertNew Revision 0 headshot.png Revision 1 ๐Ÿ•™ Avatars@r1

Public Files ๐Ÿ“‚ Rearranged Photos@r1 ChildHasEvent Avatars@r1 Photos@r0 InsertNew Vacation Avatars@r0 beach.png caricature.jpg headshot.png

Secret Files ๐Ÿฅท Confluence

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 ๐Ÿ˜‰

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โ€

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 ๐Ÿฅท A Dark Forest of Data

Secret Files ๐Ÿฅท Private Nodes Binary CBOR Encrypted Node ๐Ÿ”’ AES256 Encrypted Node ๐Ÿ”’ Virtual Node ๐Ÿ”‘ Index Metadata Encrypted Node ๐Ÿ”’ ๐Ÿ”‘ ๐Ÿ”‘ ๐Ÿ”‘

Secret Files ๐Ÿฅท Read Window Virtual Node Virtual Node ๐Ÿ”‘ Index ๐Ÿ”‘ ๐Ÿ”‘ Metadata ๐Ÿ”‘ ๐Ÿ”‘ ๐Ÿ”‘ Index Metadata

Secret Files ๐Ÿฅท Read Window Virtual Node Virtual Node ๐Ÿ”‘ Index ๐Ÿ”‘ ๐Ÿ”‘ Metadata ๐Ÿ”‘ { ๐Ÿ”‘ ๐Ÿ”‘ name: โ€œbeach.jpgโ€, key: โ€œB374A26A71490437Aโ€ฆโ€, โ€ฆ } Index Metadata

Secret Files ๐Ÿฅท Subgraph Access

Secret Files ๐Ÿฅท Subgraph Access

Secret Files ๐Ÿฅท Subgraph Access ๐Ÿ—

Secret Files ๐Ÿฅท Subgraph Access ๐Ÿ— ๐Ÿ—

Secret Files ๐Ÿฅท Subgraph Access ๐Ÿ— ๐Ÿ— ๐Ÿ—

Secret Files ๐Ÿฅท Subgraph Access ๐Ÿ— ๐Ÿ— ๐Ÿ— ๐Ÿ”ฉโžก๐Ÿ—

Secret Files ๐Ÿฅท Progressive Fast Forward Rev 0

Secret Files ๐Ÿฅท Progressive Fast Forward Rev 0 Rev 1 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rooting progress Rev 0 Rev 1 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rooting progress Rev 0 Rev 1 (Partial) Rev 2 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rooting progress Rev 3 (Complete) Rev 0 Rev 1 (Partial) Rev 2 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rooting progress Rev 3 (Complete) Rev 0 Rev 1 (Partial) Rev 2 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rev 3 (Complete) Rev 0 Rev 1 (Partial) Rev 2 (Partial)

Secret Files ๐Ÿฅท Progressive Fast Forward Rev 3 (Complete) Rev 0 Rev 1 (Partial) Rev 2 (Partial)

Secret Files ๐Ÿฅท Skip Ratchet

Secret Files ๐Ÿฅท Skip Ratchet Ratchet keys for future (backwards) secrecy Skip ratchet KDF for log-time fast forwards

Secret Files ๐Ÿฅท Skip Ratchet Ratchet keys for future (backwards) secrecy Skip ratchet KDF for log-time fast forwards

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

Secret Files ๐Ÿฅท Write Access

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

Secret Files ๐Ÿฅท Dark Forest

Secret Files ๐Ÿฅท Dark Forest

Secret Files ๐Ÿฅท Dark Forest

Secret Files ๐Ÿฅท Dark Forest

Secret Files ๐Ÿฅท Reasonably Efficient Secret KV

Secret Files ๐Ÿฅท Reasonably Efficient Secret KV HAMT (weight 16)

Secret Files ๐Ÿฅท Reasonably Efficient Secret KV HAMT 163 = 4,096 buckets (weight 16) 164 = 65,536 buckets

Secret Files ๐Ÿฅท Reasonably Efficient Secret KV HAMT 163 = 4,096 buckets (weight 16) 164 = 65,536 buckets Append-only Quick Read/Write Merkleized Concurrency Friendly

{brooklyn,philipp}@fission.codes @expede & @matheus23 ๐ŸŽ‰ Thank You, IPFS รพing ๐Ÿ‡ฎ๐Ÿ‡ธ https://whitepaper.fission.codes โœจ github.com/WebNativeFileSystem(/spec) โœจ More in-depth at Strange Loop 2022 (or talk to us today)