zkEVM
December 17, 2023

Aztec. Как спрятать цивилизацию.

Вступление

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

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

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

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

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

Среди всех древних народов Америки, ацтеки остаются самыми поздними народами, проживающими на территории современной Мексики аж до XVI века (однако их предки живут до сих пор в Мексике). Но именно эта народность создала ацтекское письмо - пиктографическую письменность с элементами иероглифики (двухмерные шифры). Кстати себя ацтеки часто называли "Mexico", что на современном языке означает Мексика. Ацтекское письмо сохранилось и дошло до нас в виде пиктограмм солнца. Именно такое отображение символов солнечного диска Ацтеков стало применяться современными людьми в виде пиктограмм, а именно QR - код или двухмерный шифр. Естественно преобразовав символику ацтеков для информационных технологий, современный человек стал использовать QR - код.

Так что благодаря развитию информационных технологий и пиктограммам ацтеков современные люди могут спокойно оплачивать услуги и покупки.

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

Многие тайны шифрования Америки так и остаются тайнами - так как большинство народов были истреблены колонизаторами, а великие знания до современности дошли в разрозненном состоянии.

Приватность в публичных блокчейнах

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

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

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

Анонимность - это способность участников сети оставаться неизвестными или трудно идентифицируемыми при совершении транзакций. Даже если транзакции видны, анонимность обеспечивает отсутствие прямой связи между участниками и их реальными личностями.

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

Проблема приватности в Ethereum

Ethereum изначально разрабатывался как децентрализованная платформа для смарт-контрактов и децентрализованных приложений (DApps). Однако, с увеличением активности на сети, стали становиться явными ограничения в обеспечении приватности транзакций.

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

Для понимания важности приватности в архитектуре сети, давайте начнем с рассмотрения того, почему Ethereum, как публичный блокчейн, не обеспечивает адекватную конфиденциальность. Ethereum работает на основе понятия публичного леджера, который включает в себя аккаунты и балансы.

Примитивная транзакция на Ethereum представляет собой отправку Ether с одного аккаунта (адреса) на другой. Однако, эта транзакция оставляет следы в публичном леджере, увеличивая баланс одного аккаунта и уменьшая баланс другого. Результаты транзакции, включая суммы и участников, публикуются на etherscan.io и становятся общедоступными.

Очевидна проблема прозрачности: все транзакции, суммы и активы доступны для обозрения. Публичные блокчейны, такие как Ethereum, обеспечивают аудит и верификацию, но при этом, в случае утечки конфиденциальности, раскрывается вся история транзакций.

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

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

Подходы к решению проблем приватности в Ethereum

Сознавая проблему приватности, Виталик Бутерин, сооснователь Ethereum, предложил несколько подходов к решению этой проблемы.

1. ZK-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge): Этот метод позволяет доказывать знание информации без раскрытия самой информации. В контексте блокчейна, это означает, что можно подтверждать выполнение условий транзакции без раскрытия самих деталей.

2. Миксеры и Ring Signatures: Миксеры перемешивают средства от нескольких отправителей, делая сложным отслеживание, откуда произошла транзакция. Ring Signatures, в свою очередь, позволяют участникам сети подписывать транзакции от имени группы, не раскрывая конкретного отправителя.

3. Confidential Transactions: Этот метод использует криптографию для скрытия суммы транзакции. Таким образом, в блокчейне отображается только факт совершения транзакции, но не сумма.

ZK-SNARK

Остановимся немного подробнее на ZkSnark.

Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge, или zk-SNARK, представляет собой криптографический протокол, который обеспечивает возможность доказать знание определенной информации, не раскрывая саму информацию. Этот протокол важен для обеспечения конфиденциальности в публичных блокчейнах, таких как Ethereum.

В основе zk-SNARK лежит математическая концепция "нулевого доказательства", что означает способность подтвердить факт обладания знанием, не предоставляя само это знание. Это достигается благодаря использованию алгоритмов, таких как SHA-256 (Secure Hash Algorithm 256-bit), которые позволяют создавать "загадочные" доказательства.

Первый этап в работе zk-SNARK - генерация доверенной структуры данных, называемой "нулевой знанием заранее подготовленного доказательства". Эта структура используется для создания доказательства при каждой транзакции. Затем происходит формирование самого доказательства, где участник демонстрирует, что он обладает знанием, не раскрывая конкретных данных.

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

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

