Розуміння блокчейнів без знань

Як показати, що ти щось знаєш, не показуючи те, що ти знаєш

Минулої п'ятниці відбувся запуск Zcash, новий публічний блокчейн і пов’язана з ним криптовалюта, яка привернула велику увагу. На даний момент є сотні криптовалют, тож будь-якому починаючим молодим учасникам потрібен серйозний диференціатор, щоб піднятися над боротьбою. У випадку з Zcash це легко – користувачі Zcash можуть надсилати гроші один одному в абсолютній конфіденційності. Для криптовалюти, заснованої на блокчейні, це чудове технічне досягнення. (Хоча слід зазначити, що інші мережі, такі як Monero та Тире прагнете до тієї ж мети, використовуючи простіші, але менш ефективні засоби.)

Як я писав про раніше, у загальному сенсі блокчейни (державні чи приватні) представляють собою компроміс, у якому відсторонення від посередництва досягається ціною конфіденційності. Блокчейни надають учасникам новий розумний спосіб безпечно спільно використовувати базу даних, навіть якщо вони не довіряють один одному, не вимагаючи центрального посередника. Але за цю однорангову децентралізацію потрібно заплатити – «вузол», який належить кожному учаснику ланцюга, повинен самостійно перевіряти кожну транзакцію, а це, у свою чергу, означає, що він бачить, що роблять усі інші.

Два способи ланцюга

У разі публічних блокчейнів і криптовалют спільна база даних служить головним чином записом про те, хто контролює (і тому фактично володіє) скільки криптовалюти, з додатковим розсипанням «метаданих» (біткойн) або договірної логіки (Ethereum) зверху. Навпаки, у приватних блокчейнах ми схильні бачити два основних класи варіантів використання: (а) володіння та передача зовнішніх активів, представлених токенами в ланцюжку, і (б) більш загальні програми, пов’язані зі зберіганням і пошуком даних. Наприклад, у власному продукті MultiChain, ці два класи варіантів використання реалізовані за допомогою нативних активів і потоків даних відповідно.

Коли справа доходить до загального зберігання даних, блокчейн надає ряд послуг: підтвердження того, звідки походить частина даних, відмітка часу та незмінне нотаріальне засвідчення, щоб запобігти зміні меншістю учасників блокчейну. Але блокчейну нема чого говорити про самі дані – кожна програма може вирішити, що означає частина даних і чи є вона дійсною. Погані дані можна просто ігнорувати на рівні програми, не завдаючи шкоди стану блокчейну в цілому.

Навпаки, якщо блокчейни безпосередньо передають токенізовані активи, вони повинні застосовувати внутрішні правила щодо дійсності цих переказів. Простіше кажучи, така подія, як «Аліса платить Бобу один євро», буде схвалена мережею, лише якщо на її ім’я Аліса має принаймні один євро. Хоча різні типи блокчейну виражають це правило по-різному (обмеження транзакцій біткойн проти смарт-контрактів Ethereum), усі вони мають властивість, що фінанси Аліси повинні знати кожен вузол ланцюга. Це дозволяє їм оцінити, чи є її платіж дійсним, знати, скільки в результаті має Боб, і оцінити будь-які майбутні платежі від Боба Чарлі та іншим.

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

По-перше, і найпростіше, щоб здійснювати транзакції з кимось на блокчейні, мені потрібно знати принаймні одну з їхніх адрес. Тож якщо я надішлю їм гроші, я можу побачити, куди ці гроші підуть далі, і якщо вони мені платять, я можу побачити, звідки вони взялися. По-друге, якщо я випадково знаю щось про учасника з реального світу (наприклад, якими типами активів вони торгують у який час доби), я можу шукати відповідні закономірності в діяльності ланцюга, а потім визначити їхню адресу з високим рівнем впевненість. Нарешті, коли я знаю одну адресу учасника, я часто можу визначити, якими іншими адресами він володіє та використовує, відстежуючи повний потік коштів у ланцюжку. Хоча це непросто досягти, це, безумовно, можливо з достатньою мотивацією, як доведено такими компаніями, як Chainalysis та Скрий які заробляють на життя, забезпечуючи такий тип «аналізу мережі» для біткойнів.

Збережено за допомогою шифрування?

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

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

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

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

