Μια μηχανή του χρόνου για τα DPP

Φανταστείτε ότι κρατάτε ένα προϊόν στο χέρι σας και σαρώνετε τον κωδικό QR που φέρει. Αντί για ένα αρχείο PDF, ανοίγει μια μικρή εφαρμογή. Βλέπετε το προϊόν όπως είναι σήμερα: από τι αποτελείται, από πού προέρχεται, τι πρέπει να προσέξετε. Με μια κίνηση σάρωσης επιστρέφετε πίσω στο χρόνο - μπορείτε να δείτε κάθε έκδοση που έχει κυκλοφορήσει ποτέ.

Αυτό ακριβώς μπορείτε να δοκιμάσετε τώρα: Η επίδειξη⁠ παρουσιάζει ένα πλήρες διαβατήριο προϊόντος με δείγματα δεδομένων.

Αυτή είναι η Transpareo Time Machine, η εφαρμογή ανοιχτού κώδικα για καταναλωτές που δημιουργήσαμε για κάθε Ψηφιακό Δελτίο Προϊόντος. Ο κώδικας διατίθεται υπό την άδεια GPL v3 στο GitHub⁠.

Την αναπτύσσουμε επειδή ο κανονισμός της ΕΕ για το Ψηφιακό Δελτίο Προϊόντος γράφτηκε για τους καταναλωτές - για το άτομο που κρατά το προϊόν στα χέρια του. Οι περισσότεροι προμηθευτές το μετατρέπουν σε ένα έντυπο συμμόρφωσης που κανείς δεν σκανάρει δεύτερη φορά. Εμείς το μετατρέπουμε σε μια εφαρμογή που ο καταναλωτής θα ανοίξει.

Τι κάνει η εφαρμογή

Τέσσερα σημεία επαφής από τη σκοπιά του ατόμου που κρατά το προϊόν στα χέρια του. Χωρίς σύνδεση, χωρίς εγκατάσταση εφαρμογής.

1

Σάρωση

Σαρώστε τον κωδικό QR με την κάμερα του smartphone σας. Η εφαρμογή θα ανοίξει στον περιηγητή.

2

Δείτε τα τελευταία νέα

Το προϊόν παρουσιάζεται στο «Τώρα» - συστατικά, υλικά, προέλευση, φροντίδα, ανακύκλωση.

3

Περιήγηση στην ιστορία

Με μια κίνηση σάρωσης γυρίζεις πίσω στο χρόνο. Κάθε προηγούμενη έκδοση με την ημερομηνία και το λόγο της αλλαγής.

4

Κοινοποίηση

Κάθε έκδοση διαθέτει τον δικό της σύνδεσμο. Ένα άτομο μοιράζεται μια συγκεκριμένη έκδοση με φίλους ή αρμόδιες αρχές.

Γιατί, άλλωστε;

Ο κανονισμός της ΕΕ για το ψηφιακό διαβατήριο προϊόντος αποτελεί τη μεγαλύτερη αλλαγή προς την κατεύθυνση της διαφάνειας των προϊόντων εδώ και δεκαετίες. Αν διαβάσει κανείς προσεκτικά τα κείμενα στα οποία βασίζεται, θα διαπιστώσει ότι έχει συνταχθεί ρητά για τους καταναλωτές. Οι αρχές, οι εταιρείες ανακύκλωσης και τα συνεργεία ακολουθούν την τάση, αλλά ο πρωταρχικός αποδέκτης είναι το άτομο που κρατά το προϊόν στα χέρια του.

Από αριθμητική άποψη, το θέμα είναι σαφές. Ένας μέσος Ευρωπαίος ιδιώτης θα μπορεί, μέχρι το τέλος της δεκαετίας, να σαρώνει δεκάδες έως εκατοντάδες διαβατήρια προϊόντων ετησίως. Υπολογιζόμενο σε 200 εκατομμύρια νοικοκυριά, αυτό σημαίνει δισεκατομμύρια αλληλεπιδράσεις με τους καταναλωτές ετησίως. Ο κόσμος των αρχών και των εταιρειών ανακύκλωσης είναι, σε σύγκριση, αριθμητικά αμελητέος.

