Skip to content

Latest commit

 

History

History
72 lines (47 loc) · 7.56 KB

README.md

File metadata and controls

72 lines (47 loc) · 7.56 KB

Aleo налаштування І

Огляд

Для застосування SNARKs необхідно згенерувати певні параметри, щоб досягти високої ефективності (малі розміри доказу, швидкий час доказу та перевірки). Ці параметри генеруються за допомогою іншого набору параметрів, які повинні залишатися секретними. Ми називаємо ці секретні параметри "токсичним відходом". Якщо доказувач знає ці секрети, то він може генерувати достовірні докази для невірних тверджень, порушуючи справедливість. Це небажано!

Для того, щоб гарантувати, що ніхто ніколи не дізнається про ці секрети, ми можемо генерувати їх розподіленим способом. Кожен учасник цієї так званої "церемонії" зробить свій внесок у генерацію параметрів зі своїм власним секретом. Якщо хоча б 1 учасник буде чесним і знищить свій секрет, то у зловмисника не буде можливості створити фальшиві докази.

Цей репозиторій містить впровадження для багатопартійних обчислень. BGM17 Церемонія поділяється на дві фази: одна генерує Powers of Tau, а інша "спеціалізує" їх на надану арифметичну схему для Groth16 SNARK.

Зауважте, що згенеровані Powers of Tau можуть бути повторно використані для будь-якої іншої фази 2 або для реалізації інших механізмів, таких як схема комітування поліномів KZG10.

Щоб дізнатися, як забезпечити правильне виконання церемонії, дивіться файл RECOMMENDATIONS.md.

Налаштування I

Фаза 1 (Powers of Tau)

  1. Координатор генерує накопичувач
  2. Учасник завантажує останній накопичувач
  3. Учасник вносить свою випадковість до накопичувача (випадковість знищується після цього кроку)
  4. Учасник завантажує накопичувач назад до координатора
  5. Координатор перевіряє, чи був накопичувач перетворений правильно та генерує нове викликання.

Важливим аспектом цієї процедури є те, що вона може ніколи не закінчуватися. Це дозволяє SNARKs, які використовують KZG10, мати "неперервне" налаштування. Якщо учасник не довіряє налаштуванню, він може внести свій вклад у Powers of Tau та створити KZG10 з новими параметрами.

Налаштування II

Фаза 2 (Параметризація до Groth16)

  1. Координатор "підготовлює" параметри з Фази 1 та перетворює їх на коефіцієнти Лагранжа.
  2. Учасник завантажує останній стан параметрів.
  3. Учасник вносить свій випадковий внесок до параметрів (випадковість назавжди видаляється після цього кроку).
  4. Учасник завантажує параметри назад до координатора.
  5. Координатор перевіряє, чи було правильно перетворено аккумулятор.
  6. Повторює крок 2 для всіх учасників.

Це дає параметри, які можна використовувати для побудови SNARKs Groth16 для даної схеми. Установка є коректною, якщо принаймні 1 учасник був чесним і знищив свій "токсичний залишок" на кроці 3.

Посібник з будівництва

Побудуйте за допомогою команди cargo build (--release). Ви отримаєте дві виконувані програми phase1 та prepare_phase2 у директорії target/ directory.

Протестуйте за допомогою команди cargo test --all.

Виконайте бенчмарки з допомогою команди cargo bench --all (використовує criterion)

Якщо ви внесете зміни, не забудьте виконати cargo fmt та cargo clippy --all-targets --all-features -- -D warnings

Усі крейти вимагають Rust 2018 року і протестовані на наступних каналах:

  • 1.39.0
  • stable

Якщо у вас немає встановленого Rust, виконайте команду: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Структура каталогу

Цей репозиторій містить декілька сховищ Rust, які реалізують різні будівельні блоки MPC. Високорівнева структура репозиторію виглядає наступним чином:

  • phase1:Rust скринька, яке забезпечує накопичувач для Powers of Tau. Він працює у багатопоточному режимі та працює "пакетами", що дозволяє обчислювати великі степені у середовищах з обмеженими ресурсами.
  • phase2:Rust-утиліта, яка надає обгортку над параметрами Groth16, яка також містить перевірену стенограму дотеперішніх внесків до фази спеціалізації
  • setup1-contributor: Rust скринька для учасника Aleo Setup I
  • setup1-verifier: для верифікатора Aleo Setup I
  • setup2: Rust скринька для запуску Aleo Setup II
  • setup-utils: Утиліти для спільного використання у різних пакунках, що стосуються вводу/виводу, математичних операцій та помилок.

Ліцензія

Ця бібліотека є збіркою репозиторіїв, які ліцензовані за різними стандартними ліцензіями. Будь ласка, зверніться до кожного окремого репозиторію для отримання інформації про його ліцензію.