І все ж, після всіх розчарувань, порятунок нарешті може бути поруч. Введіть блокчейн з нульовими знаннями.

Введення нульових знань

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

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

Отже, що я можу зробити? (Чому б не витратити хвилинку і не спробувати самостійно розгадати відповідь...) Ну, я можу попросити її взяти аркуш паперу і намалювати на ньому дві лінії в іншій кімнаті. Роблячи це, вона може вільно вирішувати, чи використовувати одну ручку для обох рядків або одну ручку для кожної. З її точки зору результат виглядає однаково. Потім вона повертається з папером, і я розповідаю їй, чи використовувала вона одну ручку чи дві. Звичайно, якби ручки були одного кольору, я б не міг знати. Тож той факт, що я правильно розумію, доводить, що вони різні.

Ну, не зовсім. Є проблема з цією логікою. Навіть якби ручки були однаковими, у мене був би 50% шанс дати правильну відповідь, тому що є лише дві можливості (вона використовувала одну або дві ручки). Тож одна щаслива здогадка взагалі нічого не доводить. Щоб зміцнити свою позицію, гру потрібно грати в кілька раундів. Після кожного раунду мій шанс бути завжди правим зменшується вдвічі. Отже, з 5 раундами я маю шанс 1 з 32 успішно притворитися. При 10 раундах це 1 на 1024, а при 20 раундах 1 на 1048576 – іншими словами, один на мільйон. Залежно від відносного рівня нудьги та підозрілості мого друга, вона може досягти будь-якого ймовірнісного рівня доказу, якого вона бажає, хоча ніколи не абсолютної впевненості.

Принесіть снарки

Доведення нульових знань у блокчейнах застосовують подібний принцип, хоча, звичайно, вони не стосуються кольору ручок. Швидше, вони прагнуть довести твердження «ця передача активів дійсна», не розкриваючи нічого важливого про саму передачу. Zcash використовує відносно нову техніку для доказів нульового знання, яка називається zk-SNARKs, the повне пояснення чого виходить (м’яко кажучи) за рамки цього твору. Але основна ідея така: будь-яка обчислювальна умова може бути представлена ​​арифметичною схемою, яка бере деякі дані як вхідні дані і дає у відповідь відповідь «істинно» або «невірно». Zk-SNARK використовує модель цієї схеми, щоб дозволити мені довести з будь-яким бажаним ступенем впевненості, що я володію вхідним сигналом, який дає справжню відповідь, не розкриваючи сам вхід. Принаймні філософськи це все одно, що довести, що дві ручки різного кольору, не розкриваючи, що це за кольори.

Zk-SNARK використовує акуратний маленький трюк, щоб уникнути інтерактивності, яка є типовою для доказів з нульовим знанням, коли скептично налаштована сторона неодноразово кидає виклик тому, хто стверджує. У випадку з нашими ручками, це завдання — вибір мого друга між використанням однієї або двох ручок у кожному раунді. Такий тип інтерактивності неможливий на блокчейні, оскільки немає довіреної центральної сторони, яка б поставила проблеми. Замість цього zk-SNARK використовує наближення «випадкового оракула», в якому виклики створюються детерміновано деяким кодом, але поводяться для всіх намірів і цілей так, ніби вони є випадковими. Не випадково ця комбінація детермінізму та непередбачуваності використовує ту саму хеш-функцію, яка захищає сам блокчейн.

Нульові докази знань існували вже деякий час, але zk-SNARK впроваджують низку інновацій, які дозволяють використовувати їх у блокчейнах. Найголовніше, zk-SNARK зменшують розмір доказів і обчислювальні зусилля, необхідні для їх перевірки. Zerocoin, попередня спроба використання доказів нульових знань у блокчейнах, вимагає 45 Кб транзакцій, перевірка кожної з яких займає півсекунди (цифри взяті з біла книга на якому базується Zcash). Це значно гірше, ніж біткойн, чиї транзакції зазвичай мають розмір 0.3 Кб і можуть бути перевірені менш ніж за мілісекунди. На відміну від цього, транзакції Zcash мають вагу 1 КБ і можуть бути зареєстровані менше ніж за 6 мілісекунд. Це ставить Zcash в ту саму лігу масштабованості, що й біткойн – чудове досягнення. Якщо ми зняли капелюхи перед творцем(ами) біткойна, ми повинні зняти для цього наші шкарпетки та черевики.