Αν ο κανονισμός πρόκειται να φτάσει στον καταναλωτή, τότε η ιστοσελίδα για τους καταναλωτές πρέπει να είναι καλά σχεδιασμένη - γρήγορη, ελκυστική, συνεκτική. Διαφορετικά, δεν θα επιτύχει τον σκοπό της. Αποφασίσαμε να δημιουργήσουμε αυτή την ιστοσελίδα για τους καταναλωτές με ανοιχτό κώδικα, ώστε να μην εξαρτάται από έναν μεμονωμένο πάροχο.

Αλλαγή παρόχου χωρίς διακοπή

Ο κανονισμός της ΕΕ για το ψηφιακό διαβατήριο προϊόντος απαιτεί διαβατήρια προϊόντων που να είναι διαλειτουργικά και να βασίζονται σε ανοιχτά πρότυπα - να μπορούν να μεταφέρονται μεταξύ υπηρεσιών και συστημάτων, αντί να συνδέονται με έναν μόνο πάροχο. Η ανεξαρτησία από τον πάροχο υπηρεσιών δεν αποτελεί, επομένως, ένα πρόσθετο στοιχείο, αλλά μέρος της προδιαγραφής.

Το Transpareo Time Machine είναι το εργαλείο που υλοποιεί συγκεκριμένα αυτή την απαίτηση. Επειδή κάθε πιστοποιητικό προϊόντος παραδίδεται σύμφωνα με ανοιχτά πρότυπα - ταυτοποίηση ανεξάρτητη από τον διαμεσολαβητή, κανονική σειριοποίηση, δημόσια δημοσιευμένα κλειδιά - και ο renderer διατίθεται ως ανοιχτό λογισμικό υπό την άδεια GPL v3, η απεικόνιση ενός πιστοποιητικού δεν εξαρτάται ποτέ από την πλατφόρμα μας.

Υπεύθυνος για ένα πιστοποιητικό προϊόντος είναι ένας οικονομικός φορέας - ο κατασκευαστής, ένας εισαγωγέας ή ένας εξουσιοδοτημένος αντιπρόσωπος. Αν αποφασίσει να αποχωρήσει από το Transpareo και να μεταβεί σε άλλο πάροχο, η απεικόνιση παραμένει σταθερή: Ο ίδιος ανοιχτού κώδικα renderer συνεχίζει να εμφανίζει αμετάβλητα τις ήδη δημοσιευμένες εκδόσεις μαζί με το ιστορικό, ενώ ένας νέος πάροχος που χρησιμοποιεί τα ίδια ανοιχτά πρότυπα θα εμφανίζεται από την ίδια ακριβώς εφαρμογή. Τα δεδομένα μεταφέρονται μαζί, οι καταναλωτές δεν παρατηρούν καμία διακοπή και κανείς δεν χρειάζεται να περιμένει τη μετεγκατάσταση.

Ελέγχθηκε στον περιηγητή, όχι στον διακομιστή μας

Στο πάνω μέρος κάθε δελτίου προϊόντος εμφανίζεται μια ετικέτα: «Επαληθευμένο από την Transpareo». Αυτή δείχνει το αποτέλεσμα ενός ελέγχου που δεν πραγματοποιείται στον διακομιστή μας, αλλά στον περιηγητή του επισκέπτη - με βάση τα φορτωμένα byte και τα δημόσια κλειδιά του εκδότη.

