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 jokaiselle digitaaliselle tuotepassille. Koodi on saatavilla GPL v3 -lisenssillä GitHubissa.

Kehitämme sitä, koska EU:n digitaalista tuotepassia koskeva asetus on kirjoitettu kuluttajille - henkilölle, joka pitää tuotetta kädessään. Useimmat tarjoajat tekevät siitä vaatimustenmukaisuuslomakkeen, jota kukaan ei skannaa kahdesti. Me teemme siitä sovelluksen, jonka kuluttaja myös avaa.

Katsokaa itse

Esittelyversio näyttää täydelliset tuotetiedot, joissa on esimerkkitietoja: 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 digitaalisesta tuotepassista on suurin askel kohti tuotteiden läpinäkyvyyttä vuosikymmeniin. Se on - jos lukee sen perustana olevia tekstejä tarkasti - kirjoitettu nimenomaan kuluttajia varten. Viranomaiset, kierrättäjät ja korjaamot ovat mukana kehityksessä, mutta asetuksen ensisijainen kohderyhmä on se henkilö, joka pitää tuotetta kädessään.

Lukujen valossa asia on selvä. Keskimääräinen eurooppalainen yksityishenkilö voi tämän vuosikymmenen loppuun mennessä skannata kymmeniä tai jopa satoja tuotepasseja vuodessa. Kun lasketaan 200 miljoonaa kotitaloutta, kyseessä on miljardeja kuluttajakohtaisia vuorovaikutustilanteita vuosittain. Viranomaisten ja kierrättäjien maailma on tässä vertailussa numeraalisesti mitättömän pieni.

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

Tuotetiedot muuttuvat: 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, jokainen versio sormenjäljen avulla edeltäjäänsä ketjutettuna. Näin aikakone selaa tuotteen historiaa, ja lukija voi tarkistaa paitsi version aitouden myös sen, että se on ajantasainen osa aukotonta 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

EU:n digitaalista tuotepassia koskeva asetus edellyttää, että tuotepassit ovat yhteentoimivia ja perustuvat avoimiin standardeihin - ne ovat siirrettävissä palveluiden ja järjestelmien välillä eivätkä ole sidottuja yksittäiseen palveluntarjoajaan. Riippumattomuus palveluntarjoajasta ei siis ole lisäominaisuus, 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 taloudellinen toimija - valmistaja, maahantuoja tai valtuutettu edustaja. Jos hän päättää lopettaa Transpareon käytön ja siirtyä toisen palveluntarjoajan luo, esitystapa pysyy vakaana: 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 itsessään ei ole projekti. Transpareo Time Machine on staattinen paketti: kerran rakennettu, kopioitu mille tahansa verkkopalvelimelle, valmis. 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 tuotetodistuksen 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 tarkempia tietoja, napsauta merkkiä. Sen takana näet allekirjoitusketjun, hajautusarvot ja ketjutetun versiohistorian. Jos haluat vain tiedon, voit yksinkertaisesti ohittaa sen ja jatkaa tuotetietojen lukemista.

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

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): Tuotetunnisteen URL sisältää tuotetunnisteen standardoidussa muodossa - ratkaisijariippumattomana, palveluntarjoajien 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 käyttöliittymäarkkitehtuuri (oma reaktiivinen ydin, ei ulkoisia kehysrakenteita) ja ohjeet itsenäiseen ylläpitoon.

Katso koodi GitHubissa

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