Skip to main content

Приватный кошелёк и пользователь

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

Приватные транзакции

Приватные переводы представляют собой обычные транзакции Solana. Среда выполнения Solana проверяет подписи и вызывает программу конфиденциальности Solana, которая проверяет ZK-доказательство, не раскрывая зашифрованное состояние. Типичный конфиденциальный перевод занимает около 927 байт, что значительно меньше ограничения v1 в 4096 байт.
Для приведённого в спецификации примера конфиденциального перевода с 2 входами и 3 выходами. Исходный код: спецификация · xtask/src/main.rsСм. структуру транзакции Solana v1.

RPC

Один предоставляет доступ к Solana RPC, индексатору и удалённому генератору доказательств.
  • Solana RPC — возвращает публичный баланс и отправляет транзакции в сеть Solana.
  • Индексатор — предоставляет зашифрованное состояние, необходимое кошельку для чтения балансов и создания приватных транзакций. Кроме того, любой пользователь может без разрешения запустить собственный индексатор в качестве резервного варианта.
  • Генератор доказательств — доказательства с нулевым разглашением можно создать локально или на сервере генерации доказательств за миллисекунды в зависимости от транзакции и оборудования. Helius использует GPU для генерации доказательств.
Для пользовательских колец доступны дополнительные необязательные функции, включая отдельный Ring RPC, который предоставляет расшифрованные балансы и историю с помощью общего ключа просмотра или настроенного ключа аудитора кольца. Кроме того, для анонимных транзакций используется ретранслятор, чтобы пользователь не отображался как плательщик комиссии за транзакцию.

Конфиденциальность и программы Solana

Программа конфиденциальности Solana (SPP) — основная программа, которая проверяет и выполняет все переходы приватного состояния. Программы пользовательских колец и ZK-программы Solana добавляют логику соответствия требованиям или логику приложения, а затем вызывают SPP для обновления приватного состояния. Другие программы Solana могут взаимодействовать с этими программами через CPI в рамках той же транзакции и с учётом ограничений транзакций Solana, например ограничения глубины CPI, равного 5.

Программа конфиденциальности Solana (SPP)

Программа конфиденциальности Solana проверяет доказательства с нулевым разглашением и обновляет приватное состояние. Используйте её для внесения токенов, перевода приватных балансов и вывода токенов на публичные аккаунты. Другие программы вызывают SPP через CPI для выполнения переходов приватного состояния.

Программа пользовательского кольца

Программа пользовательского кольца определяет разрешения на переводы и дополнительные полномочия аналогично Token-2022. Используйте её, чтобы настроить аудиторов, потребовать подпись дополнительного подписанта или разрешить уполномоченной стороне замораживать балансы. Она проверяет ZK-доказательство для применения собственной логики соответствия требованиям, а затем вызывает SPP для обновления приватного состояния.

ZK-программа Solana

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

Дерево Меркла состояния и Forester

Кольцо по умолчанию и все пользовательские кольца хранят приватное состояние в аккаунте дерева Меркла состояния, который обслуживает узел Forester. Аккаунты деревьев фиксируют приватное состояние, не сохраняя его в отдельных аккаунтах Solana. Поэтому для чтения балансов и истории транзакций используйте специальные методы RPC индексатора, например getShieldedTransactionsByTags, вместо методов аккаунтов Solana, таких как getAccountInfo. См. разделы Чтение приватного баланса и Чтение истории приватных транзакций.

Пропускная способность

Дерево хранится в одном доступном для записи аккаунте Solana. Приватные переводы, которые записывают данные в этот аккаунт, совместно используют установленное Solana ограничение блокировки записи для одного аккаунта в 12 миллионов CU на блок. Различные UTXO можно расходовать независимо, но транзакции, записывающие данные в одно дерево, всё равно совместно используют блокировки аккаунта Solana и ограничения вычислений. Конфиденциальный перевод потребляет приблизительно 140 000 CU согласно тесту производительности инструкции. Таким образом, одно дерево поддерживает около 86 приватных переводов на блок, или около 215 транзакций в секунду при текущем времени блока Solana около 400 миллисекунд. Для повышения пропускной способности протокол может добавлять дополнительные деревья. Каждое дерево представляет собой отдельный доступный для записи аккаунт с собственным вычислительным бюджетом для аккаунта, поэтому транзакции в разных деревьях не конкурируют за один бюджет блокировки записи.

Интерфейс SPL

Интерфейс SPL обеспечивает взаимодействие между публично и приватно хранимыми токенами. Это отдельный эскроу для каждого минта, который можно создать без разрешения, но только один раз для каждого минта.
  • При внесении SOL и активов SPL на приватный баланс принадлежащий программе конфиденциальности Solana интерфейсный PDA помещает токены в эскроу и создаёт UTXO, принадлежащие пользователю.
  • При выводе на публичный баланс существующие UTXO помечаются как потраченные, а токены переводятся на аккаунты токенов Solana.
Если у минта ещё нет интерфейсного PDA, первое внесение может включать инструкцию по созданию интерфейсного PDA в той же транзакции.

Подробнее

Overview

Кольца, гарантии конфиденциальности и последовательность обработки транзакций.

Private State and UTXOs

Как хранятся и расходуются приватные балансы.

Encryption and Privacy Guarantees

Как шифруются активы и какую роль играет защищённая пара ключей.

Custom Enterprise Rings

Узнайте, как настроить пользовательское кольцо.

Не нашли то, что искали?

Свяжитесь с нами! Telegram | Электронная почта | Контакты