Semaphore: Sinyal Anonim Berbasis ZK untuk Voting Privat dan Membership On-Chain

Penulis WhiteHat, Barry; Gurkan, Kobi; Wei Jie, Koh
Tahun 2019
Proyek Semaphore (Privacy and Scaling Explorations, Ethereum Foundation)
Lisensi MIT
Sumber Resmi semaphore.pse.dev
Disclaimer: Halaman ini merupakan ringkasan dan analisis edukatif dari whitepaper atau makalah teknis resmi. Konten ini disajikan untuk tujuan pendidikan semata dan bukan merupakan saran investasi atau keuangan. Selalu baca dokumen asli dan lakukan riset mandiri sebelum mengambil keputusan keuangan apa pun.

Semaphore (2019) adalah primitif ZK untuk keanggotaan kelompok anonim dan sinyal di Ethereum — menggunakan ZK proof Groth16 untuk membuktikan “saya adalah anggota kelompok ini” dan “saya mengirim sinyal ini” tanpa mengungkapkan anggota mana Anda. Dikembangkan oleh Barry WhiteHat, Kobi Gurkan, dan Koh Wei Jie di bawah naungan Privacy and Scaling Explorations (PSE) Ethereum Foundation, Semaphore menjadi primitif kriptografis fondamental untuk aplikasi yang memerlukan anonimitas terverifikasi.

Aplikasi: voting anonim, whistleblowing, partisipasi DAO privat, membuktikan kemanusiaan tanpa doxxing.

Konteks: Problem Anonimitas Terverifikasi

Banyak aplikasi memerlukan paradoks ini: “Saya ingin membuktikan bahwa saya berhak untuk berpartisipasi (anggota kelompok, pemegang token, manusia yang terverifikasi) — tetapi saya tidak ingin mengungkapkan identitas saya.”

  • Voting on-chain transparan: Semua orang dapat melihat siapa memvoting apa. Ini menciptakan tekanan sosial, korupsi pembelian suara, dan penghukuman validator yang memvoting tidak sesuai dengan preferensi staker.
  • Whistleblowing: Pengungkap rahasia perlu membuktikan mereka memiliki akses ke informasi internal tanpa mengungkapkan siapa mereka.
  • Privasi DAO: Anggota mungkin ingin memvoting proposal tanpa mengekspos afiliasi mereka ke publik.

Semaphore memecahkan ini dengan ZK proof keanggotaan kelompok.

Cara Kerja: Identity Commitment

  1. Setiap pengguna menghasilkan “identitas” — pasangan kunci privat di kurva yang ramah-ZK (Baby Jubjub)
  2. Identity commitment (turunan kunci publik) ditambahkan ke Merkle tree on-chain yang dikelola oleh kontrak Semaphore
  3. Merkle tree memrepresentasikan “kelompok” (misalnya, semua pemegang token, semua anggota komunitas terverifikasi)

Cara Kerja: Pembuktian Keanggotaan Kelompok

Untuk mengirim sinyal (suara, pesan, atau hash), pengguna menghasilkan ZK proof yang membuktikan:

  1. Identity commitment mereka ada di Merkle tree (tanpa mengungkapkan leaf mana)
  2. Sinyal mereka (suara, pesan) diotorisasi oleh identitas yang sama
  3. Mereka belum mengirim sinyal sebelumnya dalam “scope” ini (nullifier mencegah sinyal ganda)

Nullifier: Mencegah Double-Signaling

Nullifier adalah hash deterministik dari (identitas, scope):

  • Terlihat publik di chain — kontrak dapat memeriksa bahwa nullifier belum digunakan
  • Tidak dapat dihubungkan ke identitas asli — observer tahu bahwa seseorang mengirim sinyal, tetapi tidak siapa
  • Scope-specific: nullifier voting yang sama tidak dapat digunakan untuk voting dalam referendum yang berbeda

Ini memungkinkan “satu orang satu suara” yang dapat diverifikasi tanpa mengungkapkan siapa yang memvoting.

Aplikasi yang Dibangun di atas Semaphore

  • clr.fund: Quadratic funding untuk public goods Ethereum menggunakan Semaphore untuk privasi pemilih anonim
  • MACI (Minimum Anti-Collusion Infrastructure): Sistem quadratic voting yang mencegah pembelian suara
  • Worldcoin World ID: Menggunakan sirkuit terinspirasi Semaphore untuk proof kemanusiaan anonim
  • Bandada: Protokol manajemen kelompok untuk aplikasi berbasis Semaphore
  • Anon-Aadhaar: Membuktikan keanggotaan ID pemerintah India tanpa mengungkapkan identitas

Hubungan dengan Sistem Privasi Lainnya

Semaphore adalah untuk sinyal (voting, pesan), bukan untuk privasi aset (itu domain Tornado Cash, RAILGUN):

  • Semaphore membuktikan keanggotaan dalam kelompok
  • Tornado Cash membuktikan kepemilikan suatu jumlah

Semaphore dapat dilayerkan dengan Aztec untuk DeFi privat + sinyal anonim secara bersamaan.

Catatan Realistis

  • Semaphore adalah primitif ZK yang terbukti — digunakan dalam produksi oleh beberapa aplikasi nyata.
  • Pengalaman pengguna: Menghasilkan ZK proof memerlukan waktu (bervariasi dari detik ke menit tergantung hardware), menciptakan latensi untuk tindakan interaktif seperti voting.
  • Ukuran kelompok: Kinerja pembuktian menurun dengan pohon Merkle yang lebih besar (kelompok yang lebih besar). Optimasi sedang berlangsung.

Warisan

Semaphore adalah salah satu primitif ZK paling berpengaruh untuk privasi on-chain praktis. Desainnya (identity commitment, Merkle tree keanggotaan, nullifier per-scope) diadopsi atau disalin oleh puluhan proyek. Penggunaannya oleh Worldcoin untuk proof kemanusiaan membawa Semaphore ke perhatian jutaan pengguna. PSE Ethereum Foundation terus mengembangkan Semaphore sebagai referensi open-source.

Istilah Terkait

Referensi

  • WhiteHat, B., Gurkan, K., & Wei Jie, K. (2019). Semaphore: Zero-Knowledge Signaling on Ethereum. semaphore.pse.dev