Πτυχιακή εργασία 2026 Βαθμός 10/10
Σχεδιάζοντας εμπιστοσύνη ανάμεσα σε επτά οργανισμούς
Ένα permissioned dApp για επαληθεύσιμες διαδικασίες αγροτικών επιδοτήσεων
- Τμήμα
- Πληροφορικής και Τηλεματικής, Χαροκόπειο Πανεπιστήμιο
- Επιβλέπων
- Ανάργυρος Τσαδήμας
Επισκόπηση
Τα περισσότερα συστήματα δημόσιων υπηρεσιών ψηφιοποιούν μια αίτηση. Αυτό το έργο έθεσε ένα δυσκολότερο ερώτημα:
Μπορεί η απόφαση πίσω από μια επιδότηση να γίνει ανεξάρτητα επαληθεύσιμη, χωρίς ένας οργανισμός να ελέγχει ολόκληρη τη διαδικασία ή να κρατά το κλειδί υπογραφής του πολίτη;
Στην πτυχιακή μου εργασία σχεδίασα και υλοποίησα το επίπεδο εφαρμογών μιας ερευνητικής πλατφόρμας για αγροτικές επιδοτήσεις σε Hyperledger Fabric. Επτά συμμετέχοντες μοιράζονται μία διαδικασία. Οι κανόνες πολιτικής εκτελούνται ως ντετερμινιστικά smart contracts, τα ευαίσθητα στοιχεία φτάνουν μόνο στους οργανισμούς που τα χρειάζονται και οι αγρότες υπογράφουν οι ίδιοι τις συναλλαγές τους από ένα πορτοφόλι στον browser.
Πρόκειται για ένα πλήρως υλοποιημένο ερευνητικό πρωτότυπο. Δεν είναι επίσημη υπηρεσία του ΟΠΕΚΕΠΕ, ούτε επίσημη υλοποίηση της Κοινής Αγροτικής Πολιτικής της ΕΕ, ούτε κρατική υπηρεσία σε παραγωγή: τα μητρώα των φορέων είναι προσομοιωμένα και δεν μετακινούνται πραγματικά χρήματα.
Η πτυχιακή εκπονήθηκε σε δύο μέρη. Εγώ υλοποίησα το επίπεδο εφαρμογών που περιγράφεται σε αυτή τη σελίδα· η Αναστασία Ζέρβα είχε την ευθύνη της υποδομής Hyperledger Fabric, της ενορχήστρωσής της και της αξιολόγησης του δικτύου.
Με μια ματιά
- Είδος
- Πτυχιακή εργασία
- Εφαρμοσμένη έρευνα
- Full-stack κατανεμημένο σύστημα
- Ο ρόλος μου
- Αρχιτέκτονας εφαρμογής, μηχανικός blockchain και full-stack, ανάπτυξη του πορτοφολιού, έρευνα
- Τι ανέλαβα
- Chaincodes και smart contracts, υπηρεσίες εφαρμογής, connectors προς τα εξωτερικά συστήματα, επτά portals ανά ρόλο, το πορτοφόλι του αγρότη, end-to-end διαδικασίες και έλεγχο σε επίπεδο εφαρμογής
- Συνεργασία
- Πτυχιακή δύο μερών με την Αναστασία Ζέρβα, που είχε την ευθύνη της υποδομής Fabric, της ενορχήστρωσης και της αξιολόγησης του δικτύου
- Τεχνολογίες
- Hyperledger Fabric, Go, React, TypeScript, Web Crypto API, Keycloak, PostgreSQL, CouchDB, IPFS/Kubo, Docker Compose, Playwright, Vitest
Το πρόβλημα
Η διαχείριση αγροτικών επιδοτήσεων δεν είναι μία συναλλαγή ανάμεσα σε έναν πολίτη και μια εφαρμογή. Είναι μια μακρά διαδικασία με πολλές αρχές, ιδιωτικά στοιχεία, κανόνες πολιτικής που αλλάζουν, ελέγχους επιλεξιμότητας, εγκρίσεις και εντολές πληρωμής.
Κανείς δεν ξαναγράφει μόνος το ιστορικό
Κανένας οργανισμός δεν πρέπει να μπορεί να αλλάξει σιωπηλά το ιστορικό ενός φακέλου. Τα μέρη χρειάζονται κοινό αρχείο, ενώ οι νομικές τους ευθύνες μένουν διακριτές.
Εγκρίνει ο αγρότης
Ο αγρότης πρέπει να εγκρίνει ο ίδιος την αίτησή του. Ένας server που υπογράφει για λογαριασμό του είναι βολικός, αλλά αποδυναμώνει τη μη αποποίηση και κάνει τον πάροχο θεματοφύλακα κλειδιών.
Επαλήθευση χωρίς έκθεση
Η κοινή επαλήθευση δεν πρέπει να σημαίνει κοινή ορατότητα. Τα φορολογικά, κτηματικά και τραπεζικά στοιχεία δεν μπορούν να φτάνουν σε όλους μόνο επειδή συμμετέχουν στην ίδια διαδικασία.
Πολιτική χωρίς νέα έκδοση
Τα ποσά, τα όρια, οι προθεσμίες επιλεξιμότητας και οι κλίμακες κυρώσεων αλλάζουν. Αν ήταν γραμμένα στον κώδικα, κάθε κανονιστική αλλαγή θα απαιτούσε νέο deployment.
Ο στόχος δεν ήταν να μπει η διαδικασία σε blockchain. Ήταν να αποφασιστεί με ακρίβεια ποια στοιχεία ανήκουν σε κοινό ledger, ποια πρέπει να μείνουν ιδιωτικά, ποιος μπορεί να προχωρήσει έναν φάκελο και ποια τεκμήρια πρέπει να μένουν μετά από κάθε απόφαση.
Η σχεδιαστική απάντηση
Οι φορείς κρατούν τον έλεγχο των συστημάτων τους. Η κοινοπραξία μοιράζεται μόνο τις αποδείξεις, τις αποφάσεις και την κατάσταση που χρειάζεται για να ολοκληρωθεί η διαδικασία.
Η πλατφόρμα χωρίζεται σε τρία επίπεδα. Τα συστήματα που ήδη έχει κάθε φορέας, όπως τα φορολογικά, κτηματικά, τραπεζικά μητρώα και το μητρώο του εθνικού αποθέματος, αποτελούν το εξωτερικό επίπεδο. Το επίπεδο των connectors είναι το μόνο που επιτρέπεται να επικοινωνεί και με το μητρώο ενός φορέα και με τον Fabric peer του. Το επίπεδο της κοινοπραξίας περιέχει το κοινό ledger και τα smart contracts.
Εξωτερικά μητρώα
Προσομοιωμένα στο πρωτότυπο
- ΟΠΕΚΕΠΕΜητρώο αγροτών και αγροτεμαχίων
- ΑΑΔΕΦορολογικό μητρώο
- ΠεριφέρειαΚτηματολόγιο
- ΥπουργείοΕθνικό απόθεμα
- ΤράπεζαΤραπεζικό σύστημα
- Παρατηρητής ΕΕΧωρίς μητρώο
Connectors οργανισμών
Μία υπηρεσία Go ανά οργανισμό
- ΟΠΕΚΕΠΕ
- ΑΑΔΕ
- Περιφέρεια
- Υπουργείο
- Τράπεζα
- Παρατηρητής ΕΕ
Κοινοπραξία Fabric
Κοινό ledger και smart contracts
subsidychannel
Τρία chaincodes, πέντε Private Data Collections
Στατικοί έλεγχοι αρχιτεκτονικής επιβάλλουν αυτό το όριο: οι connectors δεν μπορούν να κάνουν import driver βάσης δεδομένων και τα εξωτερικά μητρώα δεν μπορούν να εξαρτώνται από το Fabric.
Μια κοινοπραξία πρέπει να ενώνει ανεξάρτητα συστήματα, όχι να τα απορροφά σιωπηλά σε μια νέα κεντρική βάση δεδομένων.
Επτά οργανισμοί, ένα κανάλι
Επτά οργανισμοί συμμετέχουν σε ένα κανάλι, το subsidychannel. Οι έξι τρέχουν δική τους υποδομή και το προσωπικό τους συνδέεται μέσω Keycloak. Οι αγρότες δεν τρέχουν τίποτα: ο καθένας έχει ταυτότητα X.509 στο FarmersMSP και υπογράφει από ένα πορτοφόλι στον browser.
Τα τρία chaincodes κρατούν το world state τους σε ξεχωριστά namespaces. Πέντε Private Data Collections περιορίζουν ποιος μπορεί να διαβάσει τα ευαίσθητα στοιχεία, και ο ΟΠΕΚΕΠΕ είναι μέλος σε καθεμία από αυτές.
Browser του αγρότη
Δικό του X.509, χωρίς Keycloak
ΑγρότηςFarmersMSP
Υποβάλλει και υπογράφειΧωρίς peer, χωρίς orderer
Οργανισμοί
Σύνδεση προσωπικού μέσω Keycloak SSO
ΟΠΕΚΕΠΕOpekepeMSP
Αρχή πληρωμώνΣυντονιστής, consenter
ΑΑΔΕAADEMSP
Φορολογικός έλεγχος
ΠεριφέρειαRegionalMSP
Έλεγχος αγροτεμαχίων
ΥπουργείοMinistryMSP
Εθνική κατανομήΣυνεγκρίνει υποθέσεις υψηλής αξίας
ΤράπεζαBankMSP
Εκτέλεση πληρωμώνΧωρίς consenter
Παρατηρητής ΕΕEUObserverMSP
Έλεγχος, μόνο ανάγνωσηΧωρίς consenter, δεν κάνει endorse ούτε υποβάλλει
subsidychannel
Ένα permissioned ledger
Chaincodes στο κανάλι
policy-chaincode1 smart contract
World state
entitlement-chaincode7 smart contracts
World state
- entitlement-opekepe-aade-collectionΜέλη: ΟΠΕΚΕΠΕ, ΑΑΔΕ
- entitlement-opekepe-regional-collectionΜέλη: ΟΠΕΚΕΠΕ, Περιφέρεια
subsidy-chaincode7 smart contracts
World state
- opekepe-aade-collectionΜέλη: ΟΠΕΚΕΠΕ, ΑΑΔΕ
- opekepe-regional-collectionΜέλη: ΟΠΕΚΕΠΕ, Περιφέρεια
- opekepe-bank-collectionΜέλη: ΟΠΕΚΕΠΕ, Τράπεζα
Κάθε chaincode κρατά το world state και τις Private Data Collections του στο δικό του namespace.
- Σύνδεση προσωπικού μέσω Keycloak
- Δικό του κλειδί, υπογραφή στον browser
- Όριο εμπιστοσύνης: η συσκευή του αγρότη
Η πολιτική έγινε δεδομένα, όχι κώδικας
Χώρισα το on-chain κομμάτι σε τρία chaincodes με ξεχωριστές αρμοδιότητες.
- policy-chaincode
- Αποθηκεύει ως δεδομένα στο ledger την ενεργή έκδοση πολιτικής, τα καθεστώτα ενίσχυσης, τα ποσά, τα όρια και τις παραμέτρους κυρώσεων.
- entitlement-chaincode
- Διαχειρίζεται την αίτηση, την επαλήθευση, την κατανομή και την έκδοση των δικαιωμάτων ενίσχυσης.
- subsidy-chaincode
- Διαχειρίζεται την ετήσια αίτηση, από την υποβολή και τους ελέγχους επιλεξιμότητας ως την έγκριση και την εντολή πληρωμής.
Το ledger τρέχει μια δοκιμαστική πολιτική, την CAP-2026-v1, εμπνευσμένη από την Κοινή Αγροτική Πολιτική και ρητά όχι νομοθεσία. Μια νέα προγραμματική περίοδος γίνεται νέα έκδοση στο ledger, όχι κρυμμένες σταθερές σε μια νέα έκδοση του κώδικα.
Στα τρία chaincodes, δεκαπέντε contracts υλοποιούν μεταβάσεις κατάστασης, κανόνες πρόσβασης, προθεσμίες, αποτροπή διπλών αιτήσεων και υπολογισμούς ενισχύσεων.
Μια μετάβαση προχωρά μόνο όταν
- την επιτρέπει η τρέχουσα κατάσταση του φακέλου
- το MSP του καλούντος έχει δικαίωμα γι’ αυτήν
- ισχύει η προθεσμία ή το χρονικό της παράθυρο
- δεν επαναλαμβάνει αίτηση που ήδη υπάρχει
- κάθε ποσό προκύπτει από ντετερμινιστικό υπολογισμό
Οι χρονοσφραγίδες προέρχονται από το transaction context του Fabric, ποτέ από τοπικό ρολόι, ώστε κάθε endorsing peer να καταλήγει στο ίδιο αποτέλεσμα.
Υπογράφει ο αγρότης, όχι η πλατφόρμα
Το πιο χαρακτηριστικό κομμάτι του έργου είναι ένα wallet extension συμβατό με τον Chrome, για αυτοθεματοφυλακή (self-custody) από τον ίδιο τον πολίτη.
Κάθε αγρότης έχει πραγματική ταυτότητα X.509 σε ξεχωριστό FarmersMSP. Το πορτοφόλι δημιουργεί ζεύγος κλειδιών ECDSA P-256 στον browser, κρυπτογραφεί το ιδιωτικό κλειδί με AES-256-GCM και κλειδί που παράγεται με PBKDF2, και προσφέρει κρυπτογραφημένο αντίγραφο ασφαλείας που ελέγχει ο αγρότης. Το ιδιωτικό κλειδί δεν στέλνεται ποτέ στο portal ή στο backend.
Το πορτοφόλι
- Ταυτότητα
- X.509 στο FarmersMSP
- Ζεύγος κλειδιών
- ECDSA P-256, δημιουργείται στον browser
- Αποθήκευση
- AES-256-GCM, κλειδί από PBKDF2
- Αντίγραφο
- Κρυπτογραφημένο, το κρατά ο αγρότης
- Βγαίνει από το πορτοφόλι
- Υπογραφές, ποτέ το ιδιωτικό κλειδί
Το backend μπορεί να μεταφέρει μια συναλλαγή. Δεν μπορεί να την εγκρίνει για λογαριασμό του αγρότη.
Ένας browser δεν μπορεί να λειτουργήσει ως native client του Fabric Gateway, γι’ αυτό σχεδίασα ένα πρωτόκολλο offline υπογραφής. Το πορτοφόλι δεν υπογράφει μια σειρά από bytes επειδή την έστειλε ένας server: πρώτα την αποκωδικοποιεί και ελέγχει τι ακριβώς θα εγκρίνει.
Εννέα βήματα σε δύο γύρους. Γύρος 1, η πρόταση: το backend ετοιμάζει μια ανυπόγραφη πρόταση και το πορτοφόλι την αποκωδικοποιεί, την επαληθεύει και την υπογράφει, πριν το backend τη στείλει για endorsement. Γύρος 2, η συναλλαγή: το backend επιστρέφει τα bytes της συναλλαγής και το πορτοφόλι επαληθεύει και υπογράφει το envelope, πριν το backend το υποβάλει για ordering. Το portal απλώς μεταφέρει bytes ανάμεσα στο πορτοφόλι και το backend.
- ΠορτοφόλιΚρατά το κλειδί
- PortalΜεταφέρει bytes, χωρίς κλειδί
- BackendΕτοιμάζει και μεταφέρει
- FabricEndorsement και ordering
Γύρος 1 / πρόταση
- 1
Backend
Προετοιμασία πρότασης
Ανυπόγραφη, από τη δημόσια ταυτότητα του αγρότη
- 2
Πορτοφόλι
Αποκωδικοποίηση protobuf
Το πραγματικό περιεχόμενο της πρότασης
- 3
Πορτοφόλι Έλεγχος
Έλεγχος του τι εγκρίνεται
Κανάλι, συνάρτηση chaincode, MSP, πιστοποιητικό, ID αγρότη
- 4
Πορτοφόλι Υπογραφή
Υπογραφή της πρότασης
ECDSA P-256, low-S, κωδικοποίηση DER
- 5
Backend
Αποστολή για endorsement
Η υπογεγραμμένη πρόταση πηγαίνει στους peers
Endorsing peers
Γύρος 2 / συναλλαγή
- 6
Backend
Επιστροφή της συναλλαγής
Τα bytes της συναλλαγής από τα endorsements
- 7
Πορτοφόλι Έλεγχος
Έλεγχος του envelope
Αποκωδικοποιείται και ελέγχεται πριν από τη δεύτερη υπογραφή
- 8
Πορτοφόλι Υπογραφή
Υπογραφή της συναλλαγής
Ίδιο κλειδί, ίδια μορφή low-S DER
- 9
Backend
Υποβολή για ordering
Μόνο τώρα η συναλλαγή φτάνει στον orderer
Ordering service
- Έλεγχος
- Υπογραφή
- Μέσω του portal
- Όριο εμπιστοσύνης: το ιδιωτικό κλειδί μένει στο πορτοφόλι
Προστατευμένες αναγνώσεις
Η ίδια ταυτότητα προστατεύει και τις αναγνώσεις. Κάθε βήμα κλείνει ένα συγκεκριμένο κενό:
Challenge μίας χρήσης
Μια σύντομη συνεδρία ξεκινά από ένα nonce που χρησιμοποιείται μόνο μία φορά.
Υπογραφή με διαχωρισμό πεδίου
Το πορτοφόλι υπογράφει ένα μήνυμα που δεν μπορεί να χρησιμεύσει ως υπογραφή για οτιδήποτε άλλο.
Αλυσίδα πιστοποιητικών
Το backend την επαληθεύει απέναντι στη CA του FarmersMSP.
ID αγρότη από το πιστοποιητικό
Ποτέ από παράμετρο του αιτήματος, κάτι που κλείνει έναν δρόμο απαρίθμησης των στοιχείων των πολιτών.
Ιδιωτικότητα, σχεδιασμένη πεδίο προς πεδίο
Ένα κοινό κανάλι δίνει σε όλους τους συμμετέχοντες το ίδιο ιστορικό της διαδικασίας, ενώ πέντε Private Data Collections κρατούν τα ευαίσθητα στοιχεία στους οργανισμούς που τα χρειάζονται. Τα φορολογικά και τα κτηματικά στοιχεία μοιράζονται μόνο με την αρμόδια αρχή και τον ΟΠΕΚΕΠΕ. Η τράπεζα βρίσκει το IBAN στο δικό της μητρώο· το IBAN δεν μπαίνει ποτέ στο ledger.
Τα μεγάλα ή διαγράψιμα έγγραφα ακολουθούν άλλο δρόμο. Το πτυχίο ενός νέου αγρότη αποθηκεύεται σε ιδιωτικό swarm IPFS/Kubo δύο κόμβων, που τους λειτουργούν διαφορετικοί οργανισμοί, και στη διαδικασία καταγράφεται μόνο το αναγνωριστικό περιεχομένου του (CID). Έτσι μένει μια αναφορά ακεραιότητας, χωρίς το PDF να μπαίνει σε αμετάβλητη κατάσταση του ledger.
Το έγγραφο το εξετάζει πάντα ένας άνθρωπος: ένα hash αποδεικνύει ότι το περιεχόμενο δεν άλλαξε, όχι ότι ανήκει στον αιτούντα.
Η αμεταβλητότητα είναι χρήσιμη για αποφάσεις και τεκμήρια. Για προσωπικά έγγραφα είναι συχνά η λάθος ιδιότητα.
Πού βρίσκονται τα δεδομένα
Κατάσταση διαδικασίας και αποφάσεις
ΑποθήκευσηΤο ledger του καναλιού
Ο peer κάθε οργανισμού κρατά το ίδιο ιστορικό καταστάσεων και αποφάσεων. Ο Παρατηρητής ΕΕ μπορεί να το διαβάσει, αλλά δεν κάνει endorse ούτε υποβάλλει. Οι αγρότες δεν έχουν peer και διαβάζουν τον δικό τους φάκελο με υπογεγραμμένα αιτήματα.
- Αγρότης
- Δικός του φάκελος, υπογεγραμμένη ανάγνωση
- ΟΠΕΚΕΠΕ
- Αντίγραφο ledger
- ΑΑΔΕ
- Αντίγραφο ledger
- Περιφέρεια
- Αντίγραφο ledger
- Υπουργείο
- Αντίγραφο ledger
- Τράπεζα
- Αντίγραφο ledger
- Παρατηρητής ΕΕ
- Αντίγραφο, μόνο ανάγνωση
Φορολογικά και κτηματικά στοιχεία
ΑποθήκευσηPrivate Data Collections
Τα φορολογικά στοιχεία μοιράζονται μόνο ανάμεσα σε ΟΠΕΚΕΠΕ και ΑΑΔΕ, τα κτηματικά μόνο ανάμεσα σε ΟΠΕΚΕΠΕ και Περιφέρεια. Οι υπόλοιποι peers βλέπουν ένα hash κάθε ιδιωτικής τιμής, που είναι ο τρόπος με τον οποίο το Fabric καταγράφει τα ιδιωτικά δεδομένα στο κοινό ledger.
- Αγρότης
- Δεν αποθηκεύεται
- ΟΠΕΚΕΠΕ
- Φορολογικά και κτηματικά
- ΑΑΔΕ
- Φορολογικά
- Περιφέρεια
- Κτηματικά
- Υπουργείο
- Μόνο hash
- Τράπεζα
- Μόνο hash
- Παρατηρητής ΕΕ
- Μόνο hash
Τραπεζικός λογαριασμός (IBAN)
ΑποθήκευσηΤο δικό της μητρώο της τράπεζας
Ο ΟΠΕΚΕΠΕ εκδίδει την εντολή πληρωμής. Η τράπεζα βρίσκει το IBAN του αγρότη στο δικό της σύστημα, οπότε το IBAN δεν μπαίνει ποτέ στο ledger.
- Αγρότης
- Δεν αποθηκεύεται
- ΟΠΕΚΕΠΕ
- Δεν αποθηκεύεται
- ΑΑΔΕ
- Δεν αποθηκεύεται
- Περιφέρεια
- Δεν αποθηκεύεται
- Υπουργείο
- Δεν αποθηκεύεται
- Τράπεζα
- Δικό της μητρώο
- Παρατηρητής ΕΕ
- Δεν αποθηκεύεται
Πτυχίο νέου αγρότη
ΑποθήκευσηΙδιωτικό swarm IPFS δύο κόμβων
Το PDF μένει εκτός ledger, σε δύο κόμβους IPFS/Kubo που λειτουργούν διαφορετικοί οργανισμοί. Στη διαδικασία καταγράφεται μόνο το CID του, και το έγγραφο το εξετάζει πάντα ένας άνθρωπος.
- Αγρότης
- Δεν αποθηκεύεται
- ΟΠΕΚΕΠΕ
- Κόμβος swarm
- ΑΑΔΕ
- Μόνο CID
- Περιφέρεια
- Μόνο CID
- Υπουργείο
- Κόμβος swarm
- Τράπεζα
- Μόνο CID
- Παρατηρητής ΕΕ
- Μόνο CID
- Έχει την τιμή
- Μόνο hash ή CID
- Τίποτα
Μία διαδικασία, επτά οπτικές
Το σύστημα περιλαμβάνει επτά React portals, ένα για κάθε ρόλο, και ένα πορτοφόλι στον browser. Κάθε portal είναι ένα ελεγχόμενο παράθυρο στην ίδια μηχανή καταστάσεων, όχι ένα ξεχωριστό dashboard.
Τα backends αντιδρούν σε chaincode events αντί να βασίζονται σε μια κεντρική μηχανή ροής εργασιών. Όταν ένας φάκελος φτάσει στην κατάλληλη κατάσταση, κάθε οργανισμός τον ελέγχει απέναντι στο δικό του μητρώο και καταγράφει ένα υπογεγραμμένο αποτέλεσμα.
Αγρότες
Portal και πορτοφόλι
Εγγράφονται, βλέπουν τα δικαιώματά τους, ετοιμάζουν αιτήσεις και υπογράφουν συναλλαγές.
ΟΠΕΚΕΠΕ
Διαχειρίζεται εκστρατείες, εγγραφές, κλιμακώσεις και τελικές αποφάσεις.
ΑΑΔΕ
Επαληθεύει τις φορολογικές προϋποθέσεις.
Περιφερειακές αρχές
Επικυρώνουν αγροτεμάχια και δηλωμένες εκτάσεις.
Υπουργείο
Αποφασίζει για το Εθνικό Απόθεμα και συνεγκρίνει υποθέσεις υψηλής αξίας.
Τράπεζα
Εκτελεί εντολές πληρωμής χωρίς να αποκαλύπτει τραπεζικά στοιχεία στην κοινοπραξία.
Παρατηρητής ΕΕ
Μόνο ανάγνωση
Έχει πρόσβαση ελέγχου στο ledger. Δεν μπορεί να κάνει endorse ούτε να υποβάλει αλλαγές κατάστασης.
Σχεδιασμός για το σφάλμα που μοιάζει με επιτυχία
Σε ένα σύστημα πληρωμών, το πιο επικίνδυνο σφάλμα δεν είναι πάντα ένα crash. Είναι μια διαδικασία που ολοκληρώνεται κανονικά με λάθος ποσό.
Αυτό καθόρισε τη στρατηγική ελέγχου. Τα tests επαληθεύουν ακριβή χρηματικά αποτελέσματα, εξουσιοδοτημένους καλούντες, επιτρεπτές μεταβάσεις κατάστασης, όρια ιδιωτικότητας και την κατάσταση του ledger από άκρη σε άκρη, όχι μόνο κωδικούς HTTP.
Τι περιέχει το repository
- Chaincodes
- 3
- Smart contracts
- 15
- Private Data Collections
- 5
- Κανάλι
- 1
- Connectors ανά φορέα
- 6
- Προσομοιωμένα μητρώα φορέων
- 5
- Portals, και ένα πορτοφόλι στον browser
- 7
Πώς ελέγχεται
- Top-level συναρτήσεις test στα chaincodes
- 157
- Δηλώσεις unit test στο frontend
- Πάνω από 300
Σουίτες unit, integration, end-to-end, ασφάλειας και συμμόρφωσης. Η απομόνωση των ιδιωτικών δεδομένων ελέγχεται ζωντανά, από τους peers διαφορετικών οργανισμών.
Η υπογραφή δεν ήταν το σημείο συμφόρησης
Μέτρησα τη διαδρομή υπογραφής του πορτοφολιού με μια πραγματική πρόταση από το σύστημα σε λειτουργία, χρονομετρώντας μαζί την αποκωδικοποίηση, τον έλεγχο, την υπογραφή και την κωδικοποίηση DER.
Η κρυπτογραφική δουλειά ήταν πρακτικά ανεπαίσθητη. Την αναμονή την καθόριζαν το endorsement και η συναίνεση του δικτύου, όχι η υπογραφή στον browser. Πρόκειται για μετρήσεις σε δύο μηχανήματα, όχι για πρόβλεψη σε άλλες συσκευές ή φορτία.
Διάμεσος χρόνος της διαδρομής υπογραφής
- Υλικό του 2022
- περίπου 0,075 ms
- Desktop του 2011
- περίπου 0,21 ms
Εγκατάσταση
Η πλατφόρμα έτρεξε και πέρα από ένα laptop: η κοινοπραξία εγκαταστάθηκε σε έξι φυσικά μηχανήματα συνδεδεμένα μέσω WireGuard, με έναν κόμβο στο cloud για την πλευρά των πολιτών. Αυτή η εγκατάσταση ανήκει στο μέρος της υποδομής της κοινής πτυχιακής, της Αναστασίας Ζέρβα· οι διαδικασίες της εφαρμογής που περιγράφονται εδώ έτρεξαν πάνω της.
Πού σταματούν οι εγγυήσεις
Προσομοιωμένα μητρώα, χωρίς πραγματικά χρήματα
Τα μητρώα των φορέων είναι προσομοιωμένα και το πρωτότυπο δεν μπορεί να μετακινήσει πραγματικά χρήματα.
Δοκιμαστική πολιτική, όχι νόμος
Η CAP-2026-v1 είναι αντιπροσωπευτική. Δεν αποτελεί έγκυρη κωδικοποίηση του δικαίου της ΕΕ.
Η αυτοθεματοφυλακή δεν δοκιμάστηκε με αγρότες
Η διαδικασία υπογραφής επικυρώθηκε τεχνικά. Η χρηστικότητά της με πραγματικούς αγρότες μένει για μελλοντική μελέτη.
Η διαγραφή περιορίζεται, δεν λύνεται
Τα έγγραφα εκτός ledger μειώνουν την ένταση ανάμεσα σε ένα αμετάβλητο ledger και το δικαίωμα διαγραφής, αλλά κάποια πεδία ταυτοποίησης μένουν on-chain.
Τα contracts ξέρουν μόνο τις εισόδους τους
Ένας κανόνας δεν επιβάλλεται αν το μοντέλο δεδομένων δεν περιέχει το στοιχείο από το οποίο εξαρτάται. Ο κώδικας ενός smart contract δεν μπορεί υπεύθυνα να επινοήσει δεδομένα που λείπουν.
Αυτοί οι περιορισμοί δεν είναι υποσημειώσεις. Ορίζουν πού σταματούν οι εγγυήσεις του συστήματος.
Τι έμαθα
Το πιο σημαντικό αποτέλεσμα δεν ήταν ότι ένα blockchain μπορεί να καταγράφει αποφάσεις επιδοτήσεων. Το ίδιο μπορεί να κάνει και μια συμβατική βάση δεδομένων.
Το ουσιαστικό αποτέλεσμα ήταν ότι η εξουσία μπορεί να κατανεμηθεί χωρίς να γίνει ασαφής η ευθύνη.
Το έργο έγινε άσκηση σε ένα ευρύτερο είδος μηχανικής: να σχεδιάζεις όχι μόνο τι κάνει ένα σύστημα, αλλά ποιος επιτρέπεται να γνωρίζει, να αποφασίζει, να υπογράφει και να αποδεικνύει κάθε κομμάτι του.
Ποιος γνωρίζει
Τα φορολογικά και τα κτηματικά στοιχεία φτάνουν μόνο στην αρμόδια αρχή και στον ΟΠΕΚΕΠΕ. Τα τραπεζικά στοιχεία μένουν στην τράπεζα.
Ποιος αποφασίζει
Ο ΟΠΕΚΕΠΕ παραμένει η αρχή πληρωμών, η φορολογική αρχή απαντά για τα φορολογικά στοιχεία και κάθε μετάβαση ελέγχει το MSP του καλούντος.
Ποιος υπογράφει
Ο αγρότης κρατά το κλειδί που εγκρίνει την αίτηση. Η πλατφόρμα μεταφέρει τη συναλλαγή, αλλά δεν μπορεί να την υπογράψει.
Τι αποδεικνύεται
Το ledger κρατά μια κοινή σειρά υπογεγραμμένων αποφάσεων που κανείς δεν μπορεί να ξαναγράψει μόνος του. Ένα hash αποδεικνύει ότι ένα έγγραφο δεν άλλαξε, όχι σε ποιον ανήκει.
Αποτέλεσμα
Η πτυχιακή έδωσε μια λειτουργική και μετρήσιμη απάντηση στο κεντρικό της ερώτημα. Ένας πολίτης μπορεί να υπογράψει ο ίδιος τη συναλλαγή του με μια δημόσια υπηρεσία. Μια πολιτική που αλλάζει μπορεί να εκφραστεί ως ελεγχόμενα δεδομένα με εκδόσεις. Πολλοί φορείς μπορούν να συντονιστούν σε ένα ledger χωρίς να εκθέσουν κάθε υποκείμενο στοιχείο. Και ο έλεγχος μπορεί να εστιάζει στο αν οι αποφάσεις είναι σωστές, όχι μόνο στο αν το λογισμικό είναι διαθέσιμο.
Πίσω στα επιλεγμένα έργα