Проект CryptoNote (“Криптонот”) позиционирует себя как технологию с открытым исходным кодом и концепцию криптовалюты будущего. Разработчики собираются применить передовой математический анализ и инновационные идеи для продвижения криптоанархизма и эгалитаризма во имя изменения глобальной парадигмы. На базе этого алгоритма уже успели появиться такие криптовалюты, как: Bytecoin, Monero, Boolberry, Bitmonero, QuazarCoin, Fantomcoin и, судя по тенденциям, ожидается масса других форков.
CryptoNote предоставляет пользователям полностью анонимную схему оплаты. Она реализована с помощью технологии кольцевой подписи, которая позволяет подписать сообщение от имени группы. Подпись говорит только о том, что транзакция совершена кем-то из группы, но все участники группы неотличимы друг от друга. Никто не в состоянии совершить один и тот же платёж дважды. Используется изменённый протокол обмена Диффи-Хеллмана, сопоставляющий уникальные адреса с открытым ключом.
Каждая совершаемая сделка делает блокчейн в целом ещё более устойчивым к анализу. Используются встроенные инструкции процессора, которые крайне трудно и дорого реализовать в ASIC, но которые прекрасно работают на ПК общего назначения. Сеть изменяется адаптивно, на основе своих предыдущих состояний. На сайте CryptoNote работает форум, есть ссылка на White paper, ссылка на первую криптовалюту на базе данной технолгии – Bytecoin [BCN], запущенную 4 июля 2012 года, (не путать с Bytecoin [BTE] на sha256, который является ничем не примечательным форком Bitcoin). Ещё порадовала кнопка - "Submit your coin", нажав её, вы можете отправить созданную на этом алгоритме криптовалюту на рассмотрение сообщества. Больше на сайте, кроме электронной почты, ничего и нет.
Начнем, с того, что почитаем White paper. В этом документе некий Николас ван Саберхаген сразу берет быка за рога, перечисляя преимущества Bitcoin. По его мнению, к таковым относятся:
- Успешная реализация идеи децентрализованной электронной валюты.
- Как профессионалы, так и обычная публика оценили по достоинству сочетание публичности сделок и концепции доказательства работы.
- Покупателей привлекает низкая комиссия и высокий уровень анонимности, которую обеспечивает электронная валюта. Продавцов, в свою очередь, привлекает предсказуемая и децентрализованная эмиссия.
- Биткойн доказал, что электронная наличность может быть простой, как бумажные деньги и надежной, как банковские карточки.
В то же время, сеть Bitcoin имеет и свои недостатки. Структура не отличается гибкостью, так как для внесения изменений нужно обновить большинство клиентов, использующих этот протокол.
Ради здоровой конкуренции и создания следующей технологии электронной наличности был создан проект CryptoNote.
Приватность и анонимность для электронных денег наиболее важны. Децентрализованные платежи, скрытые от глаз третьего лица - вот что отличает криптовалютные системы от традиционной банковской системы. Т. Окамото и К. Охта описали шесть критериев идеальной электронной наличности. В частности, они включают в себя конфиденциальность: подробности сделки между продавцом и покупателем не должны быть известны никому больше. Для обеспечения конфиденциальности требуется, чтобы электронные деньги удовлетворяли двум требованиям:
-
Неотслеживаемость. Для каждой входящий транзакции все отправители равновероятны.
-
Несвязанность. Для двух любых исходящих транзакций невозможно доказать, что они отправлены одним и тем же лицом.
К сожалению, Биткойн не удовлетворяет первому требованию, так как все действия, происходящие между участниками сети, являются открытыми. Отправителя и получателя можно однозначно идентифицировать. Даже если обмен между участниками происходит не напрямую, изучение истории транзакций раскроет происхождение средств, их получателя и отправителя.
Многие оправданно подозревают, что Биткойн не удовлетворяет и второму требованию. Тщательный анализ блокчейна может выявить связи между пользователями сети Биткойна и их операциями. Хотя ряд методов для подобного анализа вызывают споры, есть подозрение, что из общедоступной базы – блокчейна, можно извлечь большое количество личных данных .
Исходя из этого, можно считать, что Биткойн является не анонимной, а псевдо-анонимной электронной валютой. Пользователи быстро начали искать способы обойти этот недостаток. Возникли методы, основанные на смешивании транзакций и на распределенных решениях. Но как тот, так и другой подход основаны на идее смешивания нескольких транзакций и отправки их через адрес-посредник, то есть требуют наличия доверенного третьего лица.
Более творческий подход предлагают Мейерс и другие криптографы с проектом Zerocoin (“Зерокойн”). Доказательство с нулевым разглашением, лежащее в основе этой системы, использует анонимное доказательство права собственности вместо алгоритма открытого ключа. Тем не менее, авторы признают, что предлагаемые ими изменения в протокол вряд ли будут приняты всеми пользователями.
Сравнение с биткоином
Сатоши Накамото хотел, чтобы один процессор соответствовал одному голосу участника системы. Такая схема защищает сразу от двух возможных проблем. Во-первых, мы можем быть уверенными в 51% честных пользователей. Во-вторых, внесение изменений в систему осуществляется большинством голосов, когда большинство пользователей обновили своё программное обеспечение. Один участник системы не должен иметь значительного перевеса при голосовании над другим участником. Это достигается за счёт высокой стоимости вычислительных устройств.
Но оказалось, что SHA-256 создает большой разрыв между участниками. Этому способствовали сначала переход на графические процессоры, а потом и устройства ASIC. Они получили подавляющий перевес над владельцами процессоров. Теперь вы видим классическую реализацию теоремы Паретто, или правила 20-80: 20% участников контролируют 80% вычислительной мощности всей сети. Это значит, что атака 51% по-прежнему остается теоретически возможной.
Нерегулярность эмиссии
Bitcoin имеет алгоритмически заданную эмиссию: каждый найденный блок производит заданное количество монет. Сатоши Накомото изначально хотел создать более плавную эмиссию, но в результате мы имеем то, что имеем. Примерно раз в 4 года вознаграждение за блок делится пополам. Графики показывает резкое снижение мощности сети при каждом делении награды пополам. Такой период станет прекрасной возможностью для злонамеренной атаки 51%.
Жестко заданные константы
Жестко заданные константы являются частью оригинальной разработки Биткойн. Среди таких констант можно назвать частоту появления блоков, общее количество денежных единиц, количество подтверждений. К сожалению, невозможность изменить многие из этих констант может привести к ужасным последствиям.Хорошим примером станет недавний случай. В начале 2013 года стояло ограничение размера блока в 250 килобайт, что составляет около 10 000 стандартных транзакций. При попытке внесения изменения в кошелек версии 0.8 возникло ветвление на 2 цепочки длинной в 24 блока, и состоялась успешная атака двойной траты средств. Виноват оказался не протокол Биткойн, а база данных, в которой возникла ошибка. Этого бы не случилось, если база данных прошла бы самый простой стресс-тест.
Отчасти константы – это централизация. Несмотря на распределенную природу Биткойна, подавляющее большинство узлов использует версию клиента, разработанную небольшой группой людей. Из-за этого большинство принимает изменения вне зависимости от их правильности. Это уже не раз вызывало горячие дискуссии. Поэтому представляется логичным, что протокол с самоподстраивающимися переменными или с возможностью их настройки пользователями мог бы решить эти проблемы.
Громоздкие скрипты
Система скриптов в сети Биткойн является громоздкой и сложной. Она потенциально позволяет создавать более сложные операции с транзакциями, но многие возможности были отключены по соображениям безопасности, а некоторые – вообще никогда не использовались.
Перечислив недостатки технологии Биткойн, сосредоточимся на преимуществах технологии CryptoNote:
Сделки без оставления следа
Рассмотрим несколько возможных схем, которые удовлетворяют как условию неотслеживаемости, так и условию несвязываемости. Важной особенностью данных схем является их автономность – отправитель не обязан сотрудничать с другими пользователями, или доверять третьей стороне, чтобы сделать транзакцию.
Схема, которую впервые представили Д. Чаум и Э. ван Хейст, относится к азам криптографии. Она позволяет пользователю подписать своё послание от имени группы. Но в этом случае существует доверенная третья сторона (так называемый менеджер группы), который может однозначно идентифицировать подписавшего.
Развитием этой технологии является “кольцевая подпись” - в этом случае нет менеджера группы, схема является автономной. Есть модификации кольцевой подписи, которые позволяют определить, не подписано ли письмо одним и тем же участником дважды. По большей части, работа авторов основана на трудах Э. Фудзисаки и К. Судзуки. Но CryptoNote подчеркивает именно возможность для пользователя производить только одну действительную подпись своим закрытым ключом. Прослеживаемость ослаблена до двух вариантов: секретный ключ для генерации уникальной анонимной подписи и открытый ключ, который может быть связан с ним в случае попытки двойной траты средств.
Алгоритмом базовой подписи является быстрая схема EdDSA. Она основана на дискретном логарифмировании эллиптической кривой. Структура сделки в Байткойнах похожа на структуру сделки в Биткойнах – каждый пользователь может выбрать несколько несвязанных входящих платежей (точек выхода), подписать их соответствующими закрытыми ключами и разослать по сети.
В отличие от модели Биткойна, где пользователь обладает уникальной парой закрытых и открытых ключей, в случае Байткойна отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторых случайных данных. Во входящей транзакции для получателя используется одноразовый открытый ключ, и только получатель средств может использовать ее с помощью своего закрытого ключа. Получатель может потратить средства с использованием кольцевой подписи, сохраняя анонимность кошелька и свои фактические расходы.
В случае Биткойна, один раз опубликованный адрес становится однозначным идентификатором для связи входящих платежей и получателя. Чтобы скрывать свои сделки, нужно каждый раз генерировать новые адреса для каждой входящей транзакции, и не рассказывать об их связи с вами.
По умолчанию, каждый выход CryptoNote является открытым ключом на основе открытого адреса получателя и случайных данных отправителя. Таким образом, для постороннего наблюдателя все сделки являются равноправными. Для обеспечения этой возможности адресу “Криптонот” приходится быть почти вдвое больше, чем адресу Биткойн. Получатель также производит преобразование Диффи-Хеллмана для восстановления секретного ключа.
Предположим, Алиса хочет отправить средства Бобу. На основе адреса Боба и сгенерированного на стороне Алисы случайного числа, вычисляется одноразовый открытый ключ. Боб сверяет эти данные с помощью своего секретного ключа и получает средства, если ключи подходят друг к другу. Обработку сделок Боба и Алисы можно, например, поручить Кэрол. Она не сможет воспользоваться средствами без секретного ключа Боба. Такой подход оправдан, если на стороне Боба не хватает пропускной способности (смартфоны и другие аппаратные кошельки).
Одноразовая кольцевая подпись
Идея проста - пользователь производит подпись, которая проверяется с помощью набора открытых ключей, а не сам уникальный открытый ключ. Идентичность подписавшего является неотличимой от других пользователей, чьи открытые ключи находятся в том же наборе.
Подписавший может рассекретить себя сам, сознательно воспроизведя вторую подпись с использованием той же пары ключей. По умолчанию такая возможность отключена.
Эгалитарное доказательство работы
В этом разделе обосновываются именно такие аппаратные средства вычисления алгоритма. Основная задача – не создавать при майнинге разрыв между пользователями персональных компьютеров (большинство), и владельцами специализированных устройств и видеокарт (меньшинство).
Почему CryptoNote?
Абади и другие криптографы разработали чувствительные к оперативной памяти алгоритмы. Основная идея состоит в выделении большого блока данных (блокнота) в ОЗУ с непредсказуемой последовательностью данных в нём. Блок должен быть достаточно большим , чтобы сделать хранение данных более удобным, чем вычисления их при каждом обращении. Алгоритм также должен предотвращать внутренний параллелизм, то есть N одновременных потоков должны требовать в N раз больше памяти сразу.
Алгоритм Scrypt, хоть и использует память, все же оставляет возможность построения мощных и относительно недорогих вычислительных устройств расчёта этого алгоритма. В случае CryptoNote, в отличие от Scrypt, каждый новый блок (64 байт) зависит от всех предыдущих блоков. Предлагаемый алгоритм требует около 2 Мб оперативной памяти, так как это размер кэш-памяти L3 (на каждое ядро) для современного процессора. В то же время, такой размер оперативной памяти исключает использование ASIC. Графические процессоры могут обрабатывать сотни параллельных потоков, но они тоже не подойдут для вычисления данного алгоритма, ведь память GDDR5 работает значительно медленнее, чем кэш процессора L3.
Дополнительные преимущества:
- Плавно спадающая эмиссия;
- Майнеры самостоятельно регулируют размеры блоков. Если кто-то желает создать огромную сделку с сотнями входов и выходов, или с кольцевой подписью очень большого размера, он может сделать это, заплатив достаточные комиссионные;
- Невероятно малые интервалы времени между блоками;
- Возможность защиты секретным паролем.
Следует различать CryptoNote и CryptoNight.
CryptoNight (“Криптонайт”, а может, даже и “Криптоночь”) – это одна из реализаций протокола CryptoNote (“Криптонот”). На алгоритме “Криптонайт” построен Bytecoin(“Байткойн”).
У него, как и у Darkcoin, есть анонимность, но не требуется создания и поддержания громоздкой системы нод. Одного этого факта достаточно для того, чтобы рассмотреть данную криптовалюту подробнее.
Особенности Bytecoin [BCN]:
- Неотслеживаемые платежи;
- Несвязываемые транзакции;
- Защита от двойной траты монет;
- Иммунитет к какому-либо анализу цепочки блоков;
- Равноправное PoW-подтверждение блока;
- Адаптивные (приспосабливаемые) параметры.
Спецификации Bytecoin [BCN]:
- Алгоритм: CryptoNight. Только для процессоров. Алгоритм, требовательный к памяти.
- Время между блоками: 120 секунд (2 минуты);
- Сложность пересчитывается каждый блок;
- Награда за блок расчитывается по формуле BaseReward = (MSupply - A)/218, где MSupply = (264 - 1) это число наименьших единиц, а “A” - это количество уже выпущенных монет;
- Одна монетка делится до 8 знаков после запятой. Фактическое число неделимых единиц M = 264 – 1;
- Полная эмиссия составит: 18 446 744 073 709 551 616 наименьших единиц (= 184.46 миллиарда BCN).
Здесь вы можете ознакомиться с технической документацией проекта. На этой странице можно скачать кошельки – как для Windows, так и для Mac и Linux, а также исходный код.
Осталось только расшифровать слово “Эгалитарный”, которое так часто используют разработчики. Оно произошло от французского слова égalité — равенство) — концепция, в основе которой лежит идея, предполагающая создание общества с равными политическими, экономическими и правовыми возможностями всех членов этого общества. Противоположность элитаризму. Эгалитаризм занимает важное место в трудах Платона, Аристотеля, Гоббса, Локка, Руссо, Бабёфа и других мыслителей.
Неоконсерваторы отрицательно относятся к этой идее, считая её противоречащей природе человека.
Любопытной особенностью технологии CryptoNote оказалось то, что после появления платформы в публичной сфере практически сразу стали появляться форки Bytecoin. Вероятно, это говорит о хорошем потенциале этой технологии. Не обошлось и без шуточного форка DuckCoin, местного аналога Dogecoin. Так же интересная история получилась с форком BitMonero: изначальный создатель этого форка имел неосторожность не прислушиваться к чаяниям местного комьюнити, в то время как форк еще только набирал популярность, и инициативу в этом форке перехватили местные завсегдатаи. Правда они пока не показывают глубокого понимания технологии и в основном занимаются тем, что копируют коммиты из основного репозитория байткойна, но при этому довольно активно пиарятся. Существенными техническими отличиями выделяется форк Boolberry (“Буллбери”). Разработчики ввели целый ряд довольно оригинальных инноваций, о которых стоит кратко упомянуть:
Blockchain-based PoW
Разработчики Boolberry утверждают, что нашли оригинальный выход из проблемы тяжелых хешфункций, которые работают на больших скретчпадах. Скретчпад - это термин, которым обозначают участок памяти, используемый хешфункцией для вычислений. Часто надежность современных PoW хешфункций ассоциируется с размером скретчпада - чем он больше, тем сложнее реализовать эффективное аппаратное исполнение.
Вместо того, чтобы для каждого подсчета хешфункции заново создавать и “прочесывать” весь скретчпад, они формируют один общий скретчпад на основе данных из блокчейна (хеши блоков, одноразовые ключи сoinbase, merkleroot), таким образом, что на заданной высоте блокчейна у любой ноды имеется идентичный скретчпад, который понемногу увеличивается с каждым новым блоком. В качестве хеша взята модная нынче хешфункция keccak, модифицированная таким образом, чтобы в процессе работы делать большое количество обращений к скретчпаду по псевдослучайным адресам.
Получается, что процесс проверки хеша является крайне быстрым, а процесс майнинга что ни на есть memory-hard, что принято считать неплохой защитой от ASIC. По информации с сайта разработчиков, при увеличении скретчпада до 100MB(т.е. значительно больше кеш памяти процессора) хешфункция замедляется в три раза, что указывает на действительную зависимость алгоритма от операций с памятью.
Выходы с гарантированной анонимностью
Эта особенность усиливает такое свойство как неотслеживаемость (unlikability) транзакций: в классической схеме CN, когда кошелек набирает выходы в кольцевую подпись, он не может гарантировать, что эти выходы в будущем не будут потрачены не анонимно(если владельцы используют их в своих транзакциях без замешивания, то их смысл в данной кольцевой подписи теряется, т.к. становится очевидным, что они здесь только для "массовки"). Разработчики Boolberry ввели дополнительный атрибут, который может задать политику использования выхода: классическая(relaxed), выход гарантированно должен использоваться без замешивания, и выход гарантированно должен использоваться с замешиванием не меньше чем с n другими выходами. При использовании в кольцевой подписи выходов с гарантированным замешиванием гарантируется, что неотслеживаемость такой транзакции в будущем не скомпрометируется.
Идентификация транзакций по префиксу
Утверждается, что это позволит сократить размер блокчейна на 30% (тут явно имеется в виду та часть бокчейна, которая находится внутри чекпоинтов) путем выбрасывания кольцевых подписей из транзакций.
Псевдонимы адресов кошельков
Любой адрес в Boolberry можно привязать к символическому имени, которое может быть использовано после этого на любом из клиентов. Регистрация возможна только в блоке, при этом в каждом блоке можно зарегистрировать или перерегистрировать только одно имя, уникальность имен гарантируется криптовалютным ядром. Таким образом, сейчас иметь собственный алиас может позволить себе только майнер, который способен самостоятельно найти блок. Скорее всего, услуга по регистрации алиасов позже станет прерогативой пулов.
Однако, чудесные особенности Boolberry создают и некоторые сложности: из-за необычного подхода к PoW Boolberry испытывает ряд технических проблем с реализацией пулов, так как классические пулы не умеют доставлять скретчпад. На момент написания статьи количество поддерживающих Boolberry пулов было заметно меньшим чем у Bytecoin/Monero.
Еще одной особенностью этого проекта является модель монетизации: разработчикам в каждом 720-м блоке переводится вознаграждение в соответствии с голосами майнеров, максимально возможное вознаграждение 1%. Разработчики Boolberry так же заявляют, что 10% от этой суммы перечисляется CryptoNote, наверное в качестве авторских отчислений.
Итак, могут ли Bytecoin, Boolberry, Monero и другие потомки CryptoNote быть кому-либо интереснее, чем Bitcoin? Начнем с того, что есть такие люди, которым общество скретчпадов, эллиптических кривых и точек A и A’ на них интереснее общества хмельных друзей и веселых подруг, и более сложная модель CryptoNote по сравнению с Bitcoin не только не отпугнет, но и вызовет гораздо больший интерес.
Математически доказанная принудительная анонимность может заинтересовать тех, кто не хочет, чтобы кто угодно мог порыться в их транзакциях.
Будет ли интересной процедура вознаграждения для майнеров? Вот один из самых главных вопросов, от которого зависит действительно широкое принятие монеты. Так как майнить на ПК может каждый, сеть ПК для майнинга может быть гораздо более широкой, чем сеть ASIC для Bitcoin. С другой стороны, чувствуется возвращение в эпоху, когда один или несколько суперкомпьютеров могут повлиять на сеть, которой нужно еще дорасти до масштабов Bitcoin. Так что вопрос остаётся открытым.