ZK Social Protocol
  • Introduction
  • UI Clients
  • 💻Developers
    • Overview
    • Identity
      • Pseudonymous Identity
    • Data
      • Schema
      • Simple Node
      • Archive
      • Eviction Policy
    • API
    • Libraries
      • zkitter-js
  • 📓FAQs
    • How to sign up with Metamask?
    • How to chat anonymously?
    • What is an Anonymous account?
    • How to create an anonymous user?
    • How to create a custom group?
    • How does moderation work?
    • What shows up in the global feed?
    • How to upload an image?
    • How to share a WebTorrent seed?
  • Resources
    • Links
Powered by GitBook
On this page

Was this helpful?

  1. Developers

Overview

PreviousUI ClientsNextIdentity

Last updated 2 years ago

Was this helpful?

ZK Social is a zero-knowledge social network built on top of four different layers: - Identity layer (Ethereum - decentralized) - Data layer (GunDB - decentralized) - API layer (Postgres - centralized) - UI layer (Typescript/React - centralized)

Each client runs a GunDB peer node that joins a peer-to-peer network with the seed nodes gun-seed-1.auti.sm/gun. Each client by default only download and keep just the amount of data they need from GunDB, but they can also download and retain records of all users to ensure data completeness in the network. We will initially operate three seed nodes that keep records of all data.

In order to join as a user, a user will first have to generate a ECDSA key pair, and write the public key to a in Arbitrum (support for other networks will come in the future). The private key is used to authenticate the user's write access to GunDB, where the public key is used by other clients to retrieve a user's data slice.

To help with discovery of contents, we also run SQL indexer that index all data into queryable formats and them over a RESTful API.

💻
serve
smart contract
Network Diagram