
Privacy Hub
Privacy Hub – Your Privacy. Your Wallet.
Demo
About
The problem it solves Privacy Analyzer + Wallet Safety Notifier is built to tackle two big headaches that almost everyone online—especially in crypto—runs into sooner or later: 🔍 Hidden Privacy Risks While Browsing These days, most websites quietly load trackers, analytics scripts, and sometimes even malicious code behind the scenes. You rarely get to see who is collecting your data or what exactly they’re tracking. For non-technical users, understanding these risks or blocking them isn’t easy. 💸 Crypto Wallet Scams and Unsafe Contracts If you’ve ever connected your wallet to a website, you know the anxiety: Is this smart contract legit or a scam? Can I trust this site with my wallet? Checking contract safety often means manually searching addresses across different platforms like Etherscan, Chainabuse, and Reddit. It’s time-consuming and overwhelming if you don’t know where to look. ✨ How It Makes Things Easier and Safer ✅ Automatic Website Scanning The extension scans every site you visit and instantly alerts you if it detects known trackers or suspicious scripts. No technical knowledge needed—just clear, simple information about what’s going on in the background. ✅ Wallet Connection Safety Checks As soon as you connect your wallet to a site, the extension jumps into action. It uses Chainlink Functions to verify smart contracts in real time against trusted safety APIs. If something looks shady, you get a warning before you approve any transactions. ✅ Trusted Verification Without the Extra Work Instead of spending time manually researching contract addresses, you get a straightforward safe/unsafe status right in your browser. One click gives you peace of mind. ✅ Improved Transparency and Confidence Clear reports, visual indicators, and notifications help you feel in control of your privacy and security. No more second-guessing if you’re about to get scammed or tracked. ✅ Optional Extra Protection Want to keep a record? You can download safety reports as PDFs or JSON files. Phishing detection warns you about known scam domains. A simple icon badge shows whether a site is safe at a glance. In short: This tool makes it easy for anyone—regardless of technical experience—to browse and use crypto safely and confidently.
How it's made
Challenges we ran into 🐞 1. Handling Asynchronous Contract Verification One of the trickiest parts was getting asynchronous smart contract verification to work smoothly with Chainlink Functions. The Issue: The verification relied on making API calls, which could take anywhere from a couple of seconds to much longer depending on network conditions. This unpredictability meant the popup sometimes looked stuck or empty while it was still waiting for a response. How I Solved It: I restructured the logic using Promises and async/await so the extension wouldn’t try to display incomplete data. I also added a loading spinner in the popup to reassure users that the check was still happening in the background. 🛑 2. Content Script and Background Script Communication Another hurdle was figuring out how to make the content script and the background script talk to each other. The Issue: Chrome extensions isolate these scripts for security, so you can’t just share variables between them. At first, my attempts to pass data directly kept failing silently, which was pretty confusing. How I Solved It: I set up a message passing system using chrome.runtime.sendMessage() and chrome.runtime.onMessage.addListener(). This way, the content script could send the tracker scan results to the background script, and the background script could forward wallet verification updates to the popup. Once I had this pipeline in place, everything started to click. 🎨 3. Popup UI Updating Dynamically Keeping the popup display up to date in real time was more challenging than it looked. The Issue: Sometimes, when I opened the popup after something had already happened (like a scan finishing), it didn’t show the latest information. It felt like the UI was always one step behind. How I Solved It: I decided to store the latest status in chrome.storage.local, which acts like shared memory for all parts of the extension. Then, every time the popup loads, it checks that storage for the current status before showing anything. This made sure users always saw the most accurate information right away. 🧪 4. Testing Chainlink Integration Testing the Chainlink integration was slower and more complicated than I expected. The Issue: Because Chainlink Functions rely on real API calls, every test required waiting for an actual network response—and if something went wrong, debugging could take ages. How I Solved It: To speed things up, I built mock functions that simulated both successful and failed verifications. This way, I could quickly test how the extension would behave without waiting for live responses every single time.