* Dune

В последнее время множество проектов "ZK-EVM" активно представляют свои разработки. Некоторые из них — Polygon Hermez, ZkSync, Scroll, а также тимы Matter Labs и Starkware. Основная цель этих проектов — использование технологии ZK-SNARK для создания криптографических доказательств выполнения транзакций, подобных Ethereum, с целью улучшить масштабируемость блокчейна.

Проекты делятся на несколько типов, каждый из которых предлагает свой подход к обеспечению эквивалентности ZK-EVM с Ethereum.

  • Тип 1 (полностью эквивалентный Ethereum): Стремится быть полностью совместимым с Ethereum, не внося изменения в систему для упрощения генерации доказательств. Идеален для обеспечения совместимости Ethereum Layer 1, но сталкивается с проблемой времени генерации доказательств.
  • Тип 2 (полностью эквивалентный EVM): Похож на Ethereum внутри, но имеет некоторые отличия, чтобы упростить разработку и ускорить генерацию доказательств. Проекты Scroll и Polygon Hermez направлены на создание ZK-EVM этого типа.
  • Тип 2.5 (эквивалентный EVM, за исключением газовых расходов): Увеличивает газовые расходы для сложных операций, что существенно улучшает время генерации доказательств. Немного снижает совместимость.
  • Тип 3 (почти эквивалентный EVM): Уменьшает некоторые сложные функции для улучшения времени генерации доказательств и упрощения разработки. Проекты Scroll и Polygon находятся в этом направлении.
  • Тип 4 (эквивалент высокоуровневого языка): Проекты ZKSync и Warp создают системы, принимающие исходный код смарт-контрактов на высоко-уровневых языках и компилирующие его в ZK-SNARK-дружественный язык. Обеспечивает высокую скорость генерации доказательств, но снижает совместимость.

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

Тут и тут можно почитать подробно, что Виталик писал про ZK-Snark в Ethereum.

Aztec. Восход

18 декабря 2018 года в Твиттере Zac Williamson появилась статья “Confidential transactions have arrived, a dive into the AZTEC Protocol”, который описывал использование confidential transaction для отправки DAI токена без разглашения баланса получателя и суммы отправления. Суть заключалась в том, что это для краткого изложения того, как эта штука работает: это не ZK-SNARK). , это алгебраическое доказательство с нулевым разглашением, которое использует подписи Боне-Бойена для создания схемы обязательств с высокоэффективным доказательством диапазона, встроенным в каждое обязательство.

Вот какое определение дал CEO протокола:

A confidential transaction is a transfer of value between two or more entities, where the values being transferred are not visible to observers.

Архитектура Aztec. Переосмысление Приватности на Ethereum

Протокол Aztec представляет собой революционное решение в области приватности транзакций на блокчейне Ethereum.

Шифрование аккаунтов, балансов и владельцев, кажется, не так просто. Рассмотрим процесс шифрования: аккаунт Snoop отправляет запрос на шифрованный статус аккаунта Cozomo, получает зашифрованный статус, расшифровывает его, осуществляет транзакцию и обменивается обновленными зашифрованными статусами. Этот процесс затратен, времязатратен и требует присутствия обеих сторон.

Протокол Aztec предлагает переход от модели аккаунта к UTXO-модели, аналогичной Bitcoin. Вместо обновления балансов аккаунтов, протокол просто перераспределяет владение "заметками" — аналогами банкнот. Это создает новую концепцию: не аккаунт имеет баланс, а определенная сумма денег, описанная как "заметка", имеет владельца.

Процесс транзакции на Aztec включает уничтожение и создание "заметок". Например, Snoop отправляет 100 ETH в виде двух 50 ETH заметок Cozomo. Переход владения происходит без раскрытия суммы публично. Сделка публикуется с блокировкой, которую может разблокировать только Cozomo, обеспечивая приватность сделки.

Следующий шаг — обеспечение честности и предотвращение мошенничества. Для этого используется механизм join-split, который демонстрирует эквивалентность ввода и вывода транзакции. Здесь внедряется чудо технологии zero-knowledge proof: Snoop может доказать равенство суммы ввода и вывода, не раскрывая их реальные значения.

