We're kicking the New Year off with the release of Webnative SDK version 0.35!
An Introduction to Webnative
Here at Fission, we build identity, data, and compute protocols that empower developers to build decentralized edge apps without a complex back-end. We're actively working on a decentralized database and virtual machine, and our solutions for decentralized identity and storage are available today in Webnative SDK. Our SDKs and protocols have been integrated into many edge apps, including Capyloon, web3.storage, and Noosphere.
The Webnative library provides:
- User accounts using the browser's Web Crypto API or a blockchain wallet using the Webnative WalletAuth plugin
- Authorization using UCAN
- Encrypted file storage using the Webnative File System backed by IPLD
- Key management using the AWAKE protocol to link devices
- Platform APIs for publishing apps from the browser
Let's break each of these down.
Developers can choose whether they would like the browser or a blockchain wallet to store a user's encrypt and decrypt keys. The best choice depends on what kind of user experience the developer would like their users to have. For example, if they are building an app for a blockchain audience, using the blockchain wallet user account is likely the best option.
Our team is also currently working on a third user accounts option - passkey support. Passkeys are secured by the device's OS.
UCAN stands for User Controlled Authorization Network. UCANs are a way of doing authorization (“what you can do”) where users are fully in control.
There’s no all-powerful authorization server, or server of any kind required! Everything that a user is allowed to do is captured directly in a key or token, and can be sent to anyone that knows how to interpret this format.
Encrypted File Storage
The Webnative library provides developers the tools to make their edge apps work seamlessly offline while being encrypted at rest. We created an encrypted file storage system called WNFS, which is built on top of the IPFS protocol and backed by IPLD, making it interoperable across the Web.
Device-linking is a breeze with the AWAKE protocol. AWAKE is an authenticated key exchange that provides a way to know something provable about what the other party can do, even if they have no sure way of knowing who the party is. To do this, the protocol leverages UCAN capabilities that don't require a root source of truth.
As well as using the Fission CLI to register and publish apps, developers can create web apps that publish an app directly from the browser.
Webnative version 0.35 is a major rewrite to improve the reliability and extensibility of Webnative. Here are a few of the big changes:
Webnative can now have many apps run on the same domain without any conflicts. Each app is namespaced by default and has its own accounts and WNFS. This should help developers when building apps on the same localhost port.
Customizable + Extensible
A new component system makes it possible for Webnative to run independent of Fission infrastructure. For example, you can use the web3.storage IPFS platform to host your encrypted data. This system also enables the webnative-walletauth plugin.
We've made improvements to the device-linking feature so it works smoothly across multiple browsers.
Multiple filesystems can be loaded at the same time now that conflicts with identifiers have been resolved in the latest version. This allows users to access a temporary filesystem until they are ready to create their own account. When the user ends their session, the developer can give them the option to either store their files locally or create a new account.
Learn all about the latest version of Webnative SDK by reviewing the changelog and guide.
Developers with existing Webnative apps will need to make some changes in order for their apps to be compatible with the latest version. Details on what needs to be updated are available on the migration page.
Webnative App Template is up to date and ready to use with version 0.35, so now is a great time to take Webnative SDK out for a test drive.