Serguey Zefirov (thesz) wrote,
Serguey Zefirov
thesz

Category:

Блокчейны

Познакомили меня коллеги с системой Ergo: https://ergoplatform.org/en/

Общее описание вот тут.

Интересна она тем, что она основана на "доказательстве работы" и алгоритм использует секретный ключ (sk) добытчика для вычислений доказательства. Использование секретного ключа должно гарантировать невозможность создания кооперативов по выработке доказательств.

Внутри алгоритм выглядит вот так, примерно:

1. Создаём пару секретный-открытый ключи w и x (x - секретный)
2. Сперва просчитываем массив размером в N=226 элементов. Вычисляется он на основе открытого ключа добытчика pk и w.
3. Крутим цикл:
4.   вычисляем одноразовый номер
5.   на основе криптосуммы текущего блока и одноразового номера получаем k=32 индекса в массиве, вычисленном на шаге 2.
6.   считаем дельту d=(сумма по i=1..k (массив[i-й индекс в массиве] * x) - sk) mod q
7.   если дельта меньше порога b, возвращаем кортеж из (криптосумма блока, открытый ключ добытчика, w, одноразовый номер, дельта)
8.   продолжаем цикл

Мы можем представить вычисление выше, как отображение из списка одноразовых номеров в список элементов Maybe (кортеж результата). Далее обычный scanl позволяет получить результат.

Чем это ценно?

something `mappend` otherthing для значений из Maybe a, где a имеет фиксированный размер в битах (как в алгоритме выше) может быть представлено схемой - дополняем кортеж одним битом со смыслом "есть данные" и далее производим выбор варианта с данными с помощью функции выбора.

Чем ценно это?

Если мы можем представить вычисление (или часть его) в виде схемы, мы можем применять гомоморфное шифрование - побитовые операции над шифрованными данными.

В частности, в алгоритме выше надо гомоморфно шифровать шаги 6 и 7. Членам кооператива добытчиков надо раздать шифрованные x и sk, и предоставить константы 0 и 1 для представления на вход гомоморфных вычислений данных, вычисленных обычным способом (массив, индексы, результат выборки из массива).

Что это означает?

Это означает принципиальную возможность создания коллектива добытчиков. Мы раздаём членам коллектива шифрованные данные, и они производят вычисления по нескольким итерациям цикла и отдают результаты (свёрнутые с помощью mappend) владельцу кооператива. Последний расшифровывает данные и формирует доказательство, если оно было вычислено.

Владелец кооператива должен регулярно доказывать, что он вычислил блоки, отзывая свой секретный ключ из системы и открывая его членам кооператива. Точнее, он должен открывать ключ, использованный для шифрования, а это уже откроет и его секретный ключ. Это даст возможность членам кооператива проверять, были ли их вычисления использованы, и как.

В общем описании системы про гомоморфное шифрование упоминаний нет.

Вдогонку - если использовать bit-sliced представление для выполнения гомоморфно-шифрованных вычислений, то просто на ровном месте можно получить ускорение в пару-пяток десятков раз. Это делает предложенный метод ещё более вероятным, не говоря уж про ASIC.
Tags: деньги, шифрование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments