Evolution of Decentralised Social Media — Retire user batching

Part of my Peepeth series.

Background

Leeroy (the original Decentralised Social Network on Ethereum) required an Ethereum transaction per action. This could get expensive very quickly and I believe was a barrier to performing any actions at all (as the price of Ether increased).

Standing on the shoulder of giants, Peepeth 2.0 added the ability for users to batch actions, nominally set at 15 actions. This meant that the average action was cheaper, so a big improvement for the user experience.

User batching still had the barrier of the gas market. To solve this a platform could create platform batches containing all of the users actions (See my post on Evolution of decentralised social media). Peepeth implemented free peeping, initially for qualifying existing users and then for all.

In addition to platform batching, Peepeth removed the requirement for transaction fees for creating an account too. Thus users didn’t need Ether to onboard and use Peepeth.

User batching

Peepeth user batching works as follows: A user signs a message to sign in to the platform. Actions are stored as JSON in IPFS and the IPFS hash for each action is saved in a centralised database until the user gets to 15 actions (or decides to save sooner) and then creates a user batch of actions (JSON of IPFS hashes stored in IPFS) that they sign with the user signature being stored in the batch. Once a user batch is signed, the platform can create a platform batch that the platform can save as transaction input.

User action: QmTaXcptB3yB9gEoskgqsmht5nP3UzU4wb71iCWfxN5HrE

User batch: Qmedn3zoEKZ7Wg4bZ7EZNALQf79pgh2DkDTYdPuiyBAnVm

Platform batch: QmZCv2H42p3AYuqzL36t3yWTZry1gB2bcVBNhDbe8SC4gs

Ethereum Transaction: 0xa041596833cca3b5d0fe974dacf795c0b0115582473d2f1bf81bdf5529fb2f5d

There are a couple of issues with user batching:

First, user batching requires having to explain to users why batching was needed in the first place (see background above). Users don’t need to use Ether to post, so they shouldn’t have to understand gas, the gas market or the history of decentralised social media development to make a post. The average user won’t care what technology their social media is built on, only the features that they get.

The second issue is that until a user signs their batch, then their actions are not anchored on the blockchain. They can only be found on the platform database. (As a side note, any anchoring delay is a barrier for third party apps. We need a mechanism to make actions available to other applications as quickly as possible. Though this is beyond the scope of this post.) If a user never signs a batch then their actions are never anchored.

Retire user batching

The alternative to user batching is that user actions are added to platform batches as actions are performed.

The impact is that this removes the complexity of users having to sign batches and understand the concepts around batching and reduces the time until an action is anchored.

To perform an action, a user needs to sign in. They should then be able to perform any permitted action.

Ideally each user action would be signed, though the current functionality of dApp browsers requires an explicit signing process, which would be another barrier to action. Future native apps will be able to user sign each user action without having to get explicit permission (once signed in).

Without explicitly signing each action, there isn’t a user signature stored in IPFS/onchain, so there isn’t proof that a user made an action, so there is additional trust placed on Peepeth. (User login could be recorded as an action). Though I see this as a short term issue until there are native apps which can sign every action and dApp browsers support pre-approved signing whilst logged in.

Keep it simple

Along with retiring user batching, two other features should be retired, posting whilst not signed in and lock now.

Peepeth allows users to post directly with blockchain transactions (IPFS hash of the post is saved as the input to the blockchain transaction). This creates complexity and for the average user, confusion. Any action that can be done without Ether should not have an alternate option to use Ether on the platform, or even simpler, don’t allow any actions whilst not signed in. (A friend went to post on Peepeth and didn’t understand why they had to pay to post when they thought it was free now. I had to explain that they needed to sign in first).

For power users who want the functionality to post and have it directly anchored onchain, they could post directly to the smart contract (or use an alternate dApp). Whilst these power users do exist, they are not the main audience so the main application shouldn’t have complexity just to support them.

Peepeth also allows signed in users to sign a post immediately (sign now) to be added to a platform batch. Again this adds complexity and requires explanation, so if user batching is retired, so too can sign now.

Conclusion

Complexity is a barrier to performing actions on social media. Now that there is platform batching there is no need for the complexity of user batching.

About me

I started using Peepeth when it was on a testnet (thanks to @jrmoreau verifying on twitter). I was Peeper #7 on mainnet.

I am passionate about the benefits of decentralisation and use on mobile.