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.