Рекомендується бути обережним

Перш ніж конвертувати всі свої біткоїни в Zcash, слід пам’ятати про деякі застереження. По-перше, криптографія Zcash спирається на надійний процес налаштування, в якому два довгих відкритих ключа отримуються з одного випадково згенерованого приватного. Абсолютно життєво важливо, щоб цей закритий ключ був знищений, оскільки будь-хто, хто ним володіє, може підробити докази, на які спирається система. У випадку Zcash приватний ключ був створений на складній церемонії, детально описаній тут. У церемонії брали участь кілька відомих персонажів зі світу криптовалюти, кожен з яких (нам кажуть) мав лише частковий погляд на закритий ключ. У свою чергу, це означає, що Zcash може бути скомпрометований, лише якщо всі учасники церемонії вступили в зловмисну ​​змову. Читач сам вирішує, наскільки він впевнений у цьому.

По-друге, хоча це відносно швидко перевірити анонімна трансакція Zcash, створює кожна з цих транзакцій несе серйозне обчислювальне навантаження. Відповідно з Центр швидкості Zcash, зараз це займає 48 секунд на сервері високого класу та понад 3 ГБ пам’яті. Це робить недоцільним анонімну операцію з мобільних пристроїв і старих настільних комп’ютерів і ноутбуків. Zcash частково обходить це обмеження, підтримуючи як звичайні видимі криптокоїни (з швидкими транзакціями), так і анонімні «нотатки» (з повільними), з вбудованим методом для конвертації між ними.

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

Нарешті, як і для будь-якої криптовалюти, заснованої на proof-of-work, потенціал для 51% атак залишається. Це означає, що група «майнерів» з більш ніж половиною обчислювальної потужності мережі може вступити в змову, щоб скасувати транзакції, які всі інші вважали завершеними (погані майнери все одно не можуть підробити транзакції, які крадуть чужі кошти). Zcash розумно покладається на Equihash, алгоритм хешування, відмінний від SHA-256 біткойна, що означає, що величезну масу існуючої потужності майнінгу біткойнів не можна повернути проти Zcash. Equihash також розроблено, щоб бути більш стійким до «ASIC» (мікропроцесорів спеціального призначення), які перетворили видобуток біткойнів на олігополію, але час покаже, чи зможуть інженери з обладнання знайти обхідний шлях і якою ціною.

Приватні блокчейни без знань

Поки що ми зосередили нашу дискусію на загальнодоступному блокчейні та криптовалюті Zcash. Але як щодо зовнішніх активів, які переміщуються через приватні або дозволені блокчейни та спільні книги? Чи можна використовувати ті самі методи нульового знання?

На технічному рівні відповідь, безсумнівно, так. У порівнянні з теоретичним і технологічним оглядом, який лежить в основі Zcash, тривіально розширити протокол для підтримки активів, що випускаються в ланцюжку. Все, що потрібно, це розширити умови, підтверджені zk-SNARK, щоб забезпечити збереження кількох активів замість однієї криптовалюти. Або, навіть простіше, створіть кілька окремих анонімних підсистем на одному блокчейні, кожна з яких представляє інший тип активів, і виконуйте транзакції в кожній підсистемі так само, як Zcash сьогодні. Цей другий метод взагалі не вимагає розуміння zk-SNARK.

Як би виглядав життєвий цикл активу в цій моделі? По-перше, довірена організація випускає токени, що представляють актив, надсилаючи видиму транзакцію блокчейну, яка засвідчує цінність цих маркерів. Ця ж організація потім виконає другу транзакцію, яка перетворює видимі токени в анонімні «примітки» в стилі Zcash, фактично переміщуючи актив у підпілля. Ці банкноти потім можуть таємно передаватися від емітента іншим і далі між учасниками ланцюга. Як і у випадку з Zcash, усі учасники блокчейну можуть перевірити трансакції як дійсні, не розкриваючи їх вміст. Нарешті, коли власник бажає викупити купюру, він перетворює її назад у видимі токени за допомогою іншої транзакції в стилі Zcash, надсилає ці токени початковому емітенту та отримує натомість еквівалентний реальний актив. Ми також можемо дозволити анонімне погашення банкнот безпосередньо, і в такому випадку учасники блокчейну не знають, яка частина активу залишається в обігу.

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

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