Κάθε έκδοση DPP υπογράφεται από δύο ανεξάρτητους φορείς: τον εκδότη και την Transpareo. Και οι δύο υπογραφές πρέπει να είναι επαληθεύσιμες, ώστε η ετικέτα να γίνει πράσινη. Με το «Bring Your Own Key» (BYOK), ο εκδότης διαχειρίζεται το δικό του τερματικό υπογραφής - η Transpareo δεν κατέχει ποτέ το ιδιωτικό κλειδί και προσθέτει μόνο την ανεξάρτητη αντί-υπογραφή. Έτσι δημιουργείται μια υπογραφή εκδότη, την οποία η ίδια η Transpareo δεν μπορεί να δημιουργήσει. Ένας παραβιασμένος διακομιστής δεν μπορεί να πλαστογραφήσει το τικ, καθώς ο έλεγχος πραγματοποιείται στον ίδιο τον επισκέπτη.

Όποιος θέλει να μάθει τις λεπτομέρειες, κάνει κλικ στο σήμα. Πίσω από αυτό θα δείτε την αλυσίδα υπογραφών, τα κατακερματισμένα και το ιστορικό των εκδόσεων. Όποιος θέλει μόνο την πληροφορία, απλώς το αγνοεί και συνεχίζει να διαβάζει το δελτίο προϊόντος.

Ο ίδιος έλεγχος υπάρχει και ως αυτόνομη σελίδα: Στην επαλήθευση DPP εισάγετε τη διεύθυνση URL του manifest οποιουδήποτε δελτίου προϊόντος και βλέπετε το πλήρες αποτέλεσμα του ελέγχου - χωρίς να ανοίξετε το ίδιο το δελτίο.

Δημοσιεύουμε τον κώδικα

Το Transpareo Time Machine διατίθεται υπό την GPL v3 στο GitHub⁠. Κλωνοποίηση, δημιουργία fork, φιλοξενία σε δικό σας διακομιστή - όλα επιτρέπονται. Οι δημοσιευμένες τροποποιήσεις πρέπει με τη σειρά τους να διατίθενται υπό την άδεια GPL v3, ώστε κάθε περαιτέρω ανάπτυξη να εξυπηρετεί το κοινό καλό.

Τρεις τρόποι ενσωμάτωσης του πακέτου:

  • Μέσω ετικέτας script: ένα <script> και ένα <transpareo-time-machine src="…"> στη σελίδα, και έτοιμο - χωρίς βήμα κατασκευής.
  • Μέσω npm: npm install transpareo-time-machine στη δική σας εφαρμογή.
  • Φιλοξενία από εσάς: δημιουργία πακέτου, δική σας υποδομή, μηδενικές εξαρτήσεις από τρίτους κατά την εκτέλεση.

Όποιος χρειάζεται μόνο τον έλεγχο υπογραφής χωρίς την πλήρη προβολή του προϊόντος, μπορεί να εισαγάγει το συναφές στοιχείο <dpp-verifier> - ιδανικό για εργαλεία ελεγκτών. Μπορείτε να το δείτε ζωντανά στην επαλήθευση DPP.

Όσοι χρησιμοποιούν την εφαρμογή με σύνεση

Η εφαρμογή έχει σχεδιαστεί αρχικά για τους καταναλωτές. Ωστόσο, είναι κατάλληλη για όλους όσους επιθυμούν να δουν ή να επαληθεύσουν τα στοιχεία ενός προϊόντος ανεξάρτητα.

  • Οι τελικοί καταναλωτές σαρώνουν, βλέπουν, περιηγούνται, μοιράζονται. Χωρίς σύνδεση, χωρίς ιχνηλάτες.
  • Οι αρχές εποπτείας της αγοράς και οι αρμόδιες υπηρεσίες βλέπουν το «διαβατήριο προϊόντος» σε ένα λογισμικό του οποίου ο πηγαίος κώδικας υπόκειται σε δημόσιο έλεγχο.
  • Τα συνεργεία και οι εταιρείες ανακύκλωσης βλέπουν τη σύνθεση των υλικών και τις οδηγίες αποσυναρμολόγησης απευθείας στο προϊόν.
  • Οι μάρκες και οι διαχειριστές πλατφορμών προσαρμόζουν το πακέτο στη δική τους μάρκα - CSS-Tokens, δικά τους στοιχεία, αυτο-φιλοξενία.

