rateico
Главная / Обзоры / Zcash — быстро, анонимно и легко
100 point scale
Автор icopalette

Zcash — быстро, анонимно и легко

Sapling –это обновление в сети Zcash, которое повышает анонимность проведения транзакций и повышает их скорость обработки. Sapling уменьшает время подтверждения транзакции на 90% и снижает объем требуемой памяти до 97%.

Sapling Addresses

Использование нового вида адресов, уменьшает время (с 40 секунд до 2.3 секунд), и также уменьшает требуемую мощность для создания доказательства (с 1,5 ГБ до 40 МБ). Использование Сэплинг адресов экономит 90% времени на обработку и 97% для хранения данных. Новые адреса имеют 78 символов, вместо 95.

Элиптическая кривая BLS12–381

Заметное сокращение времени на обработку транзакции, при использовании BLS12–381

Главной сложностью при создании доказательства zk-SNARK — это нахождение многочленов на элиптической кривой.

Для достижения более оптимальных вычислений, Zcash уходит от использования алгоритма Bos-Coster в сторону libsnark, который является более эффективным, чем Bos-Coster. Основная проблема при проверке транзакции — это загрузка проверочного ключа в память перед созданием доказательства, а libsnarkизбегает этой загрузки.

Как происходят транзакции с использованием Shielded Addresses в Zcash

Чтобы учитывать все монеты, которые циркулируют в сети Zcash, балансы представлены как «записи», которые хранят баланс пользователя, это простое представление UTXO. Для простоты объяснения мы видим баланс как «банкнота» со значением 1 BTC, и адрес не может хранить более одной банкноты. Из этого следует, что баланс адреса состоит из банкноты, которая отображает его актуальный баланс.

Предположим, что Алиса хочет отправить 1 BTC на адрес Боба. На все узлы она отправляет сообщение с содержанием «Переместить 1 BTC с адреса Pk1 на адрес Pk4». Она подписывает сообщение своим приватным ключом Sk1, который соответствует адресу Pk1 и таким образом доказывает узлам, что она имеет право на перемещение денег с адреса Pk1. Как только узел проверит достоверность подписи и наличие 1 BTC на адресе Pk1, его база данных обновится, и у адреса Pk1 не будет 1 BTC, а у Pk4 прибавится 1 BTC.

Теперь представим, что у каждой банкноты есть рандомный «серийный номер» — т.е уникальный индекс в базе данных. Этот параметр будет иметь ключевую роль в работе системы, и баланс будет отображаться как Pk1 = r1.

Для безопасности, на узлах должны хранится «зашифрованные данные», или хеши банкнот. Т.е баланс будет выглядеть так: H1 = Hash(Note1).

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

Здесь главная задача — отличить израсходованные монеты, от неизрасходованных, при этом не нарушая анонимность пользователей. И здесь вступают «нейтральные хеши» — Nullifier set.

Как обрабатывается транзакция

Теперь представим, что у Алисы есть Note1 и она хочет отправить его Бобу с открытым ключом Pk4. Алиса меняет состояние своего Note1 на «недействительны» обозначив в сети ее Nullifier set, и одновременно с этим создает новую действительную банкноту, которая будет принадлежать Бобу. Для простоты опишем это в 4 шага:

  1. Алиса выбирает случайный номер для этой банкноты и приписывает ей его номер, получаем следующий вид транзакции: Note4 = (Pk4, r4);
  2. Отправляет Note4 Бобу;
  3. Эти данные об изменении состояния сети отправляются на узлы в формате: Note1, nf2 = HASH(r1);
  4. Отправляет новый хеш H4 = HASH(Note4) всем узлам.

Теперь, когда узел получил все данные, он начинает проверять, были ли эта банкнота уже потрачена в сети, узел проверяет это путем анализа всех использованных Nullifier set и, если он нигде не встречался, то узел добавляет его в список использованных Nullifier set и тем самым подтверждая процесс передачи 1 BTC между Алисой и Бобом.

но секундочку, мы же проверили и узнали, что Note1 не была потрачена ранее… но мы не проверили, принадлежит ли она Алисе. На самом деле, мы не проверили, является ли она вообще ‘настоящей’, а точнее, содержится ли ее хеш в хеш-таблице узла. Чтобы решить эту проблему простым способом, Алисе нужно вместо хеша опубликовать Note1, но в таком случае все будут знать, что Note1 принадлежал Алисе, и тут мы используем zero-knowledge proof.

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

  1. Хеш банкноты Note1= (Pk1, r1) находится в списке хешированных банкнот;
  2. Sk1 является приватным ключом, который соответствует Pk1 (значит, тот, кто знает его, является полноправным владельцом Note1);
  3. Хеш r1 является nf2 (следовательно, nf2 — это Nullifier set Note1, который не содержится в списке использованных Nullifier set, а значит, его можно передавать).

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

Ключевые параметры, которые не описаны выше:

  • Хешированные банкноты должны храниться не просто в виде списка, а в виде дерева Меркла. Это играет огромную роль для эффективной работы доказательств с нулевым разглашением. Более того, необходимо хранить скрытое вычисление и связывающее обязательство банкноты, а не просто ее хеш-код.
  • Nullifier set должен быть вычислен более сложным путем, нежели описанным нами, чтобы обеспечить конфиденциальность получателя по отношению к отправителю.

Заключение

🚀Вы — основатель блокчейн-стартапа?
Опишите ваш проект, прикрепите презентацию 
и подайте заявку на инвестиции уже сегодня

Данная статья носит исключительно ИНФОРМАЦИОННЫЙ характер. Настоящая статья ни в коей мере не является предложением или приглашением к предложению купить или продать какие-либо криптовалюты, обсуждаемые здесь. Инвесторы должны провести независимую проверку всех криптовалют, обсуждаемых в этой статье, и сложить мнение о соответствующем рынке до принятия любого инвестиционного решения. Ни один из авторов, соавторов или кто-либо еще, связанный с GT Blockchain Investments никоим образом не может нести ответственность за использование вами информации, содержащейся в данной статье.

 

Источник: GT Blockchain Investments

Комментарии / отзывы