Wehikuł czasu dla DPP

Wyobraź sobie, że trzymasz w ręku produkt i skanujesz znajdujący się na nim kod QR. Zamiast pliku PDF otwiera się niewielka aplikacja. Widzisz produkt w czasie rzeczywistym: z czego jest zrobiony, skąd pochodzi, na co należy zwrócić uwagę. Jednym ruchem palca cofasz się w czasie - możesz obejrzeć każdą wersję, jaka kiedykolwiek została opublikowana.

Właśnie to możesz teraz wypróbować: wersja demonstracyjna⁠ przedstawia kompletny paszport produktu z przykładowymi danymi.

To jest Transpareo Time Machine, nasza aplikacja konsumencka typu open source dla każdego cyfrowego paszportu produktu. Kod jest dostępny na licencji GPL v3 na GitHubie⁠.

Tworzymy ją, ponieważ rozporządzenie UE w sprawie cyfrowego paszportu produktu zostało napisane z myślą o konsumentach - o osobie, która trzyma produkt w ręku. Większość dostawców przekształca je w formularz zgodności, którego nikt nie skanuje dwa razy. My przekształcamy je w aplikację, którą konsument faktycznie otwiera.

Jak działa ta aplikacja

Cztery punkty kontaktu z perspektywy osoby trzymającej produkt w dłoni. Bez logowania, bez instalowania aplikacji.

1

Skanowanie

Zeskanuj kod QR za pomocą aparatu w smartfonie. Aplikacja otworzy się w przeglądarce.

2

Zobacz aktualności

Produkt w teraźniejszości - składniki, materiały, pochodzenie, pielęgnacja, recykling.

3

Przeglądać historię

Jednym ruchem palca można cofnąć się w czasie. Każda poprzednia wersja wraz z datą i przyczyną zmiany.

4

Udostępnij

Każda wersja ma swój własny link. Użytkownik udostępnia konkretną wersję znajomym lub organom.

Po co w ogóle

Rozporządzenie UE w sprawie cyfrowego paszportu produktu stanowi największy krok w kierunku przejrzystości produktów od dziesięcioleci. Jeśli uważnie przeczytać teksty, na których się opiera, widać, że zostało ono napisane wyraźnie z myślą o konsumentach. Władze, firmy zajmujące się recyklingiem i warsztaty dostosowują się do nowych zasad, ale głównym adresatem jest osoba, która trzyma produkt w ręku.

Pod względem liczbowym sprawa jest jednoznaczna. Przeciętny europejski konsument będzie mógł pod koniec tej dekady skanować od kilkudziesięciu do kilkuset paszportów produktów rocznie. Przy 200 milionach gospodarstw domowych oznacza to miliardy interakcji z konsumentami rocznie. W porównaniu z tym świat organów administracji i firm zajmujących się recyklingiem jest zliczeniowo znikomo mały.

Jeśli rozporządzenie ma dotrzeć do konsumentów, strona dla konsumentów musi być dobrze zaprojektowana - szybka, estetyczna i spójna. W przeciwnym razie nie spełni swojego celu. Zdecydowaliśmy się stworzyć tę stronę dla konsumentów na licencji open source, aby nie była zależna od jednego dostawcy.

Sprawdzono w przeglądarce, a nie na naszym serwerze

W górnej części każdego paszportu produktu pojawia się plakietka: „Zweryfikowane przez Transpareo”. Przedstawia ona wynik weryfikacji, która nie odbywa się na naszym serwerze, lecz w przeglądarce użytkownika - na podstawie pobranych bajtów oraz kluczy publicznych producenta.

Każda wersja DPP jest podpisywana przez dwa niezależne podmioty: producenta i Transpareo. Aby plakietka zmieniła kolor na zielony, oba podpisy muszą być możliwe do zweryfikowania. Dzięki funkcji „Bring Your Own Key” (BYOK) producent obsługuje własny punkt końcowy do podpisywania - Transpareo nigdy nie przechowuje klucza prywatnego, a jedynie dodaje niezależny podpis wzajemny. W ten sposób powstaje podpis wystawcy, którego samo Transpareo nie jest w stanie wygenerować. Zhakowany serwer nie może sfałszować zaznaczenia, ponieważ weryfikacja odbywa się po stronie samego użytkownika.

Kto chce uzyskać dokładne informacje, powinien kliknąć na plakietkę. Znajdzie tam łańcuch podpisów, skróty oraz łańcuchową historię wersji. Kto chce tylko uzyskać informację, po prostu to zignoruje i będzie dalej czytał paszport produktu.

Ta sama weryfikacja jest również dostępna jako osobna strona: na stronie weryfikacji DPP wystarczy wpisać adres URL manifestu dowolnego paszportu produktu, aby zobaczyć pełny wynik weryfikacji - bez konieczności otwierania samego paszportu.

