Aikakone DPP:ille

Kuvittele, että pidät tuotetta kädessäsi ja skannaat sen päällä olevan QR-koodin. PDF-tiedoston sijaan avautuu pieni sovellus. Näet tuotteen juuri nyt: mistä se koostuu, mistä se on peräisin ja mitä siinä on otettava huomioon. Yksi pyyhkäisy vie sinut ajassa taaksepäin - voit tarkastella jokaista koskaan julkaistua versiota.

Tämä on Transpareo Time Machine, avoimen lähdekoodin kuluttajasovelluksemme kaikille digitaalisille tuotepasseille. Koodi on saatavilla GPL v3 -lisenssillä GitHubissa.

Kehitämme sitä, koska EU:n asetus digitaaliselle tuotepassille on laadittu kuluttajia varten - sitä henkilöä varten, joka pitää tuotetta kädessään. Useimmat palveluntarjoajat tekevät siitä vaatimustenmukaisuuslomakkeen, jota kukaan ei skannaa kahdesti. Me teemme siitä sovelluksen, jonka kuluttaja myös avaa.

Katsokaa itse

Esimerkkituotepassit ovat täydellisiä ja niissä on kuvitteellisia tietoja: selaa versiohistoriaa ja avaa tarkastusmerkki - suoraan selaimessa, ilman käyttäjätiliä.

Mitä sovellus tekee

Neljä kosketuspistettä tuotteen kädessään pitävän henkilön näkökulmasta. Ei kirjautumista, ei sovelluksen asentamista.

1
Skannaus

Skannaa QR-koodi älypuhelimen kameralla. Sovellus avautuu selaimessa.

2
Katso uutiset

Tuote esitellään tässä ja nyt - komponentit, materiaalit, alkuperä, hoito, kierrätys.

3
Selaa historiaa

Yksi pyyhkäisyliike vie sinut ajassa taaksepäin. Jokainen aiempi versio, jossa on muutoksen päivämäärä ja syy.

4
Jaa

Jokaisella versiolla on oma linkkinsä. Käyttäjä jakaa tietyn version ystävilleen tai viranomaisille.

Miksi ylipäätään

EU:n asetus digitaaliselle tuotepassille on suurin askel kohti tuotteiden läpinäkyvyyttä vuosikymmeniin. Se on - jos lukee sen perustana olevat tekstit huolellisesti - nimenomaisesti kuluttajille tarkoitettu. Viranomaiset, kierrättäjät ja korjaamot ovat mukana, mutta asetuksen ensisijainen kohderyhmä on se henkilö, jolla tuote on käsissään.

Lukujen valossa asia on selvä. Keskimääräinen eurooppalainen yksityishenkilö voi tämän vuosikymmenen lopulla skannata vuosittain kymmeniä tai jopa satoja tuotepasseja. Kun tämä lasketaan 200 miljoonalle kotitaloudelle, se tarkoittaa miljardeja kuluttajien ja tuotteiden välisiä vuorovaikutuksia vuosittain. Viranomaisten ja kierrättäjien toiminta on tässä vertailussa määrällisesti mitättömän pientä.

Jos asetuksen on tarkoitus tavoittaa kuluttajat, kuluttajasivuston on oltava hyvin rakennettu - nopea, kaunis ja johdonmukainen. Muuten se ei täytä tarkoitustaan.

Olemme päättäneet rakentaa tämän kuluttajasivuston avoimen lähdekoodin pohjalta, jotta se ei ole riippuvainen yhdestä ainoasta palveluntarjoajasta.

Kulku on määräys, manifesti on meidän

Tuotepassi muuttuu: korjaus, uusi kierrätysaste, takaisinveto. Vaatimukset edellyttävät siksi, että aiemmat versiot pysyvät saatavilla: tallennusstandardi jäädyttää jokaisen version, ja rajapintastandardi edellyttää, että jokainen versio on luettavissa kohdennetusti. Se, mitä vaatimukset jättävät avoimeksi, on välissä oleva osa: luettelo, joka yhdistää passin kaikki versiot yhdeksi tarinaksi. Transpareo julkaisee sen jokaisesta passista manifestina, allekirjoitettuna, ja jokainen versio on sormenjäljen avulla ketjutettu edeltäjäänsä. Näin aikakone selaa tuotteen historiaa, ja lukija voi tarkistaa paitsi version aitouden myös sen, että se on ajantasainen osa katkeamatonta sarjaa.

