Понимание блокчейнов с нулевым знанием

Как показать, что вы знаете что-то, не показывая, что вы знаете

В прошлую пятницу был запущен Zcashновая публичная блокчейн и связанная с ней криптовалюта, которая привлекла большое внимание. К настоящему времени есть сотни криптовалют, поэтому любому начинающему новичку нужен серьезный дифференциатор, чтобы подняться над схваткой. В случае с Zcash это просто - пользователи Zcash могут отправлять деньги друг другу в условиях полной конфиденциальности. Для криптовалюты, основанной на блокчейне, это замечательное техническое достижение. (Хотя следует отметить, что другие цепочки, такие как Monero и Dash стремиться к той же цели, используя более простые, но менее эффективные средства.)

Как я написано раньше, в общем смысле блокчейны (публичные или частные) представляют собой компромисс, в котором отказ от посредничества достигается за счет конфиденциальности. Блокчейны предоставляют участникам новый умный способ безопасного обмена базой данных, даже если они не доверяют друг другу, без необходимости использования центрального посредника. Но за эту одноранговую децентрализацию приходится платить - «узел», принадлежащий каждому участнику цепочки, должен проверять каждую транзакцию для себя, а это, в свою очередь, означает, что он видит, что делают все остальные.

Два способа цепочки

В случае общедоступных цепочек блоков и криптовалют общая база данных служит в первую очередь для записи того, кто контролирует (и, таким образом, фактически владеет) сколько криптовалюты, с дополнительным добавлением «метаданных» (биткойн) или договорной логики (Ethereum) сверху. Напротив, в частных блокчейнах мы склонны видеть два основных класса вариантов использования: (а) владение и передача внешних активов, представленных токенами в цепочке, и (б) более общие приложения, относящиеся к хранению и извлечению данных. Например, в собственном продукте многоцепочечногоэти два класса вариантов использования реализуются с использованием собственных ресурсов и потоков данных соответственно.

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

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

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

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

Сохранено шифрованием?

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

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

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

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

И все же, после всех разочарований, спасение, наконец, может быть под рукой. Введите ноль знаний блокчейн.

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

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

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

Так что я могу сделать? (Почему бы не потратить минуту и ​​попытаться выработать ответ самостоятельно ...) Хорошо, я могу попросить ее взять лист бумаги и нарисовать на нем две линии в другой комнате. Делая это, она может свободно решать, использовать ли одну и ту же ручку для обеих линий или одну ручку для каждой. С ее точки зрения результат выглядит одинаково в любом случае. Затем она возвращается с бумагой, и я говорю ей, использовала ли она одну или две ручки. Конечно, если бы ручки были одного цвета, я бы не узнал. Так что тот факт, что я правильно понял, доказывает, что они разные

Не совсем так. Есть проблема с этой логикой. Даже если бы ручки были идентичными, у меня все равно был бы 50% шанс дать правильный ответ, потому что есть только две возможности (она использовала одну или две ручки). Так что одна удачная догадка вообще ничего не доказывает. Чтобы укрепить мою позицию, игра должна проходить в несколько раундов. После каждого раунда мои шансы быть постоянно правыми снижаются вдвое. Таким образом, с 5 раундами у меня есть 1 шанс из 32 успешно сфальсифицировать. При 10 раундах это 1 из 1024, а при 20 раундах - 1 из 1048576, другими словами, один из миллиона. В зависимости от относительного уровня скуки и подозрительности моей подруги, она может достичь любого вероятностного уровня доказательства, которого она желает, но никогда не будет абсолютной уверенностью.

Принести на snarks

