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 smart contract 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 serve them over a RESTful API.