Думаю стоит немного описать работу протокола Zerocoin, на базе которого строится Veil.
Zerocoin это протокол, посредством которого создатели пытались достигнуть максимальной анонимности в сети биткоин, заменив устоявшуюся псевдоанонимность. Однако позже осознали, что протокол можно использовать в любой другой криптовалюте.
В криптовалюте, работающей на основе данного протокола, есть две монеты: обычная (Basecoin) и анонимная (Zerocoin, Z-coin).
Весь процесс работы протокола Zerocoin можно разбить на три этапа:
1. Minting (чеканка)
2. Spending (трата)
3. Change (сдача)
Чтобы отправить транзакцию, мы должны «поместить» нашу базовую монету в некую субстанцию, назовем её, магической коробкой. После этого коробка отчеканит анонимную монету с новым серийным номером. Более того в замен нашим монетам мы получим еще и ключ, с помощью которого сможем провести в будущем процедуру доказательства с нулевым разглашением (Zero-knowledge proof, ZKP) во время стадии траты монет (Spending). ZKP поспособствует легкому доказательству того, что именно мы выпустили анонимную монету Zerocoin взамен на деноминацию стандартных монет. Вот тут коробка конвертирует Z-coin обратно в нормальные. Во время этих процедур мы не выдаем никакой чувствительной информации о владельце монет, лишь доказываем факт владения. Так как коробка создает новые монеты, то нигде не остается никаких историй транзакций изначальных базовых монет. Получатель увидит перевод в свежо созданных нормальных монетах.
Стадия Change наступает, когда у нас остается больше анонимным монет, чем нам нужно потратить. Давайте рассмотрим на примере:
Иван имеет на балансе 10 обычных монет, и должен отправить 8 монет Игорю. В протоколе Zerocoin обмен Z-coin происходит кратно 1, 5, 10, 20, 50, 100, 500, 1000, 5000. Именно поэтому мы размещаем заявку на конвертацию 10 монет, а не 8. Магический ящик отправляет 8 монет Игорю, получатель доволен. Но что происходит с остатком в 2 монеты? Первый вариант просто отправить 2 монеты обратно на адрес Ивана, но это становится точкой уязвимости, так как третья сторона сможет провести аналитику трат на основе полученной сдачи, и, возможно, раскроет аноним отправителя. Вторая опция опять обменять нормальные монеты на анонимные, но тут будет проблема оплаты комиссий, что повлечет за собой получение не 2 монет, а 1.
Именно стадией обмена и отличаются многие криптовалюты, построенные на Zerocoin протоколе, потому что тут можно многое изменить.