Машина на времето за DPP

Представете си, че държите продукт в ръка и сканирате QR кода върху него. Вместо PDF файл се отваря малко приложение. Виждате продукта в настоящия момент: от какво е направен, откъде идва, какво трябва да се има предвид. С едно плъзгане с пръст се връщате назад във времето - можете да разгледате всяка версия, която някога е била публикувана.

Именно това можете да опитате сега: Демото⁠ показва пълен продуктов паспорт с примерни данни.

Това е Transpareo Time Machine - нашето приложение с отворен код за потребители, предназначено за всеки цифров продуктов паспорт. Кодът е публикуван под лиценз GPL v3 в GitHub⁠.

Ние я разработваме, защото Регламентът на ЕС за цифровия продуктов паспорт е написан за потребителите - за човека, който държи продукта в ръцете си. Повечето доставчици го превръщат в формуляр за съответствие, който никой не сканира два пъти. Ние го превръщаме в приложение, което потребителят действително отваря.

Какво прави приложението

Четири точки на взаимодействие от гледна точка на човека, който държи продукта в ръка. Без влизане в профил, без инсталиране на приложение.

1

Сканиране

Сканирайте QR-кода с камерата на смартфона си. Приложението ще се отвори в браузъра.

2

Виж актуалните новини

Продуктът се представя в настоящето - съставки, материали, произход, грижа, рециклиране.

3

Да разгледаме историята

С едно плъзгане назад се преминава назад във времето. Всяка предишна версия с дата и повод за промяната.

4

Сподели

Всяка версия има своя собствена връзка. Даден потребител споделя конкретна версия с приятели или с държавните органи.

Защо изобщо

Регламентът на ЕС за цифровия паспорт на продукта е най-голямата промяна в посока прозрачност на продуктите от десетилетия насам. Ако човек прочете внимателно основните текстове, ще види, че той е написан изрично за потребителите. Властите, фирмите за рециклиране и сервизните центрове също са включени, но основният адресат е човекът, който държи продукта в ръцете си.

От гледна точка на цифрите нещата са ясни. Към края на десетилетието средностатистическият европейски гражданин ще може да сканира десетки до стотици продуктови паспорти годишно. При 200 милиона домакинства това означава милиарди потребителски взаимодействия годишно. В сравнение с това броят на взаимодействията в света на властите и рециклиращите фирми е незначителен.

Ако регламентът трябва да достигне до потребителите, тогава потребителският портал трябва да бъде добре изграден - бърз, атрактивен и логичен. В противен случай той няма да постигне целта си. Решихме да създадем този потребителски портал с отворен код, за да не зависи от един-единствен доставчик.

Проверено в браузъра, а не на нашия сървър

В горната част на всеки продуктов паспорт се появява значка: „Проверено от Transpareo“. Тя показва резултата от проверка, която не се извършва на нашия сървър, а в браузъра на посетителя - въз основа на заредените байтове и публичните ключове на производителя.

Всяка версия на DPP се подписва от две независими една от друга страни: производителя и Transpareo. И двата подписа трябва да могат да бъдат проверени, за да стане значката зелена. С помощта на Bring Your Own Key (BYOK) производителят управлява собствен краен пункт за подписване - Transpareo никога не съхранява частния ключ и добавя само независимия контраподпис. По този начин се създава подпис на издателя, който Transpareo не може да генерира самостоятелно. Компрометиран сървър не може да фалшифицира отметката, тъй като проверката се извършва от самия посетител.

Който иска да знае точно, кликва върху значката. Зад нея ще видите веригата от подписи, хеш-сумите и верижната история на версиите. Който иска само информацията, просто го игнорира и продължава да чете в продуктовия паспорт.

Същата проверка съществува и като самостоятелна страница: на страницата за DPP-верификация въвеждате URL адреса на манифеста на произволен продуктов паспорт и виждате пълния резултат от проверката - без да отваряте самия паспорт.

Публикуваме кода

