| 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 |
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
- Setiap pengguna menghasilkan “identitas” — pasangan kunci privat di kurva yang ramah-ZK (Baby Jubjub)
- Identity commitment (turunan kunci publik) ditambahkan ke Merkle tree on-chain yang dikelola oleh kontrak Semaphore
- 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:
- Identity commitment mereka ada di Merkle tree (tanpa mengungkapkan leaf mana)
- Sinyal mereka (suara, pesan) diotorisasi oleh identitas yang sama
- 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