RAILGUN (RAIL) - конфиденциальность в ETH

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

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

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

Как работает RAILGUN?

RAILGUN состоит из следующих основных функций:

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

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

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

RAILGUN был разработан, чтобы вы могли:

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

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

RAILGUN Основная система и протокол

Ядром протокола Railgun является транзакция JoinSplit, которая работает по модели (U) TXO, то есть (Unspent) Transaction Output, модели. Здесь U в скобках, потому что сторонние наблюдатели не могут определить, какие TXO (выходные данные транзакции) были потрачены, а какие нет. Каждый UTXO представляет собой зашифрованную заметку открытого ключа, который устанавливает, кто может его потратить, сумму, идентификатор токена (например, USDT, WETH, WBTC и т. д., Представленный их соответствующим адресом контракта ERC-20), а также поле случайности для рандомизации обязательства по примечанию (т. е. хеша). Мы внутренне используем эффективные реализации пакетных инкрементных деревьев Меркла (древовидная структура данных, которая позволяет эффективно и безопасно проверять содержимое больших структур данных с использованием криптографических хэш-функций) для хранения этой информации в цепочке.

Мы используем Nullifiers, который представляет собой особый тип хэша, который генерируется с использованием закрытых ключей пользователей, которые не могут быть связаны с TXO внешними наблюдателями, но детерминированно генерируются в транзакциях, чтобы исключить любую возможность двойных расходов. Нуллификаторы рассчитываются с использованием хэша Spending Key (закрытые ключи спонсора для рассматриваемых UTXO) и индексов пути корня Merkle, что гарантирует, что каждая нота всегда будет генерировать уникальный Nullifier. Поскольку обнулитель может быть сгенерирован только спонсором, это позволяет RAILGUN использовать их для исключения двойной траты. Спендер - единственный, кто может связать, какой Nullifier принадлежит какому UTXO.

RAILGUN широко использует доказательства с нулевым разглашением в системе. Транзакции с нулевым разглашением можно рассматривать как небольшие программы с некоторыми общедоступными и частными вводами. Таким образом, программа доказательства может генерировать доказательство как с общедоступными, так и с частными входными данными, а затем предоставлять открытые входные данные программеверификатору вместе с ZKP (доказательство с нулевым разглашением). Обладая этой информацией, программа проверки теперь может проверить, что программа проверки успешно выполнила. Общедоступные входные данные существуют как часть достаточной информации, чтобы доказать, что частные входные данные соответствуют ожиданиям проверяющего, а не являются поддельными значениями. Корень дерева Меркла нашего набора UTXO очень эффективно гарантирует, что доказывающая сторона не сможет обманным путем заявить: «У меня есть UTXO с 10000000000 ETH».

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

  • Адаптировать ID (подробнее об этом в следующем разделе)
  • Сумма вклада
  • Сумма вывода
  • Корень Меркла
  • Нуллификаторы
  • Вывод хэшей UTXO
  • Выходные UTXO в зашифрованном виде, которые может расшифровать только получатель

А также следующие необязательные общедоступные данные:

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

Частные входы:

  • Суммы ввода
  • Расходные ключи, которые содержат закрытые ключи для потраченных UTXO
  • Доказательства членства Меркла
  • Открытые ключи получателя
  • Суммы на выходе

С этими входными данными программа с нулевым разглашением проверяет следующее:

  • Сумма депозита + входная сумма = сумма вывода + выходная сумма, поэтому никто не может создавать токены из воздуха
  • Входные примечания существуют в дереве Меркла с использованием корня Меркла и доказательств членства Меркла.
  • Ключи расходования действительны для входных примечаний, так как только закрытый ключ примечаний может их потратить.
  • Нуллификаторы рассчитываются правильно

Контракт проверяет, чтобы убедиться:

  • Доказательство с нулевым разглашением для транзакции действительно
  • Что он раньше не видел обнулителей, что исключает любые двойные траты.
  • Корень Merkle - это текущий или предыдущий корень Merkle, чтобы пользователи не могли создавать UTXO.
  • Затем смарт-контракт передает токены из кошелька пользователя самому себе, если указана сумма депозита, или передает токены от себя на указанный адрес кошелька пользователя в общедоступных входах, если вместо этого указана сумма вывода. Затем хэши выходных UTXO добавляются в дерево Меркла, чтобы их можно было потратить в будущем.

Адаптировать модули

Модули Adapt - это отдельные расширения смарт-контрактов для протокола RAILGUN, которые могут облегчить такие функции, как частные сделки, NFT и т. Д. Такие модули Adapt могут реализовывать дополнительные функции без раздувания основного кода RAILGUN. Сам интерфейс Adapt ID простой, но мощный.

Интерфейс Adapt ID состоит из двух полей: адреса контракта и параметров.

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

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

Хранение модулей Adapt в отдельных контрактах также гарантирует, что средства пользователей RAILGUN не будут подвергаться риску из-за плохо закодированных или вредоносных модулей Adapt.

Давайте посмотрим, как Алиса и Боб могут использовать модуль Adapt для обмена токенами:

  • Алиса хочет продать 100 долларов США за 100 долларов США, поэтому она создает записку на 100 долларов США, которую можно потратить самостоятельно
    (назовем эту записку А).
  • Боб хочет продать 100 долларов США за 100 долларов США, поэтому он создает записку на 100 долларов США, которую можно потратить самостоятельно (назовите эту записку B).
  • Алиса отправляет ноту A Бобу, а Боб посылает ноту B Алисе.
  • Алиса создает доказательство, которое тратит на запись B с хешем обязательства A в качестве Adapt ID (назовите это доказательство A)
  • Боб создает доказательство, которое тратит на заметку A с хешем обязательства B в качестве Adapt ID (назовите это доказательство B).
  • Боб отправляет доказательство Алисе. Алиса отправляет доказательства Бобу. Либо Алиса, либо Боб отправляют оба доказательства на общий ретранслятор. В этом примере Алиса отправит оба
  • Алиса отправляет оба доказательства в модуль Swap (через Relayer). Модуль Swap проверяет, что Adapt ID доказательства A равен одному из хэшей доказательства B, а Adapt ID доказательства B равен одному из хэшей доказательства A. Если это так, оба доказательства передаются в Система RAILGUN как атомарная транзакция. Вся транзакция отменяется, если какое-либо доказательство не удается.

Сделки своп и RAILGUN DEX

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