The Greeting is a protocol to send greeting messages in the Web3 world. It supports custom event creation, sender identification, message sending with payment, and push notifications to recipients . A reference dapp built by Flutter is also available!
To satisfy the demand of sending celebration greeting postcards in a more environmentally-friendly, effort-saving way without sacrificing the sense of formality, “The Greeting” utilize web3 tools and blockchain technology to persistently preserve the user’s record of greeting activities (including sending and receiving), and it’s open protocol, so users to customize their own interface suiting their communities. More specifically, “The Greeting” is based on ethereum and allows users to send celebration greeting postcard as non-transferable NFTs (i.e. SBTs) to a specific wallet address. Also, the integration of the ENS system grantees the convenience of recognition for wallet addresses. To defend against the sybil attack, “The Greeting” adopts World ID from Worldcoin as an authentication system to obtain the proof of humanity, otherwise users need to pay to send greetings. In addition, “The Greeting”’s interaction with PUSH protocol would be able to notify users that they receive new messages and the approximation of a more completed social graph. Lastly, this project is fully open-sourced, including the well-designed and ready-to-use interface and smart contract, enabling developers to improve on our version and develop their own greeting app, which can be connected to The Greeting system, to obtain social graphs and score information after the integration with Lens, etc.
We developed a set of smart contracts and a frontend. There is no self-built backend, so the middle-man does not exist.
Smart contracts are written in Solidity with Hardhat toolkit and Open Zeppelin libraries. Ether.js is used to test and deploy the smart contracts. Remix is also used for interactive debugging and testing. We adopt ERC721-compatible SBT to send greeting cards. Then, other (d)apps can easily read the information sent via The Greeting. Also, greeting cards displayed in the form of NFT also have collection value and aesthetic value.
In terms of frontend, we used Flutter to support multiple platforms, which increased the UX. There is not so much support in Web3 libraries for Flutter, though, our frontend can connect to wallets and send signed transactions thanks to Wallet Connect technology. Actually, React Native is more popular in the Web3 ecosystem, but we decided to use Flutter as we want to show evidence that developers who are not familiar with React Native can develop Web3 apps.
We used PUSH Protocol, ENS, and Worldcoin as sponsor technologies. PUSH Protocol allows message recipients to notice that they have a new message coming, which significantly increases UX for sender and recipient. ENS gives the power to users to identify wallet addresses easily, so it makes it easier for them to identify who sends the message to whom. Also, we used ENS to switch the implementation address of TheGreeting core contract. We needed to update the core contract several times, but the frontend can get the latest implementation address by resolving a single name facade.thegreeting.eth
on Goerli. By doing so, we don’t need to implement a complex upgradable contract nor share the latest implementation address directly from smart contract developer to frontend developer.
Worldcoin lets us check users’ humanity. Due to the openness of the protocol, any non-human programs can send greeting cards via our protocol. But we want to prevent that as it might make the inbox dirty. Then the WorldID is well adopted. By verifying humanity, recipients make sure that senders are human and the message is worth reading. If the sender’s humanity is not verified, we force them to pay 5 USD-worth Ether to send a message.