🕵️‍♂️ The NoirCheck Story

About the Project: NoirCheck – The Digital Trust Platform

NoirCheck is a mobile application designed to combat the rising tide of disinformation and falsified digital content. In the era of generative artificial intelligence, where deepfakes and synthetic texts are indistinguishable from the original, trust in digital information has been severely eroded. Our goal with NoirCheck is to restore that trust by empowering creators and consumers with tools to verify the authenticity and origin of images, videos, and texts.


What Inspired Me?

The inspiration behind NoirCheck stemmed from a growing personal concern about the impact of disinformation on our society. As a consumer of online news and content, I realize how difficult it has become to distinguish real from fake. I witness how visual and textual manipulations undermine the credibility of legitimate sources and exacerbate polarization.

The idea crystallized when observing the potential of blockchain technology to create immutable records and the promise of Zero-Knowledge Proofs (ZKPs) for private identity verification. I feel there is a critical gap in the digital ecosystem: a lack of a robust and accessible mechanism to authenticate the original source of information. This void prompts me to conceive NoirCheck as a "truth platform" for digital content.


What I Learn

Developing NoirCheck is a steep yet rewarding learning curve. Primarily, I deepen my understanding of:

  • Blockchain Technologies and Smart Contracts:
    I understand how to use cryptographic hashes and timestamps to create an immutable lineage on a blockchain. I grasp the importance of immutability and tamper resistance offered by a distributed ledger.

  • Cryptography and Zero-Knowledge Proofs (ZKPs):
    The theoretical integration of XION's zkTLS opens my eyes to the power of privacy in verification. I comprehend how a claim (like a creator's identity) can be proven without revealing the underlying information, a fascinating concept with far-reaching implications for user security and privacy.

  • Modern Full-Stack Development (Flutter & Python):
    I reinforce my skills in Flutter for building a fluid and reactive mobile user interface, and in Python 3.11+ for the backend, handling business logic, file processing, and data preparation for on-chain interaction. This includes learning to manage complex data flows between the mobile client, the server, and external services.

  • Decentralized Application (dApp) Architecture Design:
    While NoirCheck isn't a pure dApp in the traditional sense (it has a centralized backend interacting with the blockchain), its design involves thinking about how decentralization can enhance trust and transparency—a different paradigm from conventional app development.


How I Built the Project

The development of NoirCheck followed a modular approach:

Architecture Design

I started by sketching the overall architecture: a Flutter frontend interacting with a Python 3.11+ backend, with the latter orchestrating communication with the XION Premier Mobile Developer Kit (Dave) for on-chain and zkTLS operations.

Backend Prototype (Python 3.11+)

  • I implemented basic RESTful API endpoints for content upload.
  • I developed functions to calculate SHA-256 hashes for images, videos, and text files.
  • I simulated interaction with the XION SDK, creating stubs for on-chain registration and querying blockchain data.
    For example, a function
    $$ \text{register_on_chain}(\text{hash}, \text{creator_id}, \text{timestamp}) $$ that would return a simulated transaction ID.

Frontend Prototype (Flutter)

  • I designed the key screens: file selection, preview, an upload form, and a verification results screen.
  • I implemented the logic to select files from the device and send them to the backend.
  • I created the interface to simulate the identity verification process with XION zkTLS, showing a "Verifying identity..." status.
  • The consumer verification screen allows uploading a file or simulating a QR scan, sending the hash to the backend for lookup.

Partial Integration

Basic communication between Flutter and Python was established, enabling the flow of content and hashes. The XION part was based on understanding its functionality and the expectation of its SDK.

Iteration and Testing

Each component was tested independently and then together, adjusting design and functionality as needed.


Challenges Faced

  • Complexity of XION Integration:
    The biggest conceptual challenge was integrating with the XION Premier Mobile Developer Kit (Dave) and its zkTLS technology. As a "Proof of Concept," I didn't have access to the actual SDK during the initial design phase, which forced me to simulate its behavior and functionality. This required deep research into how ZKPs and on-chain interactions work to ensure my architecture would be compatible and scalable once the real SDK becomes available.

  • Handling Large Files:
    Efficiently managing the upload and processing of large video and image files, both on the frontend and backend, was a challenge. Ensuring smooth performance and avoiding bottlenecks required optimization in hash calculation and data transmission.

  • Ensuring Privacy and Security:
    While XION's zkTLS handles much of the privacy, designing a system where the hash and identity are securely yet privately linked on-chain, and where the backend only receives what's necessary, involved careful design of data flows and token management.

  • Designing User Experience for Complex Concepts:
    Translating ideas like "cryptographic hashes" and "on-chain verification" into a simple, intuitive user interface for the end-user was a constant challenge. The goal was to make complex technology feel transparent and accessible.


Despite these challenges, the process of building NoirCheck is incredibly rewarding,

Built With

  • apis
  • as-per-documentation)-frameworks-&-libraries:-fastapi-(python-backend
  • as-per-structure-and-conventions)-riverpod-(state-management-in-flutter)-material-design-3-(ui-in-flutter)-lucide-react-(icons-in-react)-blockchain-&-cryptography:-xion-sdk-/-abstraxion-(blockchain-and-zktls-integration
  • cross-platform)-react-and-next.js-(web-frontend
  • fastapi)
  • for-rest-apis)-sqlalchemy-(orm-for-python)-pydantic-(data-validation-in-python)-flutter-(mobile-frontend
  • indexeddb
  • localstorage/sessionstorage
  • next
  • python
  • react
  • restful
  • sha-256
  • sqlalchemy
  • sqlite
  • typescript
  • xion
  • zktls
Share this project:

Updates