Доказательства с нулевым разглашением в блокчейнах используют аналогичный принцип, хотя, конечно, они не о цвете ручек. Скорее, они стремятся доказать утверждение «эта передача активов действительна», не раскрывая ничего важного о самой передаче. Zcash использует относительно новую технику для доказательства с нулевым разглашением, называемую zk-SNARKs, полное объяснение чего выходит (мягко говоря) за рамки этой статьи. Но основная идея заключается в следующем: любое вычислительное условие может быть представлено арифметической схемой, которая принимает некоторые данные в качестве входных и дает в ответ «истина» или «ложь». 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 Speed ​​Center, в настоящее время это занимает 48 секунд на сервере высокого класса и более 3 ГБ памяти. Это делает непрактичным проведение анонимных операций с мобильных устройств, старых настольных компьютеров и ноутбуков. Zcash частично обходит это ограничение, поддерживая как обычные видимые криптовалюты (с быстрыми транзакциями), так и анонимные «заметки» (с медленными), со встроенным методом конвертации между ними.

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

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

Ноль знаний частных блокчейнов

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

С технической точки зрения, несомненно, да. По сравнению с теоретическим и технологическим явлением, лежащим в основе Zcash, расширение протокола для поддержки активов, выпущенных в цепочке, тривиально. Все, что требуется, - это расширить условия, проверенные zk-SNARK, чтобы обеспечить сохранение нескольких активов вместо одной криптовалюты. Или, что еще проще, создайте несколько отдельных анонимных подсистем в одной цепочке блоков, каждая из которых представляет разные типы активов, и совершайте транзакции внутри каждой подсистемы точно так же, как Zcash делает сегодня. Этот второй метод вообще не требует понимания zk-SNARK.

Как будет выглядеть жизненный цикл актива в этой модели? Во-первых, доверенное лицо выпускает токены, представляющие актив, отправляя видимую транзакцию блокчейна, удостоверяющую ценность этих токенов. Затем этот же объект будет выполнять вторую транзакцию, которая конвертирует видимые токены в анонимные «заметки» в стиле Zcash, эффективно перемещая актив под землю. Эти банкноты затем могут быть тайно переданы от эмитента другим, а затем между участниками цепочки. Как и в случае с Zcash, транзакции передачи могут быть проверены как действительные для всех участников блокчейна без раскрытия их содержимого. Наконец, когда держатель желает погасить банкноту, он конвертирует ее обратно в видимые токены с помощью другой транзакции в стиле Zcash, отправляет эти токены первоначальному эмитенту и получает взамен эквивалентный реальный актив. Мы также можем разрешить прямой анонимный выкуп банкнот, и в этом случае участники блокчейна не будут знать, какая часть актива остается в обращении.

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

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

Не выбрасывайте эту базу данных (пока)

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

Конечно, пока рано говорить об этом. Но есть ряд вопросов, на которые необходимо ответить, прежде чем сторонники авторизованного блокчейна смогут указать на транзакции с нулевым разглашением и торжественно объявить победу.

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

С этим связана и новизна самой криптографии с нулевым разглашением. Это правда, что обычные блокчейны полагаются на передовую криптографию, а именно на асимметричное шифрование (открытые / закрытые ключи) и криптографические хеш-функции (цифровые отпечатки пальцев). И также верно, что подавляющее большинство программистов блокчейнов и разработчиков приложений не понимают математических принципов, лежащих в основе этих методов. Но в более широком плане суть заключается в следующем: если рассматривать эти методы как черные ящики, эти методы широко использовались на протяжении десятилетий огромным количеством разработчиков и пользователей (слышали о https?), И все считают, что они работают. Напротив, до недавнего времени доказательства с нулевым разглашением были известны лишь небольшому сообществу ученых и не имели широкого применения в Интернете или где-либо еще. Мы можем ожидать, что эта неясность снизит готовность ИТ-директора банка или специалиста по рискам перевести свои основные процессы на блокчейны с нулевым разглашением, по крайней мере, в течение следующих пяти лет. И давайте даже не начинать представлять, сколько времени понадобится регулирующим органам, чтобы привыкнуть к таким перемещениям активов.

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

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

Пожалуйста, оставьте любые комментарии на LinkedIn.

Отметка времени:

Больше от многоцепочечного