Transpareo Time Machine е под лиценз GPL v3 в GitHub⁠. Клониране, форкване, самостоятелно хостинг - всичко е позволено. Публикуваните модификации от своя страна трябва да бъдат под GPL v3, за да може всяко по-нататъшно развитие да бъде в полза на обществото.

Три начина за интегриране на пакета:

  • Чрез скрипт-таг: един <script> и един <transpareo-time-machine src="…"> в страницата, и готово - без стъпка по изграждане.
  • Чрез npm: npm install transpareo-time-machine във вашето приложение.
  • Самостоятелно хостинг: съставяне на пакета, собствена инфраструктура, нулеви зависимости от трети страни по време на изпълнение.

Който се нуждае само от проверка на подписа, без пълния изглед на продукта, може да импортира съпътстващия елемент <dpp-verifier> - идеален за инструменти за одит. Може да се види на живо при DPP-верификацията.

Кой използва приложението по предназначение

Приложението е създадено първоначално за потребители. То обаче е подходящо за всеки, който иска да разгледа или провери данните за даден продукт самостоятелно.

  • Крайните потребители сканират, разглеждат, прелистват и споделят. Без вход в системата, без проследяващи механизми.
  • Органите за надзор на пазара и държавните институции виждат продуктовия паспорт в софтуер, чийто изходен код подлежи на публичен одит.
  • Сервизните центрове и фирмите за рециклиране виждат състава на материалите и инструкциите за разглобяване директно върху продукта.
  • Марките и операторите на платформи адаптират пакета към собствената си марка - CSS-токен, собствени компоненти, самостоятелно хостинг.

Какво ще стане, ако „Транспарео“ вече не съществува

ЕС изисква регистрираният продуктов паспорт да остава достъпен поне десет години - дори и след фалит или ликвидация на производителя. Доставчикът на SaaS рядко просъществува толкова дълго. Ето защо изграждаме платформата от самото начало така, че продуктовите паспорти да останат достъпни независимо от нас:

  • Всяка подписана версия на DPP се съхранява в публично достъпно хранилище. Байтовете, заедно с публикуваните публични ключове, са достатъчни за по-късна верификация.
  • Веднага след като продуктовите паспорти бъдат регистрирани в регистъра на ЕС, второ хранилище, защитено от запис, съхранява копие на всяка версия на DPP и протокола за събитията за допълнителен период от десет години. Никой - включително и ние - не може да променя тези копия впоследствие.
  • След прекратяване на договора късите URL адреси на продуктовите паспорти остават достъпни чрез пренасочване към платформата Transpareo.
  • Transpareo Time Machine работи без промени и с архивирани данни. Пакетът не ни извиква по време на изпълнение; необходими са само байтовете и ключовете.

Дори ако платформата Transpareo изчезне утре, версиите на DPP и рендерерът с отворен код ще останат.

За любопитните в областта на технологиите

Ето какво се случва „под капака“. Ако не ви е необходимо да знаете това в подробности, можете да пропуснете този раздел - приложението ще работи и без това.

  • GS1 Digital Link (ISO/IEC 18975): URL адресът на продуктовия паспорт съдържа идентификацията на продукта в стандартизирана форма - независима от резолвера и взаимозаменяема между доставчиците.
  • JSON Canonicalization Scheme (RFC 8785): Детерминистична сериализация. По този начин хешът остава възпроизводим, независимо от реда на полетата или празните символи - всеки може да го изчисли сам.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-подпис върху канонизираната форма (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Публичните ключове на издателите се намират по стандартизирана пътека - не е необходимо обаждане до Transpareo, всеки верификатор ги намира сам.

Всичко е документирано в README в GitHub⁠ - включително архитектурата на фронтенда (собствен реактивен ядро, без външни фреймворкове) и инструкциите за изграждане при самостоятелно хостинг.

Виж кода в GitHub

Пълният изходен код, всички версии и дискусията по проблема можете да намерите в публичното хранилище.