MediumMarlin. Переклад на українську. Оригінал. | by Karlo | Medium
Sitemap

Marlin

4 min readFeb 23, 2024

--

Переклад на українську. Оригінал.

Marlin — це бібліотека Rust, яка реалізує zkSNARK для R1CS з універсальною та оновлюваною SRS.

Цю бібліотеку спочатку було розроблено як частину статті Marlin, і її випущено під ліцензією MIT та ліцензією Apache v2 (див. Ліцензія).

ПОПЕРЕДЖЕННЯ: Це академічний прототип, який, зокрема, не пройшов ретельну перевірку коду. Ця реалізація НЕ готова для промислового використання.

Огляд

ZkSNARK з попередньою обробкою забезпечує лаконічну перевірку для довільних обчислень, на противагу лише для структурованих обчислень. Неформально, в автономному режимі, можна попередньо обробити потрібне обчислення, щоб отримати його короткий підсумок; згодом, в онлайн режимі, цей підсумок можна використати для перевірки будь-якої кількості аргументів відносно цього обчислення.

Попередня обробка zkSNARK у цій бібліотеці спирається на структурований довідковий рядок (SRS), який містить системні параметри, необхідні системі аргументів для створення/перевірки аргументів. SRS у цій бібліотеці є універсальним, що означає, що вона підтримує (детерміновано) попередню обробку будь-яких обчислень до заданої межі розміру. SRS також оновлюється, що означає, що будь-хто може додати до неї нову частку випадковості, що полегшує розгортання у реальному світі.

Конструкція в цій бібліотеці слідує методології, представленої в статті Marlin, яка отримує попередню обробку zkSNARKs з універсальною та оновлюваною SRS шляхом комбінування двох інгредієнтів:

  • алгебраїчного голографічного доведення
  • поліноміальної схеми зобов’язань

Перший компонент надається як частина цієї бібліотеки і є ефективним алгебраїчним голографічним доведенням для R1CS (узагальнення задовільності арифметичної схеми, що підтримується багатьма системами аргументів). Другий компонент імпортується з poly-commit. Деталі оцінювання дивіться нижче.

Посібник зі збирання

Бібліотека збирається на основі stable інструментарію компілятора Rust. Щоб встановити останню версію Rust, спочатку встановіть rustup, дотримуючись інструкцій тут, або за допомогою менеджера пакунків вашої платформи. Після встановлення rustupвстановіть набір інструментів Rust за допомогою виклику:

rustup install stable

Після цього скористайтесяcargo (стандартним інструментом збірки Rust), щоб зібрати бібліотеку:

git clone https://github.com/arkworks-rs/marlin.git
cd marlin
cargo build --release

Ця бібліотека постачається з деякими модульними та інтеграційними тестами. Запустіть ці тести:

cargo test

Нарешті, ця бібліотека оснащена інфраструктурою профілювання, яка друкує детальні траси часу виконання. Щоб увімкнути її, скомпілюйте з cargo build --features print-trace.

Бенчмарки

Усі наведені нижче бенчмарки виконано на кривій BLS12–381, реалізованій у бібліотеці ark-bls12-381, з активованою функцією asm. Бенчмарки виконувалися на машині з процесором Intel Xeon 6136 з тактовою частотою 3,0 ГГц.

Час виконання порівняно з Groth16

Get Karlo’s stories in your inbox

Join Medium for free to get updates from this writer.

На наведених нижче графіках порівнюється час роботи в однопотоковому виконанні алгоритмів індексатора, перевірника та верифікатора Marlin з відповідними алгоритмами Groth16 (сучасний метод попередньої обробки zkSNARK для R1CS зі специфічними для схеми SRS), реалізованими уgroth16. Ми оцінюємо алгоритми Марліна, коли вони реалізовані на схемі ПК з CHMMVW20] (позначимо “M-AHP w/ PC з [CHMMVW20]”), і на схемі ПК з [MBKM19] (позначимо “M-AHP w/ PC з [MBKM19]”).

Press enter or click to view image in full size
Press enter or click to view image in full size
Press enter or click to view image in full size

Багатопотокова продуктивність

На наступних графіках порівнюється час роботи вивідника Марліна при виконанні за схемою з [CHMMVW20] (ліворуч) та за схемою з [MBKM19] (праворуч) при виконанні з різною кількістю потоків.

Press enter or click to view image in full size
Press enter or click to view image in full size

Розмір доказу

Ми порівнюємо розмір доказу Marlin з розміром доказу Groth16. Ми інстанціюємо SNARK Marlin зі схемою ПК з [CHMMVW20], та схемою ПК з [MBKM19].

Схема — Розмір доказу в байтах

Marlin AHP [CHMMVW20] — 880

Marlin AHP [MBKM19] — 784

[Groth16] — 192

Ліцензія

Цю бібліотеку ліцензовано відповідно до однієї з наступних ліцензій, на ваш розсуд.

  • Ліцензія Apache, версія 2.0
  • Ліцензія MIT

Якщо ви явно не вкажете інше, будь-який внесок, який ви надсилаєте до цієї бібліотеки, має подвійну ліцензію, як зазначено вище (як визначено у Ліцензії Apache v2), без жодних додаткових умов чи положень.

Довідкова стаття

Marlin: Попередня обробка zkSNARKs з універсальною та оновлюваною SRS
Alessandro Chiesa, Yuncong Hu, Mary Maller, Pratyush Mishra, Noah Vesely, Nicholas Ward

Подяки

Ця робота була підтримана: грантом Дослідницької ради з інженерних і фізичних наук; премією Google Faculty Award; лабораторією RISELab в Каліфорнійському університеті в Берклі; а також пожертвами від Ethereum Foundation і Interchain Foundation.

--

--