The Storage Monkey Protocol allows users to store user-assigned aliases to addresses in a decentralised and secure way. Currently users of DApps can assign aliases to addresses, but these alias are only stored in browser local storage. This means the aliases can be lost and do not port across applications. Storage Monkey lets you store aliases encrypted on IPFS and share them across applications. Since all data is encrypted on IPFS, all configs remain secure. The sharing is facilitated by a simple SDK for DApp developers. The SDK lets developers integrate all CRUD functionality for Storage Monkey aliases in a simple and easy way. The CID of each users alias file is stored in a smart contract. Any config file could be stored and shared between different applications - the alias to address standard is only a first step. Our hope is that in the future new standards will emerge, allowing for DApps to interoperate in a secure and decentralised way.

Storage Monkey showcase

How it's made

The Storage Monkey Protocol leverages IPFS, IPNS, and smart contracts to store user-assigned aliases to addresses used in decentralized applications. The purpose of the decentralized storage is to make the data accessible to any web application that uses the Javascript SDK. Since aliases are user-assigned, these may contain personal or private information, similar to how a phone's contacts might have personal information about their contacts. Before the aliases are published to IPFS, they are encrypted using the public key associated with the user's wallet. The public key is retrieved using metamask. A custom fork of js-ipfs will be used so users can use their metamask to sign IPNS payload. IPNS will ensure that any updates to alias files are free. The IPNS identifier is stored on-chain in a smart contract. When a user wants to fetch their aliases, they call a read method from the smart contract to get the hash, the hash lets them fetch their encrypted aliases, then their aliases are decrypted (with metamask approval) and made available for a web app to inject directly into the UI.

Technologies used