###### tags: `Waku Objects` # Waku Objects first proposal ## A Modular System For Transactional Chat Objects ### A Waku Object is a chat widget. Chat members interact through the Waku Object's GUI to execute a specific transactional cryptographic protocol. ### The curated store of Waku Objects grows over time as developers charge a fee for the use of their object. ![](https://i.imgur.com/yYKGADa.jpg) ## Waku Objects Parts - Application layer visual system / framework (os agnostic) - Documentation for theme / flavor / branding system - Examples for web (wakuobjects.js), optionally ios (lib), android (lib) implementations - Waku Objects Store: A curated repository / feed of quality controlled objects through staking rep (Kurate) ![](https://i.imgur.com/kqoMLTd.jpg) *Sketches on how to add a Waku Object to a chat conversation* ## Examples ### Hello World **Level 1: Beginner** a simple ts chat app with using waku. Features Hello World object, which can be added to any 1 on 1 conversation by clicking a + button on the left side of the text input field and selecting "Hello World" from the popup menu. An object is added to the chat. For A it shows "waiting for other to accept". On the side B it shows "accept blablabla?" with a trust score to be found in the kurate feed for trusted objects. When B accepts, on screen A the user can enter a name and hit save / send. On screen B the object changes state to Hello World which looks like a boarding pass for a first class flight to Decentraland with user's name in it. ### Teller **Level 2: Advanced** https://github.com/status-im/status-teller-network [](https://i.imgur.com/Y8Aw86s.jpg) ### Rides **Level 3: Expert Level** In this example a ridesharing scenario is described. Antwerp Decentralised Taxi downloaded Waku Desktop. You need it in order to create and maintain a "business" chat persona. The business persona can have multiple users, who will be able to manage the conversations. The admin can setup auto-reply features, for instance a short welcoming text with a Waku Object. In this case, the Admin added the ridesharing waku object. When adding it the admin could set a fee and fee destination. UX: Customer downloads the Antwerp Decentralised Taxi app and taps "request a ride". BACKSTAGE: Customer becomes member of a semaphore group UX: Customer enters chat conversation and sees a welcoming message. "Hi there welcome to antwerp taxi, to continue please accept this object" (trust score for this object can be found in semaphore group of waku objects store) Customer taps "accept" and the object changes into a "form" Customer enters pickup and destination details, price is calculated, payment is in escrow, a fee is subtracted (goes to the developers / maintainers of this Waku Object), shows interface "connecting to driver". ## Braindump: Other Objects * **Simple receive payment:** Simple way to privately receive money. Specify a currency, an amount, wallet address. * **Simple send payment:** Simple way to privately send money. * **Advanced / split payments:** splitting a bill, or raising fund where there might be a total amount and multiple payments not necessarily equal. * **Location-based services:** an object that guides you in each other's direction without ever revealing a user's location * **Showing ZK proofs:** for instance my REP, or that I belong to a specific group, etc. This would be like a certificate. * **Poll/Voting on options:** this could be a simple object where I can ask members of the group to vote on certain choices, this could be useful for deciding on a place or time to meet, or check the group opinion on any topic. We could also ensure that voting is anonymous and each member can only vote once. There might be interesting options to define the voting process (quadratic, etc.) * **Games:** Simple games where players play in turns, it could be two or more players. ## Dependencies in the ecosystem / logos / status - Waku introduces the concept of "pro" or "group" identities - Waku Desktop App or Status Desktop App or a web interface on web.waku.eth > sign in w keycard screen to manage the group account (status desktop browser) - Status messenger implements behaviour for Waku Objects - Dark ZK-EVM / rollup ## Strategy 1. Research, product and project definition 2. Developing the system (documentation, libraries and store) by creating the first widget(s) 3. Have Kurate and Zkitter dogfood Waku Objects to start a feedback loop and make sure they are easily themed and integrated: ## Glossary **Objects**: A widget with functionalities and a GUI **transactional**: all objects are about transacting between 2 or more parties. We define 'transaction' as a state change in a shared reality. **Chat Objects**: Chat is a very accessible way for people to interact. The second step is to start a more complex transaction by adding the suitable object, in the chat. **Modular system**: Think like an app store. There will be a shop for Waku Objects, we create that system where developers can easily add more objects on the one hand, on the other hand, apps that have waku chat and want to enable one or more waku objects in their chat, can take them from the waku objects shop and customise them. In our examples of waku objects we need to show a best practice in how to offer a customisable waku object, Right now I am thinking of UI themes, but maybe there is more to customise. We will also give the example of using Waku Objects in Kurate chat ![](https://i.imgur.com/tz9MKNR.jpg)