<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Aleo UKR group</title>
        <link>https://paragraph.com/@aleo-ukr-group</link>
        <description>All actual Aleo information in Ukrainian language</description>
        <lastBuildDate>Sun, 12 Jul 2026 20:27:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Aleo UKR group</title>
            <url>https://storage.googleapis.com/papyrus_images/a526d73032527aadc4301d848b97650bab9333de81b2048b8ca3b598ff7c9025.png</url>
            <link>https://paragraph.com/@aleo-ukr-group</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Запуск винагороджуваної фази Тестнет-3]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/3</link>
            <guid>XWLpHde3xlVO4HOG8siy</guid>
            <pubDate>Fri, 02 Dec 2022 13:51:33 GMT</pubDate>
            <description><![CDATA[Алекс Пруден Запуск фази, що винагороджується Тестнет-3 — Прувери Сьогодні ми раді оголосити про початок винагороджуваної фази для Testnet 3, що наближає нас на один крок до основної мережі Aleo та підтримки приватних децентралізованих програм. Запрошуємо до участі всіх членів нашої спільноти. Testnet 3 є значним кроком уперед у порівнянні з Testnet 2. По-перше, він представляє новий алгоритм консенсусу AleoBFT, який поєднує в собі алгоритм консенсусу Proof-of-Stake (заснований на DiemBFT) зі...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0b72156aceaec0d98b6611971c43366af7a819a16682d3eec2473b4046dc5d00.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.aleo.org/team/alex-pruden">Алекс Пруден</a></p><p><strong>Запуск фази, що винагороджується Тестнет-3 — Прувери</strong></p><p>Сьогодні ми раді оголосити про початок винагороджуваної фази для Testnet 3, що наближає нас на один крок до основної мережі Aleo та підтримки приватних децентралізованих програм. Запрошуємо до участі всіх членів нашої спільноти.</p><p>Testnet 3 є значним кроком уперед у порівнянні з Testnet 2. По-перше, він представляє новий алгоритм консенсусу AleoBFT, який поєднує в собі алгоритм консенсусу Proof-of-Stake (заснований на DiemBFT) зі схемою компенсації за роботу для пруверів. У найближчі місяці ми опублікуємо докладнішу інформацію про AleoBFT. Але початкова частина програми винагороди буде зосереджена саме на пруверах.</p><p><strong>Роль пруверів в AleoBFT</strong></p><p>Хто такі прувери? У криптографії з нульовим розголошенням є дві взаємодіючі сторони: що <em>доводить (прувери)</em> , яка генерує криптографічний доказ, і <em>верифікує</em> , яка перевіряє правильність доказу, не знаючи його змісту. Щоб надсилати/отримувати активи або взаємодіяти з програмою, користувач повинен згенерувати доказ з нульовим розголошенням. У деяких випадках ми очікуємо, що деякі користувачі можуть передати процес створення доказів будь-якій сторонній службі перевірки.</p><p>Важливо відзначити, що аутсорсингова генерація доказів не є обов&apos;язковою у нашій мережі, як в інших мережах, таких як StarkNet. Однак ми очікуємо, що для підтримки програм на Aleo з&apos;явиться екосистема пруверів. Принадність цієї системи в тому, що вона максимально <em>розширює вибір користувачів</em> з точки зору того, яким сторонам вони довіряють, якщо є.</p><p>Для запуску цієї екосистеми мережа Aleo винагороджує пруверів безпосередньо з протоколу. У AleoBFT прувери можуть отримувати частину винагороди від coinbase за створення доказів, подібних до вихідного алгоритму консенсусу PoSW. Однак є дві важливі відмінності порівняно з тим, як це працювало у Testnet 2.</p><ol><li><p>Прувери не виробляють блоки, але вони отримують частину винагороди за кожен блок.</p></li><li><p>Винагорода coinbase не залежить від принципу &quot;переможець отримує все&quot;. Всі прувери, що надали рішення для даного блоку вище за мінімальну мету складності, отримують пропорційну частину винагороди.</p></li></ol><p>Протокол AleoBFT використовує варіант алгоритму коригування складності <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.reference.cash/protocol/forks/2020-11-15-asert">ASERT</a> (такий самий, як у Testnet 2) для обчислення двох цільових значень: <em>докази</em> та coinbase. Рішення прувера приймаються, якщо вони <em>вищі за</em> цільове значення доказу. Як тільки сума рішень прувера перевищує цільове значення coinbase, винагорода від coinbase пропорційно розподіляється між пруверами, які надали дійсні рішення. Таким чином, економіка прувера AleoBFT аналогічна майнінгового пулу у традиційній мережі proof-of-work.</p><p>Як реальний приклад давайте уявимо трьох пруверів: Алісу, Боба і Чарлі. Припустимо, що цільове значення coinbase - 1024, а цільове значення доказу - 8. Давайте представимо для 15-секундного періоду, коли виробляється один блок, що:</p><ul><li><p>Аліса обчислює та надсилає 80 доказів PoSW, які відповідають як мінімум цільовому значенню доказу, що дорівнює 8, на загальну суму 640 балів (62,5% від загальної кількості).</p></li><li><p>Боб обчислює 32 докази PoSW, які мають як мінімум цільове значення доказу, що дорівнює 8, що дає загальний бал 256 (25% від загальної кількості).</p></li><li><p>Чарлі обчислює 16 доказів PoSW, які мають як мінімум цільове значення доказу, що дорівнює 8, що дає загальний бал 128 (12,5% від загальної кількості).</p></li></ul><p>Аліса, Боб та Чарлі отримають пропорційну частину (62,5%, 25% та 12,5% відповідно) винагороди за цей блок.</p><p><strong>Розрахунок винагороди за блок</strong></p><p>Ми можемо розрахувати винагороду coinbase за такою формулою:</p><p>R_coinbase = max(0, H_Y10 — H) * R_anchor * 2^(-1 * (D — B) / B), де</p><p>‍R_anchor = награда за якорь.</p><p>H_Y10 = висота анкерного блоку у 10-му році.</p><p>H = Поточна висота блоку.</p><p>D = час, що минув з попереднього блоку.</p><p>B = час блокування прив&apos;язки.</p><p>Таким чином, початкова пропозиція токенів Aleo буде збільшуватися за рахунок винагород coinbase протягом приблизно десяти років, і вони будуть лінійно зменшуватися по блоках протягом цього періоду часу. Незабаром ми опублікуємо оновлений пост у блозі про токеноміку основної мережі з більш детальною інформацією.</p><p>Ця ж крива емісії діє під час Testnet 3, при цьому блок генези створюється 6 листопада 2022 року. Ми не будемо скидати мережу на початку періоду заохочення. Таким чином, винагорода за блок буде розраховуватись протягом періоду заохочення на основі висоти мережі на початку періоду заохочення (див. нижче).</p><p><strong>Нагороди у вигляді токенів за заохочувальний період</strong></p><p>Як згадувалося в попередньому повідомленні в блозі, ми виділили 25 мільйонів кредитів Aleo для заохочень Testnet 3. Нагородження для пруверів становлять 30% або 7,5 млн кредитів.</p><p>Кредити, зароблені в період винагороди, будуть обмінені на кредити Aleo під час запуску основної мережі за курсом 5:1. Тобто кожні п&apos;ять кредитів Aleo, зароблених протягом винагороди, можна обміняти на один кредит Aleo в основній мережі.</p><p><em>Винагороджуваний період триватиме з 00:00 UTC 2 грудня 2022 р. до 23:59 UTC 26 січня 2023 р. або доти, доки мережа не видасть 7,5 млн кредитів, залежно від того, що настане раніше.</em></p><p>Якщо 8-тижневий період закінчився, і було випущено менше 7,5 млн кредитів, команда Aleo залишає за собою право на свій розсуд розподіляти кредити, що залишилися. Якщо ви запускали ноду до дати запуску та НЕ використовуєте надані сценарії, переконайтеся, що ви перезавантажили свою ноду; в іншому випадку ви не зможете заробити нагороду.</p><p>Висновок</p><p>Команда Aleo стежитиме за активністю прувера протягом періоду заохочення, щоб виявити будь-кого, хто може намагатися обдурити систему. Якщо ви не дотримуватиметеся наших вказівок, ви не отримаєте винагороди, і в цілому команда Aleo залишає за собою право відмовити у винагороді будь-якій особі з будь-якої причини.</p><p>Зауважте, що ці кредити, швидше за все, будуть розподілені під час запуску основної мережі. Вони повинні використовуватися як механізм оплати послуг у мережі Aleo. Вони не є інвестиціями або інвестиційними інструментами, і до них не слід ставитись як до таких; їхня цінність полягає просто в їхній корисності для функціональності основної мережі. Запитуючи свої нагороди, ви заявляєте, гарантуєте та визнаєте, що ви:</p><ul><li><p>не купувати кредити Aleo як інвестиції та не розраховувати на економічну вигоду або прибуток як власник кредитів Aleo;</p></li><li><p>жодним чином не покладатися на Aleo або будь-кого з її співробітників або представників;</p></li><li><p>не купувати акції або інші частки участі в Aleo через володіння кредитами Aleo;</p></li><li><p>не представляти Aleo Credits у хибному світлі як інвестиції чи можливість отримання економічної вигоди чи прибутку.</p></li></ul><p>Як і у випадку з Testnet 2, ціль цієї загальнодоступної Testnet - перевірити технічну архітектуру та безпеку блокчейна в максимально реалістичних умовах. Aleo вже пройшов кілька аудитів безпеки, але ми вважаємо, що більшість того, що змушує працювати децентралізований консенсус, пов&apos;язана з внутрішніми економічними стимулами.</p><p>Щоб дізнатися більше про запуск ноди та участь у програмі заохочення Testnet 3, відвідайте наш репозиторій <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/AleoHQ/snarkOS">snarkOS</a> на Github. Дякуємо за участь у Aleo Testnet 3 та за допомогу у тестуванні інфраструктури завтрашньої приватної децентралізованої платформи для приватних додатків!</p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Мульти-скалярне множення: Стратегії та Проблеми]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/cfOFfIDA3aW24lmnDUkN</link>
            <guid>cfOFfIDA3aW24lmnDUkN</guid>
            <pubDate>Fri, 25 Nov 2022 15:42:48 GMT</pubDate>
            <description><![CDATA[Невеликий конспект про мульти-скалярне множення Генерування zk-SNARK (короткого не інтерактивного аргументу знання з нульовим розголошенням), що використовується в Aleo, включає безліч криптографічних обчислень, майже всі з яких відбуваються всередині еліптичної кривої в кінцевому полі. Еліптичні криві Ця стаття – короткий виклад цього матеріалу . Точка еліптичної кривої - це пара таких чисел (x, y) в кінцевому полі (ви можете розглядати кінцеве поле як Zp , цілі числа по модулю від дуже вели...]]></description>
            <content:encoded><![CDATA[<p><strong>Невеликий конспект про мульти-скалярне множення</strong></p><p>Генерування <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://habr.com/ru/post/342262/">zk-SNARK</a> (короткого не інтерактивного аргументу знання з нульовим розголошенням), що використовується в Aleo, включає безліч криптографічних обчислень, майже всі з яких відбуваються всередині еліптичної кривої в кінцевому полі.</p><p><strong>Еліптичні криві</strong></p><p>Ця стаття – короткий виклад <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cryptographyinrustforhackers.com/chapter_4/elliptic_curves.html">цього матеріалу</a> .</p><p>Точка еліптичної кривої - це пара таких чисел <em>(x, y)</em> в <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5">кінцевому полі</a> (ви можете розглядати кінцеве поле як <em>Zp</em> , цілі числа по модулю від дуже великого простого числа; хоча іноді все складніше), які задовольняють наступному виразу:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/26fd002fbe36139a0099715e0dafd77e2443b3e2738cc371daa1ca5046799814.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>для деяких <em>a</em> та <em>b</em> у кінцевому полі.</p><p>Ви можете скласти точки еліптичної кривої, але не традиційним методом. Замість</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4fc6ec48b5628a700023c740bb384c413e4b566d28bccae4230ef30043d639b6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>ми виконуємо наступне:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ce314bca0d889eeff81b8f4cf1df50e53c85b3d850b5eb83d3bf5a030ba0e80c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bee1a37fc8e0803f8f5494ca6133a5299c5d373323ef3af1696f27c8451781b2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Для цього виразу є два винятки:</p><ol><li><p>Коли <em>(x1, y1) = (x2, y2)</em> .</p></li><li><p>Коли <em>x1 = x2</em> , але <em>y1 ≠ y2</em> . У такому разі <em>y1 = −y2</em> , оскільки іншого рішення немає.</p></li></ol><p>В обох цих випадках наведене вище вираз не визначено (нам довелося б ділити на нуль), тому замість нього ми зробимо таке:</p><p>1. Сума точки з самою собою - це, як і раніше, точка <em>(x3, y3)</em> лише в одному випадку:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4cbc82196e08bc030946591abb4209981298fb474f3153a0042247b2612b929b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>(Тут <em>a</em> - це коефіцієнт, що визначає наведене вище рівняння кривої).</p><p>2. В даному випадку результатом додавання є особлива точка, яку ми довільно додаємо до кривої; вона називається <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://wiki5.ru/wiki/Point_at_infinity"><em>точкою на нескінченності</em></a> та записується як <strong>0</strong> . Ця точка працює як нуль нашої суми, тобто.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0e42abb9c8247f86d1895fd17878e884a6dceaf3f9ba8c34b0839caaab85f803.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>кожної пари <em>(x, y)</em> .</p><p><strong>Примітивні операції</strong></p><p>Криптографія еліптичних кривих в кінцевому рахунку спирається на дві примітивні операції, складання точок (підсумовування двох різних точок) і подвоєння точок (додавання точки до самої себе), які ми називаємо <code>ECADD</code>і <code>ECDBL</code>.</p><p>Якщо ми намагаємось додати точку до самої себе багато разів, ми можемо застосувати алгоритм <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Double-and-add">double-and-add</a> . Як вже пояснювалося <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.entropy1729.com/what-every-dev-needs-to-know-about-elliptic-curves/">в одній з наших статей</a> , ідея проста: якщо ми хочемо обчислити, скажімо, <em>9P</em> для якоїсь точки <em>P</em> кривою замість виконання 9 докладів ми можемо виконати</p><p><em>P + P = 2P 2P + 2P = 4P 4P + 4P = 8P 4P + P = 9P</em></p><p>— лише 4 операції складання.</p><p>Коли нам доводиться складати безліч точок <em>k1P1 + k2P2 + … + knPn</em> , більшість методів припускають, що ці примітиви дані, і зосереджуються на тому, як виконувати скалярні множення <em>kiPi</em> та додавання, мінімізувавши кількість <code>ECADD</code>і <code>ECDBL</code>.</p><p><strong>MSM (мульти-скалярне множення)</strong></p><p>Завдання <em>мульти-скалярного множення</em> полягає в тому, щоб в даній еліптичній кривій обчислити</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9dc7f56c59449ed4d44f1cac63e32cc1d8af092c58832a64925cab28a056d451.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>для деяких <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D0%BD%D0%B0">скалярів</a> (цілих чисел по модулю певного простого числа) <em>ki</em> , для деяких точок еліптичної кривої <em>Pi = (xi, yi</em> ) і для когось <em>n</em> (у задачі Aleo воно дорівнює 2²⁶).</p><p>Майте на увазі, що операція підсумовування тут та сама, що обговорювалася в попередньому розділі. Аналогічно, <em>kiPi</em> означає &quot; <em>Pi</em> , додане до самого себе <em>ki</em> раз&quot;, і сума залишається такою ж, що була наведена вище.</p><p>Підраховано, що близько 80% часу генерування доказів zk-SNARK витрачається виконання MSM, тому його оптимізація дуже важлива для продуктивності.</p><p><strong>Метод ковзного вікна</strong></p><p>Ми можемо розбити MSM на менші суми та скоротити загальну кількість операцій, багаторазово використовуючи <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://wiki.loginom.ru/articles/windowing-method.html">метод ковзного вікна</a> . Якщо ми хочемо обчислити кожен твір <em>kiPi</em> , ми можемо розбити його на вікна розміром <em>c</em></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d993d129ec01672ba96e6dd9c1e0b20e802289ab24e63c2de7b3a6b179cecca3.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>З урахуванням цього, завдання MSM може бути подане у вигляді</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0cf179b1c63ef27d1f8abb229f7b36ec2311a7ea9a3a43e26fdc63840da75af8.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Тепер ми можемо змінити порядок додавання</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/89a6cf655ef025317985933c9e64f31b9c744853ca5f3a3cfb64038708b6bcf1.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Іншими словами, спочатку ми ділимо скаляри на вікна, а потім поєднуємо всі крапки в кожному вікні. Тепер ми можемо зосередитись на тому, як ефективно обчислити всі <em>Bj</em> :</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a751ca7bc55a879327d3c257b705e2215302790b1fc34ecc9ac8c12731336434.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де підсумовування по <em>u(λ)</em> виконується тільки з точками, коефіцієнт яких дорівнює <em>λ</em> . Наприклад, якщо <em>c</em> = 3 і нам дано 15 точок</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d0d275302ff7050f9ed9a48cefae601b1f6b394b101de50a75e293565ac43023.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>ми можемо розділити додавання за коефіцієнтами <em>λ</em> , що приймають значення від 1 до 7. Для <em>λ = 1</em> : <em>∑uPu = P4</em> (бо <em>P4</em> - єдина точка з коефіцієнтом 1), для <em>λ = 4</em> : <em>∑uPu = P1 + P5</em> і так далі . Таким чином ми просто розставляємо всі крапки із загальним коефіцієнтом <em>λ</em> по λ-вікнах. Отже,</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/271e640a86ed5585e555b02932fea8c1df5c279b91b53d9816b628e7ad1ebb17.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Ми можемо обчислити цей вираз із мінімальною кількістю додавань точок, використовуючи часткові суми.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/316621d28a3728e4b3c565f657fd88fee155dc09aa914907aaa1486bc020c06a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Кожна така операція містить лише одне складання точок еліптичної кривої. Кінцевий результат може бути обчислений за допомогою додавання часткових сум:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/033e13006b17908d67970908aaf57684bcf22aea22e39d5daa94eef5b7b3fc2c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Ми можемо покращити обчислення, змінивши розкладання коефіцієнтів <em>ki</em> . У двійковому поданні <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://wiki5.ru/wiki/Hamming_weight">вага Хеммінга</a> - це число ненульових бітів; в ідеалі ми хотіли б, щоб ця вага була якнайменша, щоб зменшити кількість сум (Наприклад, 65537, тобто 2¹⁶ + 1 різними способами використовується як публічний ключ для <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/RSA">криптосистеми RSA</a> . Алгоритми зведення в квадрат і мультиплікації вимагають лише двох множень ). Середня вага Хеммінга в двійковому поданні дорівнює 1/2; якщо ми введемо двійкове уявлення зі знаком (-1, 0, 1), середня вага знизиться до 1/3 з подальшим зменшенням кількості операцій (у середньому).</p><p><strong>BLS 12-377</strong></p><p>Крива, яка використовується в Aleo, називається BLS 12-377. Базове поле (кінцеве поле) має порядок <em>q</em> (377-бітне просте число) і має ступінь вкладення 12. І порядок групи <em>G1</em> еліптичних кривих <em>r</em> і кінцеве поле є <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/P-%D0%B0%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE">2-адичними</a> числами (це означає, що і <em>q</em> , і <em>r</em> можуть бути записані як (2^α)r + 1, де <em>r</em> - непарне, а <em>α</em> більше 40). Порядки <em>q</em> та <em>r</em> пов&apos;язані ступенем вкладення: <em>r ∣ q¹² − 1</em> . Рівняння еліптичної кривої:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/deb70aed304bd1cf1285509d4ece3499253a597ab1e4a10e81b0e2586f6fc5a5.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Додатково ми можемо задати другу групу <em>G2</em> над квадратичним <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.upwiki.one/wiki/Field_extension">розширенням поля </a><em>Fq</em> ; рівняння такої кривої:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/804b687a138ef1dcf4871e1a370318e324fb808c7eb928ffe18612ccde7f867b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де <em>B</em> – параметр. Додаткову інформацію про параметри кривих ви можете знайти <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.rs/ark-bls12-377/latest/ark_bls12_377/">тут</a> .</p><p>BLS 12–377 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B3%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F">біраціонально еквівалентна</a> кривим <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-05#appendix-B">Монтгомері та скрученим кривим Едвардса</a> . Це дає нам можливість виконувати складання точок та скалярний твір швидше, уникаючи дорогих інверсій поля. У разі <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9C%D0%BE%D0%BD%D1%82%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%B8_(%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BA%D1%80%D0%B8%D0%B2%D1%8B%D0%B5)">кривих Монтгомері</a> можна виконувати скалярні твори за постійний час, що робить цю операцію стійкою до <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8">атак за часом</a> .</p><p>Реалізації кривої BLS 12-377 та (біраціонально еквівалентної) <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cryptopro.ru/blog/2014/12/04/skruchennye-ellipticheskie-krivye-edvardsa-kogda-zachem-dlya-kogo">скрученої кривої Едвардса</a> представлені в даному <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/arkworks-rs/curves">репозиторії</a> .</p><p>BLS 12-377 є однією з кривих, зручних для сполучення; це можна застосовувати для коротких цифрових підписів, які можна ефективно агрегувати, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BE%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%B0">схем поліноміальних зобов&apos;язань</a> та одноразового <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD_%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%BC%D0%B8">обміну кількома ключами</a> .</p><p>Причина, через яку ми маємо справу з двома рівняннями для кривої BLS і дві групи пов&apos;язані з поєднанням. Сполучення - це білінійне відображення: воно приймає дві точки, кожна з групи простого порядку <em>r</em> . З технічних причин ці групи мають бути різними. Так як початкова крива має тільки одну групу порядку <em>r</em> , нам потрібно зробити розширення поля, щоб мати можливість знайти інші групи порядку <em>r</em> . Ступінь вкладення показує, як нам потрібно розширити поле, щоб знайти інші групи. Як доповнення розширене поле містить у собі всі <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D0%BD%D0%B8_%D0%B8%D0%B7_%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%8B">коріння r ступеня з одиниці</a> .</p><p><strong>Примітка для розширення поля</strong></p><p>Ступінь вкладення є також і ступенем розширення поля, яке потрібно використовувати. Знайомими прикладами розширення полів є дійсні числа, <em>R</em> (розширення поля раціональних чисел <em>Q</em> , яке є <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.upwiki.one/wiki/Field_extension#Transcendental_extension">трансцендентальним</a> ) і комплексні числа, <em>C</em> (розширення <em>R</em> ). Останнє не може бути розширено далі, оскільки в <em>C</em> ненаведених багаточленів не існує (ми можемо сказати, що комплексні числа - це <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%B7%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5">замкнене алгебраїчне поле</a> ).</p><p>Якщо ми хочемо створити квадратичне розширення <em>Fq</em> , ми можемо його уявити як поліном <em>a0 + a1x</em> , де <em>a0</em> і <em>a1</em> — елементи поля <em>Fq</em> . Це додавання є простим, оскільки ми додаємо незалежні та лінійні члени окремо. Для множення із заданими елементами <em>a</em> та <em>b</em></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0d143d77346e92d190c99b03daefc8754625462906c70e968cc5d1895f6caea0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Щоб уникнути виходу за межі лінійних багаточленів, ми можемо зменшити ступінь, використовуючи багаточлен, що не наводиться, такий як <em>x² + 1</em> , і встановивши, що <em>x² + 1 = 0</em> . Якщо ми підставимо це до рівняння вище</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c2b8573a00ceb439dbfcc228c5dbfca92a6efce65011e2abd5d00a94ba5ef6d7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>що нагадує множення у комплексних числах.</p><p>Умови вибору полінома такі:</p><ol><li><p>Він повинен мати той самий порядок, що й поле розширення (у разі другий).</p></li><li><p>Він має бути неприведеним у полі, яке ми розширюємо, це означає, що ми не можемо поділити цей багаточлен на поліноми меншою мірою.</p></li></ol><p>Насправді, коли хочемо створити розширення поля <em>Fq12</em> , ми можемо зробити це, послідовно розширюючи менші поля: використовуючи вежу розширень (таку, як <em>Q → R → C</em> ).</p><p><strong>Прискорення за допомогою Карацубі, Тоома-Кука та БПФ</strong></p><p>Потенційне застосування <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5">БПФ</a> виникає при реалізації примітивів <code>ECADD</code>та <code>ECDBL</code>. Ці операції можуть бути виконані у різних системах координат. Як стверджувалося <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.entropy1729.com/need-for-speed-elliptic-curves-chapter/">тут</a> , <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82">проективні координати</a> зазвичай набагато швидше, тому що вони дозволяють уникнути інверсії кінцевого поля, яка витрачає набагато більше, ніж множення та додавання.</p><p>При використанні проективних координат обчислення виконуються швидше, тому що ми змінюємо поділ на множення. Це означає, що потрібно виконати багато множень, тому нам потрібні ефективні методи для множення цілих чисел, у яких алгоритми <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://habr.com/ru/post/124258/">Карацуби</a> , <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A2%D0%BE%D0%BE%D0%BC%D0%B0_%E2%80%94_%D0%9A%D1%83%D0%BA%D0%B0#:~:text=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%20%D0%A2%D0%BE%D0%BE%D0%BC%D0%B0%20%E2%80%94%20%D0%9A%D1%83%D0%BA%D0%B0%2C%20%D0%B8%D0%BD%D0%BE%D0%B3%D0%B4%D0%B0%20%D1%83%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9,%D1%8D%D1%82%D0%BE%20%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%20%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D1%85%20%D1%87%D0%B8%D1%81%D0%B5%D0%BB.">Тоома</a> або БПФ можуть стати привабливими, оскільки маємо справу з <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.entropy1729.com/divide-and-conquer-fourier/">множенням великих цілих чисел</a> . Оптимальний алгоритм залежатиме від розміру цілих чисел.</p><p>Оригінал статті: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.entropy1729.com/multiscalar-multiplication/">https://www.entropy1729.com/multiscalar-multiplication/</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Полювання на (zk-) SNARK]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/zk-snark</link>
            <guid>INkMVTl3d6gmh1ZM3nxV</guid>
            <pubDate>Fri, 25 Nov 2022 15:29:48 GMT</pubDate>
            <description><![CDATA[Вступ Короткі не інтерактивні аргументи знання (SNARK) — це потужні криптографічні примітиви, які знаходять своє застосування у децентралізованих фінансах, управлінні та обчисленнях. Існує безліч різних SNARK таких, як Marlin (на якому заснований Aleo), Plonk , STARK , Groth16 і т.д., побудованих на різних інструментах та з різними продуктивністю, розміром доказів, часом перевірки тощо. Проте всі вони ґрунтуються на загальних принципах та властивостях. Серед SNARK найважливішими для приватних...]]></description>
            <content:encoded><![CDATA[<p><strong>Вступ</strong></p><p>Короткі не інтерактивні аргументи знання (SNARK) — це потужні криптографічні примітиви, які знаходять своє застосування у децентралізованих фінансах, управлінні та обчисленнях. Існує безліч різних SNARK таких, як <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.iacr.org/cryptodb/data/paper.php?pubkey=30190">Marlin</a> (на якому заснований Aleo), <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2019/953">Plonk</a> , <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2018/046.pdf">STARK</a> , <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2016/260.pdf">Groth16</a> і т.д., побудованих на різних інструментах та з різними продуктивністю, розміром доказів, часом перевірки тощо. Проте всі вони ґрунтуються на загальних принципах та властивостях. Серед SNARK найважливішими для приватних програм є SNARK з нульовим розголошенням (скорочено zk-SNARK). Вони дозволяють доводити, що знаємо якісь змінні, звані свідком, <em>w</em> , такі, що вихідне значення функції<em>F</em> , обчислене у свідку та примірнику (публічних змінних), <em>x</em> , дорівнює <em>F(x, w) = y</em> , не розкриваючи при цьому нічого про <em>w</em> .</p><p>Комп&apos;ютерні програми можуть бути перетворені на функції, які приймають вхідні дані (деякі з них, можливо, захочемо приховати), і правильне виконання яких ми доводимо за допомогою SNARK. Наприклад, ми можемо перетворити програму на арифметичну схему, <em>C</em> , і, враховуючи публічні вхідні та вихідні дані, <em>x</em> , і засекречені дані, <em>w</em> , ми можемо довести, що програма була виконана коректно, продемонструвавши <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D1%83%D0%BB%D0%B5%D0%B2%D1%8B%D1%85_%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB">здійсненність</a> схеми, <em>C(x, w)= 0</em> . Оскільки здійснюваність арифметичних схем — це <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/NP-%D0%BF%D0%BE%D0%BB%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_NP-%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D1%85_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">NP-повне завдання</a> , ми можемо звести будь-яке NP-завдання до арифметичної схеми (проте це не єдина альтернатива, і кілька конструкцій спираються на інші техніки).</p><p>Перед тим, як перейти до деталей, дозвольте пояснити головні властивості SNARK та дати точні визначення кожного слова у його назві. У zk-SNARK беруть участь дві сторони, що доводить і перевіряє, де перший намагається переконати останнього в цьому твердженні, наприклад, у тому, що той, хто доводить, знає такий <em>w</em> , що <em>C(x, w)=0</em> . SNARK має задовольняти властивостям:</p><ol><li><p>Завершеності: якщо доказуючий знає <em>w</em> , він повинен бути здатний переконати чесного перевіряючого у достовірності затвердження.</p></li><li><p>Надійності: якщо твердження хибне, то жоден обманюючий доводить не зможе переконати перевіряючого прийняти його, за винятком випадків із дуже низькою ймовірністю.</p></li><li><p>Нульового розголошення: доказ не розкриває жодної інформації про свідка.</p></li></ol><p>Що стосується назви:</p><ol><li><p>Короткість: докази мають бути короткими та швидко перевіряються. Це дозволило б нам делегувати дорогі обчислення ненадійним сторонам та перевіряти їх достовірність без необхідності запускати програму самостійно.</p></li><li><p>Не інтерактивність: ні для генерації, ні для перевірки доказу не потрібна взаємодія між доказуючим та перевіряючим. Ми побачимо, що спочатку конструкція покладалася на інтерактивні докази, але ми зможемо перетворити їх на не інтерактивні, використовуючи <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A4%D0%B8%D0%B0%D1%82%D0%B0_%E2%80%94_%D0%A8%D0%B0%D0%BC%D0%B8%D1%80%D0%B0">трансформацію Фіата-Шаміра</a> .</p></li><li><p>Аргумент знання: ми можемо довести, що ми знаємо свідка.</p><p><strong>Налаштування</strong></p><p>SNARK вимагають <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2022/03/14/trustedsetup.html">довірене налаштування</a>. Серед її видів ми можемо виділити:</p><p>— Єдиний довідковий рядок, або прозорі налаштування ( URS ).</p><p>— Структурований рядок посилань, або приватне налаштування ( SRS ).</p><p>У випадку SRS ми можемо натрапити на два випадки:</p><ul><li><p>Універсальна (наприклад, MARLIN)</p></li><li><p>Конкретна (Groth 16)</p></li></ul><p>Насправді приватна настройка виконується як багатостороннє обчислення; конструкція буде безпечною доти, доки існує одна чесна сторона. Проблема з конкретними SRS полягає в тому, що рядок залежить від програми, і для кожної з них необхідно виконати нове налаштування (це небажана властивість).</p><p><strong>Імовірнісні докази та можливості перевіряючого</strong></p><p>Короткість аргументу спирається на імовірнісні докази. Щоб це було можливо, ми спочатку маємо встановити те, що відповідає “повноваженням”, чи можливостям перевіряючого. Є:</p><p>— Інтерактивність: перевіряльнику дозволяється взаємодіяти з доказуючим, надсилаючи виклики та отримуючи відповіді.</p><p>— Безліч доказуючих: є кілька доказувачів, але всі вони ізольовані.</p><p>— Випадковість: перевіряючий може вибирати випадкові елементи чи запити.</p><p>— Можливість надсилання запитів до <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forklog.com/cryptorium/chto-takoe-blockchain-oracle#:~:text=%D0%91%D0%BB%D0%BE%D0%BA%D1%87%D0%B5%D0%B9%D0%BD%2D%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB%D1%8B%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B%2C,%2C%20%D1%81%D1%82%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%2C%20NFT%20%D0%B8%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85.">оракулу</a> : перевіряючий може надсилати запити на повідомлення доказуючого.</p><p>Коли у перевіряючого є доступ до більш ніж одного з цих повноважень, ми отримуємо різні види доказів:</p><ul><li><p>Інтерактивність + Випадковість: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://studme.org/215062/informatika/interaktivnye_sistemy_dokazatelstv">Інтерактивні докази</a> (ІР).</p></li></ul><p>— Випадковість + Оракул: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikibrief.org/wiki/Probabilistically_checkable_proof">Докази</a> (PCP), що ймовірно перевіряються.</p><ul><li><p>Інтерактивність + Випадковість + Оракул: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/ZK-STARK#%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%B0_%D1%81_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB%D0%BE%D0%BC">Інтерактивні докази з оракулом</a> (IOP).</p></li></ul><p>Є й інші можливі варіанти, наприклад, MIOP, але ми зосередимося попередніх трьох. На даний момент IOP надає найбільш ефективну конструкцію для SNARK: квазілінійний час перевірки, лінійна довжина розміру доказів, лінійний час доказу та ефективні реалізації. PCP цікаві з теоретичної точки зору, але на практиці не ефективні (вони не призводять до коротких доказів, за винятком лінійних запитів). Нарешті IP надають цікаві будівельні блоки у вигляді підпрограм.</p><p>У IOP доводить і перевіряє обмінюються повідомленнями. Той, хто доводить, надсилає довільні повідомлення (в поліноміальному IOP доказуючий відправляє зобов&apos;язання - див. наступний розділ - поліномам), і перевіряючий відправляє випадкові виклики. Після кількох раундів перевіряючий складає запит із кількох змінних і вирішує, прийняти доказ чи ні.</p><p><strong>Схема зобов&apos;язань</strong></p><p>Продуктивність SNARK залежить від типу використаних зобов&apos;язань; За останні роки було зроблено багато кроків щодо їх поліпшення.</p><p>Ми можемо подавати зобов&apos;язання як сейф. Ми робимо якийсь вибір для ставки, кладемо його в сейф та передаємо іншому. Коли оголошено результат, ми можемо розкрити нашу ставку, відкривши сейф.</p><p>Зобов&apos;язання має задовольняти двом властивостям:</p><p>— Зв&apos;язуюче: ми не можемо зробити два вірних відкриття для того самого зобов&apos;язання. Іншими словами, якщо зобов&apos;язання має якесь значення a , повинно бути неможливо знайти такий b , що cm(a) = cm(b) .</p><p>— Приховуюче: зобов&apos;язання не розкриває нічого про зафіксовані дані.</p><p>Один із способів зафіксувати повідомлення - використовувати <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BD%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B0">стійку до колізій хеш-функцію</a>. Якщо нам дані повідомлення m і випадкове значення r , cm(m, r) = hash(m ∣ r) Враховуючи, що вона стійка до колізій, ми отримуємо властивість зв&apos;язування. Потім ми можемо відкрити зобов&apos;язання та перевірити: Verify( m, r, cm ) → прийняти чи відхилити Однією з переваг зобов&apos;язань є те, що вони схильні бути короткими. Наприклад, якщо ми будемо використовувати <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tproger.ru/translations/sha-2-step-by-step/">SHA-256</a> , довжина доказу дорівнюватиме 32 байтам.</p><p>Одна важлива група зобов&apos;язань – це поліноміальні схеми. Нижче представлені кілька конструкцій та математика, на якій вони ґрунтуються:</p><ul><li><p>Базові <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F#:~:text=%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%20%E2%80%94%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%20%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B8%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9,%D0%BD%D0%B5%D0%B8%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%20%D1%81%D1%83%D0%B1%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B%20%D0%B4%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BB%D0%BE%D0%B3%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.">еліптичні криві</a> : <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bits.media/bulletproofs-novyy-sposob-umenshit-razmer-blokcheyna/">bulletproofs</a></p></li><li><p>Білінійні групи: поліноміальні зобов&apos;язання <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.bmstu.wiki/index.php?title=%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%BE%D0%B2_%D0%B8_%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5&amp;mobileaction=toggle_view_desktop">Kate-Zaverucha-Goldberg</a> (KZG) (спарювання, довірене налаштування), <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2020/1274.pdf">DORY</a> (без довірчого налаштування)</p></li><li><p>Групи невизначеного порядку: DARK</p></li><li><p>Тільки хеш-функції: FRI</p><p><strong>Анатомія СНАРК</strong></p><p>SNARK може бути сконструйований шляхом вибору наступних двох елементів:</p><ul><li><p>Тип імовірнісного доказу: наприклад, доказ, що вірогідно перевіряється (PCP) або інтерактивний доказ з оракулом (IOP). Особливий вид IOP – це поліноміальний IOP (PIOP).</p></li><li><p>Схеми зобов&apos;язань (криптографія). Наприклад, поліноміальні/функціональні зобов&apos;язання, векторні зобов&apos;язання та лінійне кодування.</p><p>Імовірнісний доказ визначає тип обчислення. Можливі варіанти машинного обчислення (наприклад, vmTinyRam) чи схеми.</p></li></ul><p>Криптографічний елемент визначає вартість генерації доказу, чи буде <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://qapp.tech/help/post-quantum">постквантово безпечним</a> і тип налаштування (прозора або структурована). Математичні інструменти, з якими нам доведеться працювати для кожного з них:</p><ul><li><p>Лінійне кодування: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://crypto-kantiana.com/semyon.novoselov/publications/hec_k.pdf">Спарювання</a> еліптичних кривих (ECP) + <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://mech.math.msu.su/~fpm/ps/k13/k134/k13413.pdf">Грати</a></p></li></ul><p>— Векторне зобов&apos;язання: стійкий до колізій хеш-функції (CRH) + ECP</p><ul><li><p>Поліноміальні зобов&apos;язання: CRH, ECP, PO групи, UO групи</p></li></ul><p>Деякі рецепти SNARK:</p><p>Лінійне PCP + Лінійне кодування: Groth16, Groth-Maller 17 PCP/IOP + Векторне зобов&apos;язання: STARK Поліноміальне PCP/IOP + Поліноміальне зобов&apos;язання: MARLIN, SONIC, Plonk, Spartan. Bulletproofs використовують кілька різних комбінацій перерахованих вище елементів і засновані на криптографічних перевірках суми.</p><p>Розмір доказу залежить від типу конструкції. Наприклад, для PIOP з поліноміальними зобов&apos;язаннями KZG доказ займає менше ніж 1 КіБ (два елементи еліптичних кривих), тоді як IOP з FRI (Fast Reed-Solomon Interactive Oracle Proofs of Proximity) – близько 100 КіБ, більш ніж на два порядки більше! Це так, тому що FRI використовує дерева Меркла ; для перевірки потрібен шлях автентифікації, що вимагає кількох хешів.</p><p>Одна з проблем, з якою ми стикаємося в схемах, полягає в тому, що перевіряючий повинен прочитати її, внаслідок чого час перевірки лінійно залежить від розміру (що зробило доказ не коротким). Щоб уникнути цього, ми можемо попередньо обробити схему та досягти сублінійного часу перевірки.</p><p>Тепер ми зосередимося на поліноміальних зобов&apos;язаннях KZG, які є основою Marlin та Plonk.</p><p><strong>Схема поліноміальних зобов&apos;язань KZG</strong></p><p>Схема поліноміальних зобов&apos;язань має такі алгоритми:</p><ol><li><p>Настройка.</p></li><li><p>Фіксація.</p></li><li><p>Відкриття.</p></li></ol><p>Щоб зафіксувати поліном, ми оцінимо його у заданій, але невідомій точці <em>α</em> .</p><p>Налаштування приймає максимальний ступінь полінома (що залежить від кількості вентилів арифметичної схеми) і виводить загальнодоступні параметри: ключ, що доводить, і перевіряючий ключ. Щоб мати можливість обчислювати багаточлени, ми будемо використовувати еліптичну криву (нам потрібно, щоб вона була зручною для парування, наприклад, BLS 12–377), щоб приховати <em>α</em> та його потужності ( <em>α</em> вибирається під час церемонії налаштування та викидається як токсичне сміття!) . Щоб зробити це, ми вибираємо генератор з групи великого простого порядку <em>d</em> +1, <em>g</em> і обчислюємо</p></li></ul></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3f1c059b21f3128db897f754f47dc14f657df56b80e6881174f5a632ba0223aa.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Це дасть нам дуже велику колекцію точок еліптичної кривої (ми збережемо їх у вигляді рядка), яка буде працювати як ключ, що доводить. У разі універсального налаштування кількість елементів збігатиметься з максимальним розміром схеми. Оскільки точки еліптичної кривої займають близько 100 В, якщо ми хочемо мати справу з 10⁸ вентилів, нам потрібно більше 1 Гбайт лише для того, щоб зберігати їх. Для заданої схеми, яка може бути набагато меншою за максимальну, MARLIN обрізає ключ, так що працювати з ним набагато простіше і швидше. Налаштування також залежить від параметра безпеки <em>λ</em> , але в нашому аналізі ми вважатимемо його постійним. Отже, ми маємо setup( <em>λ, N</em> ) → pp(pk, vk).</p><p>Доказуючий генерує поліном</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ebde01897dc5c494240ff6b9cbd6b7bfc87deebcdfee6e2bf6c2415d635831dc.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>і фіксує його , обчислюючи в точці <em>?</em> Ми не знаємо <em>α</em> , лише скалярні кратні елементи групи ступенів <em>α</em></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0d05e0e1e3d3c5a1102d029b1da31cb0ec42ebbbdbf601482cc2c2e892abe7d5.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Це проблема мульти-скалярного множення ( <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@u_dorozhkina/kVgVtRC5myM">MSM</a> ). Ми, що поліноміальні зобов&apos;язання відповідає одному груповому елементу еліптичної кривої.</p><p>Ми також могли б використовувати дерево Меркла, щоб зафіксувати багаточлен. Проблема дерева Меркла полягає в тому, що розмір дерева залежить від рівня полінома. У випадку KZG зобов&apos;язання - це лише один елемент групи, який не залежить від розміру. Крім того, коли ми хочемо обчислити багаточлен у доказі, нам потрібно відправити всі коефіцієнти у відкритому вигляді (який показує багаточлен), при цьому перевіряльнику доводиться виконувати лінійну роботу над розміром багаточлена. З іншого боку, ми побачимо, що KZG в основному приховує багаточлен (якщо тільки запитів небагато), і перевірка залежить від ступеня многочлена. Крім того, KZG допускає пакетні докази: якщо ми маємо кілька зобов&apos;язань <em>cm1, cm2, …, cmk</em>, ми можемо згенерувати лише одне доказ, показує, що це зобов&apos;язання дійсні.</p><p>Як тільки многочлен зафіксований, перевіряючий (в інтерактивній схемі) може відправляти випадкові точки <em>rk</em> доказує, і останній видає многочлен, обчислений <em>rk, P(rk)</em> . Щоб зробити його неінтерактивним, ми використовуємо перетворення Фіата-Шаміра, де випадкові виклики генеруватимуться з криптографічної хеш-функції.</p><p>Припустимо, що доводить хоче переконати перевіряючого у цьому, що <em>P(u) = v</em> . Він може перетворити цю рівність на поліном, <em>g(x) = P(x) − v</em> , який має рішення в <em>x = u</em> . Це означає, що <em>g(x)</em> ділиться на <em>x − u</em> , що ми можемо записати як <em>g(x) = P(x)−v = Q(x)(x−u</em> ), де <em>Q</em> є приватним многочленом. Доказуючий може зафіксувати <em>Q(x)</em> , виконавши те саме, що раніше</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/587a8380e1bca9c6eea7632c2c56e7f78cf107ee8a9ae94ac56de0ae1f2354f8.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>- Ще один MSM. Доказ <em>π</em> містить елемент групи, який має постійний розмір! Доказ продемонструє, що <em>P(u) = v</em> і <em>P</em> — це дійсно багаточлен ступеня не більше, ніж <em>d</em> , і фіксація <em>P</em> — це cm( <em>P</em> ).</p><p>Перевіряючий приймає доказ, якщо <em>(α−u)cm(Q) = cm(P) − vg</em> . Але проблема в тому, що ми не знаємо <em>α</em> . Ось де спаровування приходить на допомогу, і нам знадобляться лише елементи <em>h0</em> і <em>h1</em> , щоб мати можливість провести обчислення. Грубо кажучи, спарювання еліптичних кривих – це функція</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/aa1e627a78c54fba0dd8518373b41811c4f9a4b55829f0ac6f5073e92784c7cc.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>яка приймає два елементи, <em>P</em> з <em>G1</em> and <em>Q</em> з <em>G2</em> і виробляє елемент <em>R</em> з <em>Gt</em> . Всі групи мають однаковий порядок r і відповідають групам зручних для спарювання еліптичних кривих. У разі MARLIN використовується крива <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@u_dorozhkina/kVgVtRC5myM">BLS 12-377</a> . Спарювання задовольняє:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/64311e68f007e629027458a0d6e87d9d940b5a50f86f6d4ba6f0be8264561ccf.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де <em>g</em> and <em>g2</em> - генератори з груп <em>G1</em> і <em>G2</em> (і <em>P = pg</em> і <em>Q = qg2</em> ). Форма рівняння перевірки з точки зору спарювання:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cae79f60cf0e7e361a8a05e98a06d4372f91d75ceff9566217d5810b158996fb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Перевірка проводиться в <em>Gt</em> . Нам потрібно лише дізнатися <em>αg2</em> із довіреної настройки.</p><p>Тепер, як ми можемо бути впевнені, що якщо ми оцінили багаточлени в одній точці і вони збігаються, то дуже ймовірно, що аргумент вірний? Відповідь лежить у <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0_%D0%A8%D0%B2%D0%B0%D1%80%D1%86%D0%B0_%E2%80%94_%D0%97%D0%B8%D0%BF%D0%BF%D0%B5%D0%BB%D1%8F">лемі Шварца-Зіппеля</a> (ми сформулюємо її для <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5">кінцевих полів</a> ): для полінома <em>P</em> ступеня <em>d</em> у кінцевому полі порядку <em>p</em> ймовірність, що поліном дорівнює нулю в точці <em>r</em> , обраної випадковим чином, дорівнює</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0dde8a9b3192a107d8ac596612e8b304abf2d4899e70b71079479290251bc6f0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Враховуючи, що максимальний розмір схеми (який визначає максимальний порядок полінома) дорівнює приблизно 2²⁶ ≈ 10⁸, а розмір поля більше ніж 2²⁵⁶, ця ймовірність дорівнює приблизно 2^(-230) ≈ 10^(-70). Якщо <em>P1</em> і <em>P2</em> збігаються в одній точці <em>r</em> ми можемо скласти поліном <em>P(x) = P1(x )− P2(x)</em> (оскільки складення поліномів замкнуте) і <em>P(r) = 0</em> . Враховуючи, наскільки малоймовірно випадкове потрапляння в нуль, ми можемо бути цілком впевнені, що <em>P(x)</em> є нульовим поліном.</p><p><strong>Висновок</strong></p><p>zk-SNARK почали привертати увагу завдяки їхньому використанню при розробці повністю приватних додатків. Вони надають короткі докази, що певне обчислення було виконано правильно, не розкриваючи конфіденційної інформації. Існує безліч можливих конструкцій, заснованих на імовірнісних доказах та схемі зобов&apos;язань. Залежно від різних варіантів можливі ефективніші версії, які визначають тип обчислень (машинні чи схемні обчислення). Ми вивчили схему зобов&apos;язань KZG, яка демонструє ідею, що лежить в основі таких систем, як MARLIN та Plonk, та обчислення, які нам необхідно виконати для генерації та перевірки доказів.</p><p>Оригінал статті: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.entropy1729.com/the-hunting-of-the-zk-snark/">https://www.entropy1729.com/the-hunting-of-the-zk-snark/</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Обновлення програми амбасадорів Aleo]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/aleo</link>
            <guid>hJJftvNRUFWb6s5CHvii</guid>
            <pubDate>Fri, 25 Nov 2022 14:58:48 GMT</pubDate>
            <description><![CDATA[Вів&apos;єн Форд З моменту першого запуску програми амбасадорів Aleo у березні 2022 року ми спостерігаємо, як Discord росте як у кількісному, так і якісному відношенні. Усього ми вітали 157 амбассадорів , розділених на два рівні: 34 у групі маестро (maestro) та 123 у групі учнів (apprentice) . Дискорд виріс на 6000 нових акаунтів . Ми запустили спільноту Aleo у Твіттері, де активно висвітлюємо головних учасників Aleo за тиждень. Тепер ми маємо десять мовних каналів! Коли ми вперше запустили п...]]></description>
            <content:encoded><![CDATA[<p>Вів&apos;єн Форд</p><p>З моменту першого запуску програми амбасадорів Aleo у березні 2022 року ми спостерігаємо, як Discord росте як у кількісному, так і якісному відношенні. <strong>Усього ми вітали 157 амбассадорів</strong> , розділених на два рівні: <strong>34 у групі <em>маестро (maestro)</em> та 123 у групі <em>учнів (apprentice)</em></strong> . Дискорд виріс на <strong>6000 нових акаунтів</strong> . Ми запустили спільноту Aleo у Твіттері, де активно висвітлюємо головних учасників Aleo за тиждень. Тепер ми маємо десять мовних каналів!</p><p>Коли ми вперше запустили програму послів, метою було розібратися в нашому співтоваристві, щоб знайти людей, які активно створюють найкращий контент для Aleo. Ми вдячні інженерам, які брали участь у Testnet 2, творцям YouTube, що публікують інформативні відеоролики про технологію Aleo, блогерам, що пишуть про мову програмування Leo, та багатьом іншим, хто зробив свій внесок.</p><p>З <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@Aleo_Rus/announcing-testnet-3-a6bfe1f07cf4">офіційним запуском</a> Testnet 3 та новими функціями Aleo на горизонті ми вирішили змінити деякі речі у програмі посольств, щоб зробити їх більш прозорими та зручними для наших учасників.</p><p>У роботі програми буде дві основні зміни.</p><p><strong>Представляємо Aleo Voyagers</strong></p><p>З третім раундом послів ми представляємо третю групу Voyagers. Voyagers представлені у проекті як «золоті учні» (golden apprentices). Вони створюють дуже якісний контент, планують та проводять зустрічі Aleo та беруть активну участь у житті спільноти. Амбасадор може стати Voyagers тільки в тому випадку, якщо він спочатку був учнем (apprentices). Так само амбасадор може стати маестро (maestro), тільки якщо він спочатку був Voyagers.</p><p><strong>Обновлення системи балів Aleo</strong></p><p>Таблиця балів Aleo (нижче) - це те, що ми будемо використовувати для перетворення виконаних завдань від амбасадорів на бали. <strong><em>Зауважте, що бали Aleo не мають власної цінності.</em></strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a78ea778ccf885c979597a4fd40ae76e9034d6a23a1510d42cfe06ca720fe528.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Раніше маестро (maestro) накопичували 50 балів Aleo Points щоразу, коли ми проводили новий раунд відбору амбасадорів. Учні (apprentices) заробляли 25 балів за раунд, якщо виконували щонайменше два завдання.</p><p><em>Ми повністю переглянули те, як ми нараховуємо бали, щоб зробити цей процес децентралізованішим і прозорішим.</em></p><p>Щомісяця, якщо маестро (maestro) виконує свої обов&apos;язки щодо перевірки роботи учнів (apprentices), модерації відповідних мовних каналів та підтримки своїх проектів, пов&apos;язаних з Aleo, він отримує 50 балів Aleo.</p><p>Щомісяця учні (apprentices) мають набирати МІНІМУМ чотири бали, щоб зберегти свою роль. Якщо учень не виконує цю вимогу, він буде виключений із програми (при цьому всі накопичені ним бали зберігаються). Діяльність учнів (apprentices) розглядатиметься маестро (maestro) і перевірятиметься на якість. Учні можуть набрати МАКСИМУМ 30 балів за один місяць. Майте на увазі, що чим більше робіт виконується за бали, тим вище буде планка якості кожної роботи, і маестро (maestro) зможуть відхилити роботу, якщо вважають її не якісною. Якість робіт <strong><em>дуже</em></strong> важлива.</p><p>Щоб учень (apprentices) набув статусу мандрівника (voyager), він має накопичити <strong>30 балів Aleo</strong> протягом двох місяців поспіль. Іншими словами, щомісяця протягом двох місяців поспіль їм потрібно буде набирати по 30 балів Aleo (60 балів протягом двох місяців).</p><p>Щоб мандрівник (voyager) зберіг свій статус посла, йому необхідно набирати щонайменше вісім балів на місяць. Якщо кількість балів, яку він збере (x), більше або дорівнює чотирьом, але менше восьми, вони будуть знижені в ролі до учнів (apprentices). Якщо його кількість балів буде меншою за чотири, він буде виключений з програми (при цьому всі раніше накопичені ним бали зберігаються). Його діяльність також буде розглянута маестро (maestro) та перевірена на якість. МАКСИМУМ, який мандрівник (voyager) може набрати протягом місяця, становить 40 балів. Щоб стати маестро (maestro), мандрівники (voyagers) повинні нагромадити 40 балів Aleo за три місяці поспіль. Іншими словами, їм потрібно буде набирати 40 балів Aleo Points щомісяця протягом трьох місяців поспіль.</p><p>ВАЖЛИВО ЗВЕРНУТИ УВАГУ, ЩО ТІЛЬКИ АМБАСАДОРИ МОЖУТЬ НАБИРАТИ БАЛИ. Ми будемо проводити нові раунди програми амбасадорів у рамках Testnet 3, але кількість раундів та точні дати поки невідомі.</p><p>Ми були так вражені кількістю часу та енергією, які спільнота вклала у Aleo. З цією новою системою нарахування балів ми також запустимо таблицю лідерів Discord. Будь-які питання, будь ласка, ставте в Discord. Ви завжди можете знайти нас там!</p><p>Підписуйтесь на Алео у Твіттері: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/aleohq">https://twitter.com/aleohq</a></p><p>Спільнота Aleo у Твіттері: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/aleocommunity">https://twitter.com/aleocommunity</a></p><p>Приєднуйтесь до нас у Discord: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.aleo.org/discord">aleo.org/discord</a></p><p>Ознайомтеся з нашим кодом: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/AleoHQ/">https://github.com/AleoHQ/</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Децентралізовані приватні обчислення: ZEXE та VERI-ZEXE]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/zexe-veri-zexe</link>
            <guid>gnkIPPQhUwEIyriSbuYN</guid>
            <pubDate>Fri, 25 Nov 2022 14:32:55 GMT</pubDate>
            <description><![CDATA[Вступ Протокол ZEXE (Zero-knowledge EXEcution) з&apos;явився в 2018 році і є криптографічним примітивом децентралізованих приватних обчислень (DPC). Він був створений для усунення двох основних недоліків, від яких страждають децентралізовані реєстри: конфіденційність та масштабованість. Якщо, наприклад, ми візьмемо Біткойн і Ethereum, то побачимо, що історія всіх транзакцій є загальнодоступною (це може призвести до витоку конфіденційної інформації про постачальників вашої компанії, ваших знай...]]></description>
            <content:encoded><![CDATA[<p><strong>Вступ</strong> Протокол <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2018/962.pdf">ZEXE</a> (Zero-knowledge EXEcution) з&apos;явився в 2018 році і є криптографічним примітивом децентралізованих приватних обчислень (DPC). Він був створений для усунення двох основних недоліків, від яких страждають децентралізовані реєстри: конфіденційність та масштабованість.</p><p>Якщо, наприклад, ми візьмемо Біткойн і Ethereum, то побачимо, що історія всіх транзакцій є загальнодоступною (це може призвести до витоку конфіденційної інформації про постачальників вашої компанії, ваших знайомих або послуг, якими ви користуєтеся). Ethereum пропонує програмованість, але вимагає, щоб кожен вузол виконував операцію, де найменш потужний пристрій виступає як вузьке місце. ZCash вирішує проблему конфіденційності, але не пропонує можливості програмування, а лише приватні транзакції. ZEXE намагається отримати найкраще з обох світів:</p><p>Якщо, наприклад, ми візьмемо Біткойн і Ethereum, то побачимо, що історія всіх транзакцій є загальнодоступною (це може призвести до витоку конфіденційної інформації про постачальників вашої компанії, ваших знайомих або послуг, якими ви користуєтеся). Ethereum пропонує програмованість, але вимагає, щоб кожен вузол виконував операцію, де найменш потужний пристрій виступає як вузьке місце. ZCash вирішує проблему конфіденційності, але не пропонує можливості програмування, а лише приватні транзакції. ZEXE намагається отримати найкраще з обох світів: приватний запуск будь-яких програм, можливість виконання обчислень в автономному режимі та надання доказів цілісності обчислень, які можна швидко перевірити в блокчейні. Для огляду протоколу рекомендуємо наш попередній пост про ZEXE. Нагадаю, що протокол пропонує такі функції:</p><ol><li><p>Програмування: ми можемо запускати довільні програми.</p></li><li><p>Швидка перевірка: ми можемо довести достовірність наших обчислень, використовуючи zk-SNARK (короткі неінтерактивні аргументи знання з нульовим розголошенням), які пропонують короткі докази, які можна перевірити в ланцюжку за кілька мілісекунд.</p></li><li><p>Конфіденційність даних та функцій: протокол приховує відповідну вхідну інформацію, а також функції, що викликаються при виконанні переходів у реєстрі.</p></li></ol><p>Протокол ZEXE зазнав кількох покращень з моменту своєї появи, щоб підвищити продуктивність. У цьому пості ми проаналізуємо різницю між вихідним протоколом і недавнім версією VERI-ZEXE . Автори VERI-ZEXE порівняли продуктивність свого протоколу з вихідною версією ZEXE та деякими його ранніми модифікаціями. Жодних порівнянь між поточними покращеними версіями протоколу ZEXE та VERI-ZEXE не проводилося.</p><p><strong>Компоненти</strong> Ми згадали, що протокол ZEXE використовує примітив zk-SNARK, який дозволяє нам надавати докази цілісності для заданих обчислень, які можуть бути перевірені набагато швидше. Найбільша ціна пов&apos;язана з генерацією доказу, що ґрунтується на операціях з еліптичними кривими. Основи деяких систем SNARK ви можете переглянути в нашому попередньому пості.</p><p>Сучасні системи доказів мають два основних компоненти: поліноміальний інтерактивний доказ оракула -PIOP- (який перетворює дане обчислення в поліноміальні рівняння) та поліноміальну схему фіксації -PCS-. Залежно від вибору, який ми робимо, ми отримуємо різні доказові системи, кожна з яких має свої переваги і недоліки. Прикладами PIOP є <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.iacr.org/cryptodb/data/paper.php?pubkey=30190">Marlin</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2019/953">PLONK</a> (Перестановки над базисами Лагранжа для екуменічних неінтерактивних аргументів Знання) та всі їх похідні та Spartan. Серед PCS у нас є <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ru.bmstu.wiki/index.php?title=%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%BE%D0%B2_%D0%B8_%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5&amp;mobileaction=toggle_view_desktop">KZG</a> (Kate-Zaverucha-Goldberg), <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2017/11/22/starks_part_2.html">FRI</a> (Fast Reed-Solomon Interactive Oracle Proofs of Proximity), Bulletproofs та DARK (групи невизначеного порядку), і це лише деякі з них.</p><p>Щоб мати можливість виконувати докази швидко та ефективно, нам потрібні «дружні до SNARK» криптографічні примітиви та операції. Ми могли б сказати, що функція «зручна для SNARK», якщо її подання у вигляді арифметичної схеми невелике. Наприклад, інтуїтивно зрозумілі та прості побітові операції, такі як AND та XOR, мають складне схемне уявлення. Отже, вартість операцій у разі SNARK повинна враховувати складність арифметичної схеми, яка використовується для представлення операції та її змінних.</p><p>Більшість вартості систем SNARK посідає:</p><ul><li><p>Мультискалярне множення (ЧСЧ). Це операції виду</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3e852d3bb01fe0c4718177414fc4688c0c183152d19d20beeb01a91bdb7c50f4.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де ак - Числа і Pk - точки, що належать еліптичної кривої.</p><ul><li><p>Еліптичні пари кривих. Вони використовуються під час перевірки деяких систем. Вони включають розширення полів та операції між різними групами еліптичних кривих.</p></li><li><p>Поліноміальні оцінки над нерідними полями.</p></li><li><p>Перетворення Фіата-Шаміра: для створення завдань потрібне використання хеш-функції. Багато криптографічних примітивів, що добре зарекомендували себе, мають складні уявлення у вигляді арифметичних схем, що робить їх оцінку дорогою.</p><p>Дослідницькі зусилля намагаються вирішити усі ці проблеми. Використання GPU або FPGA може <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">прискорити обчислення MSM</a>. Нові хеш-функції та схеми шифрування з більш досконалими арифметичними схемами можуть ще більше знизити складність часто використовуваних криптографічних примітивів (наприклад, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2019/458.pdf">Poseidon</a> та <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tosc.iacr.org/index.php/ToSC/article/view/8695/8287">Vision and Rescue</a>).</p><p><strong>Вибір VERI-ZEXE</strong> Для вирішення цих проблем VERI-ZEXE вносить деякі зміни до системи перевірки та криптографічних примітивів. Ось деякі з основних модифікацій:</p><ul><li><p>PLONK як PIOP. За останні роки в PLONK було внесено кілька значних поліпшень, таких як гейти високого ступеня, використання таблиць пошуку і використання полілінійних поліномів (що дозволяє уникнути використання швидкого перетворення Фур&apos;є) (наприклад, turboPLONK, -ultraPLONK і hyperPLONK ).</p></li><li><p>Полегшена схема верифікатора за схемою накопичення. Протокол виводить перевірку сполучення зі схеми SNARK та відкладає перевірку до валідаторів реєстру.Пакетування доказів. Ми можемо генерувати та перевіряти докази партіями, використовуючи властивості деяких PCS, таких як KZG. Вони дозволяють відкривати</p></li></ul></li></ul><p>N різних зобов&apos;язань одночасно з витратами, які не масштабуються лінійно за кількістю зобов&apos;язань (тобто ви можете відкрити N зобов&apos;язань вартістю менше, ніж вартість N окремих відкриттів).</p><ul><li><p>Змінна база MSM через довідкову таблицю. MSM виконується шляхом поєднання алгоритму Піппенджера (який розбиває скаляри на блоки) з <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2020/315.pdf">таблицею пошуку</a> , що знижує вартість додавання еліптичних кривих.</p></li><li><p>Поліноміальна оцінка по нерідних полях. Схеми що доводить і перевіряє лежать у різних кінцевих полях. Одним із способів упоратися з цим було використання двох пар еліптичних кривих. VERI-ZEXE використовує модульне додавання та множення з перевіркою діапазону з пошуком, що призводить до більш складної схеми.</p></li><li><p>Дружні до SNARK симетричні примітиви. Використання стійких до колізій хеш-функцій, генераторів псевдовипадкових чисел та схем фіксації з більш простим уявленням схеми (що скорочує кількість операцій), що призводить до меншого використання пам&apos;яті та часу. Наприклад, перетворення Фіата-Шамір використовує конструкцію губки перестановки Rescue.</p><p>Використання PLONK та його доповнень разом із більш простими конструкціями криптографічних примітивів призводить до зменшення більш ніж на порядок загальної кількості обмежень, що, у свою чергу, зменшує масштаб МСМ-множень та загальний час доведення.</p><p><strong>Схеми накопичення (AS) та інкрементально верифіковані обчислення (IVC)</strong></p><p>Перевірка доказів потребує обчислення дорогих операцій сполучення. Оригінальний протокол ZEXE використовував інкрементально верифіковані обчислення для доказу задовільності заданих користувачем предикатів за допомогою рекурсії SNARK: при заданому обчисленні на кроці N перевіряючий отримував стан Zn і доказ π(N-1), що підтверджує правильність виконання попереднього. Потім перевіряючий виконає крок N та генерує доказ π(N), який засвідчує, що “новий стан z′ є результатом правильного виконання і що π(N-1) істинно (іншими словами, що (N-1) попередніх кроків були виконані правильно )”. Саме на цьому останньому кроці виникає обчислювальне навантаження: для перевірки доказу нам необхідно вбудувати обчислення верифікатора у схему перевіряючого, що уповільнює генерацію доказів.</p><p>Схема накопичення працює інакше, відкладаючи перевірку остаточного докази валідаторами реєстру. На кожному кроці обчислення прувер отримує поточний стан та накопичення, яке частково верифікується (перевірник перевіряє правильність результатів накопичення, але не обчислює операцію сполучення еліптичних кривих). Для того щоб накопичення не пропускало інформацію про обчислення, групові елементи в накопиченні повинні бути замасковані за допомогою рандомізатора, що виступає в ролі додаткового свідка (секретного входу) для верифікатора накопичення.</p><p><strong>Таблиці пошуку та ефективні модульні операції</strong></p><p>Використання інтерполяційних таблиць для складання еліптичних кривих у алгоритмі Піппенджера разом із ефективними операціями модульної арифметики призводить до скорочення кількості обмежень PLONK у 6 разів.</p><p>Ідея таблиць пошуку для MSM полягає в наступному:</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/eb538cdee61cf3c9946cbf2fb841e95e96bf3bf73967467746bd4604b0542136.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Алгоритм Піппенджера розбиває скаляр a на m вікон довжини c (Наприклад, скаляр - 256-бітове число, і ми вибираємо вікно завдовжки 8 біт). Кожен скаляр може бути записаний як</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b209fe6d204301ba8cb7708e84f306638f751f5c52252ff8d0ea0367dbed2bc1.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>де кожне значення aij знаходиться у діапазоні 0, 1, . . . 2 c - 1 . Ми можемо обчислити кожної точки Pi всі можливі комбінації значень скалярів 2 Pi , 3 Pi , 4 Pi , . . . , (2 c - 1) Pi.</p><p>Тепер ми можемо визначити результат</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ced07f59ea9e3b76e72c64c8144e4574da985863690ce404b348e3addafca751.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>подивившись на таблицю (яка має простіший опис, ніж операції з чистими еліптичними кривими) і отримати результати j-го дії,</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/001baa549339603d3b099e24a1c8da45905a6572a00e6b204b1025079caa395b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Тепер ми можемо отримати остаточний результат, додавши, нарешті, m-дія,</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/069138405e18c25fa48074a0e6b6be7d965c7825c389cfa1dde5cac7eb69c6e0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>Подальші покращення від HyperPlonk?</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/74461fa8d76c72432fc8967e4304c338ff980e7de254e51b99a90619660b2810.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>VERI-ZEXE використовує PLONK з таблицями пошуку, що призводить до меншої кількості обмежень та скорочення часу перевірки. Два тижні тому вийшов HyperPLONK, що забезпечує доказ лінійного часу і вентилі високого ступеня. Однією з ключових змін є перехід від одновимірних поліномів (поліномів від однієї змінної, x, таких як</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/68aa56c7d607301f0f0bd8ba6c1256354d266736bea4a33f25dd082e3e959127.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>до багатовимірних лінійних поліном (поліном від декількох змінних, де ступінь кожного хk більше одного, наприклад</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2dd7fb68742ff1927667d990c88a27c5f1df2880bf4b04ada5f856bb1062cdea.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Ця зміна дозволяє уникнути використання швидкого перетворення Фур&apos;є (FFT) для дуже великих систем (з понад 2²⁰обмежень), який має надлінійну вартість (грубо кажучи, FFT для n-точок вимагає nlog(n) операцій). Попередні дослідження показали, що ця нова версія PLONK має кращу продуктивність для ланцюгів із більш ніж 16000 обмежень порівняно з оптимізованими версіями вихідної пропозиції. Ми розглянемо цю тему наступного посту.</p><p><strong>Висновок</strong></p><p>Докази ZK є ключем до багатьох нових додатків, таких як децентралізовані фінанси, управління тощо. Протокол ZEXE представив концепцію децентралізованих приватних обчислень, що дозволяє користувачам запускати приватні додатки в публічних реєстрах. Початкова пропозиція була заснована на неуніверсальних системах перевірки, які мають ефективну продуктивність, але потребують нової надійної установки для кожної програми, яку ми хочемо запустити. З того часу було внесено низку серйозних поліпшень до системи перевірки (такі як Marlin та PLONK) та нові «дружні до SNARK» криптографічні примітиви (такі як симетричні шифри та хеш-функції), що призвело до підвищення продуктивності та зниження обчислювальних витрат.</p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Aleo та Kryha створюють перший в історії комплект для розробки ігор на основі доказу з нульовим розголошенням]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/aleo-kryha</link>
            <guid>1ycQTt6V0QN77fSJRsr2</guid>
            <pubDate>Fri, 25 Nov 2022 14:14:58 GMT</pubDate>
            <description><![CDATA[Ми з радістю повідомляємо, що знову співпрацюємо з Aleo – революційним протоколом Web3. Раніше ми співпрацювали з Aleo для створення програми, яка дає уявлення про їхні рішення на основі протоколу доказу з нульовим розголошенням. Тепер Aleo та Kryha розробляють повноцінний ігровий інструментарій, мета якого – допомогти розробникам легко створювати ігри за допомогою доказу з нульовим розголошенням. Aleo та Kryha знову об&apos;єднуються У міру того, як наше з вами життя поступово ставати громад...]]></description>
            <content:encoded><![CDATA[<p><strong>Ми з радістю повідомляємо, що знову співпрацюємо з Aleo – революційним протоколом Web3. Раніше ми співпрацювали з Aleo для створення програми, яка дає уявлення про їхні рішення на основі протоколу доказу з нульовим розголошенням. Тепер Aleo та Kryha розробляють повноцінний ігровий інструментарій, мета якого – допомогти розробникам легко створювати ігри за допомогою доказу з нульовим розголошенням.</strong></p><p><strong><em>Aleo та Kryha знову об&apos;єднуються</em></strong></p><p>У міру того, як наше з вами життя поступово ставати громадським надбанням, завдяки зростаючій потужності гігантських технологічних компаній, конфіденційність стала важливішою, ніж будь-коли. Aleo - це блокчейн-платформа, розташована в Сан-Франциско, яка використовує технологію нульового розголошення (zk) для створення умов особистого та приватного досвіду користувача. Ми разом з Aleo віримо, що майбутнє онлайн-конфіденційності ґрунтується на технології доказу з нульовим розголошенням, що дозволяє суспільству легко отримувати доступ до складних математичних розрахунків. У цій захоплюючій колаборації Aleo та Kryha зроблять наступний крок у дослідженні конфіденційності та ігор. Для цього ми створюємо перший в історії комплект для розробки ігор із технологією нульового розголошення на Aleo.</p><p><strong><em>Визначення нашої мети (північної зірки)</em></strong></p><p>Ми віримо, що довгострокового успіху буде досягнуто за допомогою чітко поставленої мети, де шлях і пункт призначення однаково важливі. Кінцева мета, яку ми любимо називати нашою північною зіркою, - створити повноцінний набір інструментів для розробки ігор, який дозволить розробникам у всьому світі створювати власні ігри, створені за допомогою доказу з нульовим розголошенням (ZKP) та на основі стандартів з відкритим вихідним кодом. Мета створення цього набору інструментів з відкритим вихідним кодом — сприяти розробці нових ігрових механік за допомогою zk, що призведе до нових ігор або покращених старих ігор із золотої колекції.</p><p><strong><em>Як технологія Aleo допомагає нам досягти цих цілей</em></strong></p><p>Існуючі ігри на основі блокчейна побудовані на тому, що вся інформація про стан гри доступна кожному, хто має доступ до реєстру. Але як грати в гру, де перетинаються конфіденційність та прозорість? Aleo дозволяє створити нову ігрову механіку із збереженням конфіденційності, записуючи приватний стан у мережі. Це робиться шляхом генерації доказів з нульовим розголошенням (ZKP) деяких обчислень поза ланцюгом і запису отриманого ZKP в ланцюгу. Завдяки тому, що Aleo орієнтована на конфіденційності та приватну за умовчанням архітектуру, мережа стає відмінним місцем для розробки ігор, що базуються на блокчейні та належать до цих параметрів. Всі ігрові стани можна легко розмістити в ланцюзі, не хвилюючись, що побачать це інші люди. Наприклад, з такою архітектурою ви можете бути впевнені, що у грі з використанням кубиків ваші ролі приховані від сторонніх очей.</p><p><strong><em>Ігровий набір ZK v1 + перша гра</em></strong></p><p>Щоб переконатися, що ми створюємо компоненти для набору інструментів, які дозволять швидко створювати різні ігри, ми розглянули загальні механіки, які є простими у створенні. З цими компонентами (механікою кубиків, ZK-силові елементи та ін.) ми, використовуючи набором інструментів, створюємо першу в історії гру <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Kryha/boloney">Liar&apos;s Dice</a>. Ця гра швидка, проста для розуміння та використовує загальні механіки, які можна зустріти у багатьох інших іграх. З іншого боку, глибока стратегія, що лежить в основі Liar&apos;s Dice, робить гру цікавою та інтригуючою.</p><p><strong><em>Будьте першим, хто дізнається, коли ми запустимося</em></strong></p><p>Набір інструментів для розробки ігор є великим проектом, який вимагає кілька років проектування та розробки. Але щоб створити набір інструментів, що відповідає вимогам спільноти розробників, ми дотримуватимемося принципу «запускай та навчайся». Це означає, що ми випустимо наш продукт, коли він буде готовий, і звернемося до спільноти, щоб перевірити наше творіння. Отут ви і вступаєте: грайте з нами, вивчайте набір інструментів і надсилайте нам свої цінні відгуки.</p><p>Нам не терпиться показати вам, що ми задумали. знайте першими про наш запуск, підпишіться на нашу <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.linkedin.com/newsletters/kryha-insights-6947478791640252417/">розсилку</a>, або стежте за нами у <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/kryha_io?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor">Twitter</a>. Залишайтеся на зв&apos;язку!</p><p>Інформацію про початкову співпрацю між Aleo та Kryha можна знайти у <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://kryha.io/cases/aleo/">цьому блозі</a>.</p><p>Оригінал статті: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@haischel/aleo-and-kryha-are-developing-the-first-ever-zero-knowledge-proof-gaming-kit-ec0761a895d8">https://medium.com/@haischel/aleo-and-kryha-are-developing-the-first-ever-zero-knowledge-proof-gaming-kit-ec0761a895d8</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Запуск Пруверів у Aleo Тестнет 3]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/aleo-3</link>
            <guid>gRtFR9rKMNhLgoBXcpS2</guid>
            <pubDate>Fri, 25 Nov 2022 14:05:26 GMT</pubDate>
            <description><![CDATA[Ми раді оголосити про вихід другої фази Aleo Testnet 3! У цьому випуску ми розкриємо багато ключових функцій, описаних у нашій початковій дорожній карті для Testnet 3, такі як розгортання та виконання програм користувача, а також завдання для стимулювання розробки апаратного забезпечення доказу zkSNARK. Що таке Алео? Aleo - це новий блокчейн рівня L1, який використовує криптографію, засновану на доказі з нульовим розголошенням, для створення масштабованих та приватних децентралізованих додатк...]]></description>
            <content:encoded><![CDATA[<p>Ми раді оголосити про вихід другої фази Aleo Testnet 3! У цьому випуску ми розкриємо багато ключових функцій, описаних у нашій <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@Aleo_Rus/announcing-testnet-3-a6bfe1f07cf4">початковій дорожній карті для Testnet 3</a>, такі як розгортання та виконання програм користувача, а також завдання для стимулювання розробки апаратного забезпечення доказу zkSNARK.</p><p><strong>Що таке Алео?</strong></p><p>Aleo - це новий блокчейн рівня L1, який використовує <strong><em>криптографію, засновану на доказі з нульовим розголошенням</em></strong>, для створення масштабованих та приватних децентралізованих додатків. У нашій архітектурі програми не виконуються в ланцюжку; скоріше, користувачі виконують програму поза мережею і публікують у ланцюжку короткі докази з нульовим розголошенням (zkSNARK), які підтверджують правильність виконання із збереженням конфіденційності. Потім ланцюжок перевіряє ці короткі докази в часі, незалежному від часу роботи програми.</p><p>Це добре працюючий план, крім однієї затримки: створення докази правильного виконання програми з нульовим розголошенням може бути сильно дорожче, ніж просто безпосереднє виконання програми. Для багатьох корисних програм (наприклад, платежів) ці накладні витрати можна контролювати навіть під час перевірки на стандартному пристрої, такому як мобільний телефон або ноутбук. Однак для інших, більш ресурсомістких додатків, таких як машинне навчання, ігри або автентифікація, накладні витрати на перевірку, що виконується на стандартних пристроях, можуть бути непомірно високими, що, мабуть, робить ці варіанти використання недосяжними.</p><p>Проте дизайн Aleo дозволяє клієнтам вибирати, чи передавати створення доказів сторонній «службі перевірки», яка, у разі важких обчислень, для допомоги у вирішенні zkSNARK може мати більше ресурсів, таких як: багатоядерні процесори, великі обсяги оперативної пам&apos;яті або навіть спеціальне обладнання для випробувань Тоді ця проблема стає проблемою стимулювання розробки найкращих архітектур доведення. Вирішення цієї проблеми — це один із ключових мотивів розробки нового алгоритму консенсусу Aleo, AleoBFT. За великим рахунком AleoBFT є гібридною архітектурою, яка використовує доказ proof-of-stake(PoS) для досягнення миттєвого завершення підтвердження блоку та використовує “coinbase puzzle” типу proof-of-work(PoW), яка винагороджує розробку більш швидких методів для генерації доказів. У цьому пості ми заглибимося в деталі цієї Puzzle.</p><p><strong>Coinbase Puzzle</strong> Coinbase Puzzle - це завдання типу proof-of-work (PoW), яке призначене для стимулювання розробки більш швидкого програмного та апаратного забезпечення для створення доказів з нульовим розголошенням. Щоб досягти цього, Coinbase Puzzle має дві унікальні особливості:</p><ul><li><p>Криптографічна: на відміну від традиційного PoW, який ви знайдете у Bitcoin або Ethereum, Coinbase Puzzle вимагає створення ефективних процедур для «корисних» алгоритмів основних підкомпонентів перевірки zkSNARK.</p></li><li><p>Економічна: на відміну від традиційного PoW, де кожен блок може містити тільки одне дійсне рішення задачі, а Coinbase Puzzle приймає кілька дійсних рішень на блок, запобігаючи ситуації, коли переможець отримує все (winner-takes-all) та призводячи до ширшого розподілу винагород за доказ.</p><p>Давайте заглибимося в Структуру Puzzle, почавши з криптографічної частини:</p><p><strong>Структура Puzzle</strong> Короткий посібник з дизайну zkSNARK: час створення доказу в сучасних zkSNARK визначається часом доказу двох підкомпонентів: поліноміального IOP та поліноміальної схеми розміщення. Наш coinbase puzzle ефективно стимулює прискорення саме цих підкомпонентів. Давайте подивимося, як вона це робить, глянувши на алгоритм протоколу, який складається з двох кроків:</p><ol><li><p><strong>Генерація рішень-кандидатів (доказ)</strong> Щоб згенерувати рішення-кандидат, Прувер генерує (з одноразового номера) та множить випадковий поліном, а потім фіксує отриманий поліном твори за допомогою схеми поліноміальних зобов&apos;язань (схема KZG10, у нашому випадку). Отримане в результаті зобов&apos;язання хешується, і якщо цей хеш відповідає цільовій складності, це дійсне рішення, яке можна відправити агрегатору (разом з підтвердженням оцінки для забезпечення ефективного агрегування). Отримана задача складається з 2 групових елементів та 1 елемента поля, адреси та одноразового номера, і її можна перевірити за допомогою D множень полів та пари, де D – ступінь згенерованого полінома.</p></li><li><p><strong>Агрегування правильних рішень (BFT Leader)</strong> Хоча правильне рішення задачі може бути перевірене будь-ким, додавання кожного рішення задачі в ланцюжок призведе до роздмухування стану. Щоб уникнути цього, Coinbase Puzzle дозволяє <strong>BFT Leader</strong> поєднувати дійсні рішення. Ми не вдаватимемося в подробиці того, як це робиться, але загальний результат полягає в тому, що в сховищі ланцюжка переважає вартість (n + 1) елементів групи, а один елемент поля є суттєвим поліпшенням. Як додаткова перевага перевірка завдання виконується швидше.</p><p><strong>Висновок</strong> AleoBFT - це новий механізм консенсусу, який поєднує в собі завершеність proof-of-stake (PoS) з потужним механізмом стимулювання proof-of-work (PoW). У нашому випадку, Coinbase Puzzle стимулює прискорення перевірки zkSNARK. Ця робота корисна, тому що вона переноситься безпосередньо на виконання будь-якої іншої програми в Aleo. За допомогою цього механізму ми сподіваємося стимулювати сильну екосистему, що доводить, (proving ecosystem), яка приносить користь користувачам Aleo за рахунок зниження витрат і зменшення затримки виконання програми.</p><p><strong><em>І останнє зауваження: цей етап тестової мережі стимулюватиметься. Однак, публікація цього повідомлення в блозі не означає початок програми заохочення. Приєднуйтесь до нашої спільноти в </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/aleohq"><strong><em>Discord</em></strong></a><strong><em> і слідкуйте за нами у </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/AleoHQ"><strong><em>Twitter</em></strong></a><strong><em>, щоб отримувати останні оновлення про графік заохочень.</em></strong></p><p>Оригінал статті: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.aleo.org/post/launching-testnet-3-2-provers">https://www.aleo.org/post/launching-testnet-3-2-provers</a></p></li></ol></li></ul>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Представляємо Leo Wallet для Aleo]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/leo-wallet-aleo</link>
            <guid>POZ78UnqItNgYpgz12jj</guid>
            <pubDate>Fri, 25 Nov 2022 13:44:38 GMT</pubDate>
            <description><![CDATA[Aleo Aleo це перший у своєму роді зосереджений на конфіденційності блокчейн, можливий завдяки доказам з нульовим розголошенням (ZKPs). Aleo використовує ZKPs для забезпечення масштабованих та приватних платежів, маючи при цьому повноцінну платформу смарт-контрактів. Функціонал Leo стане головним пунктом призначення для виконання будь-яких дій на блокчейні Aleo: відправлення/отримання токенів, стейкінг, трейдинг, ігри та багато іншого будуть можливі або спочатку через гаманець, або через партн...]]></description>
            <content:encoded><![CDATA[<p><strong>Aleo</strong> Aleo це перший у своєму роді зосереджений на конфіденційності блокчейн, можливий завдяки <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.notboring.co/p/zero-knowledge">доказам з нульовим розголошенням</a> (ZKPs). Aleo використовує ZKPs для забезпечення масштабованих та приватних платежів, маючи при цьому повноцінну платформу смарт-контрактів.</p><p><strong>Функціонал</strong> Leo стане головним пунктом призначення для виконання будь-яких дій на блокчейні Aleo: відправлення/отримання токенів, стейкінг, трейдинг, ігри та багато іншого будуть можливі або спочатку через гаманець, або через партнерські dApp. Ми також маємо SDK для безперешкодної інтеграції розробників, які хочуть охопити більше користувачів Aleo. Ми продовжимо додавати функціонал для масштабного впровадження орієнтованих на конфіденційність програм, щоб розширити екосистему Aleo.</p><p>Запишіться у наш waitlist, щоб отримати ранній доступ: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://join.leo.app/signup">https://join.leo.app/signup</a></p><p><strong>Команда</strong> Ми — команда розробників, які заснували, масштабували та продали безліч підприємств. За сильної підтримки інвесторів та гранту від команди Aleo ми раді розробити найкращий із можливих гаманців, орієнтованих на конфіденційність.</p><p><strong>Бачення</strong> Майбутнє громадських блокчейнів, що зберігають конфіденційність, ясно. Вони мають потенціал зруйнувати існуючі блокчейни, оскільки вони збирають у собі все хороше, але при цьому дозволяють користувачам мати більше контролю над тим, чим вони діляться. Будь ласка, зв&apos;яжіться з нами, якщо ви зацікавлені у співпраці, є раннім користувачем або вірите в майбутнє, де конфіденційність є пріоритетом за промовчанням.</p><p>Waitlist для раннього доступу: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://join.leo.app/signup">https://join.leo.app/signup</a></p><p>Веб-сайт: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://leo.app/">https://leo.app/</a></p><p>‍Twitter: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/theLeoWallet">https://twitter.com/theLeoWallet</a></p><p>‍Discord: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/BNBzZQAd66">https://discord.gg/BNBzZQAd66</a></p><p>Зв&apos;яжіться з нами електронною поштою: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:Barron@leo.app">Barron@leo.app</a></p><p>Посилання на оригінал: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.leo.app/blog/leo-aleo-wallet">https://www.leo.app/blog/leo-aleo-wallet</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Головні Експерти Нульового Розголошення 2022]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/2022</link>
            <guid>X03HXzwu9Wqvf55PstOQ</guid>
            <pubDate>Fri, 25 Nov 2022 13:33:25 GMT</pubDate>
            <description><![CDATA[Докази з нульовим розголошенням (ZKPs) — це інтерактивні математичні докази, які розкривають лише обмежену інформацію про затвердження, не розкриваючи жодних конкретних деталей. Іншими словами, ZKPs дозволяють одній стороні (що доводить) переконати іншу сторону (перевіряючого), що твердження є істинним, не розкриваючи жодної основної інформації про це твердження. Термін "нульове розголошення" походить з того, що ці докази не розкривають нічого, крім того факту, що твердження дійсне. ZKPs вико...]]></description>
            <content:encoded><![CDATA[<p>Докази з нульовим розголошенням (ZKPs) — це інтерактивні математичні докази, які розкривають лише обмежену інформацію про затвердження, не розкриваючи жодних конкретних деталей. Іншими словами, ZKPs дозволяють одній стороні (що доводить) переконати іншу сторону (перевіряючого), що твердження є істинним, не розкриваючи жодної основної інформації про це твердження. Термін &quot;нульове розголошення&quot; походить з того, що ці докази не розкривають нічого, крім того факту, що твердження дійсне.</p><p>ZKPs використовують передові технології математики та криптографії. Завдяки новітнім розробкам вони використовуються для того, щоб зробити блокчейни приватними та масштабованішими.</p><p>Ця стаття познайомить вас із п&apos;ятьма головними експертами у сфері доказів із нульовим розголошенням. Ці професіонали зробили видатний внесок у докази з нульовим розголошенням та криптографію загалом за допомогою дослідницьких робіт, семінарів, книг та практичних додатків.</p><p><strong>Alessandro Chiesa</strong></p><p>Alessandro Chiesa – доцент Каліфорнійського університету в Берклі та співавтор Zerocash, співзасновник Zcash та StarkWare, однієї з фірм, які розробляють рішення для масштабування на основі нульового розголошення. В даний час він є професором криптографії, комп&apos;ютерних наук та теорії складності обчислень. У 2020 році його дослідження цитувалося понад 1200 разів. Він багато досліджував, як покращити технологію нульового розголошення. Одним із прикладів його досліджень є Zexe, приватний та децентралізований обчислювальний протокол, який використовує SNARKs з єдиним налаштуванням. Він також працював над квантово-стійкими, прозорими рекурсивними доказами, які б особливо підходили для блокчейнів.</p><p><strong>Eli Ben-Sasson</strong></p><p>З того часу, як у 2001 році Eli отримав докторський ступінь у галузі теоретичних комп&apos;ютерних наук в Єврейському університеті, він вивчав криптографічні докази та докази з нульовим розголошенням обчислювальної цілісності. Він був співавтором протоколів STARK, FRI, Zerocash та Zcash Company. Перш ніж піти, щоб заснувати StarkWare, він кілька років був професором комп&apos;ютерних наук в Техніоні. Він також обіймав дослідницькі посади в Інституті перспективних досліджень м. Прінстона, Гарварді і в Массачусетському технологічному інституті.</p><p><strong>Shafi Gold-Shafran</strong></p><p>Shafi Goldwasser - директор Інституту теорії обчислень Саймонса та професор C. Lester Hogan електротехніки та комп&apos;ютерних наук у Каліфорнійському університеті в Берклі. Вона також є професором електротехніки та комп&apos;ютерних наук у Массачусетському технологічному інституті та професором комп&apos;ютерних наук та прикладної математики в Інституті науки Вейцмана в Ізраїлі. Goldwasser здобула ступінь бакалавра прикладної математики в Університеті Карнегі-Меллон в 1979 році і ступінь магістра і доктора в галузі комп&apos;ютерних наук в Каліфорнійському університеті в Берклі в 1984 році. Вона є одним із авторів “The knowledge complexity of interactive proof-systems”, однією з фундаментальних опублікованих за інтерактивними доказами робіт. Її внесок у область криптографії робить її одним із найбільш цитованих авторів у цій галузі.</p><p><strong>Howard Wu</strong></p><p>Howard Wu є співзасновником Aleo, блокчейна, який використовує криптографію з нульовим розголошенням для забезпечення конфіденційності та програмованості, та Decrypt Capital, провідної інвестиційної компанії в області блокчейнів для протоколів збереження конфіденційності та підприємств на ранніх стадіях. Howard вперше зацікавився Bitcoin у 2011 році і зробив свій внесок у криптографічні бібліотеки, які використовуються в Ethereum та Zcash. Він є радником з блокчейну в Берклі, першій університетській екосистемі для блокчейну. Він є активним дослідником у галузі теоретичної інформатики та комп&apos;ютерної безпеки, і працює з професором Alessandro Chiesa, співзасновником Zcash, та професором Dawn Song, викладачем Ініціативи з криптовалютів та контрактів (IC3). Howard є кандидатом у магістри електротехніки та комп&apos;ютерних наук і отримав ступінь бакалавра прикладної математики та бакалавра комп&apos;ютерних наук у Каліфорнійському університеті в Берклі.</p><p><strong>Dan Boneh</strong></p><p>Dan Boneh - американсько-ізраїльський професор прикладної криптографії та комп&apos;ютерної безпеки у Стенфордському університеті. Дослідження Боуна зосереджено застосування криптографії до комп&apos;ютерної безпеки. Його робота включає криптосистеми з новими властивостями, веб-безпеку, безпеку для мобільних пристроїв та криптоаналіз. Він є автором понад ста публікацій у цій галузі та стипендіатом Packard та Alfred P. Sloan. Він є лауреатом премії ACM 2014 року та премії Ґеделя 2013 року. У 2016 році Boneh був обраний членом Національної інженерної академії США за внесок у криптографію та комп&apos;ютерну безпеку.</p><p><strong>Ben Fisch</strong></p><p>Ben Fisch — доцент кафедри комп&apos;ютерних наук Єльського університету та співзасновник Espresso Systems, блокчейн-компанії, що працює над рішеннями, що налаштовуються, для забезпечення конфіденційності. Він захистив докторську дисертацію у Стенфордському університеті, працюючи з Dan Boneh у дослідницькій групі прикладної криптографії. Дослідження Ben в першу чергу зосереджені на конфіденційності та перевірки в Інтернеті. Він опублікував безліч статей про нульове розголошення, і його цитували понад 1200 разів.</p><p><strong>Висновок</strong></p><p>Докази з нульовим розголошенням - важлива та захоплююча область досліджень у криптографії. Вони дозволяють сторонам довести, що вони щось знають, не розкриваючи того, що вони знають. Вони корисні в багатьох областях, включаючи голосування, онлайн-рекламу та онлайн-знайомства. Вони також використовуються в блокчейнах для підтвердження дійсності транзакції без розкриття інформації про сторони, що здійснюють транзакцію. Докази з нульовим розголошенням - це складна та технічна область досліджень, але вони мають безліч застосувань та корисні у багатьох реальних ситуаціях. Це захоплююча область досліджень, яка в майбутньому матиме набагато більше застосувань та відкриттів.</p><p>Посилання на оригінал: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.leo.app/blog/top-zero-knowledge-experts-2022">https://www.leo.app/blog/top-zero-knowledge-experts-2022</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Арифметика з фіксованою комою у мові програмування LEO на основі zkSNARK]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/leo-zksnark</link>
            <guid>6VuacRprqXVHKBt5rlgn</guid>
            <pubDate>Fri, 25 Nov 2022 13:19:38 GMT</pubDate>
            <description><![CDATA[Вступ Системи на основі блокчейна входять до багатьох сфер нашого життя, таких галузей, як DeFi або ігри. Однак багатьом сучасним блокчейнам не вистачає конфіденційності та масштабованості, що обмежує діапазон варіантів використання. Докази з нульовим розголошенням та блокчейни, що підтримуються доказами з нульовим розголошенням, такі як Aleo, обіцяють забезпечити кращу масштабованість та гарантії конфіденційності, а також уможливити застосування нових блокчейн-додатків. Сюди входять нові про...]]></description>
            <content:encoded><![CDATA[<p><strong>Вступ</strong></p><p>Системи на основі блокчейна входять до багатьох сфер нашого життя, таких галузей, як DeFi або ігри. Однак багатьом сучасним блокчейнам не вистачає конфіденційності та масштабованості, що обмежує діапазон варіантів використання. Докази з нульовим розголошенням та блокчейни, що підтримуються доказами з нульовим розголошенням, такі як Aleo, обіцяють забезпечити кращу масштабованість та гарантії конфіденційності, а також уможливити застосування нових блокчейн-додатків. Сюди входять нові програми DeFi, складніші ігри web3 чи навіть програми на основі штучного інтелекту. Багато цих додатків вимагають представлення широкого діапазону чисел, включаючи дробові числа. Aleo поставляється з мовою програмування Leo, яка значно спрощує програмування програм із нульовим розголошенням. Однак він підтримує лише числа цілого типу. У цій статті ми аналізуємо структуру чисел з фіксованою точкою zkSNARKS з використанням Leo, що дозволяє нам також виконувати обчислення з використанням дробів для широкого кола додатків.</p><p><strong>Проста реалізація чисел із фіксованою комою</strong></p><p>При реалізації запису чисел з фіксованою комою ми можемо використовувати цілий тип, що надається мовою Leo. Крім того, ми внутрішньо вказуємо коефіцієнт масштабування, який визначає цифри, що зарезервовані для цілої частини зліва від десяткової точки значення, а також визначає дробову частину праворуч від десяткової точки значення.</p><p>Припустимо, ми хочемо уявити значення 1.55 як число з фіксованою комою з точністю до двох знаків після коми. Для цього ми можемо ввести змінну i та присвоїти їй 155, тобто значення 1.55, помножене на коефіцієнт масштабування 100:</p><pre data-type="codeBlock" text="let i: u32 = 155;
"><code>let i: <span class="hljs-attr">u32</span> = <span class="hljs-number">155</span><span class="hljs-comment">;</span>
</code></pre><p>Тепер ми можемо виконувати математичні операції з цією змінною. Наприклад, щоб додати 0.45 ми додаємо 45 (0.45 * 100) в код програми, що призводить до значення змінної 200. При інтерпретації виведення програми нам потрібно розділити значення на коефіцієнт масштабування 100. Для отримання бажаного запису з десятковою точкою - результат додавання дорівнює 2 у запису з десятковою точкою.</p><p>Так само ми можемо виконувати множення. При множенні на 2.50 у десятковому поданні ми множимо на 250 у поданні з фіксованою комою, а потім ділимо результат на коефіцієнт масштабування 100. Наприклад, 2<em>2.5=5 у десятковому поданні виглядає як 200</em>250/100=500 у записі з фіксованою точкою . Знову ж таки, при інтерпретації результату нам потрібно розділити число з фіксованою точкою 500 на коефіцієнт масштабування 100, щоб отримати очікуваний результат 5.</p><p>Для поділу ми діємо аналогічно до множення, але цього разу множимо на коефіцієнт масштабування, а не ділимо.</p><p>Наприклад, 4.5/0.5 = 9 у записі з десятковою комою виглядає як 100*450/50 = 900 у записі з фіксованою комою. Розділивши на коефіцієнт масштабування, ми отримаємо очікуваний результат 9.</p><p><strong>Узагальнення та що слід враховувати</strong></p><p>Як показано у наведених вище прикладах, коефіцієнт масштабування визначає кількість цифр дробової частини. Ми використовували коефіцієнт масштабування 10 для n дробових цифр. Як правило, більший коефіцієнт масштабування забезпечує більшу точність, однак ми повинні пам&apos;ятати про допустимий діапазон значень типу.</p><p>У наведеному вище прикладі використовувався тип u32, загальний діапазон якого становить від 0 до ²³²-1=4294967295. Через бінарної природи типів зазвичай використовують коефіцієнти масштабування S ступенів двійки. Наприклад, під час використання коефіцієнта масштабування ²⁵=32 для дробової частини використовується 5 біт, а цілої частини залишається лише 27 біт. Таким чином, максимальне число для цілої частини дорівнює ²²⁷-1=134 217 727, а роздільна здатність дробової частини дорівнює 2^-5=1/32. Дробова частина може додати 31/32 до максимального цілого числа, тому максимальне значення становить між 0 і ²²⁷-1+31/32=134 217 727,969.</p><p>У той самий час максимальна помилка подання обчислюється як (1/S)/2, у цьому прикладі вона дорівнює (1/²⁵)/2=1/64=0,015625. Таким чином, більший коефіцієнт масштабування дозволяє нам мати більш точне уявлення дробових чисел, але зменшує розмір цілої частини і, таким чином, діапазон значень, що подаються.</p><p>Як бачимо, існує компроміс між діапазоном значень, які ми можемо зберігати, і точністю представлених чисел.</p><p>Особливо при множенні чи розподілі ми можемо зіткнутися з переповненням. Наприклад, припустимо, що ми маємо коефіцієнт масштабування ²⁵=32, і ми хочемо помножити ²¹⁶=65536 на ²⁶=64. Нижче наведений код намагається це зробити.</p><p><code>function main() -&gt; u32 { let s: u32 = 32; let a: u32 = 65536 * s; let b: u32 = 64 * s; let result: u32 = a * b / s; return result; }</code></p><p>Для запису з фіксованою точкою ми повинні помножити обидва числа коефіцієнт масштабування, тобто фактично помножити ²¹⁶<em>²⁵=²²¹ на ²⁶</em>²⁵=²¹¹ . Таким чином, просто подивившись на інструкції, ми очікуємо, що на виході буде ²²⁷.</p><p>Однак, на виході ми отримуємо:</p><p><code>[registers] r0: u32 = 0;</code></p><p>Тимчасовий результат c*d дорівнює ²³², що виходить за межі діапазону типу u32. Таким чином, ми фактично отримали числове переповнення та отримали невірний результат.</p><p>Отже, що ми можемо зробити з цього приводу? Ми могли б використовувати тип u64 замість типу u32 для всіх типів (змінних та виводу), які можуть зберігати числа до ²⁶⁴-1. Таким чином, ми отримуємо очікуваний результат ²²⁷:</p><p><code>[registers] r0: u64 = 134217728;</code></p><p>Пам&apos;ятайте, що нам потрібно знову поділити на коефіцієнт масштабування, щоб інтерпретувати результат числа з фіксованою точкою: ²²⁷/ ²⁵= ²²², що є результатом вищезгаданого обчислення ²¹⁶, помноженого на ²⁶.</p><p>Однак при використанні U64 розмір схеми збільшився з 96 до 192 обмежень, фактично збільшившись вдвічі. Це може призвести до збільшення вартості перевірки, особливо у складних програмах. Таким чином, альтернативою було б зменшення коефіцієнта масштабування та, таким чином, потенційне зниження точності представлення числа.</p><p>При використанні ²⁴ як коефіцієнт масштабування замість ²⁵ тільки з типами u32 ми отримуємо наступний результат:</p><p><code>[Registers] r0: u32 = 67108864;</code></p><p>Результат дорівнює ²²⁶. Знову розділіть його на коефіцієнт масштабування ²⁴, і ми отримаємо очікуваний та правильний висновок ²²².</p><p>Код зазвичай працює для негативних чисел. Однак нам потрібно використовувати цілі типи зі знаком. Врахуйте, що для знака потрібен додатковий біт, тому для i32 діапазон цілої частини обчислюється як +- ²³¹-1, що відповідає діапазону від -2147483648 до 2147483647.</p><p><strong>Приклад коду</strong></p><p><em>Додавання двох чисел a та b у форматі з фіксованою точкою:</em></p><p><code>function add(a: u32, b: u32) -&gt; u32 { let result: u32 = a + b;</code> <code>return result;</code> <code>}</code></p><p><em>Розмноження двох чисел a та b у форматі з фіксованою точкою:</em></p><p><code>function multiply(a: u32, b: u32, s: u32) -&gt; u32 { let result: u32 = a * b / s;</code> <code>return result;</code> <code>}</code></p><p><em>Розподіл двох чисел a та b у форматі з фіксованою точкою:</em></p><p><code>function divide(a: u32, b: u32, s: u32) -&gt; u32 { let result: u32 = s * a / b;</code> <code>return result;</code> <code>}</code></p><p>Ви можете знайти весь код проекту Leo <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/zeroknowledgetutorials/leo-fixed-point-numbers">тут.</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
        <item>
            <title><![CDATA[Привітайтесь з новим Leo Wallet]]></title>
            <link>https://paragraph.com/@aleo-ukr-group/leo-wallet</link>
            <guid>1RMqpsKqkzn5ZrGXY4Bm</guid>
            <pubDate>Fri, 25 Nov 2022 13:14:58 GMT</pubDate>
            <description><![CDATA[Ми вважаємо, що конфіденційність – це право людини. Leo Wallet був створений для захисту фінансової свободи та ідентичності людей. Принципи, про які ми дбаємо, — це безпека, надійність, конфіденційність, простота та захист. Наш новий зовнішній вигляд втілює ці принципи в життя таким чином, щоб знайти відгук у нашій ранній спільноті, а також охопити мільярди користувачів. Ми раді представити нове обличчя гаманця Leo.Ми називаємо цей новий логотип “Leo Lock”, він створює замок із двох літер “L”...]]></description>
            <content:encoded><![CDATA[<p>Ми вважаємо, що конфіденційність – це право людини. Leo Wallet був створений для захисту фінансової свободи та ідентичності людей.</p><p>Принципи, про які ми дбаємо, — це безпека, надійність, конфіденційність, простота та захист.</p><p>Наш новий зовнішній вигляд втілює ці принципи в життя таким чином, щоб знайти відгук у нашій ранній спільноті, а також охопити мільярди користувачів.</p><p>Ми раді представити нове обличчя гаманця Leo.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/511f8e94f519040f3751d3faa721cf66c2e5d7963ad0e9cf7107ad6280dd0c7f.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Ми називаємо цей новий логотип “Leo Lock”, він створює замок із двох літер “L” у слові “waLLet”.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/006fffdcd299f83ccc77caf57af1b0bb620f92c555fa72db0bf000843d05720a.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Leo Wallet вже почав доходити до розробників, програмістів та ентузіастів конфіденційності. Ми продовжуватимемо розширювати охоплення Leo у міру подальшого розвитку основного блокчейну Aleo.</p><p>Ми хочемо створити безпечний простір, де люди могли б процвітати. Наша мета – продовжувати збільшувати користь і будувати майбутнє, в якому ми всі хочемо жити.</p><p>Leo - це гаманець з приватністю на першому місці для мережі з приватністю на першому місці.</p><p>Запишіться у waitlist раннього доступу <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://demox.typeform.com/Leo-Wallet?typeform-source=medium.com">тут</a> або приєднуйтесь до нашого <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/BNBzZQAd66">Discord</a>.</p><p>Посилання на оригінал: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.leo.app/blog/say-hello-to-the-new-leo-wallet">https://www.leo.app/blog/say-hello-to-the-new-leo-wallet</a></p>]]></content:encoded>
            <author>aleo-ukr-group@newsletter.paragraph.com (Aleo UKR group)</author>
        </item>
    </channel>
</rss>