Sovellus ei kuitenkaan ole sidottu tähän. Jos sille näytetään manifestin sijaan yksittäinen passi, sellaisena kuin jokainen palveluntarjoaja julkaisee sen avoimien standardien mukaisesti, se näyttää tämän yhden version, tarkistaa sen allekirjoituksen, jos sellainen on, ja jättää aikajanan yksinkertaisesti pois. Allekirjoittamaton passi ei katsota virheeksi, vaan se näytetään yksinkertaisesti ilman varmennetunnusta. Samalla tavalla sovellus näyttää myös passit, joita ei ole koskaan ollut Transpareossa.

Palveluntarjoajan vaihto ilman katkoksia

Digitaalisen tuotepassin koskevassa EU-asetuksessa vaaditaan, että tuotepassit ovat yhteentoimivia ja perustuvat avoimiin standardeihin - eli ne ovat siirrettävissä palveluiden ja järjestelmien välillä eivätkä sidottuja yksittäiseen palveluntarjoajaan. Riippumattomuus palveluntarjoajasta ei siis ole lisävaatimus, vaan osa vaatimusta.

Transpareo Time Machine on ratkaisu, joka konkretisoi tämän vaatimuksen. Koska jokainen tuotepassi toimitetaan avoimien standardien mukaisesti - palvelimesta riippumaton tunnistus, kanoninen sarjoitus, julkisesti julkaistut avaimet - ja koska renderöintiohjelma on avoimen lähdekoodin GPL v3 -lisenssin alainen, tuotepassin esittäminen ei ole koskaan riippuvainen alustastamme.

Tuotepassista vastaa jokin talouden toimija - valmistaja, maahantuoja tai valtuutettu edustaja. Jos hän päättää lopettaa Transpareon käytön ja siirtyä toisen palveluntarjoajan palveluun, esitys pysyy ennallaan: sama avoimen lähdekoodin renderöintiohjelma näyttää jo julkaistut versiot ja niiden historian muuttumattomina, ja uusi palveluntarjoaja, joka käyttää samoja avoimia standardeja, näkyy täsmälleen samassa sovelluksessa.

Tiedot siirtyvät mukana, kuluttajat eivät huomaa katkoa, eikä kenenkään tarvitse odottaa siirtymistä.

Siirtyminen sinänsä ei ole projekti. Transpareo Time Machine on staattinen paketti: kun se on kerran rakennettu, se kopioidaan mille tahansa verkkopalvelimelle, ja valmista. Transpareossa passillesi määrittämäsi ulkoasu siirtyy julkaistuna tyylitiedostona jokaisen passin mukana. Passin näkymä, johon asiakkaasi ovat tottuneet, näyttää siis omalla palvelimellasi täsmälleen samalta, värit, fontit ja logo mukaan lukien.

Testattu selaimessa, ei palvelimellamme

Jokaisen tuotepassin yläosassa näkyy merkki: ”Verified by Transpareo”. Se osoittaa tarkastuksen tuloksen, joka ei tapahdu palvelimellamme, vaan kävijän selaimessa - ladattujen tavujen ja myöntäjän julkisten avainten perusteella.

Jokaisen DPP-version allekirjoittavat kaksi toisistaan riippumatonta tahoa: myöntäjä ja Transpareo. Molempien allekirjoitusten on oltava todennettavissa, jotta merkki muuttuu vihreäksi. ”Bring Your Own Key” (BYOK) -periaatteen mukaisesti myöntäjä ylläpitää omaa allekirjoituspistettä - Transpareo ei koskaan säilytä yksityistä avainta, vaan lisää vain riippumattoman vastallekirjoituksen. Näin syntyy myöntäjän allekirjoitus, jota Transpareo ei itse voi luoda.

Kompromitoitu palvelin ei voi väärentää valintamerkkiä, sillä tarkistus tapahtuu kävijän omalla laitteella.

Jos haluat tietää tarkemmin, napsauta merkkiä. Sen takana näet allekirjoitusketjun, hajautusarvot ja ketjutetun versiohistorian. Jos haluat vain tiedot, ohita se yksinkertaisesti ja jatka tuotepassin lukemista.

Sama tarkistus on saatavilla myös erillisenä sivuna: osoitteessa DPP-todentaminen voit syöttää minkä tahansa tuotepassin manifest-URL-osoitteen ja nähdä täydellisen tarkistustuloksen - avaamatta itse passia.

Julkaisemme koodin

Transpareo Time Machine on julkaistu GPL v3 -lisenssillä GitHubissa. Julkaistujen muunnelmien on puolestaan oltava GPL v3 -lisenssin alaisia, jotta jokainen jatkokehitys hyödyttää yleistä etua.

