Trust issues are prevalent in rental platforms such as Airbnb, where numerous users deceive others by sharing false images, incorrect information about amenities, and more. Additionally, Airbnb acts as a centralized system and imposes substantial fees on both renters and landlords. This setup lacks a sense of ownership for landlords regarding their listings and for renters regarding their time spent in a property.
To address these concerns, I propose the implementation of a solution based on a Decentralized Identifier (DID) system. Each user and listing would have a unique identity stored on the blockchain and controlled solely by the user's AuthAccount. With this approach, landlords can establish their booking availabilities, and renters can generate a booking NFT on the blockchain, serving as proof of their temporary ownership during their stay.
The most formidable aspect of the project was acquiring proficiency in a new programming language, Cadence, and accomplishing the required feature implementation within a tight two-week timeframe. A significant portion of my time was dedicated to comprehending the functionality of individual resources and assembling the necessary code for successful implementation. As a result, I gained insight into the design of Cadence contracts for NonfungibleToken and FungibleToken, familiarized myself with the utilization of Resources, Capacity, the linkage between private resources and public views, and the implementation of MetadataViews as proposed in FLIP-0636.
Additionally, extensive research was conducted to determine the most suitable approach for storing private data on the Flow blockchain. While Flow lacks native support for application layer private data storage (except for the node layer, which does not cater to customer data), I managed to discover the Crypto package and PublicKey library, which offer support for the BLS (BLS_BLS12_381) signature algorithm for public keys. However, I encountered difficulties with the compilation of the
verifyPoP(_ proof: [UInt8]): Bool
function in VSCode.Furthermore, I encountered limitations with the NodeJS SDK, which constrained the available functionalities.
It is worth noting that my expertise primarily lies in backend development, distributed systems, and cryptography, rather than being a React engineer. Consequently, implementing the React framework proved to be challenging, but it presented an opportunity for significant learning and growth.
To facilitate future improvements in the development experience of Flow, I created a Notion page outlining potential enhancements. The page can be accessed at the following link: Flow Hackathon Improvement Proposal on Notion
Tracks Applied (2)
Discussion