Для доказательства владения "заметкой" в Aztec применяется сложная криптографическая подпись — zero-knowledge proof. Эта подпись указывает, что в системе существует заметка определенной стоимости, и ей владеет определенный субъект. Состояние системы хранится в двух Merkle Trees: дереве "заметок" и дереве "nullifier" для уничтоженных заметок.

Aztec устанавливает новые корни дерева Меркла на основной цепи Ethereum, когда состояние системы обновляется. Это гарантирует запись транзакций и позволяет публичной верификации, не раскрывая деталей транзакции

Транзакции

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

  1. Соединение кошелька с приложением: Пользователь подключает кошелек к приложению.
  2. Выражение намерения транзакции: Пользователь сообщает кошельку о намерении провести транзакцию.
  3. Предоставление информации о транзакции кошельком: Приложение предоставляет кошельку информацию о транзакции.
  4. Выполнение функции кошельком: Кошелек выполняет функцию, доказывая взаимодействие с аккаунтом.
  5. Доказательство функции: Доказательство взаимодействия и выполнения функции генерируется кошельком.
  6. Передача доказательства ядру: Приложение получает доказательство и передает его кошельку.
  7. Трансляция транзакции в сеть: Кошелек транслирует транзакцию в сеть Aztec.
  8. Включение транзакции в блок Aztec: Узел Aztec включает транзакцию в блок rollup.
  9. Финализация блока на уровне Ethereum L1: Ethereum завершает блок на уровне L1.

Анатомия Публичных Транзакций

Для публичных транзакций Aztec использует привычную модель аккаунтов Ethereum. Функции без ограничений Aztec’s public VM bytecode выполняют "нормальный код" и передают детали транзакции узлу Aztec, который создает доказательство выполнения.

Более подробно механика выполнения транзакции описана тут

Приватная Аккаунт-Абстракция

"Почему EVM не поддерживает конфиденциальность?" Фактически, существуют смарт-контракты Solidity, которые работают на EVM и предоставляют примитивные, не программные функции конфиденциальности, такие как смешивание.

Однако речь идет не о том. Речь о конфиденциальности смарт-контрактов — об общей системе, включающей программную конфиденциальность в самом контракте — на уровне переменных состояния и функций.

В модели Ethereum переменные состояния хранятся в открытом дереве Меркла на основе аккаунтов(EOA), и для редактирования одной из этих переменных необходимо транслировать в мир точные детали изменений, какие листья дерева вы хотите изменить, что они содержат и как их изменить.

Это имеет свои недостатки:

  • Текущие и исторические значения каждой переменной состояния общедоступны.
  • Функции, вызванные для выполнения изменений состояния, также общедоступны.
  • Переменные состояния, измененные этими функциями, тоже общедоступны.

UTXO и Нуллификаторы

Вместо этого открытого способа хранения, Aztec полагается на зашифрованную архитектуру данных UTXO (Unspent Transaction Object) — ту же технологию, которую использует Bitcoin для хранения состояния сети.

Основой конфиденциальности Aztec является древовидная структура данных, содержащая зашифрованные UTXO, и другое дерево данных, содержащее их нуллификаторы.

UTXO также называют "заметками" (notes), и это термин будет использоваться в дальнейшем.

Манипуляции с Заметками (Notes)

Чтобы изменить владение заметкой (которая, напомним, представляет собой зашифрованный объект UTXO), пользователи выполняют следующие шаги:

  1. Вызывается функция.
  2. Функция запрашивает изменение приватного состояния.
  3. Функция запрашивает у базы данных пользователя все заметки, принадлежащие этому приватному состоянию.
  4. Пользователь (фактически узел Aztec пользователя) доказывает локально, что каждая из полученных заметок существует как лист в дереве машины, не раскрывая, какой именно лист.
  5. Пользователь выполняет действие: чтение, изменение или удаление значений внутри заметки.
  6. Пользователь предоставляет нуллификатор, который предотвращает дублирование действия и предотвращает возможность пользователю повторно читать тот же самый лист.
  7. Пользователь вставляет новый лист, содержащий новое значение, как способ обновления значения приватного состояния.

