Что такое Proof of Process
Proof of Process (доказательство процесса) — это протокол, который позволяет участникам доверять общему процессу, отделяя доказательство от фактических данных и содержания самого процесса. Цель: получить единое доказательство, представляющее выполнение всех этапов процесса.
Процесс — это последовательность шагов, в которой участники выполняют определенные действия в определенное относительно предыдущих шагов время.
Пример с шахматной партией
Рассмотрим в качестве примера логики процессов игру в шахматы. В этой игре участвуют два игрока, каждый из которых имеет шахматную доску 8x8 клеток, представляющую 2D -координаты, набор из 16 фигур. Каждый игрок расставляет фигуры на своей доске, чтобы затем фиксировать ходы и изменения позиций.
Процесс игры выглядит следующим образом:
-
Сначала каждый игрок расставляет фигуры.
-
Затем игроки по очереди делают ходы, перемещая фигуры по доске и пытаясь захватить фигуры противника.
-
Игроки каждый ход фиксируют путем записи нового установившееся на доске состояния и соглашаются друг с другом, что ход был сделан согласно правилам.
-
Игрок, который первым ставит мат противнику, выигрывает игру.
Все просто? Предположим, что Алиса и Боб играют в шахматы. Каждая партия представляет собой процесс, а каждый ход — шаг в этом процессе. На первом шаге Алиса и Боб расставляют свои фигуры в изначальную позицию. С этого момента они по очереди делают ходы, пока не будет определен победитель.
Таким образом, каждый шаг включает в себя следующие параметры:
-
Кто делает ход.
-
Какая фигура перемещается.
-
Куда она перемещается.
-
Когда сделан ход (если игра ведется на время).
-
Какой это ход в общей последовательности ходов.
Как надежно поделиться результатами партии, не раскрывая ее содержание? Во время каждого хода игрок должен быть уверен, что оппонент соблюдает правила. Более того, каждый игрок должен иметь возможность подтвердить свой ход. И, прежде чем подводить итог игры, необходимо объективно доказать действительность каждого хода.
Предположим, что Алиса выигрывает партию. Если Алиса хочет похвастаться победой, но не раскрывать ходы, то нет стопроцентно надежного способа продемонстрировать победу без публикации записи всей игры вместе с подтверждением каждого хода объективным свидетелем.
Конечно, можно решить эту проблему, зафиксировав свидетельство объективного наблюдателя в подписанном документе. Чтобы эти данные с документом могли рассматриваться как факт: своего рода цифровой нотариус. Но это предполагает участие третьего лица и потому не может считаться децентрализованным решением. Более того, чтобы доказать итоги партии, нужно будет сначала доказать надежность нотариуса, что создает лишние издержки и смещает фокус в сторону централизации.
Короче говоря, этот вариант не является оптимальным. Нужна система, при помощи которой каждый игрок сможет самостоятельно доказать итог партии как объективный факт. Более того, при этом нужно продемонстрировать достоверность результата игры без разглашения ходов и участия в качестве гаранта третьей стороны. Такой вариант возможен через создание системы доказательства.
Система доказательства
В логике Proof of Process существуют два типа систем доказательства.
-
Для фактов, которые устанавливаются на основе опыта и являются субъективными, можно создать систему, собирающую по ходу процесса достаточно информации, чтобы сформировать доказательство, подтвержденное как минимум логикой процесса.
-
Факты, которые можно проверить заранее и которые можно посчитать, могут быть подтверждены с помощью выполнения кода.
Proof of Process берет на себя первый, более сложный, тип и пытается создать систему доказательства для фактов, которые можно доказать исходя из хода процесса.
Но при этом, будучи лишь протоколом, PoP не сулит чудес: он не может проверять реальную объективность фактов, проверять — были ли они установлены честным образом. Он может только показать, что логика процесса была соблюдена, и стороны не нарушили доверия. Но это, учитывая сложность задачи, совсем не мало.
Таким образом, Proof of Process предлагает систему доказательств, которая может продемонстрировать выполнение каждого шага в процессе.
Вернемся к примеру с шахматами: там есть сам процесс (игра с определенными правилами, в которую играют Алиса и Боб), где каждый делает свои ходы. Затем существует доказательство валидности процесса. Это доказательство формируется путем извлечения необходимой информации из каждого шага — без включения самих шагов целиком, создавая криптографические доказательства, которые могут использоваться для проверки достоверности каждого хода и партии в целом.
Для этого система доказательств должна соблюдать ряд мер предосторожностей в отношении данных.
Требования к данным
Для того, чтобы можно было доверять процессу, для Proof of Process требуется выполнение определенных требований:
-
Целостность данных: информация на каждом этапе процесса должна точно соответствовать задуманному шагу, чтобы доказать отсутствие искажений или подделок. Целостность данных подразумевает сохранение точности и полноты информации на протяжении всего жизненного цикла процесса. Пользователи должны иметь возможность доказать: данные не были изменены несанкционированным образом. Для этого используется хеширование.
-
Доказательство участия: участники процесса должны быть зафиксированы так, чтобы нельзя было сомневаться в их аутентичности. Для этого используются цифровые подписи.
-
Доказательство времени: временные метки (timestamp): когда происходит шаг. Они тоже должны быть зафиксированы.
-
Доказательство контекста: необходимо однозначно фиксировать последовательность шагов относительно друг друга в процессе.
Можно создать одно доказательство для каждого шага, объединив индивидуальные доказательства по всем четырем критериям. После этого их можно объединить в одно — для всего процесса.
Proof of Process в действии
Вернемся к игре в шахматы. Предположим, первый ход Алисы – это классический «E2–E4». Чтобы создать хеш этого хода, строку «E2–E4» пропускают через криптографический алгоритм, например, SHA-256, и сохраняют получившийся хеш. Алиса может записать свой фактический ход отдельно. Но это необязательно, так как ход не нужен для доказательства процесса; достаточно сохранить хеш. Это позволяет Алисе держать свои ходы в секрете.
Если кто-то оспорит достоверность хеша, Алиса сможет использовать свой секретный ход для его повторного создания, тем самым подтвердив соответствие. Так она может доказать, что ход фактически был сделан.
Доказательство участия подразумевает, что стороны не могут отрицать участие в процессе. Для этого используется цифровая подпись. Алиса и Боб должны быть зафиксированы как ответственные за свои ходы, и их идентичность может быть подтверждена с помощью цифровых подписей или публичных ключей. Это позволяет любому, имеющему доступ к доказательству, проверить: действительно ли Алиса или Боб делали ходы.
Далее. Ходу Алисы присваивается временная метка, добавляется хеш-ссылка на исходную позицию (для первого хода), и очередь переходит к Бобу. Он хеширует свой ход, добавляет свою подпись, временную метку и хеш-ссылку на предыдущий ход Алисы. Обмен ходами продолжается до конца игры, а последний шаг фиксирует результат. Например, хешироваем строки «белые победили» и добавлением ссылки на предыдущий шаг с победным ходом.
По финальному хешу можно будет проследить, что процесс игры шел в соответствии с правилами, партию играли действительно Алиса и Боб и финальный результат — это победа белых. При этом нет никакой необходимости раскрывать все ходы партии. Proof of Process служит залогом: в результате можно не сомневаться.
Более того, процесс можно усложнить и сделать более надежным, например, введя третью сторону — судью (или шахматный движок), который будет подписывать каждый ход и удостоверять соответствие правилам игры.
Зачем нужен Proof of Process
Понятно, что ради простой игры в шахматы нет никакой необходимости проворачивать подобные процедуры. Хотя даже здесь, если гроссмейстер захочет скрыть свои наработки или стиль игры от других, но при этом сообщать о результатах партий, использование Proof of Process может иметь смысл.
Более органичное применение этого протокола может быть связано с ситуациями, когда нужно доказать, что какая-то последовательность действий была выполнена — без необходимости раскрывать содержание каждого шага.
Например, KYC («Знай своего клиента»). Предположим, Джон решил пройти процедуру KYC на бирже. Джон прошел через определенный процесс и в результате взаимодействия с биржей получил при помощи Proof of Process допуск к торгам. Теперь, чтобы доказать, что он прошел KYC, Джону не надо раскрывать ничего, кроме финального хеша Proof of Process. И если, например, другие биржи готовы принять это доказательство, Джон может предоставить его, не раскрывая свои данные третьей бирже.
Другие примеры использования Proof of Process могут включать цепочки поставок, страхование, контроль качества, аудит, онлайн-игры, торговлю и так далее. Сейчас протокол Proof of Process – основной продукт компании Stratumn, которая предлагает его как b2b-услугу.
Вывод
Proof of Process позволяет создать криптографическое доказательство выполнения определенной последовательности действий. По сути, Proof of Process — это одна из вариаций нулевого разглашения, когда нужно доказать факт выполнения определенных шагов (процесса) — без необходимости раскрывать содержание этих шагов.