3Box Followers: Your Open Social Graph

Discover and follow Ethereum users. Build trust together.

Sep 12 · 4 min read

Introducing, 3Box Followers

We’ve been building towards this moment for a long time. Ethereum and other decentralized platforms promised a more free and fair internet built around interoperable, open data networks. While smart contracts and distributed ledger technology have allowed us to deliver on this promise in various blockchain-native industries, particularly open finance — or DeFi— we haven’t yet witnessed the same kind of openness around social data networks. Until now.

Liberate your social graph

Today we’re excited to introduce followers to the Ethereum community. Followers, the newest feature from 3Box, allows Ethereum users to curate a public list of profiles — or addresses — that they want to follow, save, or generally keep handy for a variety of reasons.

Following lists are public, portable, and self-sovereign. Because your following list is directly stored on your 3Box — an open storage system built on IPFS and OrbitDB — it exists outside the gatekeeping silos of any single application and can be shared across the Ethereum ecosystem, including wallets and dapps.

With followers, 3Box enables an open social graph for the entire Ethereum network and all its applications.

Follow your friends on web3 today 🙌

  1. Create a profile on 3Box Hub if you haven’t already.
  2. Discover who to follow by browsing this twitter thread.
  3. Share your profile URL on the twitter thread to let others discover you.

🎁 BONUS: If you add your profile URL to the twitter thread and retweet our tweet, then we will send you a limited edition 3Box Social Butterfly collectible. 👇

Follow from 3Box Hub. Or anywhere.

We wanted to provide an easy way for users to start building their follower list, so we added the feature to 3Box Hub. However, we don’t want you to think adding or accessing followers is limited to our own application!

Since followers are a public list stored inside a user’s 3Box, any application that integrates with the 3Box SDK can read or modify this list. Our vision is that users can and should be able to follow or unfollow accounts from any app interface throughout the entire ecosystem.

Use Cases: Social UX, Trust, and Reputation

We expect a wave of innovative use-cases to emerge from the creation of a user-controlled social graph that lives outside the control of any single application. Following will make Ethereum apps simple, safe, and social.

Here are a few ideas:

Social Sending: Following lists allow every Ethereum wallet and app to feel like Crypto-Venmo, a social payments experience. Apps only need to integrate with 3Box SDK. Now instead of finding a blank, intimidating TO: field that requires the recipient’s hex address, users can simply click a dropdown that comes pre-populated with the profiles of everyone they follow.

Social Reputation: When a user follows another user, they emit a one-way social signal that is generic and simple yet potentially very powerful. When user following lists — essentially relationships — are viewed in aggregate they can paint a strong image of reputation on the network.

Mutual Following: Apps can also do cool things like display the users in common between two users. This social graph comparison allows developers to add a layer of social context to every interaction. This can help apps provide customized experiences and recommendations to users.

Built with 3Box Threads

Following lists are built with 3Box threads and make use of the personal thread configuration. Personal threads can be read by all, but only modified by the user. The following thread is stored in the MyFollowing space within each user’s 3Box. Learn more about personal threads here.

Integrate Followers into Your App

Follow the instructions below if you’re thinking about adding following functionality to your app.

👀 Display a user’s following list

  1. Install the 3Box SDK into your web app:
npm install 3box

2. Get a user’s following list:

const membersThread = true;const followingList = await Box.getThread('MyFollowing', 'followingList', <userAddress>, membersThread);

3. Fetch profiles for accounts a user is following:

const fetchProfile = async (ethAddr) => await Box.getProfile(ethAddr);const fetchAllProfiles = async () => await Promise.all(followingList.map(user => fetchProfile(user.message.identifier[1].value)));const profiles = await fetchAllProfiles();

🖋️ Modify the following list from inside your app

4. Authenticate the user’s 3Box profile, open their 'MyFollowing' space, and join the 'followingList' thread:

const box = await Box.openBox(ethAddr, web3, opts);const followingSpace = await box.openSpace('MyFollowing');const followingThread = await followingSpace.joinThread(followingThreadName, { members: true });

5. Add or remove an entry in the MyFollowing thread. We use schema.org’s format for saving a user in the following list:

// ADD A FOLLOWING ENTRYconst contact = {
'@context': 'http://schema.org/',
'@type': 'Person',
identifier: [{
'@type': 'PropertyValue',
name: 'DID',
value: `did:3:${proofDid}`,
'@type': 'PropertyValue',
name: 'Ethereum',
PropertyID: 'chainId_1',
value: <Eth addr of user being followed/>,
// REMOVE A FOLLOWING ENTRYfollowingThread.deletePost(user.postId);

If you need help using or integrating 3Box following, reach out on our Discord.


APIs for decentralized profiles, storage, and messaging. Learn more at 3box.io.


Written by


Distributed database infrastructure for Ethereum. We provide a simple, scalable Ethereum Profiles API.



APIs for decentralized profiles, storage, and messaging. Learn more at 3box.io.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade