Машина часу для 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: додайте на сторінку <script> та <transpareo-time-machine src="…"> - і все, жодних кроків з компіляції.
  • За допомогою npm: npm install transpareo-time-machine у власному додатку.
  • Самостійне хостування: збірка пакета, власна інфраструктура, відсутність сторонніх залежностей під час виконання.

Тим, кому потрібна лише перевірка підпису без повного перегляду продукту, слід імпортувати дочірній елемент <dpp-verifier> - ідеально підходить для інструментів аудиторів. Можна побачити наживо під час верифікації DPP.

Хто раціонально використовує додаток

Цей додаток спочатку розроблено для споживачів. Однак ним можуть користуватися всі, хто хоче самостійно переглянути або перевірити дані про продукт.

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

Що станеться, якщо Transpareo перестане існувати

ЄС вимагає, щоб зареєстрований паспорт продукту залишався доступним щонайменше десять років - навіть після банкрутства або ліквідації виробника. Постачальник послуг SaaS рідко проіснує так довго. Тому ми з самого початку будуємо платформу таким чином, щоб паспорти продукту залишалися доступними незалежно від нас:

  • Кожна підписана версія DPP зберігається у загальнодоступному сховищі. Байти та опубліковані відкриті ключі є достатніми для подальшої верифікації.
  • Як тільки паспорти продукту зареєстровані в реєстрі ЄС, друге сховище, захищене від запису, дублює кожну версію DPP та журнал подій ще протягом десяти років. Ніхто - навіть ми - не може згодом змінити ці дублікати.
  • Після припинення дії короткі URL-адреси паспортів продукту залишаються доступними через перенаправлення на платформі Transpareo.
  • Transpareo Time Machine без змін працює також із архівними даними. Пакет не звертається до нас під час виконання; йому потрібні лише байти та ключі.

Навіть якщо завтра платформа Transpareo зникне, версії DPP та рендерер з відкритим кодом залишаться.

Для тих, хто цікавиться технологіями

Ось що відбувається «під капотом». Якщо вам не потрібно знати це детально, можете пропустити цей розділ - додаток працюватиме й без цього.

  • GS1 Digital Link (ISO/IEC 18975): URL-адреса «паспорта товару» містить ідентифікатор товару у стандартизованому форматі - незалежний від резолвера та сумісний між різними постачальниками.
  • Схема канонізації JSON (RFC 8785): детермінована серіалізація. Таким чином хеш залишається відтворюваним незалежно від порядку полів або пробілів - кожен може самостійно його перевірити.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): підпис Ed25519 над канонізованою формою (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): відкриті ключі емітентів розміщені за стандартизованим шляхом - не потрібно звертатися до Transpareo, кожен верифікатор знаходить їх самостійно.

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

Переглянути код на GitHub

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