This is the grant proposal that Fission has had approved from Protocol Labs. Everything is open source so we encourage contributors to take part.
Fission’s approach is that everything we build works in every browser, including mobile browsers, without plugins.
We empower front end developers to build using only front end tools – without having to become “full stack” developers. So, we target JavaScript, and as it matures, WebAssembly, as the target execution environment for our software.
Developers building “web native” apps with the Fission stack enable logins by users where users own their data, in their own IPFS-based Web Native File System (WNFS).
This is a bit like an open source iCloud: users give permissions to apps to write into their file system, and always own their data, as well as enabling re-use across apps.
By integrating with Filecoin, users can then additionally backup or snapshot their data at scale. Developers can expose and integrate this functionality, enabling them to work with very large volumes of data, without having to build full stack apps.
Deliverables
Linking Fission DIDs with Filecoin Wallet / Identity
We want to enable using Filecoin in a browser without a plugin.
Use Fission’s in-browser WebCrypto APIs to link a Filecoin wallet. Use your Filecoin wallet in any browser without a plugin.
Fission uses WebCrypto API and allows for linking of accounts across devices, much like Keybase. This means that Fission can be securely used without needing a browser plugin. We have written the UCAN Specification, and the Qri team has implemented a GoLang version.
Linking a Filecoin wallet to a Fission identity would enable Filecoin to be able to be used in any browser, including mobile, without a plugin.
The security profile would be similar to the current Open Work Labs / Glif web wallet.
This is also where WalletConnect research would fit for upgraded security and wider usability.
Web Native Filecoin Plugin
Produce a TypeScript / JavaScript library that works with the Web Native SDK to enable Filecoin support.
Enables front end developers to interact with Filecoin with the rest of the Web Native tools, Web Native File System.
Filecoin Backup App
We would build a standalone “filecoin backup app”. This would be built and deployed as a standalone app. We would likely pick a front end framework that is popular – such as React – for maximum re-use and learning capabilities.
This would serve both as a sample app – showcasing how to use Web Native and the Web Native Filecoin plugin – and enable working with Filecoin content and IPFS content back and forth.
It would have access to the user’s WNFS / IPFS of “hot” files available live in the browser, as well as be able to take snapshots, browse content in Filecoin, and restore those snapshots.
Because WNFS is encrypted and stores metadata, we can mix hot data and stored Filecoin data very nicely – a bit like Apple’s Time Machine interface.
This would be open source, and could be re-used and implemented in any other front end tech app – React, Vue, Svelte etc
Tech Stack and Approach
The Web Native SDK is in TypeScript / JavaScript and is the key component that app developers use.
We’ll add functionality to the Web Native SDK and related libraries to be able to work with Filecoin.
For Filecoin support, we will build on top of existing components like Textile’s Powergate, and continue to work within the JavaScript native IPFS ecosystem.
The Filecoin WASM Signing Tools may also form part of the solution.
In general, we prefer open source and collaborative solutions in working with other people in the ecosystem, and we have extensive open source community experience, as well as blockchain experience from the Ethereum ecosystem.
Resources and Links
- Webnative SDK – Build web native apps with Auth and Files, with User Owned Data https://github.com/fission-suite/webnative
- Presentation on the WebNative File System WNFS – Private Encrypted and Public files with metadata, implemented on top of IPFS Fission’s Web Native File System Technical Design Overview with Daniel and Brooklyn
- Keystore-idb – in-browser key management with IndexedDB and the Web Crypto API https://github.com/fission-suite/keystore-idb/
- UCAN Tokens Blog Post https://blog.fission.codes/auth-without-backend/ + specification https://whitepaper.fission.codes/access-control/ucan/ucan-tokens + GoLang https://github.com/qri-io/ucan
- Whitepaper / Specifications https://whitepaper.fission.codes
Milestones
1. Generate Filecoin account & encrypt in WNFS
- Research basics of Filecoin web wallets, cryptographic curves, and compatibility with Web Crypto API
- Research trade offs between encrypted keys vs Shamir secret sharing
- End-to-end demo of Fission Web Crypto API accounts plus Filecoin accounts
2. Web Native Filecoin Plugin
- Extend the webnative SDK to include functions to create new Filecoin accounts, and write to and retrieve from Filecoin network
- Set up infrastructure to point at default / custom Powergate servers, RPC end points as needed
- Basic v0 app that showcases how devs + end users can interact on testnet
3. Filecoin Backup App
- v1 app with WNFS and Filecoin integrated
- Users can visit the app, sign up for an account, create a Filecoin key, and drag and drop upload files
- App works on testnet and mainnet