Приватные Переменные Состояния

Для достижения конфиденциальности необходимо иметь приватные переменные состояния. Заметки не могут быть таковыми, так как они постоянны и неизменны. Чтобы создать концепцию приватной переменной состояния на основе заметок, Aztec умеет создавать и уничтожать их скрытым образом.

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

Пример Приватного Контракта Токена

Чтобы сделать это менее абстрактным, давайте рассмотрим основную функциональность блокчейна: приватный контракт токена. Разработчик может объявить переменную private_balance, а Aztec позволяет изменять баланс в функции передачи.

Внутри структуры private_state, которая была представлена, может определить, как создавать и уничтожать заметки так, чтобы они представляли добавление или вычитание из баланса пользователя, не раскрывая этот баланс (путем отправки нуллификаторов из функции).

Приватная переменная состояния может представлять любую информацию:

  • Значения: объект со значениями и полем владельца, как банкнота / купюра на $100.
  • NFT: объект с уникальным идентификатором или содержащий все уникальные атрибуты NFT.
  • Аккаунты: объект, принадлежащий одному или нескольким владельцам.
  • И многое другое! Голоса, позиции в DeFi, объекты идентификации и все, что вы можете представить.

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

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

Управление UTXO

Управление UTXO может быть немного сложным и включает в себя несколько тонкостей, таких как:

  • Эффективный поиск собственных заметок в дереве.
  • Объединение заметок.
  • Получение сдачи из объединенных заметок.
  • Уничтожение и обновление заметок с нуллификаторами.

В отличие от Ethereum, где аккаунты можно просто начислять и списывать, заметки должны быть созданы, объединены и уничтожены, что представляет собой отличную ментальную модель. Где значения Ethereum просто значения, заметки содержат значения.

К счастью, в Aztec Labs разработали Aztec как сеть с учетом абстракции. Их цель - устранить эти трудности и сделать написание смарт-контрактов Aztec максимально похожим на написание смарт-контрактов Ethereum.

Абстракция для Разработчиков Приложений

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

Более подробно про аккаунт-абстракцию можно почитать тут

Текущее состояние Разработки

13 марта лондонская компания обьявила, что закрывает один из своих проектов — накопительный пакет Ethereum с нулевым разглашением (ZK). Он прекратил принимать новые депозиты 23 марта, но разрешит вывод средств еще на год. Однако уже осенью команда возобновила активные работы над проектом.

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

Командой написан специальный язык программирования - Noir.

В марте группа инженеров-криптографов разработала основные схемы шифрования Aztec под руководством генерального директора Aztec Labs Зака ​​Уильямсона. Разработка на C++ потребовала значительных адаптационных и технических затрат, в том числе:

  • Разработка встроенного C++ DSL
  • Учет особенностей C++ и особенностей нашего встроенного DSL.
  • Создание рабочего процесса Франкенштейна с использованием CMake и пользовательских сценариев сборки.
  • Синтаксическая простота облегчает понимание кода.
  • Nargo обеспечивает удобное управление посылками
  • Однострочный интерфейс командной строки улучшает тестирование

В дополнение к инструментам разработчика, таким как профилирование производительности, подсветка синтаксиса и автоматическое форматирование.

Хотя Noir все еще находится в стадии бета-версии и не полностью готов к производству до тех пор, пока не пройдет аудит, реализация языка будет приостановлена ​​в первой половине 2024 года, а аудит будет завершен в последней половине года.

В Github проекта предоставлены 3 основных репозитория - Aztec-packages, aztec-nr, sanbox. Что касается последних, то они созданы в 2023 году, а вот количество коммитов для packages сильно выросло во второй половине года, что говорит о возросшей активности в разработке.

Небольшой анализ гитхаба навел на интересные идеи, которые команда собирает на воркшопах и хакатонах, среди них:

  • Private lending front end - you can see an example here
  • ZKollateral - privately prove assets for collateral or creditworthiness for a loan
  • Proof of Liquidity - privately prove solvency and/or compliance without exposing the underlying assets or trades
  • Private DEX - allow users to trade assets without revealing the accounts that the assets originate from.
  • Oracles - private and/or public price oracles will be critical infrastructure for building DeFi on Aztec.
  • zkVoting - a protocol that anyone can easily implement into their DAO for privacy-preserving voting
  • Private payments / payroll - a system that allows DAOs to pay their contributors without revealing the amounts. This would greatly improve the UX and privacy of contributors.*****

