AddressMe is a private address book which stores encrypted data on the blockchain for data protection and constant availability. Its purpose is to provide an address book for everyday usage of any kind.
Prize Pool
AddressMe addresses the common scalability challenge many individuals face in managing numerous contacts and their associated addresses, often finding it impractical to keep track and particularly in the context of blockchain addresses which can be cumbersome to recall.
Our solution provides a secure and efficient method for storing contact information by leveraging blockchain technology. This technology is meant to be used every single day my any individual. AddressMe generates a unique hashing key pair, ensuring the utmost security, and stores it exclusively on the user's device. Contact names and addresses are encrypted into hashes locally, safeguarding privacy, and then securely stored on the blockchain for permanent accessibility.
When retrieval is necessary, the hashed data is locally decoded into plaintext, ensuring confidentiality and granting users immediate access to their stored information. AddressMe streamlines the process of managing contacts, offering a seamless and secure solution for maintaining essential data.
Blockchain Selection: Before initiating the project, we carefully evaluated various blockchain options including Morph Testnet, Avail Sepolia, Arbitrum Sepolia (deployed and tested using Curvegrids MultiBaas Deployment), and Gnosis Chiado. Users are provided with the flexibility to switch between these blockchains seamlessly through the application interface. This process is facilitated by integrating with Metamask, where users are prompted to select their preferred blockchain, ensuring a user-friendly and automated experience.
Step 1: Generating RSA Key Pair: The initial step involves the generation of RSA key pairs, a fundamental component of ensuring data security. This process occurs locally on the user's device, thus guaranteeing that the keys remain exclusively stored on the user's device for enhanced security and privacy.
Step 2: Frontend Input and Backend Processing: Users are provided with a frontend interface where they can input contact names and corresponding addresses. This input data is then formatted into JSON and transmitted to the backend server for further processing. To ensure data integrity and security, particularly when handling large datasets, the JSON payload is divided into smaller, manageable chunks. This division prevents data loss during encryption and facilitates efficient processing within the RSA encryption mechanism.
Data Encryption and Blockchain Storage: Upon chunking the JSON data, each segment undergoes hashing before being transmitted to the selected blockchain for storage. By hashing the data, we ensure that only the hash representation is stored on the blockchain, safeguarding the confidentiality of the original information. This approach optimizes storage efficiency while preserving data privacy.
Data Retrieval and Decryption: When users require access to their stored information, the corresponding hash is retrieved from the blockchain. The hash is then forwarded to the backend server, where it undergoes decryption using the locally stored RSA private key. Subsequently, the decrypted data is sorted alphabetically to facilitate easy retrieval, and the results are displayed on the frontend interface. Users can effortlessly copy the desired address associated with a specific contact name.
Technological Stack: Blockchain Integration: Utilizing Morph Testnet, Avail Sepolia, Arbitrum Sepolia, and Gnosis Chiado for decentralized data storage. Smart Contract: Solidity Encryption Mechanism: RSA encryption for securing sensitive data. Frontend Development: HTML/CSS/TypeScript for user interface design. Backend Development: Utilizing server-side languages such as Node.js for data processing and encryption. Integration: Metamask integration for seamless blockchain selection and interaction.
Notable Considerations: Automated Blockchain Selection: Integration with Metamask enables users to effortlessly switch between blockchains, enhancing accessibility and user experience. Data Chunking for Efficiency: Dividing JSON payloads into smaller chunks ensures efficient processing and prevents data loss during encryption. Hash-based Data Storage: Storing only hashed representations of data on the blockchain ensures privacy and minimizes storage requirements. Local RSA Key Storage: RSA key pairs are generated and stored locally on the user's device, ensuring heightened security and confidentiality.