Udostępniamy ten kod

Transpareo Time Machine jest udostępniony na licencji GPL v3 na GitHubie⁠. Klonowanie, tworzenie forków, samodzielne hostowanie - wszystko jest dozwolone. Opublikowane modyfikacje muszą być z kolei udostępnione na licencji GPL v3, aby każdy dalszy rozwój służył ogółowi.

Trzy sposoby na włączenie pakietu:

  • Za pomocą tagu skryptowego: wystarczy umieścić na stronie <script> oraz <transpareo-time-machine src="…"> - gotowe, bez konieczności kompilacji.
  • Poprzez npm: npm install transpareo-time-machine we własnej aplikacji.
  • Własny hosting: skompiluj pakiet, wykorzystaj własną infrastrukturę, zero zależności od stron trzecich w czasie wykonywania.

Kto potrzebuje jedynie weryfikacji podpisu bez pełnego widoku produktu, powinien zaimportować element siostrzany <dpp-verifier> - idealne rozwiązanie dla narzędzi audytorskich. Można to zobaczyć na żywo podczas weryfikacji DPP.

Kto korzysta z aplikacji w rozsądny sposób

Aplikacja została stworzona przede wszystkim z myślą o konsumentach. Działa jednak dla wszystkich, którzy chcą samodzielnie przeglądać lub weryfikować dane dotyczące produktów.

  • Konsumenci końcowi skanują, przeglądają, przewijają i udostępniają. Bez logowania, bez trackerów.
  • Organy nadzoru rynku i instytucje państwowe mają wgląd w paszport produktu w oprogramowaniu, którego kod źródłowy podlega publicznej kontroli.
  • Warsztaty i firmy zajmujące się recyklingiem mają wgląd w skład materiałowy oraz wskazówki dotyczące demontażu bezpośrednio na produkcie.
  • Marki i operatorzy platform Fork dostosowują pakiet do własnej marki - tokeny CSS, własne komponenty, samodzielny hosting.

Co się stanie, jeśli Transpareo przestanie istnieć?

UE wymaga, aby zarejestrowany paszport produktu pozostawał dostępny przez co najmniej dziesięć lat - nawet po ogłoszeniu upadłości lub likwidacji producenta. Dostawca usług SaaS rzadko działa tak długo. Dlatego od samego początku budujemy platformę w taki sposób, aby paszporty produktu pozostawały dostępne niezależnie od nas:

  • Każda podpisana wersja DPP znajduje się w publicznie dostępnej pamięci. Bajtów oraz opublikowanych kluczy publicznych wystarczy do późniejszej weryfikacji.
  • Gdy tylko paszporty produktu zostaną zarejestrowane w rejestrze UE, druga, chroniona przed zapisem pamięć przechowuje kopię każdej wersji DPP oraz dziennik zdarzeń przez dodatkowe dziesięć lat. Nikt - nawet my - nie może później modyfikować tych kopii lustrzanych.
  • Po wypowiedzeniu umowy krótkie adresy URL paszportów produktu pozostają dostępne poprzez przekierowanie na platformie Transpareo.
  • Transpareo Time Machine działa bez zmian również w odniesieniu do zarchiwizowanych zasobów. Pakiet nie nawiązuje z nami połączenia w czasie wykonywania; potrzebuje jedynie bajtów i kluczy.

Gdyby platforma Transpareo zniknęła jutro, pozostałyby wersje DPP oraz renderer na licencji open source.

Dla osób zainteresowanych technologią

Oto, co dzieje się „pod maską”. Jeśli nie musisz znać szczegółów, możesz pominąć tę sekcję - aplikacja będzie działać również bez tego.

  • GS1 Digital Link (ISO/IEC 18975): Adres URL karty produktu zawiera identyfikator produktu w standardowej formie - niezależnej od resolvera i wymienne między dostawcami.
  • Schemat kanonizacji JSON (RFC 8785): Deterministyczna serializacja. Dzięki temu skrót pozostaje odtwarzalny niezależnie od kolejności pól lub spacji - każdy może go samodzielnie obliczyć.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Podpis Ed25519 nad formą kanonizowaną (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Klucze publiczne wystawców znajdują się pod ustandaryzowaną ścieżką - nie ma potrzeby kontaktowania się z Transpareo, każdy weryfikator może je samodzielnie znaleźć.

Wszystko jest udokumentowane w pliku README na GitHubie⁠ - łącznie z architekturą frontendu (własny rdzeń reaktywny, brak zewnętrznych frameworków) oraz instrukcją kompilacji do samodzielnego hostingu.

Zobacz kod na GitHubie

Pełny kod źródłowy, wszystkie wersje oraz dyskusję na temat zgłoszenia można znaleźć w publicznym repozytorium.