Status widget/plugins/dApps as a way to iterate faster

The concept of dApps/widget/plugins in Status app is not new and precedes me.

The most recent attempt was done by the Logos Innovation Lab in the form of “Waku Play”. A widget system that can be included in the web chat app they created to enable sharing a member’s location or splitting bills.

Another previous attempt can be found here: Status Chat Widget - An Embeddable Status Chat Widget for your website

Description

Here is an attempt to describe exactly what we are talking about. I do not have a fully formed idea on how it would like so please bear with me.

Very similar to Farcaster Frames: exposing an API to enable anyone to build mini-dApp that can be loaded in a group chat (for Facaster it’s embedded in a “cast” on the feed).

This could also be similar to a Telegram bot, but without the need to host a Telegram bot somewhere.

The API should enable:

  • display text in group chat to all or some members
  • display images in group chat to all or some members
  • display a button to all or some members
  • accept some input: text, amounts

Pushing a button may lead to:

  • send a message in the group chat, which would be “hidden” in the chat but consumed by the widget instance of other members
  • call a specific wallet action such as
    • do a specific transaction: fixed amount to fixed recipient (eg pay another member)
    • do an open transaction: buy token X, but the amount and the source token for the swap remains open

Examples

Such API could enable the following features:

Multisig wallet

Group chat for owners of a multisig wallet.

Widget allows deployment of multisig wallet where all group members are owner.
→ button to enable a wallet call, which is a multisig contract deployment prefilled with eth addresses of group members.

Transaction can be discussed in group chat (normal group chat usage).

Transaction can be initiated in group chat: button to start transaction, lead to wallet action where recipient and amount can be specified.
Initiated transaction (first signature) is then sent in group chat - message is interpreted by the widget, show to chat as specifically formatted text.

transaction can be signed: when widget receives (by accessing messages in group chat) transaction proposal, shows button to other users to sign it.

Split bill

Widget could accept amount and text for users to input their expenses
Then when settling, widget shows button to initiate wallet action to settle expenses

Games/betting

Any games can be built “over Waku” by just using the available API. Making building on Waku more accessible.

Games could be tied to some betting (eg lets play poker between friends) that leads to wallet actions.

It can also lead to prediction market/bet between friend where again, the bet is driven from the chat.

Copy my trades

Defi group chat.

A member can share all their meme coins trades: API allows a member to expose events/history on a given address.

Any member can “buy the same”: the event have a “do swap” button displayed to other members that enable them to do a swap and buy same memecoin.

Marketplace

Similar to the community curation dapp, a marketplace could be created to enable developers to list their widgets. SNT could play a role here, same as community curation.

Biggest mover

Again defi group, the widget can pull data from one or several exchange and provide live market data in the chat. Such as biggest 24 hrs movers.
Button can be displayed to swap/buy those movers, calling for wallet action.

Experimenting Status features

While onboarding widget developers may not be a high priority. iterating on new wallets features, and leveraging chat seem to be one.

Such an API/widget system could be consumed internally to iterate faster on wallet/dapp cross-features. Enabling users to install experimental widgets, and deploying new widgets (ie features) without being locked in the status app release cycle.

It may also be easier to trash/deprecate widgets that do not prove attractive, without cluttering the Status codebase or having to delete from it.

This may be an interesting up-front investment to iterate faster on new features.

Widgets that are successful and popular could become embedded and “shipped” or “installed” by default. With a preferential spot in the potential marketplace.

Conclusion

Security model has to be well thought and I don’t have all engineering solutions. Building an API that can only be used by “approved developers” (ie Status CCs) first may allow a progressive roll out until security is figured out, while enabling fast iteration on core Status app features.

As a Waku contributor, this is also an exciting proposal. As it would enable developers to “build on Waku” much more easily and faster, leveraging what chat protocols bring: identity, group chat, etc.

yes i cant cheer this proposal on enough. given that the team has been working on status network, the whole point of which seems to be onboarding cryptoapps for status, i have to imagine they already must be at some advanced stage internally on the work required for this proposal? at the very least i know they are running a discord bridge bot and a spiffworkflow chatbot so they know how to make it work in some basic form. it would be great if another example could be added in that linked cmd folder of status-go that uses more of the status chat features so more adventurous status users/community owners could experiment with say welcome bots. or even simple chat games like tic-tac-toe where you only interact with a bot by mentioning them in a chat and saying your next moves. once you have such boilerplates available users can start getting creative already with low-stake stuff before the team has figured out a polished and secure api/sdk. @cyp thots?