3Box FAQs on Development

How can my application use 3Box?

3Box is equally compatible with applications that utilize smart contacts and those that don't. If you have an existing smart contract based application, 3Box provides a convenient solution for decentralized user profiles, off-chain database storage, and messaging threads, as well as various UI plugins to speed up development.

Alternatively, 3Box can be used to build a decentralized application that does not use a smart contract at all, but instead leverages our SDKs, APIs, and plugins to add decentralized profiles, public or encrypted database storage, and messaging functionality. Think Slack, Medium, Facebook, or Twitter... but decentralized.

Furthermore, 3Box is blockchain agnostic in its design, and we are likely to integrate other blockchain platforms as they generate adoption.

What is the difference between spaces and profiles?

Underneath the hood, profiles and spaces do function similarly. Both offer the option to store data publicly or privately in OrbitDB key-value database stores. However, profiles were created to store data across applications, similar to gravatar, whereas spaces were designed with specific application (or a part of an application) use cases in mind.

Spaces are great for storing and accessing context specific data in a sandboxed environment, such as app settings and defaults, app-specific content, sensitive information, etc. This data might not be appropriate to store in profiles, where it would more easily be available to all apps.

As a general rule of thumb, only use profiles for data which will be useful across applications, such global avatars, or linked verified accounts. Everything else should go into spaces. For more information about spaces and profiles, visit our docs and GitHub readmes.

Which development environments does 3Box support?

For application developers, 3Box can be used in web development environments using 3Box.js with your choice of JavaScript framework (or vanilla JS). Currently, we do not provide support for iOS or Android. However, we are working on providing React Native compatibility.

3Box has been designed not to require the use of a server, but both 3Box.js and IdentityWallet can be used in a Node.js environment if required.

What is 3Box.js?

3Box.js is the core JavaScript SDK that exposes 3Box APIs for identity, profiles, storage, and messaging from within the browser. It's the way most applications interact with the 3Box network. For more information visit github.

Does my application need to use Ethereum to use 3Box?

3Box does not use the Ethereum blockchain directly since all data and interactions are off-chain, however your users will need an Ethereum wallet, or wallet-enabled browser, to authenticate their data. Users who do not wish to handle private key pneumonics directly can use a simplified key management provider like Fortmatic or Portis. We are exploring integrating a password login system directly into 3Box, removing the need for an Ethereum address altogether.

Does 3Box cost any gas to use?

All 3Box functionality occurs off-chain on the peer to peer web, so no gas is required to use 3Box. However if an application that uses 3Box also uses Ethereum, then users would need gas just as they would on any Ethereum app.