(POI) Proof Of Information
Sharing your on-chain information without revealing your address.
Created on 26th August 2023
•
(POI) Proof Of Information
Sharing your on-chain information without revealing your address.
The problem (POI) Proof Of Information solves
Introduction
The inspiration behind POI (Proof Of Information) came from the problem: "How users can safely use their on-chain information (e.g. crypto balance, ownership of digital assets, etc) in real life?"
Currently, when users want to share their on-chain information, they often share it through a trusted third party (e.g. a digital wallet or a data analysis system on Blockchain). The user will prove his ownership of the wallet address and ask the third party to provide the wallet's information. This leads to the risk that the user's wallet address may be exposed after the information provision process. Revealing wallet address increases the risk of losing assets and losing privacy when they can be publicly tracked through the wallet address.
Thus, I decided to create an application called POI that can solve this problem. The main goal of the application is to make it possible for users to share their on-chain data without revealing their wallet address.
The application is built based on two main technologies: (1) Zero-knowledge Proofs and (2) Merkle tree data structure. Each leaf node in the Merkle tree stores the information of an user's wallet address. Zero-knowledge Proofs helps users prove the accuracy and origin of the information stored in the leaf node. Thereby, the application ensure that:
-
Users remain anonymous, meaning their wallet address is not disclosed to the recipient.
-
The recipient can trust and verify the information about the users.
-
The information shared is diverse and the application can be used for many sharing scenarios.
Example
My name is Notta and I have a Near wallet that store 200 NEARS. I want to prove the information that "My name is Notta and I have a wallet with 200 NEAR" without revealing my wallet address to the bank so that I can use their services.
With POI, I can create my Proof Of Information and give it to the bank. The bank can use POI to verify this proof.
Challenges I ran into
Technologies
At the beginning, I plan to build this project with BOS, Rust and make it almost decentralized.
Firstly, Rust will have the role of building smart contract with the the following functions: (1) storing user information and (2) maintaining the Merkle tree. But I didn't have enough time to be able to learn and complete those smart contracts. I think I'm 40% to 50% done but that's not enough. So I decided to go back and build the server with the traditional method along with ExpressJS and MongoDB.
Secondly, BOS only interacts with smart contracts on mainnet and https servers. I think BOS is eassy to access but it becomes a challenge when I want to combine it with a server or smart contract. But I don't have much experience in deploying a server. So I also decided to pass it on my future works.
After researching these technologies' documents, I realized that these technologies can perfectly work together. In particular, we can put the Merkle tree and proof validation stage on the smart contract. It makes this application gradually become more decentralized and secure.
Others
Another challenge is making sure everything works in sync. I had to experiment with different hash functions and data encryption methods to find out which one is suitable. For everything to work, we have to make sure that: the data received in the front-end is properly encrypted in back-end, the data entered into the Zero-knowledge Proof system is in the correct format, and the data in the proof is properly encrypted, etc.
To address this problem, I have to experiments many times. For me, It's a difficult and time-consuming process but it's worth.
Demo Account
-
Acount ID: proofofinformation.testnet
-
phrase: strike globe disease direct gold fantasy custom ugly gesture punch paddle latin
-
Web2 ID: poi
-
password: 123456789
Tracks Applied (4)
DeFi
Ref Finance
Web2 to Web3
NEAR Foundation
Multichain & Interdisciplinary Solution
NEAR Foundation
Native Prizes
NEAR Foundation