Τι θα συμβεί αν η Transpareo δεν υπάρχει πια

Η ΕΕ απαιτεί ένα καταχωρημένο διαβατήριο προϊόντος να παραμένει διαθέσιμο για τουλάχιστον δέκα χρόνια - ακόμη και μετά την πτώχευση ή την εκκαθάριση του εκδότη. Ένας πάροχος SaaS σπάνια διαρκεί τόσο πολύ. Γι’ αυτό και σχεδιάζουμε την πλατφόρμα από την αρχή έτσι ώστε τα διαβατήρια προϊόντων να παραμένουν χρησιμοποιήσιμα ανεξάρτητα από εμάς:

  • Κάθε υπογεγραμμένη έκδοση DPP αποθηκεύεται σε έναν αποθηκευτικό χώρο με δημόσια πρόσβαση. Τα byte καθώς και τα δημοσιευμένα δημόσια κλειδιά αρκούν για μετέπειτα επαλήθευση.
  • Μόλις τα πιστοποιητικά προϊόντος καταχωρηθούν στο μητρώο της ΕΕ, ένας δεύτερος χώρος αποθήκευσης με προστασία από εγγραφή αποθηκεύει κάθε έκδοση του DPP και το αρχείο καταγραφής συμβάντων για επιπλέον δέκα χρόνια. Κανείς - ούτε καν εμείς - δεν μπορεί να τροποποιήσει εκ των υστέρων αυτά τα αντίγραφα.
  • Μετά από μια καταγγελία, οι σύντομες διευθύνσεις URL των δελτίων προϊόντος παραμένουν προσβάσιμες μέσω ανακατεύθυνσης στην πλατφόρμα Transpareo.
  • Το Transpareo Time Machine λειτουργεί κανονικά και με αρχειοθετημένα δεδομένα. Το πακέτο δεν μας καλεί κατά την εκτέλεση· χρειάζεται μόνο τα byte και τα κλειδιά.

Αν η πλατφόρμα Transpareo εξαφανιζόταν αύριο, θα παρέμεναν οι εκδόσεις του DPP και ο ανοιχτού κώδικα renderer.

Για όσους ενδιαφέρονται για την τεχνολογία

Αυτό είναι που συμβαίνει «κάτω από το καπό». Όσοι δεν χρειάζεται να το γνωρίζουν λεπτομερώς, μπορούν να παραλείψουν αυτή την ενότητα - η εφαρμογή θα λειτουργεί κανονικά και χωρίς αυτό.

  • GS1 Digital Link (ISO/IEC 18975): Η διεύθυνση URL του «Product Pass» περιέχει τον κωδικό αναγνώρισης του προϊόντος σε τυποποιημένη μορφή - ανεξάρτητη από τον διαμεσολαβητή, εναλλάξιμη μεταξύ παρόχων.
  • JSON Canonicalization Scheme (RFC 8785): Μια ντετερμινιστική σειριοποίηση. Έτσι, ο κατακερματισμός παραμένει αναπαραγώγιμος ανεξάρτητα από τη σειρά των πεδίων ή τα κενά - ο καθένας μπορεί να τον υπολογίσει μόνος του.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Υπογραφή Ed25519 πάνω στην κανονικοποιημένη μορφή (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Τα δημόσια κλειδιά των εκδοτών βρίσκονται σε μια τυποποιημένη διαδρομή - δεν απαιτείται κλήση προς την Transpareo, κάθε επαληθευτής τα εντοπίζει μόνος του.

Όλα τεκμηριώνονται στο README στο GitHub⁠ - συμπεριλαμβανομένης της αρχιτεκτονικής του frontend (δικός μας πυρήνας React, χωρίς εξωτερικά frameworks) και των οδηγιών δημιουργίας για αυτοφιλοξενία.

Δείτε τον κώδικα στο GitHub

Μπορείτε να βρείτε τον πλήρη πηγαίο κώδικα, όλες τις εκδόσεις και τη συζήτηση για το ζήτημα στο δημόσιο αποθετήριο.