Teknik Mimari

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

Next.js 15React 19React NativeFramer Motion

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

NestJSTypeScriptPostgreSQLRedisBull Queue

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

SolidityEthereumHardhatSemaphore Circuits

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ışı

1

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)
2

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ₙ]
3

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)
4

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