Kloonaus, haarauttaminen, oma isännöinti - kaikki on sallittua.

Siellä olevasta README-tiedostosta löydät ohjeet sovelluksen integroimiseen, olipa kyseessä sitten yksi rivi sivulla, pakettina omassa sovelluksessasi tai kokonaan itse isännöitynä. Sieltä löydät myös sisarsovelluksen, joka on tarkoitettu pelkästään allekirjoitusten tarkistamiseen ja joka on käytössä osoitteessa DPP-todentaminen.

Kuka käyttää sovellusta järkevästi

Sovellus on kehitetty ensisijaisesti kuluttajille. Se sopii kuitenkin kaikille, jotka haluavat tarkastella tai tarkistaa tuotetietoja itsenäisesti.

  • Loppukuluttajat skannaavat, katselevat, selaavat ja jakavat. Ei kirjautumista, ei seurantakoodeja.
  • Markkinavalvonta ja viranomaiset näkevät tuotepassin ohjelmistossa, jonka lähdekoodi on julkisesti tarkastettavissa.
  • Korjaamot ja kierrättäjät näkevät materiaalien koostumuksen ja purkuohjeet suoraan tuotteesta.
  • Brändit ja Fork-palvelun ylläpitäjät mukauttavat paketin omaan brändiinsä - CSS-tunnukset, omat komponentit, oma hosting.

Mitä tapahtuu, jos Transpareoa ei enää ole olemassa

EU vaatii, että rekisteröity tuotepassi on saatavilla vähintään kymmenen vuotta - myös myöntäjän konkurssin tai selvitystilan jälkeen. SaaS-palveluntarjoaja harvoin pysyy toiminnassa niin kauan. Siksi rakennamme alustan alusta alkaen siten, että tuotepasseja voidaan käyttää meistä riippumatta:

  • Jokainen allekirjoitettu DPP-versio sijaitsee julkisesti luettavassa tallennustilassa. Bytit ja julkaistut julkiset avaimet riittävät myöhempään todentamiseen.
  • Heti kun tuotepassit on rekisteröity EU-rekisteriin, toinen, kirjoitussuojattu tallennustila tallentaa jokaisen DPP-version ja tapahtumalokin vielä kymmenen vuoden ajaksi. Kukaan - emme myöskään me - ei voi muuttaa näitä peilauskopioita jälkikäteen.
  • Sopimuksen irtisanomisen jälkeen lyhyet tuotepassien URL-osoitteet pysyvät saavutettavina Transpareo-alustan kautta tapahtuvan uudelleenohjauksen avulla.
  • Transpareo Time Machine toimii muuttumattomana myös arkistoitujen tietojen kanssa. Bundle ei kutsu meitä takaisin suorituksen aikana; se tarvitsee vain tavut ja avaimet.

Jos Transpareo-alusta katoaisi huomenna, DPP-versiot ja avoimen lähdekoodin renderöintiohjelma jäisivät jäljelle.

Teknologiasta kiinnostuneille

Tässä kerrotaan, mitä taustalla tapahtuu. Jos et tarvitse tietää tätä yksityiskohtaisesti, voit ohittaa tämän osion - sovellus toimii myös ilman tätä tietoa.

  • GS1 Digital Link (ISO/IEC 18975): Tuotepassin URL-osoite sisältää tuotetunnisteen standardoidussa muodossa - ratkaisijariippumattomana ja toimittajien välillä vaihdettavissa.
  • JSON Canonicalization Scheme (RFC 8785): Deterministinen serialisointi. Näin hash-arvo on toistettavissa riippumatta kenttien järjestyksestä tai välilyönneistä - kuka tahansa voi laskea sen itse.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-allekirjoitus kanonisoidun muodon (JCS) kautta.
  • /.well-known/dpp-keys/ (RFC 8615): Myöntäjien julkiset avaimet sijaitsevat standardoidussa polussa - Transpareoon ei tarvitse ottaa yhteyttä, jokainen todentaja löytää ne itse.

Kaikki on dokumentoitu GitHubin README-tiedostossa - mukaan lukien frontend-arkkitehtuuri (oma reaktiivinen ydin, ei ulkoisia kehysrakenteita) ja ohjeet sovelluksen itseisännöintiin.

Katso koodi GitHubissa

Löydät täydellisen lähdekoodin, kaikki julkaisut ja ongelmaa koskevan keskustelun julkisesta repositoriosta.