Αρχιτεκτονική

← Αρχική

Monorepo Δομή

pnyx/ ├── apps/ │ ├── api/ # Python FastAPI │ ├── web/ # Next.js 14 │ └── mobile/ # Expo React Native ├── packages/ │ └── crypto/ # Ed25519, Nullifier, HLR ├── infra/ │ └── docker/ # Docker Compose └── docs/ # GitHub Pages

Stack

ΕπίπεδοΤεχνολογίαWhy
Backend APIPython FastAPIAsync, typed, OpenAPI native
DatabasePostgreSQL 15JSONB, GDPR-ready
CacheRedis 7Sessions, WebSocket
WebNext.js 14SSR, i18n, SEO
MobileExpo React NativeiOS + Android
Crypto (Beta)PyNaCl + @noble/curvesEd25519
Crypto (V2)Rust + WASMBrowser-native

Bill Lifecycle

ANNOUNCED
ACTIVE
WINDOW_24H
PARLIAMENT_VOTED
OPEN_END

Αρχιτεκτονική Επαλήθευσης

Ροή επαλήθευσης ψήφου: SMS, HLR, Argon2id nullifier, Ed25519 κλειδί, υπογεγραμμένη ψήφος στον server

Beta Flow (SMS / HLR)

Phone (+30) ──► HLR Lookup ──► Argon2id ──► nullifier_root │ (αριθμός διαγράφεται) │ nullifier_root ──► HMAC ──► Ed25519 Keypair │ Vote (1.0x)

Alpha Flow (gov.gr OAuth)

gov.gr OAuth ──► AFM hash ──► HMAC ──► nullifier_root │ (AMKA/AFM διαγράφεται) │ nullifier_root ──► HMAC ──► Ed25519 Keypair │ Vote (2.0x)

Και στα δύο flows: τα ακατέργαστα δεδομένα (τηλέφωνο ή ΑΦΜ) διαγράφονται αμέσως μετά τη δημιουργία του nullifier. Ο server αποθηκεύει μόνο το nullifier hash και το δημόσιο κλειδί — ποτέ ανακτήσιμα προσωπικά δεδομένα.

gov.gr OAuth — Κατάσταση & Ενεργοποίηση

⚠️ DEFERRED — Η σύνδεση gov.gr OAuth είναι τεχνικά υλοποιημένη (MOD-09) αλλά απαιτεί επίσημη κυβερνητική έγκριση για ενεργοποίηση.

Δύο τρόποι ενεργοποίησης:

  1. Εθνική Έγκριση: Η κυβέρνηση (ΓΓΠΣ/GSRT) εγκρίνει πρόσβαση → x2.0 βάρος
  2. Κοινοτική Ενεργοποίηση: Δήμαρχοι/Περιφερειάρχες υποβάλλουν αίτημα → Οδηγίες

Μέχρι τότε: SMS (HLR) με x1.0 βάρος. Αξιόπιστο, ανώνυμο, χωρίς κρατική έγκριση.

Vote Scope — Τοπική Ψηφοφορία

Χρήστες με δηλωμένο Δήμο/Περιφέρεια μπορούν να ψηφίσουν τοπικά:

ΕπίπεδοΨηφίζειΒάρος
PARLIAMENTΌλοι οι SMS-επαληθ.x1.0
PERIFERIAΧρήστες στη Περιφέρειαx1.0
DIMOSΧρήστες στο Δήμοx1.0
gov.grΌλοιx2.0