# POSM ## High-level concept POSM, or Proof-Of-Shared-Moment, is an on-chain proof that two or more parties shared a memorable moment, confirmed by each party. Technically, it is an SBT (soulbound token) that can be minted by involved parties when these involved parties each give their confirmation. You could say it's like a [POAP, but with a few key differences](#So-like-a-POAP). ## Motivation In web2 social media, it's all about broadcasting: everyone is on his speakerbox screaming their heads off. But the most memorable social interactions are those where there is a mutual and equal involvement between the participants, a feeling of shared experience. With web3-tech, we have the possibility to make this mutual involvement between parties a *necessity* for the expression. ## How it works * Mark and Ann share an unforgettable moment that they want to register on-chain. * Mark starts a new moment in the POSM-app: he chooses an image that represents sets their moment, and sets Ann as the involved party. * He confirms in the POSM-app. * He gets a QR-code that he can show Ann. * Ann scans the QR code the POSM-app, and confirms that they shared this moment. * Mark and Ann can now both claim the SBT, that represents their moment together, showing the image Mark choose when setting it up. In other words... - there is 1 main SBT-contract for all moments - each moment "reserves a spot/index" to be minted for each involved party - each moment also write an IPFShash of the img/..., and an array of involved parties in the contract - when all the involved parties confirm by signing, then they can each mint their SBT from the main contract ### So like a POAP? Yup! But the key differences are: - POAPs are NFTs, so you can transfer them. This is a SBT, so no transferring! - With POSM, all involved parties are equal, and mint the same SBT; with POAP you have a sender and a receiver, in which only the receiver gains something. - With POSM, all parties have to agree in order for the SBT to be minted: this means no airdrops, or one-sided transactions! - POAP proves attendance. It's not unique to the receiver, and can only be handed out to the same wallet once; POSM can be done as often as one pleases, f.i. a few hours of having fun together could result into 1000 shared moments! ## User stories: - As a web3-native user, I want to connect my wallet to the app, so I can use my wallet in the app. - As a web3-native user, I want to see my (MATIC?)-balance in the app, so I know if I can pay for gasfees. - As a reoccurring user of the app, I want to see all the minted SBT’s/POSM’s in my wallet in the app, so I can see which I have ones I have collected already with this wallet. - As a reoccurring user of the app, I want to filter my POSMs on the POSMs of a specific user, so I can see those specific POSMs. - As a reoccurring user of the app, I sort my POSMs on chronological order of minting, so I can see the POSMs in a specific order. - As a POSM-initiator, I want to go the view to start a new POSM so I can start a new POSM. - As a POSM-initiator, I want to select an image from my camera-roll or camera and upload it (filecoin?) so it can be added to my POSM. - As a POSM-initiator, I want to get feedback (hash?) about my upload so I know if my image is successfully uploaded. - As a POSM-initiator, I want to be able to add a description to my POSM so it can be added to my POSM. - As a POSM-initiator, I want to add participants to my POSM so they can be added to my POSM. - As a POSM-initiator, I want to confirm my POSM by signing so that the function in the contract can be executed. - As a POSM-initiator, I want to pay the gasfee of executing the function in the contract so that the function in the contract can be executed. - As a POSM-initiator, I want to see and copy the URL of this POSM so that I can share it with my participants. - As a POSM-initiator, I want to generate a QR-code of this POSM so that I can show it to my participants. - As a POSM-initiator or POSM-participant, I want to see which of the other participants have already signed the POSM and which haven’t, so that I know who has signed and who hasn’t. - As a POSM-initiator or POSM-participant, I want to go to the designated URL a POSM so that I visit its page. - As a POSM-participant, I want to scan a QR-code of a POSM so that I visit its page. - As a POSM-participant, I want to sign the POSM in which I am participating, so that my signature is added to the POSM. - As a POSM-initiator or POSM-participant, I want to mint the SBT/POSM when all signatures of this POSM are received on its designated page, so I can see it in my wallet (thus in the app) ___ *Nice to have:* - As a POSM-initiator, I want to encrypt the content of my POSM (img and description), so only the participants of this POSM can see its content. - As a POSM-participant, I want to see if the POSM I am visiting is encrypted, so that I can use this information in my choice to sign or not. - As a visitor, I want to see a total collection of all of the POSMs in the contract, so I have an overview of all POSMs in the contract. - As a reoccurring user of the app, I want to filter the total collection of POSMs on the POSMs of the users I have shared a moment with, so I can see those specific POSMs. - As a Lens-protocol-NFT-holder, I want to create a post of a POSM, so I can share it on a Lens-compatible platform. ___ *Also nice to have (but not sure if possible):* - As a POSM-participant, I want to pay my part of the gasfee (= gasfee / number or participants) for initiating this POSM, so that the gasfee is payed by all of us and that the initiator is ‘reimbursed’ for initiating this POSM. - As a POSM-initiator, I want to receive the parts of the gasfee payed by the participants of my POSM, so that the gasfee is payed by all of us. ___ ## First Sketches ### Home-view On the Home-view, user sees, in this order - topnav - new-button (leads to NewPOSM-view) - own collection of POSMs (searchable, filterable, sortable) w every POSM in 'full-view' - total collection of all POSMs on contract, each POSM in 'minified-view' ![](https://i.imgur.com/uJZvqoy.jpg) ### NewPOSM-view ![](https://i.imgur.com/93DVwj7.jpg) ### POSM-detail-view ![](https://i.imgur.com/AYwCwTc.jpg)