Не викидайте цю базу даних (поки що)

Якщо припустити, що технічні основи Zcash надійні, я цілком очікую, що він досягне найвищого рівня криптовалют з точки зору інтересу розробників і ринкової капіталізації. Але чи є таке ж світле майбутнє для транзакцій з нульовим знанням приватний блокчейни? Чи зроблять вони перехід від лабораторії до систем високої якості виробництва, які переміщують реальні гроші по всьому світу?

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

По-перше, і головне, чи це безпечно? Чи можемо ми дійсно бути впевнені, що як базова криптографія, так і її закодовані реалізації достатньо міцні, щоб запобігти зловмисникові від створення активів з повітря? Як згадувалося раніше, на відміну від прозорих блокчейнів, поки що неможливо виявити, чи була скомпрометована грошова база блокчейна з нульовим рівнем знань. Тим не менш, немає надійнішого тесту цієї технології, ніж випуск її як відкритого загальнодоступного блокчейну, який доступний для всіх, щоб побачити та атакувати, і це саме те, що робить Zcash. Після кількох років безперебійної роботи Zcash установи можуть переконатися, що блокчейни з нульовими знаннями можуть справді захистити їхні активи. Як і в будь-якому випадку з блокчейном, потрібне терпіння.

Супутнім питанням є новизна самої криптографії з нульовим знанням. Це правда, що звичайні блокчейни покладаються на передову криптографію, а саме на асиметричне шифрування (відкриті/приватні ключі) і криптографічні хеш-функції (цифрові відбитки пальців). І це також правда, що переважна більшість програмістів блокчейну та розробників додатків не розуміють математичних принципів, які лежать в основі цих методів. Але ширший момент полягає в наступному: якщо розглядати ці методи як чорні ящики, ці методи широко використовуються протягом десятиліть, величезною кількістю розробників і користувачів (чули про https?), і всі вірять, що вони працюють. Навпаки, донедавна докази нульового знання були відомі лише невеликій спільноті науковців і не мали широкого застосування в Інтернеті чи в інших місцях. Ми можемо очікувати, що ця неясність зменшить готовність CIO або спеціаліста з ризиків перевести свої основні процеси до блокчейну з нульовим рівнем знань, принаймні протягом наступних п’яти років. І давайте навіть не почнемо уявляти, скільки часу знадобиться регуляторам, щоб звикнути до активів, які переміщуються таким чином.

Розмова про регулювання піднімає ще одну практичну проблему з блокчейнами з нульовими знаннями. Анонімні транзакції в блокчейні містять заяви про передачу активів і право власності, але ці заяви бачать лише вибрані сторони (а саме ті, хто безпосередньо залучений). Навіть якщо ми надамо регулятору повну бачення блокчейну з нульовим знанням та ідентифікаційних даних його учасників, він не зможе дізнатися, що насправді відбувається всередині. Звичайно, регулятор може попросити всіх учасників ідентифікувати та розкрити свої транзакції, і вони можуть зробити це ефективно за допомогою «ключів перегляду» в стилі Zcash. Тим не менш, якщо сторони будь-якої конкретної операції хочуть зберегти її в таємниці, регулятор застряг і не знає, кого оштрафувати. Немає жодного банку-зберігача, від якого він міг би отримати повну картину, і єдиний варіант для примусового виконання – закрити весь ланцюжок.

Отже, в чому суть? Принаймні зараз я пропоную просто простежити за прогресом загальнодоступного блокчейну Zcash, щоб побачити, як він розвивається і росте. Якщо історія Ethereum повторюється, під поверхнею будуть ховатися сюрпризи та вразливі місця, які чекають, щоб ними скористалися жадібні опортуністи. Тим не менш, у довгостроковій перспективі не помиляйтеся: транзакції з нульовим знанням – це прорив блокчейнів, який змінює гру. Якщо основні криптографічні принципи виявляються надійними, очікуйте, що вони значно розширять діапазон випадків використання, до яких можна застосувати блокчейни.

Будь ласка, залишайте будь-які коментарі на LinkedIn.

Часова мітка:

Більше від Багатоканальний