Для реализации этих и других идей была запущена программа грантов:

https://airtable.com/appXVjZF8p4nxqzoq/shrPXeauJ0sj4e0aZ

https://github.com/AztecProtocol/dev-rel/blob/main/hackathons/INSPIRATION.md

https://github.com/AztecProtocol/dev-rel/blob/main/README.md#hackathon-success-guide-

Гранты выдаются на три направления: развитие SandBox, развитие языка Noir, развитие комьюнити и форумов.

Инвестиции в проект

Теперь о самом важном и интересном.

Проект основали два фаундера Захари Вильямсон и Джо Эндрю.

Про учредителей практически ничего не известно, к тому же карьерные пути, судя по LinkedIn, не блещут звездными компаниями.

С 2018 года проект привлек около 120 млн долларов инвестиций, в том числе от Paradigm и a16z. Последний раунд на 100 млн был в конце 2022 года, по Lead a16z.

Основное юридическое лицо стартапа это Лондонская компания Spilsbury Holdings Ltd.

Кроме этого, фаундеры являются учредителями в нескольких аффилированных юридических лицах, а именно:

Noir Labs (https://find-and-update.company-information.service.gov.uk/company/14881674/filing-history) - по 50% - вероятно оформлены права на язк Noir

Aztec Labs Limited (https://find-and-update.company-information.service.gov.uk/company/14873864) - по 50%

Aztec Laboratorium (https://find-and-update.company-information.service.gov.uk/company/14885176) - по 50%

Вероянтно, лицензии на код, на криптографические исследования, язык програмирования Noir и на все остальные интелектуальные иследования могут остаться у фаундеров.

Здесь можно более подробно ознакомится со структурой владения головной компании. Вот тут можно понять структуру владения юридическим лицом.

В текущий момент она выглядит следующим образом:

Текущая оценка компании на раунде Series B составляет 450 - 500 млн USD.

В данной таблице я привел приблизительную оценку инвестиций и текущей стоимости, очевидно что ждать выхода на рынок следует не ранее конца 2024 года, начала 2025 года, однако сама технология может иметь огромные перспективы в будущем и стать новым крипто-единорогом:

Основной риск проекта кроется в позиции регулятора, и повторении судьбы Tornado Cash.

Мы будем внимательно следить за этим проектом и в будущем.

​Спасибо за прочтение.
Ещё увидимся! @global_investment_io/@pillardev

My debank: https://debank.com/profile/0x50662aede1e73a1f6ffc6b3bbb1ea5c4d8083ed5

Список использованных материалов:

  1. https://aztec.network/blog/confidential-transactions-have-arrived-a-dive-into-the-aztec-protocol/
  2. https://github.com/AztecProtocol/aztec-v1/blob/master/AZTEC.pdf
  3. https://github.com/AztecProtocol/dev-rel/blob/main/hackathons/INSPIRATION.md
  4. https://raw.githubusercontent.com/AztecProtocol/aztec-packages/2fa143e4d88b3089ebbe2a9e53645edf66157dc8/docs/static/img/sandbox_sending_a_tx.svg
  5. https://hackmd.io/@aztec-network/BkGNaHUJn/%2FdUsu57SOTBiQ4tS9KJMkMQ, https://hackmd.io/@aztec-network/B19AA8812
  6. https://aztec.network/blog/aztec-the-hybrid-zkrollup/
  7. https://aztec.network/blog/aztec-raises-100-million-to-build-encrypted-ethereum/
  8. https://vitalik.eth.limo/general/2021/01/26/snarks.html
  9. https://vitalik.eth.limo/general/2022/06/15/using_snarks.html
  10. https://find-and-update.company-information.service.gov.uk/company/11093783/officers
  11. https://www.companysearchesmadesimple.com/company/uk/11093783/spilsbury-holdings-limited/#people
  12. https://aztec.network/blog/unconstrained-functions-in-noir/
  13. https://aztec.network/blog/privacy-abstraction-with-aztec/
  14. https://noir-lang.org/