Sistem Mimarisi
Frontend, backend ve blockchain teknolojilerini birleştiren Agora'nın çok katmanlı mimarisinin derinlemesine incelemesi
Üç Katmanlı Mimari
Agora, endişeleri ayıran ve güvenliği maksimize eden üç katmanlı bir mimari üzerine kuruludur:
- Frontend Katmanı: Kullanıcı etkileşimini ve istemci tarafı ZK kanıt üretimini yönetir
- Backend Katmanı: Anketleri yönetir, Merkle ağaçlarını oluşturur ve oyları toplar
- Blockchain Katmanı: Kanıtları doğrular ve değiştirilemez oy kayıtlarını saklar
Bu ayrım, hassas işlemlerin (kanıt üretimi gibi) istemcide gerçekleşmesini, kamuya açık doğrulamanın zincir üzerinde gerçekleşmesini ve verimli veri yönetiminin zincir dışında gerçekleşmesini sağlar.
Frontend Katmanı
Web ve mobil platformlar için kullanıcı arayüzleri
Temel Sorumluluklar:
- •ZK kanıt üretimi (istemci tarafı)
- •Cüzdan entegrasyonu
- •Kullanıcı arayüzü
- •Gerçek zamanlı güncellemeler
Backend Katmanı
API sunucusu, önbellekleme ve zincir dışı işleme
Temel Sorumluluklar:
- •Anket yönetimi
- •Merkle ağacı yapısı
- •Oy toplama
- •Önbellekleme ve optimizasyon
Blockchain Katmanı
Akıllı sözleşmeler ve zincir üzeri doğrulama
Temel Sorumluluklar:
- •ZK kanıt doğrulama
- •Oy kaydı
- •Değiştirilemez depolama
- •Kamuya açık doğrulanabilirlik
Sıfır Bilgi Kanıt Akışı
Kimlik Oluşturma
Kullanıcı bir Semaphore kimliği (gizli + taahhüt) üretir. Gizli, istemcide kalır, asla sunuculara gönderilmez.
Identity = (secret, nullifier, commitment)Grup Kaydı
Kimlik taahhüdü anketin Merkle ağacına eklenir. Kullanıcı kanıt üretimi için güncellenmiş ağacı (grup üyeleri) alır.
Merkle Tree = [commitment₁, commitment₂, ..., commitmentₙ]Kanıt Üretimi
İstemci şunu kanıtlayan ZK kanıtı üretir: (1) Kullanıcı Merkle ağacındadır, (2) Oy geçerlidir, (3) Kimlik gizli kalır.
Proof = ZK(identity ∈ tree ∧ vote_valid ∧ identity_hidden)Zincir Üzeri Doğrulama
Akıllı sözleşme kanıtı doğrular ve oyu kaydeder. Nullifier, anonimliği korurken çift oylamayı önler.
verify(proof) → record(vote) ∧ check(nullifier)Grup Üyeliği İçin Merkle Ağaçları
Agora, bireysel kimlikleri saklamadan uygun oy verenlerin gruplarını verimli bir şekilde yönetmek için Merkle ağaçlarını kullanır.
Nasıl Çalışır:
- Her oy verenin kimlik taahhüdü Merkle ağacında bir yapraktır
- Ağaç kökü, uygun oy verenlerin tüm grubunu temsil eder
- ZK kanıtları hangi yaprağın olduğunu açığa çıkarmadan üyeliği gösterir
- 20 derinliğindeki ağaç, anket başına 1.048.576'ya kadar oy vereni destekler
Faydalar:
- Verimli kanıt üretimi (logaritmik karmaşıklık)
- Büyük oy veren gruplarına ölçeklenebilir
- Zincir üzerinde tam oy veren listesini saklamaya gerek yok
- Oy verenler kayıt oldukça dinamik ağaç güncellemeleri
Akıllı Sözleşme Doğrulama
Ethereum'daki Agora'nın akıllı sözleşmeleri kritik doğrulama ve depolama işlevlerini yönetir:
Doğrulama İşlevleri:
- Semaphore devreleri kullanarak ZK kanıt doğrulama
- Çift oylamayı önlemek için nullifier kontrolü
- Merkle kök doğrulama
Depolama İşlevleri:
- Değiştirilemez oy kayıtları
- Anket yapılandırması ve metadata
- Kamuya açık oy sayıları ve sonuçlar
Veri Akışı Mimarisi
1. Anket Oluşturma
Organizasyon anket oluşturur → Backend yapılandırmayı saklar → Akıllı sözleşme anket parametreleriyle başlatılır
2. Oy Veren Kaydı
Oy veren kimlik üretir → Taahhüt backend'e gönderilir → Merkle ağacına eklenir → Ağaç kökü güncellenir
3. Oylama Süreci
İstemci ZK kanıtı üretir → Kanıt + oy backend'e gönderilir → Backend doğrular → Blockchain'e gönderilir → Akıllı sözleşme doğrular → Oy kaydedilir
4. Sonuç Toplama
Backend blockchain'den oyları toplar → Sonuçlar hesaplanır → Kullanıcılara gösterilir → Kamuya açık doğrulanabilir