CriptoNota v2.0

Автор Nicolas van Saberhagen · 2013

Представленная здесь работа — это вайтпейпер CryptoNote v2.0 Николаса ван Сабергагена (2013), описывающий криптографические основы, на которых построен Monero. Это не специфичный для Monero вайтпейпер — Monero запустился в 2014 году как форк эталонной реализации CryptoNote (Bytecoin) и с тех пор значительно эволюционировал за пределы исходного протокола.

Введение

«Bitcoin» [1] представляет собой успешную реализацию концепции электронных денег p2p. оба профессионалы и широкая общественность оценили удобное сочетание публичные транзакции и proof-of-work как модель доверия. Сегодня пользовательская база электронных денег растет устойчивыми темпами; клиентов привлекают низкие комиссии и обеспечиваемая анонимность электронными деньгами, и торговцы ценят ее прогнозируемую и децентрализованную эмиссию. Bitcoin имеет эффективно доказал, что электронные деньги могут быть такими же простыми, как бумажные деньги, и такими же удобными, как кредитные карты. К сожалению, Bitcoin имеет несколько недостатков. Например, распределенная система природа негибка и не позволяет внедрять новые функции до тех пор, пока почти все пользователи сети не обновят свои клиенты. Некоторые критические недостатки, которые невозможно быстро исправить, отпугивают Bitcoin. широкое распространение. В таких негибких моделях эффективнее развернуть новый проект. вместо того, чтобы постоянно исправлять первоначальный проект. В этой статье мы изучаем и предлагаем решения основных недостатков Bitcoin. Мы верим что система, учитывающая предлагаемые нами решения, приведет к здоровой конкуренции среди различных электронных денежных систем. Мы также предлагаем собственные электронные деньги «CryptoNote», имя, подчеркивающее следующий прорыв в области электронных денег.

Introducción

“Bitcoin” [1] ha sido una implementación exitosa del concepto de efectivo electrónico p2p. ambos Los profesionales y el público en general han llegado a apreciar la conveniente combinación de transacciones públicas y proof-of-work como modelo de confianza. Hoy en día, la base de usuarios de efectivo electrónico está creciendo a un ritmo constante; Los clientes se sienten atraídos por las tarifas bajas y el anonimato proporcionado. por el dinero electrónico y los comerciantes valoran su emisión prevista y descentralizada. Bitcoin tiene demostrado efectivamente que el efectivo electrónico puede ser tan simple como el papel moneda y tan conveniente como tarjetas de crédito. Desafortunadamente, Bitcoin sufre varias deficiencias. Por ejemplo, el sistema distribuido La naturaleza es inflexible, impidiendo la implementación de nuevas funciones hasta que casi todos los usuarios de la red actualicen sus clientes. Algunas fallas críticas que no se pueden solucionar rápidamente disuaden a Bitcoin propagación generalizada. En modelos tan inflexibles, es más eficiente implementar un nuevo proyecto en lugar de arreglar perpetuamente el proyecto original. En este artículo estudiamos y proponemos soluciones a las principales deficiencias de Bitcoin. creemos que un sistema que tenga en cuenta las soluciones que proponemos conducirá a una competencia sana entre diferentes sistemas de efectivo electrónico. También proponemos nuestro propio efectivo electrónico, “CryptoNote”, un nombre que enfatiza el próximo avance en efectivo electrónico.

Bitcoin Недостатки и возможные решения

2 Bitcoin недостатки и некоторые возможные решения 2.1 Отслеживаемость транзакций Конфиденциальность и анонимность являются наиболее важными аспектами электронных денег. Одноранговые платежи стремятся быть скрытыми от взглядов третьих лиц, что является явной разницей по сравнению с традиционными банковское дело. В частности, Т. Окамото и К. Охта описали шесть критериев идеальных электронных денег: который включал «конфиденциальность: связь между пользователем и его покупками должна быть неотслеживаемой». кем угодно» [30]. Из их описания мы получили два свойства, которые полностью анонимны. Модель электронных денег должна удовлетворять требованиям, изложенным Окамото. и Охта: Неотслеживаемость: для каждой входящей транзакции все возможные отправители равновероятны. Несвязываемость: для любых двух исходящих транзакций невозможно доказать, что они были отправлены на тот же человек. К сожалению, Bitcoin не удовлетворяет требованию неотслеживаемости. Поскольку все транзакции, происходящие между участниками сети, являются публичными, любая транзакция может быть 1 КриптоНота v 2.0 Николас ван Саберхаген 17 октября 2013 г. 1 Введение «Bitcoin» [1] представляет собой успешную реализацию концепции электронных денег p2p. оба профессионалы и широкая общественность оценили удобное сочетание публичные транзакции и proof-of-work как модель доверия. Сегодня пользовательская база электронных денег растет устойчивыми темпами; клиентов привлекают низкие комиссии и обеспечиваемая анонимность электронными деньгами, и торговцы ценят ее прогнозируемую и децентрализованную эмиссию. Bitcoin имеет эффективно доказал, что электронные деньги могут быть такими же простыми, как бумажные деньги, и такими же удобными, как кредитные карты. К сожалению, Bitcoin имеет несколько недостатков. Например, распределенная система природа негибка и не позволяет внедрять новые функции до тех пор, пока почти все пользователи сети не обновят свои клиенты. Некоторые критические недостатки, которые невозможно быстро исправить, отпугивают Bitcoin. широкое распространение. В таких негибких моделях эффективнее развернуть новый проект. вместо того, чтобы постоянно исправлять первоначальный проект. В этой статье мы изучаем и предлагаем решения основных недостатков Bitcoin. Мы верим что система, учитывающая предлагаемые нами решения, приведет к здоровой конкуренции среди различных электронных денежных систем. Мы также предлагаем собственные электронные деньги «CryptoNote», имя, подчеркивающее следующий прорыв в области электронных денег. 2 Bitcoin недостатки и некоторые возможные решения 2.1 Отслеживаемость транзакций Конфиденциальность и анонимность являются наиболее важными аспектами электронных денег. Одноранговые платежи стремятся быть скрытыми от взглядов третьих лиц, что является явной разницей по сравнению с традиционными банковское дело. В частности, Т. Окамото и К. Охта описали шесть критериев идеальных электронных денег: который включал «конфиденциальность: связь между пользователем и его покупками должна быть неотслеживаемой». кем угодно» [30]. Из их описания мы получили два свойства, которые полностью анонимны. Модель электронных денег должна удовлетворять требованиям, изложенным Окамото. и Охта: Неотслеживаемость: для каждой входящей транзакции все возможные отправители равновероятны. Несвязываемость: для любых двух исходящих транзакций невозможно доказать, что они были отправлены на тот же человек. К сожалению, Bitcoin не удовлетворяет требованию неотслеживаемости. Поскольку все транзакции, происходящие между участниками сети, являются публичными, любая транзакция может быть 1 3 Bitcoin определенно не обеспечивает «неотслеживаемость». Когда я отправляю вам BTC, указывается кошелек, с которого он отправляется. безвозвратно проштамповано на blockchain. Вопроса о том, кто отправил эти средства, не возникает. потому что их может отправить только тот, кто знает секретные ключи.однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов оспаривается [25], есть подозрение, что из него можно извлечь много скрытой личной информации. общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец, это же голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов доспаривается [25], есть подозрение, что много скрытой личной информации может быть извлечено из общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец, это же голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 4 Предположительно, если каждый пользователь сохранит свою анонимность, всегда генерируя новый адрес за КАЖДЫЙ полученный платеж (что абсурдно, но технически «правильный» способ сделать это), и если бы каждый пользователь поддерживал анонимность всех остальных, настаивая на том, чтобы они никогда не отправляли средства на один и тот же адрес BTC дважды, то Bitcoin всё равно лишь случайно передаст тест на несвязность. Почему? Данные о потребителях можно использовать для того, чтобы постоянно получать поразительные сведения о людях. См., например, http://www.applieddatalabs.com/content/target-knows-it-shows. Теперь представьте, что это произойдет через 20 лет, и представьте, что Target не просто знал о ваших покупательских привычках в Target, но они добыли blockchain для ВСЕХ ВАШИ ЛИЧНЫЕ ПОКУПКИ С ВАШИМ КОШЕЛЬКОМ COINBASE В ПРОШЛОМ ДВЕНАДЦАТЬ ЛЕТ. Они скажут: «Эй, приятель, возможно, ты захочешь сегодня вечером купить лекарство от кашля, но ты не будешь». завтра почувствуй себя хорошо». Это может быть не так, если многосторонняя сортировка используется правильно. См., например, этосообщение в блоге: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Я не совсем уверен в математических расчетах, но... по одной статье за раз, верно? Требуется цитирование. Хотя протокол Zerocoin (автономный) может оказаться недостаточным, протокол Zerocash Протокол, похоже, реализовал транзакции размером 1 КБ. Этот проект поддерживается конечно, американские и израильские военные, так что кто знает, насколько он надежен. С другой стороны С другой стороны, никто не хочет иметь возможность тратить средства без надзора больше, чем военные. http://zerocash-project.org/ Я не уверен... см., например, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Цитирую разработчика Cryptonote Мориса Планка (предположительно псевдоним) из cryptonote форум: «Зерокоин, Зеркэш. Это самая передовая технология, надо признать. Да, цитата выше взято из анализа предыдущей версии протокола. Насколько мне известно, это не 288, а 384 байта, но в любом случае это хорошая новость. Они использовали совершенно новую технологию под названием SNARK, у которой есть определенные недостатки: например, большая исходная база публичных параметров, необходимых для создания подписи (более 1 ГБ) и значительное время, необходимое для создания транзакции (более минуты). Наконец, они используют молодая криптовалюта, о которой я упомянул как о спорной идее: https://forum.cryptonote.org/viewtopic.php?f= » — Морис П. Четверг, 3 апреля 2014 г., 19:56 Функция, выполняемая в ЦП и не подходящая для графического процессора, FPGA или ASIC. расчет. «Загадка», используемая в proof-of-work, называется функцией ценообразования, функцией затрат или функция головоломки.

однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов оспариваемый [25], есть подозрение, что из него можно извлечь много скрытой личной информации. общедоступная база данных. Неспособность Bitcoin удовлетворить двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством голосов как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец то же самое голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Следовательно, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов доспаривается [25], есть подозрение, что много скрытой личной информации может быть извлечено из общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец то же самое голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 Комментарии на странице 2

Bitcoin Inconvenientes y posibles soluciones

2 Bitcoin inconvenientes y algunas posibles soluciones 2.1 Trazabilidad de transacciones La privacidad y el anonimato son los aspectos más importantes del efectivo electrónico. Pagos entre pares buscan ocultarse de la vista de terceros, una clara diferencia en comparación con los tradicionales banca. En particular, T. Okamoto y K. Ohta describieron seis criterios para el efectivo electrónico ideal, que incluía “privacidad: la relación entre el usuario y sus compras debe ser imposible de rastrear por cualquiera” [30]. De su descripción, derivamos dos propiedades que un totalmente anónimo El modelo de efectivo electrónico debe cumplir para cumplir con los requisitos descritos por Okamoto. y Ohta: Irrastreabilidad: para cada transacción entrante todos los posibles remitentes son equiprobables. Desvinculación: para dos transacciones salientes es imposible demostrar que fueron enviadas a la misma persona. Desafortunadamente, Bitcoin no cumple con el requisito de imposible trazabilidad. Dado que todas las transacciones que tienen lugar entre los participantes de la red son públicas, cualquier transacción puede ser 1 CriptoNota v 2.0 Nicolas van Saberhagen 17 de octubre de 2013 1 Introducción “Bitcoin” [1] ha sido una implementación exitosa del concepto de efectivo electrónico p2p. ambos Los profesionales y el público en general han llegado a apreciar la conveniente combinación de transacciones públicas y proof-of-work como modelo de confianza. Hoy en día, la base de usuarios de efectivo electrónico está creciendo a un ritmo constante; Los clientes se sienten atraídos por las tarifas bajas y el anonimato proporcionado. por el dinero electrónico y los comerciantes valoran su emisión prevista y descentralizada. Bitcoin tiene demostrado efectivamente que el efectivo electrónico puede ser tan simple como el papel moneda y tan conveniente como tarjetas de crédito. Desafortunadamente, Bitcoin sufre varias deficiencias. Por ejemplo, el sistema distribuido La naturaleza es inflexible, impidiendo la implementación de nuevas funciones hasta que casi todos los usuarios de la red actualicen sus clientes. Algunas fallas críticas que no se pueden solucionar rápidamente disuaden a Bitcoin propagación generalizada. En modelos tan inflexibles, es más eficiente implementar un nuevo proyecto en lugar de arreglar perpetuamente el proyecto original. En este artículo estudiamos y proponemos soluciones a las principales deficiencias de Bitcoin. creemos que un sistema que tenga en cuenta las soluciones que proponemos conducirá a una competencia sana entre diferentes sistemas de efectivo electrónico. También proponemos nuestro propio efectivo electrónico, “CryptoNote”, un nombre que enfatiza el próximo avance en efectivo electrónico. 2 Bitcoin inconvenientes y algunas posibles soluciones 2.1 Trazabilidad de transacciones La privacidad y el anonimato son los aspectos más importantes del efectivo electrónico. Pagos entre pares buscan ocultarse de la vista de terceros, una clara diferencia en comparación con los tradicionales banca. En particular, T. Okamoto y K. Ohta describieron seis criterios para el efectivo electrónico ideal, que incluía “privacidad: la relación entre el usuario y sus compras debe ser imposible de rastrear por cualquiera” [30]. De su descripción, derivamos dos propiedades que un totalmente anónimo El modelo de efectivo electrónico debe cumplir para cumplir con los requisitos descritos por Okamoto. y Ohta: Irrastreabilidad: para cada transacción entrante todos los posibles remitentes son equiprobables. Desvinculación: para dos transacciones salientes es imposible demostrar que fueron enviadas a la misma persona. Desafortunadamente, Bitcoin no cumple con el requisito de imposible trazabilidad. Dado que todas las transacciones que tienen lugar entre los participantes de la red son públicas, cualquier transacción puede ser 1 3 Bitcoin definitivamente falla en "irrastreabilidad". Cuando te envío BTC, la billetera desde donde se envía está irrevocablemente estampado en el blockchain. No hay dudas sobre quién envió esos fondos, porque sólo el conocedor de las claves privadas puede enviarlas.rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos en disputa [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron los “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos recuestionado [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron los “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 4 Presumiblemente, si cada usuario contribuye a su propio anonimato generando siempre una nueva dirección por CADA pago recibido (lo cual es absurdo pero técnicamente es la forma "correcta" de hacerlo), y si cada usuario ayudara al anonimato de los demás insistiendo en que nunca envíen fondos a la misma dirección BTC dos veces, entonces Bitcoin seguiría solo circunstancialmente pasando el prueba de desvinculación. ¿Por qué? Los datos de los consumidores se pueden utilizar para calcular una cantidad asombrosa sobre las personas todo el tiempo. Véase, por ejemplo, http://www.applieddatalabs.com/content/target-knows-it-shows Ahora, imaginemos que esto ocurre dentro de 20 años y además imaginemos que Target no sólo supiera sobre sus hábitos de compra en Target, pero habían estado extrayendo el blockchain para TODO TUS COMPRAS PERSONALES CON TU COINBASE WALLET DEL PASADO DOCE AÑOS. Dirán: "oye amigo, quizás quieras comprar un medicamento para la tos esta noche, no lo harás". Me sentiré bien mañana." Es posible que este no sea el caso si la clasificación multipartita se aprovecha correctamente. Véase, por ejemplo, estepublicación de blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ No estoy totalmente convencido de las matemáticas de eso, pero... un papel a la vez, ¿verdad? Se necesita cita. Mientras que el protocolo Zerocoin (independiente) puede ser insuficiente, el protocolo Zerocash El protocolo parece haber implementado transacciones de 1 kb. Ese proyecto cuenta con el apoyo de los ejércitos estadounidense e israelí, por supuesto, así que quién sabe acerca de su solidez. por el otro Por otro lado, nadie quiere más que los militares poder gastar fondos sin supervisión. http://zerocash-project.org/ No estoy convencido... ver, por ejemplo, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Citando a un desarrollador de Cryptonote, Maurice Planck (presumiblemente un seudónimo) de Cryptonote foros: "Cerocoin, Zerocash. Esta es la tecnología más avanzada, debo admitir. Si, la cita Lo anterior proviene del análisis de la versión anterior del protocolo. Que yo sepa, no es 288, pero 384 bytes, pero de todos modos esta es una buena noticia. Usaron una técnica completamente nueva llamada SNARK, que tiene ciertas desventajas: por ejemplo, Gran base de datos inicial de parámetros públicos necesarios para crear una firma (más de 1 GB) y Tiempo significativo requerido para crear una transacción (más de un minuto). Finalmente, están usando un criptografía joven, que he mencionado como una idea discutible: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. jueves 03 de abril de 2014 7:56 pm Una función que se realiza en la CPU y no es adecuada para GPU, FPGA o ASIC cálculo. El "rompecabezas" utilizado en proof-of-work se conoce como función de fijación de precios, función de costos o función de rompecabezas.

rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos en disputa [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales de Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos recuestionado [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales de Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work. esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 Comentarios en la página 2

Технология CryptoNote

Теперь, когда мы рассмотрели ограничения технологии PH_0000, мы сосредоточимся на представление возможностей CryptoNote.

La tecnología CryptoNote

Ahora que hemos cubierto las limitaciones de la tecnología Bitcoin, nos concentraremos en presentando las características de CryptoNote.

Неотслеживаемые транзакции

В этом разделе мы предлагаем схему полностью анонимных транзакций, обеспечивающую как неотслеживаемость, так и невозможность отслеживания. и условия несвязности. Важной особенностью нашего решения является его автономность: отправитель не обязан сотрудничать с другими пользователями или доверенной третьей стороной для совершения своих транзакций; следовательно, каждый участник производит прикрывающий трафик независимо. 4.1 Обзор литературы Наша схема основана на криптографическом примитиве, называемом групповой подписью. Впервые представлено Д. Чаум и Э. ван Хейст [19], позволяет пользователю подписать свое сообщение от имени группы. После подписания сообщения пользователь предоставляет (в целях проверки) не свой единственный публичный 1Это так называемый «мягкий лимит» — ограничение эталонного клиента на создание новых блоков. Жесткий максимум возможный размер блока составлял 1 МБ 4 их при необходимости, что вызывает основные недостатки. К сожалению, трудно предсказать, когда константы, возможно, придется изменить, а их замена может привести к ужасным последствиям. Хорошим примером жестко запрограммированного изменения лимита, приводящего к катастрофическим последствиям, является блок ограничение размера установлено на 250 КБ1. Этого лимита было достаточно для проведения около 10 000 стандартных транзакций. В В начале 2013 года этот предел был почти достигнут, и было достигнуто соглашение об увеличении предел. Изменение было реализовано в версии кошелька 0.8 и закончилось разделением цепочки на 24 блока. и успешная атака двойной траты [9]. Хотя ошибка была не в протоколе Bitcoin, а скорее, в ядре базы данных его можно было бы легко обнаружить с помощью простого стресс-теста, если бы было отсутствие искусственно введенного ограничения размера блока. Константы также действуют как форма точки централизации. Несмотря на одноранговый характер Bitcoin, подавляющее большинство узлов используют официальный эталонный клиент [10], разработанный небольшая группа людей. Эта группа принимает решение о внесении изменений в протокол. и большинство людей принимают эти изменения независимо от их «правильности». Некоторые решения вызвали бурные дискуссии и даже призывы к бойкоту [11], что свидетельствует о том, что сообщество и разработчики могут расходиться во мнениях по некоторым важным моментам. Поэтому кажется логичным иметь протокол с настраиваемыми пользователем и самонастраивающимися переменными как возможный способ избежать этих проблем. 2,5 Громоздкие скрипты Система сценариев в Bitcoin — сложная и тяжелая функция. Потенциально это позволяет создавать сложные транзакции [12], но некоторые из его функций отключены из соображений безопасности и некоторые даже никогда не использовались [13]. Скрипт (включая часть отправителя и получателя) для самой популярной транзакции в Bitcoin выглядит так: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Длина скрипта составляет 164 байта, и его единственная цель — проверить, обладает ли получатель секретный ключ, необходимый для проверки его подписи. 3 Технология CryptoNote Теперь, когда мы рассмотрели ограничения технологии Bitcoin, мы сосредоточимся на представление возможностей CryptoNote. 4 Неотслеживаемые транзакции В этом разделе мы предлагаем схему полностью анонимных транзакций, обеспечивающую как неотслеживаемость, так и невозможность отслеживания. и условия несвязности. Важной особенностью нашего решения является его автономность: отправитель не обязан сотрудничать с другими пользователями или доверенной третьей стороной для совершения своих транзакций; следовательно, каждый участник производит прикрывающий трафик независимо. 4.1 Обзор литературы Наша схема основана на криптографическом примитиве, называемом групповой подписью. Впервые представлено Д. Чаум и Э. ван Хейст [19], позволяет пользователю подписать свое сообщение от имени группы. После подписания сообщения пользователь предоставляет (в целях проверки) не свой единственный публичный 1Это так называемый «мягкий лимит» — ограничение эталонного клиента на создание новых блоков. Жесткий максимум возможный размер блока составлял 1 МБ 4 7 Оглядываясь назад, можно сказать, что было большой ошибкой устанавливать фиксированный предел размера блока в коде. Visa и Mastercard могут обрабатывать тысячи, если не сотни тысяч транзакций. в секунду. Однако транзакции происходят в виде стохастического процесса, иногда массовыми всплесками. иногда молчать часами. Подумайте об объеме обмена биткойнов. Кажется, это грандиозная идея — разработать систему, которая динамически увеличивает размер блока, когда это необходимо. чтобы приспособиться к увеличению трафика транзакций и динамически уменьшать его, когда это необходимо. повысить эффективность использования полосы пропускания. Теперь примените это понятие ко всем параметрам системы. И пока мы стараемся сохранить система от рыбьего хвоста вышла из-под контроля, этоотлично сработает. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Как упоминалось ранее, если переменные самонастраиваются, необходимо ввести некоторый контроль, чтобы не дать системе выйти из-под контроля. Мы доберемся до этого. Если бы это была статья в Википедии, она была бы помечена как «КОНЕЦ». Хотя мы, конечно, в В разделе, посвященном «Проблемам Bitcoin», мне хотелось бы получить здесь некоторые пояснения. Почему 164 байта неприемлемы для простой задачи «проверка секретного ключа»? Насколько маленькими они могут стать за разумный язык сценариев? Хотя я не компьютерщик. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Для групповых подписей, как описано, требуется менеджер группы. Менеджер группы способен отзыва анонимности любого подписавшего. Следовательно, в группе существует встроенная централизация. схема подписи.

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 8 Кольцевая подпись работает следующим образом: Алекс хочет передать WikiLeaks сообщение о своем работодателе. У каждого сотрудника в ее компании есть пара частного/открытого ключей (Ri, Ui). Она сочиняет ее подпись с набором входных данных в качестве ее сообщения, m, ее секретный ключ, Ri, и ВСЕХ открытые ключи (Ui;i=1...n). Любой (не зная приватных ключей) может легко убедиться в том, что какая-то пара (Rj, Uj), должно быть, использовалась для создания подписи... кто-то, кто работает для работодателя Алекса... но, по сути, это случайная догадка, чтобы выяснить, кто бы это мог быть. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Обратите внимание, что описанная здесь связываемая кольцевая подпись является своего рода противоположностью «несвязываемой». описано выше. Здесь мы перехватываем два сообщения и можем определить, одно и то же ли их послала партия, хотя мы все равно не сможем определить, кто эта партия.

определение «несвязываемого», используемое для создания Cryptonote, означает, что мы не можем определить, является ли их получает одна и та же сторона. Следовательно, на самом деле здесь происходят ЧЕТЫРЕ вещи. Система может быть связной или несвязываемый, в зависимости от того, можно ли определить, является ли отправитель два сообщения одинаковы (независимо от того, требует ли это отмены анонимности). И система может быть несвязной или несвязной, в зависимости от того, возможно ли ее определить, является ли получатель двух сообщений одним и тем же (независимо от того, для этого требуется отзыв анонимности). Пожалуйста, не обвиняйте меня за эту ужасную терминологию. Теоретикам графов, вероятно, следует доволен. Некоторым из вас может быть удобнее использовать «связь с получателем», а не «связь с отправителем». http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Когда я это прочитал, мне это показалось глупой особенностью. Потом я прочитал, что это может быть особенность для электронное голосование, и это, казалось, имело смысл. Это круто, с этой точки зрения. Но я не совсем уверен в намеренном внедрении отслеживаемых кольцевых подписей. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 9 Черт возьми, автор этого документа наверняка мог бы сформулировать это лучше! Скажем, компания, принадлежащая сотрудникам, хочет проголосовать за то, приобретать или нет определенные новые активы, а Алекс и Бренда являются сотрудниками. Компания предоставляет каждому сотруднику сообщение типа «Я голосую за предложение А!» который имеет метаинформационную «проблему» [ПРОП А] и просит их подписать его отслеживаемой кольцевой подписью, если они поддерживают это предложение. Используя традиционную кольцевую подпись, недобросовестный сотрудник может подписать сообщение несколько раз. предположительно с разными nonce, чтобы голосовать столько раз, сколько захотят. С другой стороны С другой стороны, в схеме отслеживаемой кольцевой подписи Алекс пойдет голосовать, и ее закрытый ключ будет иметь был использован по вопросу [ПРОП А]. Если Алекс попытается подписать сообщение типа «Я, Бренда, одобряю предложение А!» чтобы «подставить» Бренду и провести двойное голосование, в этом новом сообщении также будет проблема [ПРОП А]. Поскольку закрытый ключ Алекса уже вызвал проблему [PROP A], личность Алекса будет сразу же раскрыто как мошенничество. Что, согласитесь, очень круто! Криптография обеспечивала равенство голосов. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Эта статья интересна тем, что по сути создает специальную кольцевую подпись, но без каких-либо согласие другого участника. Структура подписи может быть различной; я не копал глубоко, и я не видел, безопасно ли оно. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Подписи специальных групп: кольцевые подписи, которые представляют собой групповые подписи без группы. менеджеров, никакой централизации, но позволяет члену специальной группы доказуемо утверждать, что он (не) выдал анонимную подпись от имени группы. http://link.springer.com/chapter/10.1007/11908739_9 Это не совсем правильно, насколько я понимаю. И мое понимание, вероятно, изменится по мере того, как Я углубляюсь в этот проект. Но насколько я понимаю, иерархия выглядит так. Подписи группы: менеджеры группы контролируют отслеживаемость и возможность добавления или удаления участников. от подписантов. Сигналы звонка: произвольное формирование группы без менеджера группы. Никакого отзыва анонимности. Нет возможности отречься от той или иной подписи. С отслеживаемым и подключаемым кольцом подписи, анонимность в некоторой степени масштабируема. Подписи специальных групп: аналогично кольцевым подписям, но участники могут доказать, что они не создавали конкретная подпись. Это важно, когда любой член группы может поставить подпись. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Алгоритм Фудзисаки и Сузуки позже был доработан автором для обеспечения единовременности. Итак мы будем анализировать алгоритм Фудзисаки и Сузуки одновременно с новым алгоритмом, а не чем рассматривать это здесь.

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 10 Возможность связывания в смысле «связываемых кольцевых подписей» означает, что мы можем определить, пришли ли две исходящие транзакции из одного и того же источника, не раскрывая, кто является источником. Авторы ослабили возможность связывания, чтобы (а) сохранить конфиденциальность, но при этом (б) обнаружить любую транзакцию с использованием закрытого ключа второй раз как недействительный. Хорошо, это вопрос порядка событий. Рассмотрим следующий сценарий. Мой майнинг компьютер будет иметь текущий blockchain, у него будет собственный блок транзакций, который он вызывает законно, он будет работать над этим блоком в головоломке proof-of-work и у него будет список ожидающих транзакций, которые будут добавлены в следующий блок. Он также будет отправлять любые новые транзакции в этот пул ожидающих транзакций. Если я не решу следующий блок, но кто-то другой делает, я получаю обновленную копию blockchain. Блок, над которым я работал, и в моем списке ожидающих транзакций могут быть некоторые транзакции, которые сейчас включены в blockchain. Разгадайте мой ожидающий блок, объедините его со списком ожидающих транзакций и назовите его мой пул ожидающих транзакций. Удалите все, что сейчас официально находится в каталоге blockchain. Что мне делать? Должен ли я сначала пройти процедуру и «убрать все двойные траты»? С другой стороны С другой стороны, следует ли мне просмотреть список и убедиться, что каждый закрытый ключ еще не был используется, и если он уже использовался в моем списке, то я получил первый экземпляр первым и, следовательно, любая дальнейшая копия является незаконной. Поэтому я просто удаляю все экземпляры после первого того же закрытого ключа. Алгебраическая геометрия никогда не была моей сильной стороной. http://en.wikipedia.org/wiki/EdDSA Такая скорость, ничего себе. ЭТО алгебраическая геометрия для победы. Не то чтобы я что-то знал об этом. Проблематично или нет, но дискретные журналы становятся очень быстрыми. И квантовые компьютеры их едят на завтрак. http://link.springer.com/article/10.1007/s13389-012-0027-1 Это становится действительно важным числом, но нет никаких объяснений или ссылок на то, как оно был выбран. Было бы неплохо просто выбрать одно известное большое простое число, но если известны факты об этом большом простом числе, которые могут повлиять на наш выбор. Различные варианты криптоноты можно было выбрать разные значения э, но в этой статье нет обсуждения того, как это Выбор повлияет на наш выбор других глобальных параметров, перечисленных на странице 5. В этой статье необходим раздел, посвященный выбору значений параметров.

приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционная модель ключей/транзакций Bitcoin. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционный мод Bitcoin ключей/транзакцийэл. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 11 Это похоже на Bitcoin, но с бесконечным количеством анонимных почтовых ящиков, погашать которые может только получатель. создание закрытого ключа, который настолько же анонимен, насколько это возможно при использовании кольцевой подписи. Bitcoin работает следующим образом. Если у Алекс в кошельке есть 0,112 Bitcoin, который она только что получила от Фрэнка, у нее действительно есть подписанный сообщение «Я, [ФРАНК], отправлю 0.112 Bitcoin на [alex] + H0 + N0», где 1) Фрэнк подписал сообщение своим секретным ключом [FRANK], 2) Фрэнк подписал сообщение открытым ключом Алекса. ключ, [алекс], 3) Фрэнк включил некоторую форму истории биткойна, H0, и 4) Фрэнк включает случайный бит данных, называемый nonce, N0. Если затем Алекс захочет отправить 0,011 Bitcoin Шарлин, она примет сообщение Фрэнка и установит для него значение H1 и подпишет два сообщения: одно для ее транзакции и одно для изменения. H1= "Я, [ФРАНК], отправь 0,112 Bitcoin на [alex] + H0 + N" "Я, [ALEX], отправь 0,011 Bitcoin на [charlene] + H1 + N1" "Я, [ALEX], отправляю 0,101 Bitcoin в качестве изменения на [alex] + H1 + N2." где Алекс подписывает оба сообщения своим секретным ключом [ALEX], первое сообщение с именем Шарлин открытый ключ [charlene], второе сообщение с открытым ключом Алекса [alex], включая истории и некоторые случайно сгенерированные nonce N1 и N2 соответственно. Cryptonote работает следующим образом: Если у Алекс в кошельке есть криптовалюта 0,112, которую она только что получила от Фрэнка, значит, у нее действительно есть подписанная сообщение «Я, [кто-то из специальной группы], отправляю 0,112 Cryptonote на [одноразовый адрес] + H0 +Н0." Алекс обнаружила, что это ее деньги, сверив свой закрытый ключ [ALEX] с [одноразовый адрес] для каждого проходящего сообщения, и если она желает его потратить, она делает это в следующим образом. Она выбирает получателя денег, возможно, Шарлин начала голосовать за удары дронов, поэтому Вместо этого Алекс хочет отправить деньги Бренде. Итак, Алекс ищет открытый ключ Бренды, [brenda], и использует свой собственный секретный ключ [ALEX] для создания одноразового адреса [ALEX+brenda]. Она затем выбирает произвольную коллекцию C из сети пользователей криптонот и строит кольцевая подпись из этой специальной группы. Устанавливаем нашу историю как предыдущее сообщение, добавляем nonces, и действовать как обычно? H1 = «Я, [кто-то из специальной группы], отправляю 0,112 Cryptonote на [одноразовый адрес] + H0 +Н0." «Я, [кто-то из коллекции C], отправляю 0,011 Cryptonote на [одноразовый адрес, созданный из ALEX+brenda] + H1 + N1» «Я, [кто-то из коллекции C], отправляю 0,101 Cryptonote в качестве изменения на [одноразовый адрес-сделанный из-ALEX+alex] + H1 + N2» Теперь Алекс и Бренда сканируют все входящие сообщения на наличие одноразовых адресов, которые были созданный с использованием их ключа. Если они его найдут, то это будет их собственное, совершенно новое сообщение. криптонота! И даже в этом случае транзакция все равно достигнет blockchain. Если монеты, поступающие по этому адресу известно, что они отправляются от преступников, политических деятелей или от комитетов и счетов. со строгим бюджетом (т. е. хищением), или если новый владелец этих монет когда-либо совершит ошибку и отправляет эти монеты на общий адрес с монетами, которыми он, как известно, владеет, приспособление для анонимности в биткойнах.

приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционная модель ключей/транзакций Bitcoin. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционный мод Bitcoin ключей/транзакцийэл. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 12 Следовательно, вместо того, чтобы пользователи отправляли монеты с адреса (который на самом деле является открытым ключом) на адрес (еще один открытый ключ) используя свои приватные ключи, пользователи отправляют монеты из одноразового почтового ящика (который генерируется с использованием открытого ключа вашего друга) на одноразовый почтовый ящик (аналогично) с использованием вашего собственные секретные ключи. В каком-то смысле мы говорим: «Хорошо, уберите руки от денег, пока они находятся в обороте». перенесено! Достаточно просто знать, что наши ключи могут открыть этот ящик и что мы знаем, сколько денег в коробке. Никогда не оставляйте отпечатки пальцев на почтовом ящике или на самом деле используйте его, просто продайте саму коробку, наполненную деньгами. Таким образом, мы не знаем, кто отправил что, но содержание этих публичных обращений по-прежнему остается гладким, взаимозаменяемым, делимым и по-прежнему обладают всеми другими приятными качествами денег, которые мы желаем, например, биткойнами». Бесконечный набор почтовых ящиков. Вы публикуете адрес, у меня есть закрытый ключ. Я использую свой закрытый ключ и ваш адрес, и некоторые случайные данные для генерации открытого ключа. Алгоритм разработан таким образом, что, поскольку ваш адрес использовался для генерации открытого ключа, только ВАШ закрытый ключ работает для разблокировки сообщение. Наблюдатель, Ева, видит, что вы публикуете свой адрес, и видит открытый ключ, который я объявляю. Однако, она не знает, объявил ли я свой открытый ключ на основе вашего адреса, ее адреса или адреса Бренды. или Шарлин, или кто бы то ни было. Она сверяет свой закрытый ключ с открытым ключом, который я объявил. и видит, что это не работает; это не ее деньги. Она не знает чужого закрытого ключа, и только получатель сообщения имеет закрытый ключ, который может разблокировать сообщение. Так что никто Прослушивание может определить, кто получил деньги, а тем более взять деньги.

Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес Bitcoin кошелька. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес Bitcoin кошелька. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 13 Интересно, какой головной болью будет реализовать выбор криптографии? схема. Эллиптический или другой. Поэтому, если какая-то схема в будущем сломается, валюта поменяется. без беспокойства. Наверное, это большая заноза в заднице. Хорошо, это именно то, что я только что объяснил в своем предыдущем комментарии. Тип Диффе-Хеллмана обмены аккуратные. Скажем, у Алекса и Бренды есть секретный номер A и B, а также номер они не заботятся о сохранении тайны, а и б. Они хотят создать общий секрет без Ева обнаруживает это. Дайфф и Хеллман придумали, как Алекс и Бренда могли поделиться общедоступные номера a и b, но не частные номера A и B, и сгенерировать общий секрет, К. Используя этот общий секрет, К., без какой-либо подслушивающей Евы, смог создать тот же самый К, Алекс и Бренда теперь могут использовать К в качестве секретного ключа шифрования и передавать секретные сообщения обратно. и вперед. Вот как это МОЖЕТ работать, хотя оно должно работать и с числами, гораздо большими, чем 100. Мы будем использовать 100, потому что работа с целыми числами по модулю 100 эквивалентна «выбрасыванию всех но последние две цифры числа». Алекс и Бренда выбирают A, a, B и b. Они держат А и Б в секрете. Алекс сообщает Бренде свое значение по модулю 100 (только две последние цифры), а Бренда сообщает Алексу. ее значение b по модулю 100. Теперь Ева знает (a,b) по модулю 100. Но Алекс знает (a,b,A), поэтому она может вычислить x=abA по модулю 100.Алекс отсекает все, кроме последней цифры, потому что мы работаем снова под целыми числами по модулю 100. Точно так же Бренда знает (a,b,B), поэтому она может вычислить y=abB по модулю 100. Теперь Алекс может публиковать x, а Бренда может публиковать y. Но теперь Алекс может вычислить yA = abBA по модулю 100, а Бренда может вычислить xB. = абВА по модулю 100. Они оба знают одно и то же число! Но все, что слышала Ева, это (а,б,абА,абВ). У нее нет простого способа вычислить abA*B. Это самый простой и наименее безопасный способ рассмотрения обмена Диффи-Хеллмана. Существуют более безопасные версии. Но большинство версий работают, поскольку целочисленная факторизация и дискретная логарифмы сложны, и обе эти проблемы легко решаются квантовыми компьютерами. Я проверю, существуют ли какие-либо версии, устойчивые к квантовому воздействию. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange В приведенной здесь «стандартной последовательности txn» отсутствует целый ряд шагов, например ПОДПИСЕЙ. Здесь они воспринимаются как нечто само собой разумеющееся. Что очень плохо, потому что порядок, в котором мы подписываемые материалы, информация, содержащаяся в подписанном сообщении, и так далее... все это чрезвычайно важно для протокола. Если сделать один или два шага неправильно, даже немного не по порядку, при реализации « стандартная последовательность транзакций» может поставить под вопрос безопасность всей системы. Более того, доказательства, представленные далее в статье, могут оказаться недостаточно строгими, если Структура, в которой они работают, определена так же свободно, как и в этом разделе.

Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес кошелька Bitcoin. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес кошелька Bitcoin. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 14 Обратите внимание, что автор(ы?) ужасно стараются придерживаться четкой терминологии. текст, но особенно в следующем фрагменте. Следующим воплощением этой статьи обязательно будет гораздо более строгий. В тексте они называют P своим одноразовым открытым ключом. На диаграмме они обозначают R как их «открытый ключ Tx» и P в качестве «ключа назначения». Если бы я собирался переписать это, я бы Прежде чем обсуждать эти разделы, очень подробно изложите некоторую терминологию. Этот эл огромен. См. стр. 5. Кто выбирает Эл? Диаграмма показывает, что открытый ключ транзакции R = rG, который является случайным и выбранным. отправителем, не является частью вывода Tx. Это потому, что оно может быть одинаковым для нескольких транзакции нескольким людям и не используются ПОЗЖЕ для расходов. Генерируется новый R каждый раз, когда вы хотите транслировать новую транзакцию CryptoNote. Кроме того, R используется только чтобы проверить, являетесь ли вы получателем транзакции. Это не мусорные данные, но это мусор для всех без закрытых ключей, связанных с (A,B). С другой стороны, ключ назначения P = Hs(rA)G + B является частью вывода Tx. Все просматривая данные каждой проходящей транзакции, необходимо сверять свои собственные сгенерированные P* с этот P, чтобы узнать, владеют ли они этой проходящей транзакцией. Любой, у кого есть неизрасходованный вывод транзакции (UTXO) будет лежать куча этих P с суммами. Чтобы потратитьд, они подпишите какое-нибудь новое сообщение, включая P. Алиса должна подписать эту транзакцию с помощью одноразового закрытого ключа(ов), связанного с неизрасходованными выходными транзакцией (ключами назначения). Каждый ключ назначения, принадлежащий Алисе, оснащен с одноразовым закрытым ключом, также принадлежащим (предположительно) Алисе. Каждый раз, когда Алисе хочется отправьте содержимое ключа назначения мне, или Бобу, или Бренде, или Чарли, или Шарлин, она использует свой закрытый ключ для подписи транзакции. После получения транзакции я получу новый Открытый ключ Tx, новый открытый ключ назначения, и я смогу восстановить новый одноразовый закрытый ключ x. Объединение моего одноразового закрытого ключа x с общедоступным местом назначения новой транзакции. ключ(и) — это то, как мы отправляем новую транзакцию

  1. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы дадим общее описание нашего алгоритма без явного упоминания о нем. электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8
  2. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы предоставим генераторполное описание нашего алгоритма без явной ссылки на электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8 15 Как здесь выглядит неизрасходованный вывод транзакции? На диаграмме видно, что выходные данные транзакции состоят только из двух точек данных: суммы и ключа назначения. Но это не достаточно, потому что, когда я попытаюсь потратить этот «выход», мне все равно нужно будет знать R=rG. Помните, r выбирается отправителем, а R а) используется для распознавания входящих криптонот как ваших собственный и б) используемый для генерации одноразового закрытого ключа, используемого для «заявки» на вашу криптоноту. Та часть, которую я не понимаю? Если принять теоретическое «хорошо, у нас есть эти подписи и транзакции, и мы передаем их туда и обратно» в мир программирования "хорошо, какая информация конкретно составляет личность UTXO?" Лучший способ ответить на этот вопрос — покопаться в теле полностью некомментированного кода. Так держать, команда bytecoin. Напомним: возможность связывания означает «отправил один и тот же человек?» а несвязность означает «сделал то же самое» человек получит?». Таким образом, система может быть подключаемой или несвязываемой, несвязываемой или несвязываемой. Раздражает, я знаю. Поэтому, когда Ник ван Саберхаген говорит здесь: «...входящие платежи [связаны] с единовременными открытые ключи, которые невозможно связать со зрителем», давайте посмотрим, что он имеет в виду. Во-первых, рассмотрим ситуацию, в которой Алиса отправляет Бобу две отдельные транзакции из одной и той же транзакции. обращение по тому же адресу. Во вселенной Bitcoin Алиса уже совершила ошибку. отправки с того же адреса, и поэтому транзакция не удалась, наше желание ограничить возможность связывания. Более того, поскольку она отправила деньги на тот же адрес, наше желание ей не удалось. для несвязности. Эта биткойн-транзакция была одновременно (полностью) привязываемой и неотключаемой. С другой стороны, предположим, что во вселенной криптонот Алиса отправляет Бобу некоторую криптоноту: используя публичный адрес Боба. В качестве своего запутанного набора открытых ключей она выбирает все известные общедоступные ключи. ключи в районе метро Вашингтона. Алекс генерирует одноразовый открытый ключ, используя свой собственный информация и общедоступная информация Боба. Она отсылает деньги, и любой наблюдатель это заметит. только смогу узнать: «Кто-то из района метро Вашингтона отправил 2,3 криптоноты на одноразовый публичный адрес XYZ123». Здесь у нас есть вероятностный контроль над возможностью связывания, поэтому мы назовем это «почти не связанным». Мы также видим только те одноразовые открытые ключи, на которые отправляются деньги. Даже если бы мы заподозрили получателя был Боб, у нас нет его закрытых ключей, поэтому мы не можем проверить, прошла ли транзакция принадлежит Бобу, не говоря уже о том, чтобы сгенерировать его одноразовый закрытый ключ для выкупа его криптоноты. Итак, это на самом деле совершенно «несовместимо». Итак, это самый изящный трюк из всех. Кто хочет по-настоящему доверять другому MtGox? Мы можем быть удобно хранить некоторое количество BTC на Coinbase, но максимальная безопасность биткойнов — это физический кошелек. Что неудобно. В этом случае вы можете без доверия отдать половину своего закрытого ключа, не ставя под угрозу свои собственная способность тратить деньги. При этом все, что вы делаете, — это рассказываете кому-то, как преодолеть несвязность. Другой свойства CN, действующие как валюта, сохраняются, например, защита от двойных расходов и еще много чего.

  3. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы дадим общее описание нашего алгоритма без явного упоминания о нем. электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8

  4. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы предоставим генераторполное описание нашего алгоритма без явной ссылки на электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8 16 Да, теперь у нас есть а) платежный адрес и б) идентификатор платежа. Критик мог бы спросить: «А действительно ли нам нужно это делать? В конце концов, если торговец получает 112.00678952 Точно CN, и это был мой заказ, и у меня есть скриншот, или чек, или что-то еще, не так ли? безумной степени точности достаточно?" Ответ: «Может быть, большую часть времени, в повседневной жизни, личные сделки». Однако более распространенная ситуация (особенно в цифровом мире) такова: продавец продает набор объектов, каждый из которых имеет фиксированную цену. Скажем, объект A имеет плотность 0,001 CN, объект B — 0,01 CN и объект C равен 0,1 CN. Теперь, если продавец получит заказ на 1,618 CN, его будет много-много (много!) способов оформить заказ для клиента. И поэтому без какого-либо идентификатора платежа, отождествление так называемого «уникального» заказа клиента с так называемой «уникальной» стоимостью его порядок становится невозможным. Еще смешнее: если в моем интернет-магазине все стоит ровно 1,0 CN, а у меня 1000 клиентов в день? И вы хотите доказать, что купили ровно 3 объекта две недели назад? Без идентификатора платежа? Удачи, приятель. Короче говоря: когда Боб публикует платежный адрес, он может в конечном итоге также опубликовать также идентификатор платежа (см., например, депозиты Poloniex XMR). Это отличается от того, что описано в тексте здесь, где Алиса генерирует идентификатор платежа. У Боба также должен быть какой-то способ сгенерировать идентификатор платежа. (а, Б) Напомним, что ключ отслеживания (a,B) может быть опубликован; потеря тайны значения «а» будет не нарушать вашу способность тратить и не позволять людям воровать у вас (я думаю... это было бы чтобы быть доказанным), это просто позволит людям видеть все входящие транзакции. Усеченный адрес, как описано в этом параграфе, просто берет «частную» часть ключа. и генерирует его из «публичной» части. Раскрытие значения «a» устранит невозможность связывания. но сохранит остальные транзакции. Автор имеет в виду «не несвязываемый», потому что «несвязываемый» относится к получателю, а «связываемый» относится к отправителю. Также очевидно, что автор не осознавал, что существует два разных аспекта возможности связывания. Поскольку все-таки транзакция — это направленный объект на графе, то возникнет два вопроса: «Эти две транзакции отправляются одному и тому же человеку?» и «придут ли эти две транзакции от одного и того же человека?" Это политика «без возврата», согласно которой свойство отсутствия связи CryptoNote условный. То есть Боб может выбрать, чтобы его входящие транзакции были неотключаемыми. используя эту политику. Это утверждение они доказывают в рамках модели случайного оракула. Мы доберемся до этого; Случайный У Oracle есть плюсы и минусы.

VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 17 Возможно, это глупо, но при объединении S и P_s нужно соблюдать осторожность. Если вы просто добавите последний открытый ключ до конца, невозможность связывания нарушена, поскольку любой проверяет проходящие транзакции можно просто проверить последний открытый ключ, указанный в каждой транзакции, и бум. Это открытый ключ связанный с отправителем. Таким образом, после объединения необходимо использовать генератор псевдослучайных чисел. используется для перестановки выбранных открытых ключей. «...пока владелец не создаст вторую подпись, используя ту же пару ключей». Желаю автору(ам?) подробнее об этом. Я считаю, что это означает: «Убедитесь, что каждый раз, когда вы выбираете набор открытых ключей для запутывания самостоятельно, вы выбираете совершенно новый набор, в котором нет двух одинаковых ключей». довольно сильное условие для невозможности соединения. Возможно, «вы выбираете новый случайный набор из все возможные ключи» с предположением, что хотя и нетривиальные пересечения неизбежно случаются, они случаются не часто. В любом случае, мне нужно углубиться в это утверждение. Это генерирует кольцевую подпись. Доказательства с нулевым разглашением — это потрясающе: я призываю вас доказать мне, что вы знаете секрет не раскрывая тайны. Например, предположим, что мы находимся у входа в пещеру в форме пончика. а в задней части пещеры (вне поля зрения входа) находится одверь, к которой ты утверждайте, что у вас есть ключ. Если ты пойдешь в одном направлении, тебя всегда пропустят, но если ты пойдешь в другом в другом направлении, вам нужен ключ. Но ты даже не хочешь ПОКАЗАТЬ мне ключ, не говоря уже о покажи мне, что он открывает дверь. Но ты хочешь доказать мне, что знаешь, как открыть дверь. В интерактивной обстановке я подбрасываю монетку. Орел слева, решка справа, и вы идете вниз по пещера в форме пончика, куда бы вас ни направила монета. Сзади, вне моего поля зрения, ты откройте дверь, чтобы вернуться с другой стороны. Повторяем эксперимент с подбрасыванием монеты. пока я не удостоверюсь, что у вас есть ключ. Но это явно ИНТЕРАКТИВНОЕ доказательство с нулевым разглашением. Есть неинтерактивные версии, в которых нам с вами никогда не придется общаться; таким образом, никакие подслушивающие устройства не смогут вмешаться. http://en.wikipedia.org/wiki/Zero-knowledge_proof Это противоположное предыдущему определению.

VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 18 Вся эта область не зависит от криптонот, просто описывая алгоритм кольцевой подписи без ссылка на валюты. Я подозреваю, что некоторые обозначения совпадают с остальной частью статьи. хотя. Например, x — это «случайный» секретный ключ, выбранный в GEN, который дает открытый ключ P. и изображение открытого ключа I. Это значение x — это значение, которое Боб вычисляет в части 6 на странице 8. Итак, это начинаю прояснять некоторую путаницу из предыдущего описания. Это круто; деньги не переводятся с публичного адреса Алисы на публичный адрес Боба. адрес." Он пересылается с одноразового адреса на одноразовый адрес. В каком-то смысле вот как все работает. Если у Алекса есть криптоноты, потому что кто-то отправила их ей, это означает, что у нее есть секретные ключи, необходимые для отправки их Бобу. Она использует обмен Диффе-Хеллманом с использованием общедоступной информации Боба для создания нового одноразового адреса и криптоноты передаются на этот адрес. Теперь, поскольку для генерации нового одноразового адреса использовался (предположительно безопасный) обмен DH на который Алекс отправила свой CN, Боб — единственный, у кого есть закрытые ключи, необходимые для повторения выше. Итак, теперь Боб — это Алекс. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Суммирование должно индексироваться по j, а не по i. Каждый c_i является случайным мусором (поскольку w_i является случайным) кроме задницы c_iсвязан с фактическим ключом, включенным в эту подпись. Значение c равно hash предыдущей информации. Я думаю, что это может содержать опечатку, более серьезную, чем повторное использование индекса «i», потому что c_s кажется определяться имплицитно, а не эксплицитно. Действительно, если принять это уравнение на веру, то мы определим, что c_s = (1/2)c - (1/2) sum_i neq s c_i. То есть hash минус целая куча случайных чисел. С другой стороны, если это суммирование предназначено для чтения «c_s = (c — sum_j neq s c_j) mod l", затем мы берем hash нашей предыдущей информации, генерируем группу случайных чисел, вычтите все эти случайные числа из hash, и это даст нам c_s. Кажется, это то, что «должно» происходить, исходя из моей интуиции, и соответствует шагу проверки на странице 10. Но интуиция – это не математика. Я углублюсь в это. То же, что и раньше; все это будет случайным мусором, за исключением того, что связано с настоящим открытый ключ подписывающего лица x. За исключением этого раза, это больше, чем я ожидал от структуры: r_i является случайным для i!=s, а r_s определяется только секретным x и индексированными значениями s q_i и c_i.

VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и сохраняет ее в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и stхранит это в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 19 В этот момент я ужасно запутался. Алекс получает сообщение M с подписью (I,c_1, ..., c_n, r_1, ..., r_n) и списком публичных клавиши S. и она запускает VER. Это вычислит L_i’ и R_i’ Это подтверждает, что c_s = c - sum_i neq s c_i на предыдущей странице. Сначала я был ОЧЕНЬ (ха) в замешательстве. Любой может вычислить L_i’ и R_i’. Действительно, каждый r_i и c_i опубликовано в подписи сигма вместе со значением I. Набор S = P_i всех открытых ключей также был опубликован. Так что любой, кто видел Сигму и набор ключи S = P_i получат одинаковые значения для L_i’ и R_i’ и, следовательно, проверят подпись. Но потом я вспомнил, что этот раздел просто описывает алгоритм подписи, а не «проверку». если подписано, проверьте, ОТПРАВЛЕНО МНЕ, и если да, то идите тратить деньги». Это ПРОСТО фирменная часть игры. Мне интересно прочитать Приложение А, когда я наконец туда доберусь. Я хотел бы увидеть полномасштабное сравнение Cryptonote по операциям с Bitcoin. А также электричество/устойчивое развитие. Какие части алгоритмов здесь представляют собой «входные данные»? Я полагаю, что входные данные транзакции представляют собой сумму и набор UTXO, сумма которых превышает сумму Сумма. Это неясно. «Цель спряталась?» Я думал об этом уже несколько минут, но до сих пор не понял. смутное представление о том, что это могло означать. Атака двойного расходования может быть выполнена только путем манипулирования предполагаемым используемым ключом узла. набор изображений \(I\). «Степень неоднозначности» = n, но общее количество открытых ключей, включенных в транзакцию, равно п+1. Другими словами, степень двусмысленности будет такой: «Сколько ДРУГИХ людей вы хотите видеть в группе?» толпа?" Ответ, вероятно, будет по умолчанию «как можно больше».

VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и сохраняет ее в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и stхранит это в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 20 Это интересно; ранее мы предоставили получателю Бобу возможность отправлять все ВХОДЯЩИЕ транзакции не могут быть отсоединены либо путем детерминированного выбора половины его закрытых ключей, либо путем опубликовав половину своих личных ключей как публичные. Это своего рода политика без пути назад. Здесь мы видим способ отправителя Алекса выбрать одну исходящую транзакцию как связанную, но на самом деле это раскрывает Алекса как отправителя всей сети. Это НЕ политика безвозвратного пути. Это транзакция за транзакцией. Есть ли третья политика? Может ли получатель, Боб, создать для Алекса уникальный идентификатор платежа, который никогда не меняется, возможно, используя обмен Диффе-Хеллмана? Если кто-нибудь включит этот платеж Идентификатор, указанный где-то в ее транзакции на адрес Боба, он, должно быть, исходил от Алекса. Таким образом, Алексу не нужно раскрывать себя всей сети, выбирая ссылку на конкретный транзакцию, но она все равно может идентифицировать себя с человеком, которому она отправляет свои деньги. Разве не это делает Poloniex?

Транзакция Вход передачи Выход0 . . . Выходные данные . . . Выходной Ключевое изображение Подписи Кольцевая подпись Ключ назначения Выход1 Ключ назначения Выходной Зарубежные операции Вывод отправителя Ключ назначения Одноразовая пара ключей Одноразовый закрытый ключ Я = хГП(П) П, х Рис. 7. Генерация кольцевой подписи в стандартной транзакции. 5 Эгалитарное доказательство работы В этом разделе мы предлагаем и обосновываем новый алгоритм proof-of-work. Наша основная цель заключается в сокращении разрыва между майнерами CPU (большинство) и GPU/FPGA/ASIC (меньшинство). Это уместно, что некоторые пользователи могут иметь определенное преимущество перед другими, но их инвестиции должно расти по крайней мере линейно с мощностью. В более общем смысле, производство устройств специального назначения. должна быть как можно менее прибыльной. 5.1 Связанные работы Исходный протокол Bitcoin proof-of-work использует функцию ценообразования с интенсивным использованием ЦП SHA-256. Он в основном состоит из основных логических операторов и полагается исключительно на скорость вычислений. процессор, поэтому идеально подходит для многоядерной/конвейерной реализации. Однако современные компьютеры ограничены не только количеством операций в секунду. но и по размеру памяти. Хотя некоторые процессоры могут быть значительно быстрее других [8], размеры памяти вряд ли будут различаться между машинами. Ценовые функции, связанные с памятью, были впервые введены Абади и др. и определены как «функции, время вычисления которых во многом зависит от времени, затрачиваемого на доступ к памяти» [15]. Основная идея заключается в построении алгоритма, выделяющего большой блок данных («блокнот»). в памяти, доступ к которой возможен относительно медленно (например, ОЗУ) и «доступ к непредсказуемая последовательность локаций» внутри него. Блок должен быть достаточно большим, чтобы можно было сохранить данные более выгодны, чем пересчитывать их для каждого доступа. Алгоритм также должен предотвратить внутренний параллелизм, следовательно, N одновременных потоков должны требовать в N раз больше памяти сразу. Дворк и др. [22] исследовали и формализовали этот подход, что привело их к предложению другого вариант функции ценообразования: «Mbound». Еще одна работа принадлежит Ф. Коэльо [20], который 11 Транзакция Вход передачи Выход0 . . . Выходные данные . . . Выходной Ключевое изображение Подписи Кольцевая подпись Ключ назначения Выход1 Ключ назначения Выходной Зарубежные сделки Вывод отправителя Ключ назначения Одноразовая пара ключей Одноразовый закрытый ключ Я = хГП(П) П, х Рис. 7. Генерация кольцевой подписи в стандартной транзакции. 5 Эгалитарное доказательство работы В этом разделе мы предлагаем и обосновываем новый алгоритм proof-of-work. Наша основная цель заключается в сокращении разрыва между майнерами CPU (большинство) и GPU/FPGA/ASIC (меньшинство). Это уместно, что некоторые пользователи могут иметь определенное преимущество перед другими, но их инвестиции должно расти по крайней мере линейно с мощностью. В более общем смысле, производство устройств специального назначения. должна быть как можно менее прибыльной. 5.1 Связанные работы Исходный протокол Bitcoin proof-of-work использует функцию ценообразования с интенсивным использованием ЦП SHA-256. Он в основном состоит из основных логических операторов и полагается исключительно на скорость вычислений. процессор, поэтому идеально подходит для многоядерной/конвейерной реализации. Однако современные компьютеры ограничены не только количеством операций в секунду. но и по размеру памяти. Хотя некоторые процессоры могут быть значительно быстрее других [8], размеры памяти вряд ли будут различаться между машинами. Ценовые функции, связанные с памятью, были впервые введены Абади и др. и определены как «функции, время вычислений которых во многом зависит от времени, затрачиваемого на доступ к памяти» [15]. Основная идея заключается в построении алгоритма, выделяющего большой блок данных («блокнот»). в памяти, доступ к которой возможен относительно медленно (например, ОЗУ) и «доступ к непредсказуемая последовательность локаций» внутри него. Блок должен быть достаточно большим, чтобы можно было сохранить данные более выгодны, чем пересчитывать их для каждого доступа. Алгоритм также должен предотвратить внутренний параллелизм, следовательно, N одновременных потоков должны требовать в N раз больше памяти сразу. Дворк и др. [22] исследовали и формализовали этот подход, что привело их к предложению другого вариант функции ценообразования: «Mbound». Еще одна работа принадлежит Ф. Коэльо [20], который 11 21 Это, якобы, наши UTXO: суммы и ключи назначения. Если Алекс создает эту стандартную транзакцию и отправляет ее Бобу, то у Алекса также есть закрытые ключи. каждому из них. Мне очень нравится эта диаграмма, потому что она отвечает на некоторые предыдущие вопросы. Вход Txn состоит из набора выходов Txn и key изображение. Затем он подписывается кольцевой подписью, включая все личных ключей, которыми владеет Алекс, ко всем зарубежным транзакциям, включенным в сделку. Вывод Txn состоит из суммы и ключа назначения. Получатель транзакции может: по своему желанию генерировать свой одноразовый закрытый ключ, как описано ранее в статье, чтобы потратить деньги. Будет приятно узнать, насколько это соответствует реальному коду... Нет, Ник ван Саберхаген в общих чертах описывает некоторые свойства алгоритма доказательства работы: без фактического описания этого алгоритма. Сам алгоритм CryptoNight ТРЕБУЕТ глубокого анализа. Когда я это прочитал, я заикался. Должны ли инвестиции расти хотя бы линейно с ростом власти, или же следует инвестиции растут максимум линейно с ростом мощности? И тогда я понял; Я, как майнер или инвестор, обычно думаю о том, «сколько энергии я могу получить». для инвестиций?» а не «сколько инвестиций требуется для фиксированного количества энергии?» Конечно, обозначим инвестиции через I, а мощность через P. Если I(P) — это инвестиции как функция мощности а P(I) — мощность как функция инвестиций, они будут обратными друг другу (где бы то ни было). обратные могут существовать). И если I(P) быстрее линейного, чем P(I) медленнее линейного. Следовательно, будет снижена норма прибыли для инвесторов. То есть автор здесь говорит следующее: «конечно, чем больше вы вкладываете, тем больше и получаете». мощность. Но мы должны попытаться добиться снижения нормы прибыли». В конечном итоге инвестиции в процессоры окажутся сублинейными; вопрос в том, являются ли авторы разработали алгоритм POW, который заставит ASIC также делать это. Должна ли гипотетическая «валюта будущего» всегда майнить с использованием самых медленных/наиболее ограниченных ресурсов? Статья Абади и др. (авторами которой являются несколько инженеров Google и Microsoft): по сути, используя тот факт, что за последние несколько лет объем памяти был намного меньше разница между машинами превышает скорость процессора, а соотношение инвестиций к мощности более чем линейное. Через несколько лет, возможно, придется переоценить это! Всё это гонка вооружений... Создать функцию hash сложно; создание функции hash, удовлетворяющей этим ограничениям, кажется более сложной задачей. Эта статья, похоже, не содержит объяснения фактического hashалгоритм CryptoNight. Я думаю, что это реализация SHA-3 с жесткими требованиями к памяти, основанная в сообщениях на форуме, но я понятия не имею... и в этом вся суть. Это необходимо объяснить.

предложил наиболее эффективное решение: «Хоккайдо». Насколько нам известно, последней работой, основанной на идее псевдослучайного поиска в большом массиве, является алгоритм, известный как «scrypt» К. Персиваля [32]. В отличие от предыдущих функций, он фокусируется на получение ключа, а не системы proof-of-work. Несмотря на этот факт, скрипт может служить нашей цели: она хорошо работает как функция ценообразования в задаче частичного преобразования hash, такой как SHA-256 в Bitcoin. На данный момент scrypt уже применяется в Litecoin [14] и некоторых других ветвях Bitcoin. Однако его реализация на самом деле не привязана к памяти: соотношение «время доступа к памяти/общее time» недостаточно велик, поскольку каждый экземпляр использует только 128 КБ. Это позволяет майнерам с графическим процессором быть примерно в 10 раз более эффективным и продолжает оставлять возможность создания относительно дешевые, но высокоэффективные устройства для майнинга. Более того, сама конструкция сценария допускает линейный компромисс между размером памяти и Скорость процессора обусловлена тем, что каждый блок в блокноте является производным только от предыдущего. Например, вы можете хранить каждый второй блок и пересчитывать остальные ленивым способом, т.е. только когда это станет необходимым. Предполагается, что псевдослучайные индексы распределены равномерно. следовательно, ожидаемое значение пересчетов дополнительных блоков равно 1 \(2 \cdot N\), где N – число итераций. Общее время вычислений увеличивается менее чем вдвое, поскольку имеются также независимые от времени (постоянное время) операции, такие как подготовка блокнота и hashвключение каждую итерацию. Сохранение 2/3 памяти стоит 1 3 \(\cdot\) Н + 1 3 \(\cdot\) \(2 \cdot N\) = N дополнительных пересчетов; 9/10 в результате 1 10 \(\cdot\) Н + . . . + 1 10 \(\cdot\) 9 \(\cdot\) Н = 4,5 Н. Легко показать, что сохранение только 1 s всех блоков увеличивает время менее чем в с−1 раз. 2 . Это, в свою очередь, означает, что машина с процессором В 200 раз быстрее, чем современные чипы могут хранить всего 320 байт блокнота. 5.2 Предлагаемый алгоритм Мы предлагаем новый алгоритм с привязкой к памяти для функции ценообразования proof-of-work. Это зависит от произвольный доступ к медленной памяти и подчеркивает зависимость от задержки. В отличие от сценария каждого новый блок (длиной 64 байта) зависит от всех предыдущих блоков. В результате гипотетический «Экономия памяти» должна увеличить скорость вычислений в геометрической прогрессии. Наш алгоритм требует около 2 Мб на экземпляр по следующим причинам: 1. Он помещается в кэш L3 (на ядро) современных процессоров, которые должны стать массовыми. через несколько лет; 2. Мегабайт внутренней памяти — практически неприемлемый размер для современного ASIC-конвейера; 3. На графических процессорах могут одновременно работать сотни экземпляров, но они ограничены в других отношениях: Память GDDR5 медленнее кэша CPU L3 и отличается своей пропускной способностью, а не Скорость произвольного доступа. 4. Значительное расширение блокнота потребует увеличения количества итераций, что в ход подразумевает общее увеличение времени. «Тяжелые» вызовы в ненадежной p2p-сети могут привести к серьезные уязвимости, поскольку узлы обязаны проверять proof-of-work каждого нового блока. Если узел тратит значительное количество времени на каждую оценку hash, его можно легко DDoS-атака вызвана потоком поддельных объектов с произвольными рабочими данными (значения nonce). 12 предложил наиболее эффективное решение: «Хоккайдо». Насколько нам известно, последней работой, основанной на идее псевдослучайного поиска в большом массиве, является алгоритм, известный как «scrypt» К. Персиваля [32]. В отличие от предыдущих функций, он фокусируется на получение ключа, а не системы proof-of-work. Несмотря на этот факт, скрипт может служить нашей цели: она хорошо работает как функция ценообразования в задаче частичного преобразования hash, такой как SHA-256 в Bitcoin. На данный момент scrypt уже применяется в Litecoin [14] и некоторых других ветвях Bitcoin. Однако его реализация на самом деле не привязана к памяти: соотношение «время доступа к памяти/общее time» недостаточно велик, поскольку каждый экземпляр использует только 128 КБ. Это позволяет майнерам с графическим процессором быть примерно в 10 раз более эффективным и продолжает оставлять возможность создания относительно дешевые, но высокоэффективные устройства для майнинга. Более того, сама конструкция сценария допускает линейный компромисс между размером памяти и Скорость процессора обусловлена тем, что каждый блок в блокноте является производным только от предыдущего. Например, вы можете хранить каждый второй блок и пересчитывать остальные ленивым способом, т.е. только когда это станет необходимым. Предполагается, что псевдослучайные индексы распределены равномерно. следовательно, ожидаемое значение пересчетов дополнительных блоков равно 1 \(2 \cdot N\), гдеN - число итераций. Общее время вычислений увеличивается менее чем вдвое, поскольку имеются также независимые от времени (постоянное время) операции, такие как подготовка блокнота и hashвключение каждую итерацию. Сохранение 2/3 памяти стоит 1 3 \(\cdot\) Н + 1 3 \(\cdot\) \(2 \cdot N\) = N дополнительных пересчетов; 9/10 в результате 1 10 \(\cdot\) Н + . . . + 1 10 \(\cdot\) 9 \(\cdot\) Н = 4,5 Н. Легко показать, что сохранение только 1 s всех блоков увеличивает время менее чем в с−1 раз. 2 . Это, в свою очередь, означает, что машина с процессором В 200 раз быстрее, чем современные чипы могут хранить всего 320 байт блокнота. 5.2 Предлагаемый алгоритм Мы предлагаем новый алгоритм с привязкой к памяти для функции ценообразования proof-of-work. Это зависит от произвольный доступ к медленной памяти и подчеркивает зависимость от задержки. В отличие от сценария каждого новый блок (длиной 64 байта) зависит от всех предыдущих блоков. В результате гипотетический «Экономия памяти» должна увеличить скорость вычислений в геометрической прогрессии. Наш алгоритм требует около 2 Мб на экземпляр по следующим причинам: 1. Он помещается в кэш L3 (на ядро) современных процессоров, которые должны стать массовыми. через несколько лет; 2. Мегабайт внутренней памяти — практически неприемлемый размер для современного ASIC-конвейера; 3. На графических процессорах могут одновременно работать сотни экземпляров, но они ограничены в других отношениях: Память GDDR5 медленнее кэша CPU L3 и отличается своей пропускной способностью, а не Скорость произвольного доступа. 4. Значительное расширение блокнота потребует увеличения количества итераций, что в ход подразумевает общее увеличение времени. «Тяжелые» вызовы в ненадежной p2p-сети могут привести к серьезные уязвимости, поскольку узлы обязаны проверять proof-of-work каждого нового блока. Если узел тратит значительное количество времени на каждую оценку hash, его можно легко DDoS-атака вызвана потоком поддельных объектов с произвольными рабочими данными (значения nonce). 12 22 Неважно, это скрипт-монета? Где алгоритм? Я вижу только рекламу. Именно здесь Cryptonote, если их алгоритм PoW того стоит, действительно проявит себя. Это не на самом деле SHA-256, это не совсем скрипт. Он новый, привязан к памяти и нерекурсивный.

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить лимит. при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или уменьшении скорости сети hash, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 23 Атомные единицы. Мне нравится, что. Это эквивалент сатоши? Если это так, то это означает, что будет 185 миллиардов криптонот. Я знаю, что со временем это нужно будет подправить на нескольких страницах, или, может быть, это опечатка? Если базовая награда — «все оставшиеся монеты», то для получения всех монет достаточно только одного блока. Инстамин. С другой стороны, если предполагается, что это каким-то образом пропорционально разница во времени между настоящим моментом и какой-то датой прекращения производства монет? Это бы имеет смысл. Кроме того, в моем мире два знака «больше» означают «намного больше». Автор возможно, имеется в виду что-то другое? Если корректировка сложности происходит в каждом блоке, то у злоумышленника может быть очень большая ферма машины работают время от времени в тщательно выбранные промежутки времени. Это может привести к хаотическому взрыву (или падению до нуля) сложности, если формулы корректировки сложности не будут должным образом демпфированы. Несомненно, метод Bitcoin непригоден для быстрых пересчетов, но идея инерции в этих системах необходимо будет доказать, а не считать само собой разумеющимся. Кроме того, колебания в сети сложность не обязательно является проблемой, если только она не приводит к колебаниям мнимых запас монет, а очень быстро меняющаяся сложность может привести к «чрезмерной коррекции». Затраченное время, особенно в течение короткого промежутка времени, например нескольких минут, будет пропорционально «общему количеству количество блоков, созданных в сети». Константа пропорциональности сама будет расти. с течением времени, предположительно экспоненциально, если CN взлетит. Возможно, было бы лучше просто отрегулировать сложность, чтобы сохранить «общее количество блоков, созданных на сети с момента добавления последнего блока в основную цепочку» в пределах некоторого постоянного значения или с ограниченная вариация или что-то в этом роде. Если адаптивный алгоритм, который является вычислительным Легко реализовать, может показаться, что это решит проблему. Но если бы мы использовали этот метод, кто-то с большой майнинговой фермой мог бы закрыть свою ферму. на несколько часов и снова включите его. За первые несколько кварталов эта ферма будет производить банк. Итак, на самом деле этот метод поднимает интересный вопрос: майнинг становится (в среднем) проигрышная игра без рентабельности инвестиций, особенно по мере того, как все больше людей подключаются к сети. Если сложность майнинга очень внимательно отслеживаемая сеть hashrate, я почему-то сомневаюсь, что люди будут майнить столько, сколько они в настоящее время делаю. Или, с другой стороны, вместо того, чтобы поддерживать круглосуточную работу своих майнинг-ферм, они могут превратить их включен на 6 часов, выключен на 2, включен на 6, выключен на 2 или что-то в этом роде. Просто переключитесь на другую монету в течение нескольких часов, подождите, пока сложность упадет, затем запрыгивайте обратно, чтобы получить эти несколько дополнительных очков. блоков прибыльности по мере адаптации сети. И знаешь что? Это на самом деле, наверное один из лучших сценариев добычи полезных ископаемых, которые я придумал... Это могло бы быть циклично, но если время создания блока в среднем составляет около минуты, можем ли мы просто использовать количество блоков в качестве показателя «затраченного времени?»

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить лимит. при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы, когда скорость сети hash интенсивно растет или сокращается, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 24 Хорошо, у нас есть blockchain, и каждый блок имеет временные метки, ДОПОЛНИТЕЛЬНО к тому, что он просто заказал. Это было явно вставлено просто для сложности настройки, потому что временные метки Как уже упоминалось, очень ненадежно. Разрешено ли нам иметь противоречивые временные метки в цепочке? Если в цепочке блок А предшествует блоку Б и с финансами все в порядке, но Блок А, похоже, был создан после Блока Б? Потому что, возможно, кто-то владел большая часть сети? Это нормально? Наверное, потому, что с финансами не все в порядке. Хорошо, я ненавижу это произвольное «только 80% блоков являются законными для основного blockchain». подход. Это было сделано для того, чтобы лжецы не могли изменить свои временные метки? Но теперь он добавляет стимул для всех лгать о своих временных метках и просто выбирать медиану. Пожалуйста, определите. Это означает «для этого блока включать только транзакции, включающие более высокие комиссии». чем p%, предпочтительно с комиссией выше 2p%» или что-то в этом роде? Что они подразумевают под словом фальшивка? Если транзакция соответствует прошлой истории blockchain, и транзакция включает комиссию, удовлетворяющую майнеров, разве этого недостаточно? Ну, нет, не обязательно. Если максимальный размер блока не существует, злоумышленнику нечего удерживать. от простой загрузки огромного блока транзакций себе сразу, просто чтобы замедлить сеть. Основное правило максимального размера блока не позволяет людям размещать огромное количество мусора. данные на blockchain все сразу, просто чтобы замедлить процесс. Но такое правило, безусловно, должно быть адаптивными: например, во время рождественского сезона можно ожидать резкого увеличения трафика, и размер блока становится очень большим, и сразу после этого размер блока впоследствии уменьшается снова. Поэтому нам нужно либо а) какое-то адаптивное ограничение, либо б) достаточно большое ограничение, чтобы 99% разумные рождественские пики не выходят за рамки ограничений. Конечно, второе невозможно. оценка - кто знает, приживется ли валюта? Лучше сделать адаптивным и не париться об этом. Но тогда у нас возникает проблема теории управления: как сделать это адаптивным без уязвимость к атакам или диким и сумасшедшим колебаниям? Обратите внимание, что адаптивный метод не мешает злоумышленникам накапливать небольшие суммы. ненужных данных с течением времени на blockchain, что приводит к долгосрочному раздуванию. Это другая проблема в целом и тот, с которым у криптоноут есть серьезные проблемы.

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращение заполнения blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 25 При изменении масштаба времени так, чтобы одна единица времени составляла N блоков, средний размер блока теоретически мог бы расти экспоненциально пропорционально 2ˆt. С другой стороны, более общий предел в следующем блоке будет M_nf(M_n) для некоторой функции f. Какие свойства f будут мы выбираем, чтобы гарантировать некоторый «разумный рост» размера блока? Прогрессирование размеры блоков (после масштабирования времени) будут такими: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... И цель здесь — выбрать f так, чтобы эта последовательность росла не быстрее, чем, скажем, линейно: или, возможно, даже как Log(t). Конечно, если f(M_n) = a для некоторой константы a, эта последовательность будет на самом деле М_н аМ_н аˆ2М_н аˆ3М_н ... И, конечно же, единственный способ ограничить максимально линейный рост — это выбрать a=1. Это, конечно, неосуществимо. Это вообще не дает возможности роста. Если же, с другой стороны, f(M_n) — непостоянная функция, то ситуация гораздо сложнее. сложен и может позволить найти элегантное решение. Я подумаю над этим некоторое время. Этот сбор должен быть достаточно большим, чтобы исключить штраф за превышение размера, предусмотренный в следующем разделе. Почему обычный пользователь считается мужчиной, а? А?

возможность раздуть blockchain и создать дополнительную нагрузку на узлы. Препятствовать злонамеренным участникам от создания крупных блоков вводим штрафную функцию: Новая награда = Базовая награда \(\cdot\) БлкСизе Миннесота −1 2 Это правило применяется только тогда, когда BlkSize превышает минимальный размер свободного блока, который должен быть близким к max(10kb, \(M_N \cdot 110\%\)). Майнерам разрешено создавать блоки «обычного размера» и даже превысить его с прибылью, когда общие сборы превысят штраф. Но сборы вряд ли вырастут квадратично отличается от значения штрафа, поэтому будет равновесие. 6.3 Скрипты транзакций CryptoNote имеет очень минималистическую подсистему сценариев. Отправитель указывает выражение Φ = f (x1, x2,..., xn), где n — количество открытых ключей назначения {Pi}n я = 1. Всего пять двоичных поддерживаются операторы: min, max, sum, mul и cmp. Когда получатель тратит этот платеж, он создает \(0 \leq k \leq n\) подписей и передает их на вход транзакции. Процесс проверки просто оценивает Φ с xi = 1, чтобы проверить действительную подпись для открытого ключа Pi и xi = 0. Верификатор принимает доказательство, если Φ > 0. Несмотря на свою простоту, этот подход охватывает все возможные случаи: • Многопороговая сигнатура. Для мультиподписи в стиле Bitcoin «M-из-N» (т. е. получатель должен предоставить как минимум \(0 \leq M \leq N\) действительных подписей) Φ = x1+x2+. . .+xN \(\geq M\) (для ясности мы используем общепринятые алгебраические обозначения). Взвешенная пороговая сигнатура (некоторые ключи могут быть более важными, чем другие) можно выразить как Φ = \(w_1 \cdot x_1\) + ш2 \(\cdot\) х2 + . . . + \(w_N \cdot x_N\) \(\geq wM\). И сценарий, в котором мастер-ключ соответствует Φ = max(\(M \cdot x\), x1 + x2 +... + xN) \(\geq M\). Легко показать, что любой сложный случай может быть рассмотрен. выражаются с помощью этих операторов, т.е. они образуют основу. • Защита паролем. Владение секретным паролем эквивалентно знанию закрытый ключ, детерминированно полученный из пароля: k = KDF(s). Следовательно, приемник может доказать, что он знает пароль, предоставив еще одну подпись под ключом k. Отправитель просто добавляет соответствующий открытый ключ к своим выводам. Обратите внимание, что это метод гораздо более безопасен, чем «транзакционная головоломка», использованная в Bitcoin [13], где пароль явно передается на входе. • Вырожденные случаи. Φ = 1 означает, что деньги может потратить кто угодно; Φ = 0 отмечает вывод как не подлежащий расходованию навсегда. В случае, когда выходной скрипт в сочетании с открытыми ключами слишком велик для отправителя, он может использовать специальный тип вывода, который указывает, что получатель поместит эти данные в свои входные данные. в то время как отправитель предоставляет только hash этого сообщения. Этот подход аналогичен подходу Bitcoin «оплата-hash». функция, но вместо добавления новых команд сценария мы обрабатываем этот случай в структуре данных уровень. 7 Заключение Мы исследовали основные недостатки Bitcoin и предложили некоторые возможные решения. Эти выгодные особенности и наше постоянное развитие делают новую систему электронных денег CryptoNote серьезный конкурент Bitcoin, превосходящий все его форки. 14 возможность раздуть blockchain и создать дополнительную нагрузку на узлы. Препятствовать злонамеренным участникам от создания крупных блоков вводим штрафную функцию: Новая награда = Базовая награда \(\cdot\) БлкСизе Миннесота −1 2 Это правило применяется только тогда, когда BlkSize превышает минимальный размер свободного блока, который должен быть близким к max(10kb, \(M_N \cdot 110\%\)). Майнерам разрешено создавать блоки «обычного размера» и даже превысить его с прибылью, когда общие сборы превысят штраф. Но сборы вряд ли вырастут квадратично отличается от значения штрафа, поэтому будет равновесие. 6.3 Скрипты транзакций CryptoNote имеет очень минималистическую подсистему сценариев. Отправитель указывает выражение Φ = f (x1, x2,..., xn), где n — количество открытых ключей назначения {Pi}n я = 1. Всего пять двоичных поддерживаются операторы: min, max, sum, mul и cmp. Когда получатель тратит этот платеж, он создает \(0 \leq k \leq n\) подписей и передает их на вход транзакции. Процесс проверки просто оценивает Φ с xi = 1, чтобы проверить действительную подпись для открытого ключа Pi и xi = 0. Верификатор принимает доказательство, если Φ > 0. Несмотря на свою простоту, этот подход охватывает все возможные случаи: • Многопороговая сигнатура. Для мультиподписи в стиле Bitcoin «M-из-N» (т. е. получатель должен предоставить как минимум \(0 \leq M \leq N\) действительных подписей) Φ = x1+x2+. . .+xN \(\geq M\) (для ясности мы используем общепринятые алгебраические обозначения). Взвешенная пороговая сигнатура (некоторые ключи могут быть более важными, чем другие) можно выразить как Φ = \(w_1 \cdot x_1\) + ш2 \(\cdot\) х2 + . . . + \(w_N \cdot x_N\) \(\geq wM\). И скэнарio, где мастер-ключ соответствует Φ = max(\(M \cdot x\), x1 + x2 +... + xN) \(\geq M\). Легко показать, что любой сложный случай может быть рассмотрен. выражаются с помощью этих операторов, т.е. они образуют основу. • Защита паролем. Владение секретным паролем эквивалентно знанию закрытый ключ, детерминированно полученный из пароля: k = KDF(s). Следовательно, приемник может доказать, что он знает пароль, предоставив еще одну подпись под ключом k. Отправитель просто добавляет соответствующий открытый ключ к своим выводам. Обратите внимание, что это метод гораздо более безопасен, чем «транзакционная головоломка», использованная в Bitcoin [13], где пароль явно передается на входе. • Вырожденные случаи. Φ = 1 означает, что деньги может потратить кто угодно; Φ = 0 отмечает вывод как не подлежащий расходованию навсегда. В случае, когда выходной скрипт в сочетании с открытыми ключами слишком велик для отправителя, он может использовать специальный тип вывода, который указывает, что получатель поместит эти данные в свои входные данные. в то время как отправитель предоставляет только hash этого сообщения. Этот подход аналогичен подходу Bitcoin «оплата-hash». функция, но вместо добавления новых команд сценария мы обрабатываем этот случай в структуре данных уровень. 7 Заключение Мы исследовали основные недостатки Bitcoin и предложили некоторые возможные решения. Эти выгодные особенности и наше постоянное развитие делают новую систему электронных денег CryptoNote серьезный конкурент Bitcoin, превосходящий все его форки. 14 26 В этом может не оказаться необходимости, если мы сможем найти способ ограничить размер блока с течением времени... Это также не может быть правильным. Они просто установили «NewReward» на параболу, обращенную вверх, где размер блока является независимой переменной. Таким образом, новая награда раздувается до бесконечности. Если, с другой стороны, новая награда равна Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), затем новая награда будет обращенной вниз параболой с пиком при размере блока = Mn и точками пересечения в точке Размер блока = 0 и Размер блока = 2Mn. И, кажется, именно это они пытаются описать. Однако это не

Transacciones imposibles de rastrear

En esta sección proponemos un esquema de transacciones totalmente anónimas que satisfacen tanto la trazabilidad y condiciones de desvinculación. Una característica importante de nuestra solución es su autonomía: el remitente no está obligado a cooperar con otros usuarios o un tercero de confianza para realizar sus transacciones; por lo tanto, cada participante produce un tráfico de cobertura de forma independiente. 4.1 Revisión de la literatura Nuestro esquema se basa en la primitiva criptográfica llamada firma de grupo. Presentado por primera vez por D. Chaum y E. van Heyst [19], permite al usuario firmar su mensaje en nombre del grupo. Después de firmar el mensaje, el usuario proporciona (para fines de verificación) no su propia información pública 1Este es el llamado “límite suave”, la restricción de referencia del cliente para crear nuevos bloques. Máximo duro de El tamaño de bloque posible era 1 MB. 4 ellos si es necesario que causa los principales inconvenientes. Desafortunadamente, es difícil predecir cuándo Es posible que sea necesario cambiar las constantes y reemplazarlas puede tener consecuencias terribles. Un buen ejemplo de un cambio de límite codificado que conduce a consecuencias desastrosas es el bloque límite de tamaño establecido en 250kb1. Este límite era suficiente para albergar unas 10.000 transacciones estándar. en A principios de 2013, este límite casi se había alcanzado y se llegó a un acuerdo para aumentar el límite. El cambio se implementó en la versión 0.8 de la billetera y terminó con una división de la cadena de 24 bloques. y un exitoso ataque de doble gasto [9]. Si bien el error no estaba en el protocolo Bitcoin, pero más bien, en el motor de la base de datos, podría haberse detectado fácilmente mediante una simple prueba de estrés si hubiera No hay límite de tamaño de bloque introducido artificialmente. Las constantes también actúan como una forma de punto de centralización. A pesar de la naturaleza de igual a igual de Bitcoin, una abrumadora mayoría de nodos utilizan el cliente de referencia oficial [10] desarrollado por un pequeño grupo de personas. Este grupo toma la decisión de implementar cambios al protocolo y la mayoría de la gente acepta estos cambios independientemente de su “corrección”. Algunas decisiones provocaron discusiones acaloradas e incluso llamados al boicot [11], lo que indica que la comunidad y el Los desarrolladores pueden no estar de acuerdo en algunos puntos importantes. Por tanto, parece lógico disponer de un protocolo con variables configurables por el usuario y autoajustables como una posible forma de evitar estos problemas. 2.5 Guiones voluminosos El sistema de secuencias de comandos en Bitcoin es una característica pesada y compleja. Potencialmente permite crear transacciones sofisticadas [12], pero algunas de sus funciones están deshabilitadas debido a problemas de seguridad y algunos ni siquiera se han utilizado [13]. El guión (incluidas las partes del remitente y del receptor) para la transacción más popular en Bitcoin se ve así: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. El script tiene una longitud de 164 bytes y su único propósito es comprobar si el receptor posee la clave secreta requerida para verificar su firma. 3 La tecnología CryptoNote Ahora que hemos cubierto las limitaciones de la tecnología Bitcoin, nos concentraremos en presentando las características de CryptoNote. 4 Transacciones imposibles de rastrear En esta sección proponemos un esquema de transacciones totalmente anónimas que satisfacen tanto la trazabilidad y condiciones de desvinculación. Una característica importante de nuestra solución es su autonomía: el remitente no está obligado a cooperar con otros usuarios o un tercero de confianza para realizar sus transacciones; por lo tanto, cada participante produce un tráfico de cobertura de forma independiente. 4.1 Revisión de la literatura Nuestro esquema se basa en la primitiva criptográfica llamada firma de grupo. Presentado por primera vez por D. Chaum y E. van Heyst [19], permite al usuario firmar su mensaje en nombre del grupo. Después de firmar el mensaje, el usuario proporciona (para fines de verificación) no su propia información pública 1Este es el llamado “límite suave”, la restricción de referencia del cliente para crear nuevos bloques. Máximo duro de El tamaño de bloque posible era 1 MB. 4 7 En retrospectiva, parece haber sido un gran error hacer que el tamaño del bloque sea un límite fijo en el código. Visa y Mastercard pueden procesar miles, si no cientos de miles, de transacciones por segundo. Sin embargo, las transacciones se producen en un proceso estocástico, a veces en ráfagas masivas, a veces estar en silencio durante horas. Piense en el volumen del intercambio de bitcoins. Parece una gran idea diseñar un sistema que aumente el tamaño del bloque dinámicamente cuando sea necesario. para acomodar el mayor tráfico de transacciones y disminuirlo dinámicamente cuando sea necesario aumentar la eficiencia del ancho de banda. Ahora, aplique esa noción a todos los parámetros del sistema. Y mientras tengamos cuidado de mantener el sistema se salga de control, este shFuncionaría muy bien. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Como se mencionó anteriormente, si las variables se autoajustan, se deben imponer algunos controles para evitar que el sistema se salga de control. Llegaremos a eso. Si se tratara de un artículo de Wikipedia, tendría la etiqueta "STUB". Aunque ciertamente estamos en el sección que presenta los "Problemas de Bitcoin", me gustaría obtener más detalles aquí. ¿Por qué es ¿164 bytes son inaceptables para una simple tarea de "comprobar la clave secreta"? ¿Qué tan pequeños pueden llegar a ser? ¿Un lenguaje de programación razonable? Aunque no soy un informático. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Las firmas de grupo, como se describe, requieren un administrador de grupo. El administrador del grupo es capaz de revocar el anonimato de cualquier firmante. Por lo tanto, existe una centralización incorporada en un grupo. esquema de firma.

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 8 Una firma en anillo funciona así: Alex quiere filtrar un mensaje a WikiLeaks sobre su empleador. Cada empleado de su empresa tiene un par de claves pública y privada (Ri, Ui). ella compone su firma con entrada configurada como su mensaje, m, su clave privada, Ri, y la de TODOS claves públicas, (Ui;i=1...n). Cualquiera (sin conocer ninguna clave privada) puede verificar fácilmente que algún par (Rj, Uj) debe haber sido usado para construir la firma... alguien que trabaja para el empleador de Alex... pero es esencialmente una suposición aleatoria determinar cuál podría ser. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Tenga en cuenta que una firma de anillo vinculable que se describe aquí es algo así como lo opuesto a "no vinculable". descrito anteriormente. Aquí interceptamos dos mensajes y podemos determinar si son los mismos. parte los envió, aunque aún no deberíamos poder determinar quién es esa parte. el La definición de "desvinculable" utilizada para construir Cryptonote significa que no podemos determinar si el mismo partido los está recibiendo. Por lo tanto, lo que realmente tenemos aquí son CUATRO cosas sucediendo. Un sistema puede ser enlazable o no vinculable, dependiendo de si es posible o no determinar si el remitente del dos mensajes son iguales (independientemente de si para ello es necesario revocar el anonimato). y un sistema puede ser desvinculable o no desvinculable, dependiendo de si es posible o no determinar si el receptor de dos mensajes es el mismo (independientemente de si esto requiere revocar el anonimato). Por favor, no me culpen por esta terrible terminología. Los teóricos de grafos probablemente deberían estar contento. Algunos de ustedes pueden sentirse más cómodos con "enlazable por receptor" versus "enlazable por remitente". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Cuando leí esto, me pareció una característica tonta. Luego leí que puede ser una característica para votación electrónica, y eso parecía tener sentido. Algo genial, desde esa perspectiva. pero yo soy No estoy totalmente seguro de implementar intencionalmente firmas de anillo rastreables. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 9 ¡Dios, el autor de este documento técnico seguramente podría haberlo redactado mejor! Digamos que un empresa propiedad de los empleados quiere votar sobre si adquirir o no ciertas nuevas activos, y Alex y Brenda son ambos empleados. La Compañía proporciona a cada empleado un mensaje como "¡Voto sí a la Proposición A!" que tiene el "problema" de metainformación [PROP A] y les pide que lo firmen con un anillo de firma rastreable si apoyan la propuesta. Usando una firma de anillo tradicional, un empleado deshonesto puede firmar el mensaje varias veces, presumiblemente con diferentes nonces, para poder votar tantas veces como quieran. por el otro Por otro lado, en un esquema de firma de anillo rastreable, Alex irá a votar y su clave privada tendrá utilizado en el tema [PROP A]. Si Alex intenta firmar un mensaje como "Yo, Brenda, apruebo ¡proposición A!" para "incriminar" a Brenda y doble voto, este nuevo mensaje también tendrá el tema [PROPUESTA A]. Dado que la clave privada de Alex ya ha provocado el problema [PROP A], la identidad de Alex será inmediatamente revelado como un fraude. Lo cual, acéptalo, ¡es genial! La criptografía impuso la igualdad de votos. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Este artículo es interesante, esencialmente crea una firma de anillo ad-hoc pero sin ninguno de los el consentimiento del otro participante. La estructura de la firma puede ser diferente; no he cavado profundo, y no he visto si es seguro. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Las firmas de grupos ad hoc son: firmas de anillo, que son firmas de grupo sin grupo gerentes, sin centralización, pero permite que un miembro de un grupo ad hoc afirme de manera demostrable que (no) ha emitido la firma anónima en nombre del grupo. http://link.springer.com/chapter/10.1007/11908739_9 Esto no es del todo correcto, según tengo entendido. Y mi comprensión probablemente cambiará a medida que Profundizo más en este proyecto. Pero, según tengo entendido, la jerarquía se ve así. Firmas de grupo: los administradores de grupo controlan la trazabilidad y la capacidad de agregar o eliminar miembros. de ser firmantes. Firmas de anillo: formación arbitraria de grupos sin responsable de grupo. Sin revocación del anonimato. No hay forma de repudiarse de una firma determinada. Con anillo rastreable y enlazable firmas, el anonimato es algo escalable. Firmas de grupos ad hoc: como firmas de anillo, pero los miembros pueden demostrar que no crearon una firma determinada. Esto es importante cuando cualquier miembro de un grupo puede emitir una firma. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 El autor modifica posteriormente el algoritmo de Fujisaki y Suzuki para proporcionar unicidad. entonces Analizaremos el algoritmo de Fujisaki y Suzuki al mismo tiempo que el nuevo algoritmo en lugar de que repasarlo aquí.

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 10 La vinculabilidad en el sentido de "firmas de anillo vinculables" significa que podemos saber si dos transacciones salientes provienen de la misma fuente sin revelar quién es la fuente. Los autores debilitaron vinculabilidad para (a) preservar la privacidad, pero aún así (b) detectar cualquier transacción que utilice una clave privada por segunda vez como inválido. Bien, esta es una pregunta de orden de eventos. Considere el siguiente escenario. mi mineria La computadora tendrá el blockchain actual, tendrá su propio bloque de transacciones al que llama. legítimo, trabajará en ese bloque en un rompecabezas proof-of-work y tendrá un lista de transacciones pendientes que se agregarán al siguiente bloque. También enviará cualquier novedad. transacciones en ese grupo de transacciones pendientes. Si no resuelvo el siguiente bloque, pero Si alguien más lo hace, obtengo una copia actualizada del blockchain. El bloque en el que estaba trabajando y mi lista de transacciones pendientes ambas pueden tener algunas transacciones que ahora están incorporadas en el blockchain. Desentraña mi bloque pendiente, combínalo con mi lista de transacciones pendientes y llámalo mi grupo de transacciones pendientes. Elimine cualquiera que ahora esté oficialmente en el blockchain. Ahora, ¿qué hago? ¿Debería primero proceder y "eliminar todos los gastos dobles"? por el otro Por otro lado, ¿debería buscar en la lista y asegurarme de que cada clave privada aún no haya sido utilizado, y si ya se ha utilizado en mi lista, entonces recibí la primera copia primero, y por lo tanto cualquier copia adicional es ilegítima. Por lo tanto procedo a simplemente eliminar todas las instancias después de la primera de la misma clave privada. La geometría algebraica nunca ha sido mi fuerte. http://en.wikipedia.org/wiki/EdDSA Qué velocidad, guau. ESTA es la geometría algebraica para ganar. No es que yo supiera nada sobre eso. De manera problemática o no, los registros discretos se están volviendo muy rápidos. Y las computadoras cuánticas se los comen para el desayuno. http://link.springer.com/article/10.1007/s13389-012-0027-1 Este se convierte en un número realmente importante, pero no hay ninguna explicación o cita de cómo fue elegido. Simplemente elegir un único primo grande conocido estaría bien, pero si se conocen Hay datos sobre este gran número primo que podrían influir en nuestra elección. Diferentes variantes de criptonota podría elegir diferentes valores de bien, pero no hay ninguna discusión en este artículo sobre cómo eso La elección afectará nuestras elecciones de otros parámetros globales enumerados en la página 5. Este documento necesita una sección sobre la elección de valores de parámetros.

la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Modelo tradicional de claves/transacciones Bitcoin. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Mod de transacciones/claves tradicionales Bitcoinel. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 11 Esto es como Bitcoin, pero con infinitos apartados de correos anónimos, canjeables sólo por el receptor. generar una clave privada que sea tan anónima como puede serlo una firma en anillo. Bitcoin funciona de esta manera. Si Alex tiene 0.112 Bitcoin en su billetera que acaba de recibir de Frank, realmente tiene un mensaje "Yo, [FRANK], envío 0.112 Bitcoin a [alex] + H0 + N0" donde 1) Frank ha firmado el mensaje con su clave privada [FRANK], 2) Frank ha firmado el mensaje con la clave pública de Alex clave, [alex], 3) Frank ha incluido alguna forma de la historia del bitcoin, H0, y 4) Frank incluye un bit aleatorio de datos llamado nonce, N0. Si Alex quiere enviar 0.011 Bitcoin a Charlene, tomará el mensaje de Frank y lo establecerá en H1 y firmará dos mensajes: uno para su transacción y otro para el cambio. H1= "Yo, [FRANK], envío 0.112 Bitcoin a [alex] + H0 + N" "Yo, [ALEX], envío 0.011 Bitcoin a [charlene] + H1 + N1" "Yo, [ALEX], envío 0.101 Bitcoin como cambio a [alex] + H1 + N2." donde Alex firma ambos mensajes con su clave privada [ALEX], el primer mensaje con la de Charlene clave pública [charlene], el segundo mensaje con la clave pública de Alex [alex], e incluyendo el historiales y algunos nonces N1 y N2 generados aleatoriamente de forma apropiada. Cryptonote funciona de esta manera: Si Alex tiene 0.112 Cryptonote en su billetera que acaba de recibir de Frank, realmente tiene un mensaje "Yo, [alguien en un grupo ad-hoc], envío 0.112 Cryptonote a [una dirección única] + H0 +N0." Alex descubrió que este era su dinero al comparar su clave privada [ALEX] con [una dirección única] para cada mensaje que pasa, y si desea gastarlo, lo hace en de la siguiente manera. Ella elige un destinatario del dinero, tal vez Charlene haya comenzado a votar a favor de los ataques con drones, por lo que Alex quiere enviarle dinero a Brenda. Entonces Alex busca la clave pública de Brenda, [brenda], y utiliza su propia clave privada, [ALEX], para generar una dirección única [ALEX+brenda]. ella luego elige una colección arbitraria C de la red de usuarios de cryptonote y construye una firma de anillo de este grupo ad-hoc. Configuramos nuestro historial como el mensaje anterior, agregamos nonces y proceder como de costumbre. H1 = "Yo, [alguien en un grupo ad-hoc], envío 0.112 Cryptonote a [una dirección única] + H0 +N0." "Yo, [alguien de la colección C], envío 0.011 Cryptonote a [dirección única hecha por ALEX+brenda] + H1 + N1" "Yo, [alguien de la colección C], envío 0.101 Cryptonote como cambio a [dirección única hecha por ALEX+alex] + H1 + N2" Ahora, Alex y Brenda escanean todos los mensajes entrantes en busca de direcciones únicas que creado usando su clave. Si encuentran alguno, entonces ese mensaje es nuevo y propio. criptonota! E incluso entonces, la transacción seguirá llegando al blockchain. Si las monedas que entran en esa dirección Se sabe que son enviados por delincuentes, contribuyentes políticos o por comités y cuentas. con presupuestos estrictos (es decir, malversación), o si el nuevo propietario de estas monedas alguna vez comete un error y envía estas monedas a una dirección común con monedas que se sabe que posee, la plantilla de anonimato está arriba en bitcoin.

la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Modelo tradicional de claves/transacciones Bitcoin. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja frente a Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Mod tradicional de claves/transacciones Bitcoinel. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 12 Por lo tanto, en lugar de que los usuarios envíen monedas desde la dirección (que en realidad es una clave pública) a la dirección (otra clave pública) usando sus claves privadas, los usuarios envían monedas desde un apartado de correos único (que se genera usando la clave pública de tus amigos) a un apartado de correos único (de manera similar) usando tu propias claves privadas. En cierto sentido, estamos diciendo: "Está bien, todos quiten las manos del dinero mientras se entrega". transferido! Basta con saber que nuestras llaves pueden abrir esa caja y que Sabemos cuánto dinero hay en la caja. Nunca ponga sus huellas dactilares en el apartado postal o realmente úselo, simplemente intercambie la caja llena de efectivo. De esa manera no sabemos quién envió qué, pero el contenido de estas direcciones públicas sigue siendo fluido, fungible, divisible y todavía poseemos todas las otras buenas cualidades del dinero que deseamos, como bitcoin". Un conjunto infinito de apartados de correos. Publicas una dirección, yo tengo una clave privada. Utilizo mi clave privada y tu dirección, y algunos datos aleatorios, para generar una clave pública. El algoritmo está diseñado de tal manera que, desde su dirección se utilizó para generar la clave pública, solo SU clave privada funciona para desbloquear la mensaje. Una observadora, Eve, te ve publicar tu dirección y ve la clave pública que anuncio. Sin embargo, ella no sabe si anuncié mi clave pública según tu dirección o la de ella, o la de Brenda. o el de Charlene, o el de quien sea. Ella compara su clave privada con la clave pública que anuncié. y ve que no funciona; no es su dinero. Ella no conoce la clave privada de nadie más y sólo el destinatario del mensaje tiene la clave privada que puede desbloquear el mensaje. entonces nadie escuchar puede determinar quién recibió el dinero y mucho menos tomarlo.

Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 13 Me pregunto qué tan doloroso sería implementar una elección de criptografía. esquema. Elíptica o no. Entonces, si algún esquema se rompe en el futuro, la moneda cambia sin preocupación. Probablemente un gran dolor de cabeza. Bien, esto es exactamente lo que acabo de explicar en mi comentario anterior. El tipo Diffe-Hellman Los intercambios son buenos. Digamos que Alex y Brenda tienen cada uno un número secreto, A y B, y un número No les importa mantener el secreto, a y b. Quieren generar un secreto compartido sin Eva lo descubre. A Diffe y Hellman se les ocurrió una manera para que Alex y Brenda compartieran el números públicos a y b, pero no los números privados A y B, y generan un secreto compartido, K. Usando este secreto compartido, K, sin que Eva escuche para poder generar el mismo K, Alex y Brenda ahora pueden usar K como clave de cifrado secreta y devolver mensajes secretos. y adelante. Así es como PUEDE funcionar, aunque debería funcionar con números mucho mayores que 100. Usaremos 100 porque trabajar con los números enteros módulo 100 equivale a "descartar todos sino los dos últimos dígitos de un número." Alex y Brenda eligen cada uno A, a, B y b. Mantienen A y B en secreto. Alex le dice a Brenda su valor de módulo 100 (solo los dos últimos dígitos) y Brenda le dice a Alex. su valor de b módulo 100. Ahora Eva sabe (a,b) módulo 100. Pero Alex sabe (a,b,A) por lo que puede calcular x=abA módulo 100.Alex corta todo excepto el último dígito porque estamos trabajando. bajo los números enteros módulo 100 nuevamente. De manera similar, Brenda sabe (a,b,B) por lo que puede calcular y=abB módulo 100. Alex ahora puede publicar x y Brenda puede publicar y. Pero ahora Alex puede calcular yA = abBA módulo 100, y Brenda puede calcular xB = abBA módulo 100. ¡Ambos saben el mismo número! Pero todo lo que Eva ha oído es (a,b,abA,abB). No tiene una manera fácil de calcular abA*B. Ésta es la forma más fácil y menos segura de pensar en el intercambio Diffe-Hellman. Existen versiones más seguras. Pero la mayoría de las versiones funcionan debido a la factorización de números enteros y discreta. Los logaritmos son difíciles y ambos problemas se resuelven fácilmente con computadoras cuánticas. Investigaré si existe alguna versión que sea resistente a la cuántica. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange A la "secuencia txn estándar" que se enumera aquí le faltan muchos pasos, como FIRMAS. Aquí simplemente se dan por sentado. Lo cual es realmente malo, porque el orden en el que firmar cosas, la información incluida en el mensaje firmado, etc.... todo esto es extremadamente importante para el protocolo. Equivocarse uno o dos de los pasos, incluso ligeramente fuera de orden, mientras se implementa "el secuencia de transacción estándar" podría poner en duda la seguridad de todo el sistema. Además, las pruebas presentadas más adelante en el artículo pueden no ser lo suficientemente rigurosas si El marco bajo el cual trabajan está definido de manera tan vaga como en esta sección.

Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 14 Tenga en cuenta que los autores hacen un trabajo terrible al mantener la terminología correcta en todo momento. el texto, pero especialmente en la siguiente parte. La próxima encarnación de este artículo será necesariamente mucho más riguroso. En el texto se refieren a P como su clave pública única. En el diagrama, se refieren a R como su "clave pública Tx" y P como su "clave de destino". Si tuviera que reescribir esto, lo haría Explique muy específicamente cierta terminología antes de discutir estas secciones. Este codo es enorme. Consulte la página 5. ¿Quién elige a Ell? El diagrama ilustra que la clave pública de la transacción R = rG, que es aleatoria y elegida por el remitente, no forma parte de la salida Tx. Esto se debe a que podría ser el mismo para múltiples transacciones a varias personas y no se utiliza MAS TARDE para gastar. Se genera una nueva R cada vez que desee transmitir una nueva transacción CryptoNote. Además, R sólo se utiliza para comprobar si eres el destinatario de la transacción. No son datos basura, pero son basura para cualquiera. sin las claves privadas asociadas con (A,B). La clave de Destino, por otro lado, P = Hs(rA)G + B es parte de la salida Tx. todos revisar los datos de cada transacción que pasa debe comparar su propio P* generado con esta P para ver si son propietarios de esta transacción pasajera. Cualquier persona con una transacción no gastada (UTXO) tendrá un montón de estas Ps por ahí con cantidades. para gastard, ellos firmar algún mensaje nuevo incluyendo P. Alice debe firmar esta transacción con claves privadas de un solo uso asociadas con las claves de destino de los resultados de la transacción no gastados. Cada llave de destino propiedad de Alice viene equipada con una clave privada única que también pertenece (presumiblemente) a Alice. Cada vez que Alice quiere envíame el contenido de una clave de destino a mí, a Bob, a Brenda, a Charlie o a Charlene, ella utiliza su clave privada para firmar la transacción. Al recibir la transacción, recibiré un nuevo Tx clave pública, una nueva clave pública de Destino y podré recuperar una nueva clave privada única x. Combinando mi clave privada única, x, con el destino público de la nueva transacción La(s) clave(s) es cómo enviamos una nueva transacción.

  1. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos una descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos un gen.descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8 15 ¿Cómo se ve aquí el resultado de una transacción no gastada? El diagrama sugiere que el resultado de la transacción consta solo de dos puntos de datos: monto y clave de destino. Pero esto no es Suficiente porque cuando intento gastar esta "salida" todavía necesitaré saber R=rG. Recuerde, r es elegido por el remitente, y R se utiliza para reconocer las criptonotas entrantes como su propia y b) utilizada para generar la clave privada única utilizada para "reclamar" su criptonota. ¿La parte de esto que no entiendo? Tomando el teórico "está bien, tenemos estos firmas y transacciones, y las pasamos de un lado a otro" al mundo de la programación "Está bien, ¿qué información específicamente constituye un individuo UTXO?" La mejor manera de responder a esa pregunta es profundizar en el cuerpo del código completamente sin comentarios. Así se hace, equipo de bytecoin. Recuerde: vinculabilidad significa "¿envió la misma persona?" y desvinculación significa "hizo lo mismo persona recibe?". Por lo tanto, un sistema puede ser vinculable o no vinculable, desvinculable o no desvinculable. Molesto, lo sé. Entonces, cuando Nic van Saberhagen dice aquí "...los pagos entrantes [están] asociados con pagos únicos claves públicas que no pueden vincularse para un espectador", veamos a qué se refiere. Primero, considere una situación en la que Alice envía a Bob dos transacciones separadas del mismo dirección a la misma dirección. En el universo Bitcoin, Alice ya cometió el error de envío desde la misma dirección y, por lo tanto, la transacción no cumplió con nuestro deseo de obtener información limitada. vinculabilidad. Además, dado que envió el dinero a la misma dirección, no cumplió con nuestro deseo. por desvinculación. Esta transacción de bitcoin era (totalmente) vinculable y no desvinculable. Por otro lado, en el universo de las criptomonedas, digamos que Alice le envía a Bob algunas criptomonedas, usando la dirección pública de Bob. Ella elige como conjunto ofuscante de claves públicas todas las claves públicas conocidas. llaves en el área metropolitana de Washington DC. Alex genera una clave pública única usando la suya propia información y la información pública de Bob. Ella envía el dinero y cualquier observador se dará cuenta. sólo podrá deducir "Alguien del área metropolitana de Washington DC envió 2,3 criptonotas a la dirección pública única XYZ123." Aquí tenemos un control probabilístico sobre la vinculabilidad, por lo que lo llamaremos "casi no vinculable". También vemos solo las claves públicas únicas a las que se envía el dinero. Incluso si sospechábamos del receptor era Bob, no tenemos sus claves privadas y, por lo tanto, no podemos probar si una transacción aprobada pertenece a Bob y mucho menos generar su clave privada única para canjear su criptonota. entonces esto es, de hecho, totalmente "invinculable". Entonces, este es el truco más ingenioso de todos. ¿Quién quiere realmente confiar en otro MtGox? podemos ser Es cómodo almacenar cierta cantidad de BTC en Coinbase, pero lo último en seguridad de bitcoin es una billetera física. Lo cual es un inconveniente. En este caso, puedes regalar sin confianza la mitad de tu clave privada sin comprometer tu propia capacidad para gastar dinero. Al hacer esto, todo lo que estás haciendo es decirle a alguien cómo romper la desvinculación. el otro Se conservan las propiedades del CN que actúa como moneda, como prueba contra el doble gasto y todo eso.

  3. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos una descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos un gen.descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8 16 Sí, ahora tenemos a) una dirección de pago yb) un ID de pago. Un crítico podría preguntar "¿realmente necesitamos hacer esto? Después de todo, si un comerciante recibe 112.00678952 CN exactamente, y ese fue mi pedido, y tengo una captura de pantalla o un recibo o lo que sea, ¿no es así? ¿Es suficiente un grado demencial de precisión? La respuesta es "tal vez, la mayor parte del tiempo, en el día a día, transacciones cara a cara." Sin embargo, la situación más común (especialmente en el mundo digital) es la siguiente: un comerciante vende un conjunto de objetos, cada uno con un precio fijo. Digamos que el objeto A es 0,001 CN, el objeto B es 0,01 CN y El objeto C es 0,1 CN. Ahora bien, si el comerciante recibe un pedido de 1.618 CN, hay muchos muchos (¡muchas!) formas de organizar un pedido para un cliente. Y así, sin algún tipo de identificación de pago, identificar el llamado pedido "único" de un cliente con el llamado costo "único" de su El orden se vuelve imposible. Aún más divertido: si todo lo que hay en mi tienda online cuesta exactamente 1,0 CN, ¿y tengo 1000 clientes al día? Y quieres demostrar que compraste exactamente 3 objetos. hace dos semanas? ¿Sin una identificación de pago? Buena suerte, amigo. En pocas palabras: cuando Bob publica una dirección de pago, puede terminar publicando también una ID de pago también (ver, por ejemplo, depósitos Poloniex XMR). Esto es diferente a lo que se describe. en el texto aquí donde Alice es quien genera la identificación de pago. Bob también debe haber alguna forma de generar una identificación de pago. (a,B) Recuerde que la clave de seguimiento (a,B) se puede publicar; perder el secreto del valor de 'un' testamento no violar tu capacidad de gastar ni permitir que la gente te robe (creo... eso habría por probar), simplemente permitirá a la gente ver todas las transacciones entrantes. Una dirección truncada, como se describe en este párrafo, simplemente toma la parte "privada" de la clave. y lo genera desde la parte "pública". Revelar el valor de 'a' eliminará la no vinculabilidad pero preservará el resto de las transacciones. El autor quiere decir "no desvinculable" porque desvinculable se refiere al receptor y vinculable se refiere al remitente. También está claro que el autor no se dio cuenta de que la vinculabilidad tenía dos aspectos diferentes. Dado que, después de todo, la transacción es un objeto dirigido en un gráfico, surgirán dos preguntas: "¿Estas dos transacciones van a la misma persona?" y "¿estas dos transacciones vienen de la misma persona?" Esta es una política de "no retorno" según la cual la propiedad de desvinculación de CryptoNote es condicional. Es decir, Bob puede elegir que sus transacciones entrantes no sean desvinculables. utilizando esta política. Esta es una afirmación que prueban según el modelo aleatorio de Oracle. Llegaremos a eso; el azar Oracle tiene pros y contras.

VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Quizás esto sea una estupidez, pero hay que tener cuidado al unir S y P_s. Si simplemente agregas el última clave pública hasta el final, la desvinculación se rompe porque cualquiera verifica las transacciones pasadas Puede simplemente verificar la última clave pública enumerada en cada transacción y boom. Esa es la clave pública asociado con el remitente. Entonces, después de la unión, se debe crear un generador de números pseudoaleatorios. Se utiliza para permutar las claves públicas elegidas. "...hasta que el propietario produzca una segunda firma utilizando el mismo par de claves". Deseo que el autor(es?) daría más detalles sobre esto. Creo que esto significa "asegúrate de que cada vez que elijas un conjunto de claves públicas para ofuscar usted mismo, elige un conjunto completamente nuevo sin dos llaves iguales". Lo cual parece una condición bastante fuerte para colocar sobre la desvinculación. Quizás "eliges un nuevo conjunto aleatorio de todas las claves posibles" con el supuesto de que, aunque las intersecciones no triviales inevitablemente suceder, no sucederán a menudo. De cualquier manera, necesito profundizar más en esta afirmación. Esto está generando la firma del anillo. Las pruebas de conocimiento cero son increíbles: te desafío a que me demuestres que conoces un secreto sin revelar el secreto. Por ejemplo, digamos que estamos en la entrada de una cueva con forma de rosquilla, y en la parte trasera de la cueva (más allá de la vista desde la entrada) hay una opuerta de nuevo camino a la que afirma que tienes la llave. Si vas en una dirección, siempre te dejará pasar, pero si vas en la dirección En otra dirección, necesitas una llave. Pero ni siquiera quieres MOSTRARME la clave y mucho menos Muéstrame que abre la puerta. Pero quieres demostrarme que sabes cómo abrir el puerta. En el entorno interactivo, lanzo una moneda. Cara está a la izquierda, cruz a la derecha y bajas por el cueva en forma de rosquilla en cualquier dirección que te indique la moneda. Al fondo, más allá de mi vista, tú Abre la puerta para regresar por el otro lado. Repetimos el experimento de lanzar una moneda al aire. hasta que esté satisfecho de que tienes la llave. Pero esa es claramente la prueba INTERACTIVA de conocimiento cero. Hay versiones no interactivas en las que tú y yo nunca tenemos que comunicarnos; De esta manera, ningún espía podrá interferir. http://en.wikipedia.org/wiki/Zero-knowledge_proof Esto es lo contrario de la definición anterior.

VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Toda esta área es independiente de las criptonotas y simplemente describe el algoritmo de firma del anillo sin referencia a las monedas. Sospecho que parte de la notación es consistente con el resto del artículo, aunque. Por ejemplo, x es la clave secreta "aleatoria" elegida en GEN, que da la clave pública P y la imagen de clave pública I. Este valor de x es el valor que Bob calcula en la parte 6, página 8. Entonces esto es empezando a aclarar parte de la confusión de la descripción anterior. Esto es algo genial; El dinero no se transfiere de "la dirección pública de Alice a la dirección pública de Bob". dirección." Se está transfiriendo de una dirección única a una dirección única. Entonces, en cierto sentido, así es como funcionan las cosas. Si Alex tiene algunas criptonotas porque alguien se las envió, esto significa que tiene las claves privadas necesarias para enviárselas a Bob. ella usa un intercambio Diffe-Hellman que utiliza la información pública de Bob para generar una nueva dirección única y las criptonotas se transfieren a esa dirección. Ahora, dado que se utilizó un intercambio DH (presumiblemente seguro) para generar la nueva dirección única a lo que Alex envió su CN, Bob es el único que tiene las claves privadas necesarias para repetir el arriba. Ahora Bob es Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation La sumatoria debe indexarse sobre j, no sobre i. Cada c_i es basura aleatoria (ya que w_i es aleatorio) excepto el culo de c_iasociado con la clave real involucrada en esta firma. El valor de c es a hash de la información anterior. Sin embargo, creo que esto puede contener un error tipográfico peor que reutilizar el índice 'i', porque c_s parece definirse implícitamente, no explícitamente. De hecho, si tomamos esta ecuación con fe, entonces determinamos que c_s = (1/2)c - (1/2) sum_i neq s c_i. Es decir, un hash menos un montón de números aleatorios. Por otro lado, si esta sumatoria pretende leerse "c_s = (c - sum_j neq s c_j) mod l", luego tomamos el hash de nuestra información anterior, generamos un montón de números aleatorios, reste todos esos números aleatorios del hash, y eso nos da c_s. Esto parece ser lo que "debería" estar sucediendo según mi intuición, y coincide con el paso de verificación en la página 10. Pero la intuición no es matemática. Profundizaré en esto. Igual que antes; todos estos serán basura aleatoria excepto el asociado con el real clave pública del firmante x. Excepto que esta vez, esto es más lo que esperaría de la estructura: r_i es aleatorio para i!=s y r_s está determinado sólo por los valores secretos x y s indexados de q_i y c_i.

VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y lo almacena en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y stLo guarda en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 19 En este punto, estoy terriblemente confundido. Alex recibe un mensaje M con firma (I,c_1, ..., c_n, r_1, ..., r_n) y lista de públicos teclas S. y ejecuta VER. Esto calculará L_i’ y R_i’ Esto verifica que c_s = c - sum_i neq s c_i en la página anterior. Al principio estaba MUY (ja) confundido. Cualquiera puede calcular L_i’ y R_i’. De hecho, cada r_i y c_i han sido publicados en la firma sigma junto con el valor de I. El conjunto S = También se ha publicado el P_i de todas las claves públicas. Así que cualquiera que haya visto sigma y el conjunto de Las claves S = P_i obtendrán los mismos valores para L_i' y R_i' y, por lo tanto, verificarán la firma. Pero luego recordé que esta sección simplemente describe un algoritmo de firma, no una "verificación Si está firmado, verifique si ME LO ENVIÓ y, de ser así, vaya a gastar el dinero". Este es SIMPLEMENTE el parte característica del juego. Me interesa leer el Apéndice A cuando finalmente llegue allí. Me gustaría ver una comparación a gran escala operación por operación de Cryptonote con Bitcoin. Además, electricidad/sostenibilidad. ¿Qué partes de los algoritmos constituyen aquí "entrada"? La entrada de transacción, creo, es una Cantidad y un conjunto de UTXOs que suman una cantidad mayor que la Cantidad. Esto no está claro. "¿Objetivo de esconderse?" He pensado en esto por unos minutos y todavía no tengo el idea más vaga de lo que podría significar. Un ataque de doble gasto solo se puede ejecutar manipulando la clave usada percibida de un nodo conjunto de imágenes \(I\). "Grado de ambigüedad" = n pero el número total de claves públicas incluidas en la transacción es norte+1. Es decir, el grado de ambigüedad sería "¿cuántas OTRAS personas quieres en ¿la multitud?" La respuesta probablemente será, por defecto, "tantos como sea posible".

VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y lo almacena en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y stLo guarda en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 20 Esto es interesante; Anteriormente, proporcionamos una manera para que un receptor, Bob, haga todos los ENTRANTE transacciones no desvinculables ya sea eligiendo la mitad de sus claves privadas de manera determinista o publicar la mitad de sus claves privadas como públicas. Se trata de una especie de política de no vuelta atrás. Aquí vemos una forma de que un remitente, Alex, elija una única transacción saliente como vinculable, pero en realidad esto revela a Alex como el remitente de toda la red. Esta NO es una política de no vuelta atrás. Esto es transacción por transacción. ¿Existe una tercera política? ¿Puede un receptor, Bob, generar una identificación de pago única para Alex que ¿Nunca cambia, quizás usando un intercambio Diffe-Hellman? Si alguien incluye ese pago La identificación incluida en algún lugar de su transacción en la dirección de Bob, debe haber venido de Alex. De esta manera, Alex no necesita revelarse a toda la red eligiendo vincular un enlace en particular. transacción, pero aún puede identificarse ante la persona a quien envía su dinero. ¿No es esto lo que hace Poloniex?

Transacción entrada de transmisión Salida0 . . . Salidai . . . Salida Imagen clave Firmas Firma del anillo Clave de destino Salida1 Clave de destino Salida Transacciones extranjeras Salida del remitente Clave de destino Par de claves de un solo uso una sola vez clave privada Yo = xHp(P) P,x Fig. 7. Generación de firma de anillo en una transacción estándar. 5 Prueba de trabajo igualitaria En esta sección proponemos y fundamentamos el nuevo algoritmo proof-of-work. Nuestro objetivo principal es cerrar la brecha entre los mineros de CPU (mayoría) y GPU/FPGA/ASIC (minoría). es Es apropiado que algunos usuarios puedan tener cierta ventaja sobre otros, pero sus inversiones debería crecer al menos linealmente con la potencia. En términos más generales, producir dispositivos para fines especiales. tiene que ser lo menos rentable posible. 5.1 Trabajos relacionados El protocolo original Bitcoin proof-of-work utiliza la función de fijación de precios con uso intensivo de CPU SHA-256. Consiste principalmente en operadores lógicos básicos y se basa únicamente en la velocidad computacional de procesador, por lo tanto, es perfectamente adecuado para la implementación multinúcleo/transportador. Sin embargo, las computadoras modernas no están limitadas únicamente por el número de operaciones por segundo, sino también por el tamaño de la memoria. Si bien algunos procesadores pueden ser sustancialmente más rápidos que otros [8], Es menos probable que los tamaños de memoria varíen entre máquinas. Las funciones de precios ligadas a la memoria fueron introducidas por primera vez por Abadi et al y se definieron como “funciones cuyo tiempo de cálculo está dominado por el tiempo dedicado a acceder a la memoria” [15]. La idea principal es construir un algoritmo que asigne un gran bloque de datos ("bloc de notas") dentro de la memoria a la que se puede acceder con relativa lentitud (por ejemplo, RAM) y “acceder a una secuencia impredecible de ubicaciones” dentro de él. Un bloque debe ser lo suficientemente grande como para que la conservación los datos son más ventajosos que recalcularlos para cada acceso. El algoritmo también debe evitar el paralelismo interno, por lo tanto, N subprocesos simultáneos deberían requerir N veces más memoria a la vez. Dwork et al [22] investigaron y formalizaron este enfoque, lo que los llevó a sugerir otro Variante de la función de fijación de precios: “Mbound”. Una obra más pertenece a F. Coelho [20], quien 11 Transacción entrada de transmisión Salida0 . . . Salidai . . . Salida Imagen clave Firmas Firma del anillo Clave de destino Salida1 Clave de destino Salida Transacciones extranjeras Salida del remitente Clave de destino Par de claves de un solo uso una sola vez clave privada Yo = xHp(P) P,x Fig. 7. Generación de firma de anillo en una transacción estándar. 5 Prueba de trabajo igualitaria En esta sección proponemos y fundamentamos el nuevo algoritmo proof-of-work. Nuestro objetivo principal es cerrar la brecha entre los mineros de CPU (mayoría) y GPU/FPGA/ASIC (minoría). es Es apropiado que algunos usuarios puedan tener cierta ventaja sobre otros, pero sus inversiones debería crecer al menos linealmente con la potencia. En términos más generales, producir dispositivos para fines especiales. tiene que ser lo menos rentable posible. 5.1 Trabajos relacionados El protocolo original Bitcoin proof-of-work utiliza la función de fijación de precios con uso intensivo de CPU SHA-256. Consiste principalmente en operadores lógicos básicos y se basa únicamente en la velocidad computacional de procesador, por lo tanto, es perfectamente adecuado para la implementación multinúcleo/transportador. Sin embargo, las computadoras modernas no están limitadas únicamente por el número de operaciones por segundo, sino también por el tamaño de la memoria. Si bien algunos procesadores pueden ser sustancialmente más rápidos que otros [8], Es menos probable que los tamaños de memoria varíen entre máquinas. Las funciones de precios ligadas a la memoria fueron introducidas por primera vez por Abadi et al y se definieron como “funciones cuyo tiempo de cálculo está dominado por el tiempo dedicado a acceder a la memoria” [15]. La idea principal es construir un algoritmo que asigne un gran bloque de datos ("bloc de notas") dentro de la memoria a la que se puede acceder con relativa lentitud (por ejemplo, RAM) y “acceder a una secuencia impredecible de ubicaciones” dentro de él. Un bloque debe ser lo suficientemente grande como para que la conservación los datos son más ventajosos que recalcularlos para cada acceso. El algoritmo también debe evitar el paralelismo interno, por lo tanto, N subprocesos simultáneos deberían requerir N veces más memoria a la vez. Dwork et al [22] investigaron y formalizaron este enfoque, lo que los llevó a sugerir otro Variante de la función de fijación de precios: “Mbound”. Una obra más pertenece a F. Coelho [20], quien 11 21 Estos son, aparentemente, nuestros UTXO: importes y claves de destino. Si Alex es quien construye esta transacción estándar y se la envía a Bob, entonces Alex también tiene las claves privadas. a cada uno de estos. Me gusta mucho este diagrama porque responde a algunas preguntas anteriores. Una entrada Txn consiste de un conjunto de salidas Txn y un key imagen. Luego se firma con una firma circular, incluyendo todos de las claves privadas que Alex posee para todas las transacciones extranjeras incluidas en el acuerdo. el La salida Txn consta de una cantidad y una clave de destino. El receptor de la transacción podrá, a voluntad, generar su clave privada única como se describió anteriormente en el documento para gastar el dinero. Será un placer descubrir en qué medida esto coincide con el código real... No, Nic van Saberhagen describe vagamente algunas propiedades de un algoritmo de prueba de trabajo, sin realmente describir ese algoritmo. El algoritmo CryptoNight en sí REQUIERE un análisis profundo. Cuando leí esto, tartamudeé. ¿Debería la inversión crecer al menos linealmente con el poder, o debería ¿La inversión crece como máximo linealmente con el poder? Y entonces me di cuenta; Yo, como minero o inversor, suelo pensar en "¿cuánta energía puedo obtener?" para una inversión?" no "¿cuánta inversión se requiere para una cantidad fija de energía?" Por supuesto, denotamos la inversión por I y la potencia por P. Si I(P) es la inversión en función de la potencia y P(I) es el poder en función de la inversión, serán inversos entre sí (dondequiera que pueden existir inversas). Y si I (P) es más rápido que lineal, entonces P (I) es más lento que lineal. Por lo tanto, Habrá una tasa de rendimiento reducida para los inversores. Es decir, lo que aquí dice el autor es: "claro, a medida que inviertas más, obtendrás más poder. Pero deberíamos tratar de hacer de esto una tasa de retorno reducida". Las inversiones en CPU eventualmente tendrán un límite sublineal; la pregunta es si los autores Hemos diseñado un algoritmo POW que obligará a los ASIC a hacer también esto. ¿Una hipotética "moneda futura" debería extraerse siempre con los recursos más lentos/limitados? El artículo de Abadi et al (que tiene como autores a algunos ingenieros de Google y Microsoft) es, Básicamente, aprovechando el hecho de que durante los últimos años el tamaño de la memoria ha tenido una reducción mucho menor. entre máquinas que la velocidad del procesador, y con una relación inversión-potencia más que lineal. ¡En unos años esto habrá que reevaluarlo! Todo es una carrera armamentista... Construir una función hash es difícil; construir una función hash que satisfaga estas restricciones parece ser más difícil. Este artículo parece no tener ninguna explicación de la situación real. hashing algoritmo CryptoNight. Creo que es una implementación de SHA-3 con memoria dura, basada en publicaciones del foro pero no tengo idea... y ese es el punto. Hay que explicarlo.

propuso la solución más eficaz: “Hokkaido”. Hasta donde sabemos, el último trabajo basado en la idea de búsquedas pseudoaleatorias en una gran variedad es el algoritmo conocido como “scrypt” por C. Percival [32]. A diferencia de las funciones anteriores se centra en derivación de claves, y no sistemas proof-of-work. A pesar de este hecho, scrypt puede cumplir nuestro propósito: funciona bien como función de fijación de precios en el problema de conversión parcial hash, como SHA-256 en Bitcoin. A estas alturas, scrypt ya se ha aplicado en Litecoin [14] y algunas otras bifurcaciones Bitcoin. Sin embargo, su implementación no está realmente ligada a la memoria: la relación "tiempo de acceso a la memoria / tiempo total time” no es lo suficientemente grande porque cada instancia usa solo 128 KB. Esto permite a los mineros GPU ser aproximadamente 10 veces más efectivo y continúa dejando la posibilidad de crear relativamente Dispositivos de minería baratos pero altamente eficientes. Además, la propia construcción del scrypt permite un equilibrio lineal entre el tamaño de la memoria y el tamaño de la memoria. Velocidad de la CPU debido al hecho de que cada bloque en el scratchpad se deriva únicamente del anterior. Por ejemplo, puede almacenar cada segundo bloque y recalcular los demás de forma diferida, es decir, sólo cuando sea necesario. Se supone que los índices pseudoaleatorios están distribuidos uniformemente, por lo tanto, el valor esperado de los recálculos de los bloques adicionales es 1 \(2 \cdot N\), donde N es el número de iteraciones. El tiempo total de cálculo aumenta menos de la mitad porque también hay operaciones independientes del tiempo (tiempo constante), como preparar el scratchpad y hashing cada iteración. Ahorrar 2/3 de la memoria cuesta 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionales; 9/10 resultados en 1 \(10 \cdot N\)+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Es fácil demostrar que almacenar sólo 1 s de todos los bloques aumenta el tiempo menos que por un factor de s-1 2 . Esto a su vez implica que una máquina con una CPU 200 veces más rápido que los chips modernos, pueden almacenar sólo 320 bytes del scratchpad. 5.2 El algoritmo propuesto Proponemos un nuevo algoritmo vinculado a memoria para la función de fijación de precios proof-of-work. se basa en acceso aleatorio a una memoria lenta y enfatiza la dependencia de la latencia. A diferencia de scrypt cada El nuevo bloque (64 bytes de longitud) depende de todos los bloques anteriores. Como resultado, una hipotética El “ahorro de memoria” debería aumentar exponencialmente su velocidad de cálculo. Nuestro algoritmo requiere alrededor de 2 Mb por instancia por los siguientes motivos: 1. Cabe en la caché L3 (por núcleo) de los procesadores modernos, que deberían convertirse en algo común. en unos años; 2. Un megabyte de memoria interna es un tamaño casi inaceptable para una tubería ASIC moderna; 3. Las GPU pueden ejecutar cientos de instancias simultáneas, pero están limitadas de otras maneras: La memoria GDDR5 es más lenta que la caché L3 de la CPU y destaca por su ancho de banda, no velocidad de acceso aleatorio. 4. Una expansión significativa del scratchpad requeriría un aumento en las iteraciones, lo que en turno implica un aumento general del tiempo. Las llamadas "pesadas" en una red p2p sin confianza pueden provocar vulnerabilidades graves, porque los nodos están obligados a verificar el proof-of-work de cada nuevo bloque. Si un nodo dedica una cantidad considerable de tiempo a cada evaluación hash, puede ser fácilmente DDoSed por una avalancha de objetos falsos con datos de trabajo arbitrarios (valores nonce). 12 propuso la solución más eficaz: “Hokkaido”. Hasta donde sabemos, el último trabajo basado en la idea de búsquedas pseudoaleatorias en una gran variedad es el algoritmo conocido como “scrypt” por C. Percival [32]. A diferencia de las funciones anteriores se centra en derivación de claves, y no sistemas proof-of-work. A pesar de este hecho, scrypt puede cumplir nuestro propósito: funciona bien como función de fijación de precios en el problema de conversión parcial hash, como SHA-256 en Bitcoin. A estas alturas, scrypt ya se ha aplicado en Litecoin [14] y algunas otras bifurcaciones Bitcoin. Sin embargo, su implementación no está realmente ligada a la memoria: la relación "tiempo de acceso a la memoria / tiempo total time” no es lo suficientemente grande porque cada instancia usa solo 128 KB. Esto permite a los mineros GPU ser aproximadamente 10 veces más efectivo y continúa dejando la posibilidad de crear relativamente Dispositivos de minería baratos pero altamente eficientes. Además, la propia construcción del scrypt permite un equilibrio lineal entre el tamaño de la memoria y el tamaño de la memoria. Velocidad de la CPU debido al hecho de que cada bloque en el scratchpad se deriva únicamente del anterior. Por ejemplo, puede almacenar cada segundo bloque y recalcular los demás de forma diferida, es decir, sólo cuando sea necesario. Se supone que los índices pseudoaleatorios están distribuidos uniformemente, por lo tanto, el valor esperado de los recálculos de los bloques adicionales es 1 \(2 \cdot N\), donden es el numero de iteraciones. El tiempo total de cálculo aumenta menos de la mitad porque también hay operaciones independientes del tiempo (tiempo constante), como preparar el bloc de notas y hashing cada iteración. Ahorrar 2/3 de la memoria cuesta 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionales; 9/10 resultados en 1 \(10 \cdot N\)+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Es fácil demostrar que almacenar sólo 1 s de todos los bloques aumenta el tiempo menos que por un factor de s-1 2 . Esto a su vez implica que una máquina con una CPU 200 veces más rápido que los chips modernos, pueden almacenar sólo 320 bytes del scratchpad. 5.2 El algoritmo propuesto Proponemos un nuevo algoritmo vinculado a memoria para la función de fijación de precios proof-of-work. se basa en acceso aleatorio a una memoria lenta y enfatiza la dependencia de la latencia. A diferencia de scrypt cada El nuevo bloque (64 bytes de longitud) depende de todos los bloques anteriores. Como resultado, una hipotética El “ahorro de memoria” debería aumentar exponencialmente su velocidad de cálculo. Nuestro algoritmo requiere alrededor de 2 Mb por instancia por los siguientes motivos: 1. Cabe en la caché L3 (por núcleo) de los procesadores modernos, que deberían convertirse en algo común. en unos años; 2. Un megabyte de memoria interna es un tamaño casi inaceptable para una tubería ASIC moderna; 3. Las GPU pueden ejecutar cientos de instancias simultáneas, pero están limitadas de otras maneras: La memoria GDDR5 es más lenta que la caché L3 de la CPU y destaca por su ancho de banda, no velocidad de acceso aleatorio. 4. Una expansión significativa del scratchpad requeriría un aumento en las iteraciones, lo que en turno implica un aumento general del tiempo. Las llamadas "pesadas" en una red p2p sin confianza pueden provocar vulnerabilidades graves, porque los nodos están obligados a verificar el proof-of-work de cada nuevo bloque. Si un nodo dedica una cantidad considerable de tiempo a cada evaluación hash, puede ser fácilmente DDoSed por una avalancha de objetos falsos con datos de trabajo arbitrarios (valores nonce). 12 22 No importa, ¿es una moneda scrypt? ¿Dónde está el algoritmo? Lo único que veo es un anuncio. Aquí es donde Cryptonote, si su algoritmo PoW vale la pena, realmente brillará. no es Realmente SHA-256, no es realmente scrypt. Es nuevo, está vinculado a la memoria y no recursivo.

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la red hashrate crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 23 Unidades atómicas. Me gusta eso. ¿Es este el equivalente de Satoshis? Si es así, eso significa que habrá 185 mil millones de criptomonedas. Sé que esto, eventualmente, debe modificarse en unas pocas páginas, ¿o tal vez hay un error tipográfico? Si la recompensa base es "todas las monedas restantes", entonces sólo un bloque es suficiente para obtener todas las monedas. Instamina. Por otro lado, si se supone que esto es proporcional de algún modo a la ¿Diferencia de tiempo entre ahora y alguna fecha de terminación de la producción de monedas? eso seria tiene sentido. Además, en mi mundo, dos signos mayores que este significan "mucho mayor que". ¿El autor ¿posiblemente signifique algo más? Si el ajuste a la dificultad ocurre en cada bloque, entonces un atacante podría tener una granja muy grande de Las máquinas extraen dentro y fuera en intervalos de tiempo cuidadosamente elegidos. Esto podría causar una explosión caótica (o una caída a cero) en dificultad, si las fórmulas de ajuste de dificultad no se amortiguan adecuadamente. No hay duda de que el método de Bitcoin no es adecuado para recálculos rápidos, pero la idea de inercia en estos sistemas sería necesario demostrarlo, no darlo por sentado. Además, las oscilaciones en la red la dificultad no es necesariamente un problema a menos que resulte en oscilaciones de suministro de monedas, y tener una dificultad que cambia muy rápidamente podría causar una "corrección excesiva". El tiempo invertido, especialmente en un lapso corto como unos pocos minutos, será proporcional al "total número de bloques creados en la red." La constante de proporcionalidad crecerá en sí misma. con el tiempo, presumiblemente de manera exponencial si CN despega. Puede ser una mejor idea simplemente ajustar la dificultad para mantener "los bloques totales creados en el red desde que se agregó el último bloque a la cadena principal" dentro de algún valor constante, o con variación acotada o algo así. Si un algoritmo adaptativo que es computacionalmente Si se puede determinar si es fácil de implementar, esto parecería resolver el problema. Pero entonces, si usáramos ese método, alguien con una gran granja minera podría cerrarla. durante unas horas y vuelva a encenderlo. Durante las primeras cuadras, esa granja hará banco. Entonces, en realidad, este método traería a colación un punto interesante: la minería se convierte (en promedio) en una perder el juego sin retorno de la inversión, especialmente a medida que más personas se conectan a la red. Si la dificultad minera seguimiento muy de cerca de la red hashrate, de alguna manera dudo que la gente extraiga tanto como actualmente lo hago. O, por otro lado, en lugar de mantener sus granjas mineras funcionando las 24 horas del día, los 7 días de la semana, pueden convertirlas en encendido por 6 horas, apagado por 2, encendido por 6, apagado por 2, o algo así. Simplemente cambia a otra moneda durante unas horas, espera a que disminuya la dificultad y luego vuelve a subir para ganar esos pocos puntos extra. bloques de rentabilidad a medida que la red se adapta. ¿Y sabes qué? En realidad esto es probablemente Uno de los mejores escenarios de minería en los que he pensado... Esto podría ser circular, pero si el tiempo de creación del bloque promedia aproximadamente un minuto, ¿podemos simplemente ¿Utiliza el número de bloques como indicador del "tiempo invertido?"

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la velocidad de la red hash crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 24 Bien, entonces tenemos un blockchain, y cada bloque tiene marcas de tiempo ADEMÁS de simplemente ser ordenado. Esto se insertó claramente simplemente para dificultar el ajuste, porque las marcas de tiempo son muy poco confiable, como se mencionó. ¿Se nos permite tener marcas de tiempo contradictorias en la cadena? Si el bloque A viene antes que el bloque B en la cadena, y todo es consistente en términos financieros, ¿Pero el bloque A parece haber sido creado después del bloque B? Porque, tal vez, alguien poseía una gran parte de la red? ¿Está bien? Probablemente porque las finanzas no están arruinadas. Bien, odio este arbitrario "sólo el 80% de los bloques son legítimos para el blockchain principal" enfoque. ¿Tenía la intención de evitar que los mentirosos modificaran sus marcas de tiempo? Pero ahora añade incentivo para que todos mientan sobre sus marcas de tiempo y simplemente elijan la mediana. Por favor defina. Lo que significa "para este bloque, solo incluya transacciones que incluyan tarifas mayores superior al p%, preferentemente con tarifas superiores al 2p%" o algo así? ¿Qué quieren decir con falso? Si la transacción es consistente con la historia pasada de la blockchain, y la transacción incluye tarifas que satisfacen a los mineros, ¿no es suficiente? Bueno, no, no necesariamente. Si no existe un tamaño de bloque máximo, no hay nada que pueda mantener a un usuario malintencionado desde simplemente cargar un bloque masivo de transacciones a sí mismo de una vez solo para reducir la velocidad la red. Una regla básica para el tamaño máximo de bloque evita que las personas coloquen enormes cantidades de basura datos en el blockchain todos a la vez solo para ralentizar las cosas. Pero tal norma ciertamente tiene que ser adaptable: durante la temporada navideña, por ejemplo, podríamos esperar que el tráfico aumente, y el tamaño del bloque se vuelve muy grande, e inmediatamente después, para que el tamaño del bloque disminuya posteriormente otra vez. Entonces necesitamos a) algún tipo de límite adaptativo ob) un límite lo suficientemente grande como para que el 99% de Los picos navideños razonables no rompen el límite. Por supuesto, ese segundo es imposible de estimación: ¿quién sabe si una moneda tendrá éxito? Es mejor hacerlo adaptable y no preocuparse. al respecto. Pero entonces tenemos un problema de teoría del control: ¿cómo hacer que esto sea adaptativo sin ¿Vulnerabilidad al ataque u oscilaciones salvajes y locas? Observe que un método adaptativo no impide que los usuarios malintencionados acumulen pequeñas cantidades de datos basura a lo largo del tiempo en el blockchain para causar hinchazón a largo plazo. Este es un tema diferente en conjunto y uno con el que las criptomonedas tienen serios problemas.

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 25 Al reescalar el tiempo para que una unidad de tiempo sea N bloques, el tamaño promedio de bloque aún podría, en teoría, crecer exponencialmente proporcionalmente a 2ˆt. Por otra parte, un límite más general en el siguiente bloque sería M_nf(M_n) para alguna función f. ¿Qué propiedades de f ¿Elegimos para garantizar un "crecimiento razonable" del tamaño del bloque? La progresión de Los tamaños de bloque (después del tiempo de reescalado) serían así: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Y el objetivo aquí es elegir f tal que esta secuencia no crezca más rápido que, digamos, linealmente, o quizás incluso como Log(t). Por supuesto, si f(M_n) = a para alguna constante a, esta secuencia es en realidad M_n aM_n aˆ2M_n aˆ3M_n ... Y, por supuesto, la única manera de limitar esto a un crecimiento lineal como máximo es eligiendo a=1. Por supuesto, esto es inviable. No permite ningún crecimiento. Si, por el contrario, f(M_n) es una función no constante, entonces la situación es mucho más complicada. complicado y puede permitir una solución elegante. Pensaré en esto por un tiempo. Esta tarifa tendrá que ser lo suficientemente grande como para descontar la penalización por exceso de tamaño de la siguiente sección. ¿Por qué se supone que un usuario general es hombre, eh? ¿Eh?

posibilidad de inflar el blockchain y producir una carga adicional en los nodos. para desalentar Para que los participantes malévolos creen bloques grandes, introducimos una función de penalización: NuevaRecompensa = Recompensa Base \(\cdot\) Tamaño negro manganeso −1 2 Esta regla se aplica sólo cuando BlkSize es mayor que el tamaño mínimo de bloque libre que debería estar cerca del máximo (10kb, \(M_N \cdot 110\%\)). A los mineros se les permite crear bloques de "tamaño habitual" e incluso excederlo con utilidades cuando los honorarios globales superen la multa. Pero es poco probable que las tarifas aumenten cuadráticamente diferente del valor de la penalización, por lo que habrá un equilibrio. 6.3 Guiones de transacciones CryptoNote tiene un subsistema de secuencias de comandos muy minimalista. Un remitente especifica una expresión Φ = f (x1, x2, . . . , xn), donde n es el número de claves públicas de destino {Pi}n yo=1. Sólo cinco binarios Se admiten operadores: mínimo, máximo, suma, mul y cmp. Cuando el receptor gasta este pago, produce \(0 \leq k \leq n\) firmas y las pasa a la entrada de la transacción. El proceso de verificación simplemente evalúa Φ con xi = 1 para verificar si hay una firma válida para la clave pública Pi, y xi = 0. Un verificador acepta la prueba si ffΦ > 0. A pesar de su simplicidad, este enfoque cubre todos los casos posibles: • Firma multiumbral/umbral. Para la firma múltiple “M-out-of-N” de estilo Bitcoin (es decir, el receptor debe proporcionar al menos \(0 \leq M \leq N\) firmas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (Para mayor claridad estamos usando notación algebraica común). La firma del umbral ponderado (algunas claves pueden ser más importantes que otras) podría expresarse como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Y escenario donde la llave maestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Es fácil demostrar que cualquier caso sofisticado puede ser expresados con estos operadores, es decir, forman base. • Protección por contraseña. La posesión de una contraseña secreta equivale al conocimiento de una clave privada, derivada de manera determinista de la contraseña: k = KDF(s). Por tanto, un receptor puede demostrar que conoce la contraseña aportando otra firma bajo la clave k. El remitente simplemente agrega la clave pública correspondiente a su propia salida. Tenga en cuenta que esto El método es mucho más seguro que el "rompecabezas de transacciones" utilizado en Bitcoin [13], donde el La contraseña se pasa explícitamente en las entradas. • Casos degenerados. Φ = 1 significa que cualquiera puede gastar el dinero; Φ = 0 marca el la producción no se puede gastar para siempre. En el caso de que el script de salida combinado con claves públicas sea demasiado grande para un remitente, él Puede utilizar un tipo de salida especial, que indica que el destinatario pondrá estos datos en su entrada. mientras que el remitente proporciona solo un hash del mismo. Este enfoque es similar al “pago a hash” de Bitcoin. característica, pero en lugar de agregar nuevos comandos de script, manejamos este caso en la estructura de datos nivel. 7 Conclusión Hemos investigado los principales defectos de Bitcoin y hemos propuesto algunas posibles soluciones. Estas características ventajosas y nuestro desarrollo continuo hacen que el nuevo sistema de efectivo electrónico CryptoNote un serio rival de Bitcoin, superando a todas sus bifurcaciones. 14 posibilidad de inflar el blockchain y producir una carga adicional en los nodos. para desalentar Para que los participantes malévolos creen bloques grandes, introducimos una función de penalización: NuevaRecompensa = Recompensa Base \(\cdot\) Tamaño negro manganeso −1 2 Esta regla se aplica sólo cuando BlkSize es mayor que el tamaño mínimo de bloque libre que debería estar cerca del máximo (10kb, \(M_N \cdot 110\%\)). A los mineros se les permite crear bloques de "tamaño habitual" e incluso excederlo con utilidades cuando los honorarios globales superen la multa. Pero es poco probable que las tarifas aumenten cuadráticamente diferente del valor de la penalización, por lo que habrá un equilibrio. 6.3 Guiones de transacciones CryptoNote tiene un subsistema de secuencias de comandos muy minimalista. Un remitente especifica una expresión Φ = f (x1, x2, . . . , xn), donde n es el número de claves públicas de destino {Pi}n yo=1. Sólo cinco binarios Se admiten operadores: mínimo, máximo, suma, mul y cmp. Cuando el receptor gasta este pago, produce \(0 \leq k \leq n\) firmas y las pasa a la entrada de la transacción. El proceso de verificación simplemente evalúa Φ con xi = 1 para verificar si hay una firma válida para la clave pública Pi, y xi = 0. Un verificador acepta la prueba si ffΦ > 0. A pesar de su simplicidad, este enfoque cubre todos los casos posibles: • Firma multiumbral/umbral. Para la firma múltiple “M-out-of-N” de estilo Bitcoin (es decir, el receptor debe proporcionar al menos \(0 \leq M \leq N\) firmas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (Para mayor claridad estamos usando notación algebraica común). La firma del umbral ponderado (algunas claves pueden ser más importantes que otras) podría expresarse como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). y escenarioio donde la clave maestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Es fácil demostrar que cualquier caso sofisticado puede ser expresados con estos operadores, es decir, forman base. • Protección por contraseña. La posesión de una contraseña secreta equivale al conocimiento de una clave privada, derivada de manera determinista de la contraseña: k = KDF(s). Por tanto, un receptor puede demostrar que conoce la contraseña aportando otra firma bajo la clave k. El remitente simplemente agrega la clave pública correspondiente a su propia salida. Tenga en cuenta que esto El método es mucho más seguro que el "rompecabezas de transacciones" utilizado en Bitcoin [13], donde el La contraseña se pasa explícitamente en las entradas. • Casos degenerados. Φ = 1 significa que cualquiera puede gastar el dinero; Φ = 0 marca el la producción no se puede gastar para siempre. En el caso de que el script de salida combinado con claves públicas sea demasiado grande para un remitente, él Puede utilizar un tipo de salida especial, que indica que el destinatario pondrá estos datos en su entrada. mientras que el remitente proporciona solo un hash del mismo. Este enfoque es similar al “pago a hash” de Bitcoin. característica, pero en lugar de agregar nuevos comandos de script, manejamos este caso en la estructura de datos nivel. 7 Conclusión Hemos investigado los principales defectos de Bitcoin y hemos propuesto algunas posibles soluciones. Estas características ventajosas y nuestro desarrollo continuo hacen que el nuevo sistema de efectivo electrónico CryptoNote un serio rival de Bitcoin, superando a todas sus bifurcaciones. 14 26 Esto puede ser innecesario si podemos encontrar una manera de limitar el tamaño del bloque a lo largo del tiempo... Esto tampoco puede ser correcto. Simplemente configuraron "NewReward" en una parábola orientada hacia arriba donde El tamaño del bloque es la variable independiente. Entonces la nueva recompensa explota hasta el infinito. Si por el otro Por otro lado, la nueva recompensa es Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), luego la nueva recompensa sería una parábola orientada hacia abajo con pico en el tamaño del bloque = Mn, y con intersecciones en Tamaño de bloque = 0 y Tamaño de bloque = 2Mn. Y eso parece ser lo que intentan describir. Sin embargo, esto no

Анализ

5 Не то чтобы это имело большое значение, когда миллиард человек в мире живут менее чем на доллар в год. и у меня нет никакой надежды когда-либо участвовать в какой-либо горнодобывающей сети... кроме экономической мир, управляемый валютной системой p2p с принципом «один процессор – один голос», по-видимому, был бы более справедливее, чем система, основанная на частичном банковском резервировании. Но протокол Cryptonote по-прежнему требует 51% честных пользователей... см., например, Cryptonote форумы, где один из разработчиков, Плишков, говорит, что традиционная атака 51% с заменой данных на blockchain все еще может работать. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Обратите внимание: на самом деле вам не нужен 51% честных пользователей. Вам просто очень не нужно «ни одного нечестного фракция, владеющая более чем 51% hash мощи сети." Давайте назовем эту так называемую проблему Биткойна «адаптивной жесткостью». Решение Cryptonote для адаптивного жесткость – это адаптивная гибкость значений параметров протокола. Если вам нужны блоки большего размера, нет проблем, сеть все это время будет плавно настраиваться. То есть, способ, которым Bitcoin регулирует сложность с течением времени, можно воспроизвести во всем нашем протоколе. параметры, чтобы не требовалось достижение сетевого консенсуса для обновления протокола. На первый взгляд это кажется хорошей идеей, но без тщательного обдумывания это саморегулирующаяся идея. система может стать совершенно непредсказуемой и хаотичной. Мы рассмотрим это подробнее позже, поскольку возможности возникают. «Хорошие» системы находятся где-то между адаптивно-жесткими и адаптивно-гибкими. гибки, и, возможно, даже сама жесткость адаптивна. Если бы у нас действительно был принцип «один процессор — один голос», то совместная работа и разработка пулов позволили бы достичь 51 %. было бы сложнее. Мы ожидаем, что каждый процессор в мире будет заниматься майнингом с телефонов. к встроенному процессору вашей Tesla во время зарядки. http://en.wikipedia.org/wiki/Pareto_principle Я утверждаю, что равновесие Парето в некоторой степени неизбежно. Либо 20% системы владеть 80% процессоров, или 20% системы будет владеть 80% ASIC. Я предполагаю это, потому что основное распределение богатства в обществе уже демонстрирует распределение Парето: и по мере того, как присоединяются новые майнеры, они выбираются из этого базового распределения. Тем не менее, я утверждаю, что протоколы с принципом «один процессор — один голос» принесут окупаемость инвестиций в аппаратное обеспечение. Блокировать вознаграждение за узел будет более точно пропорционально количеству узлов в сети, поскольку распределение производительности по узлам будет гораздо более плотным. Bitcoin, с другой стороны, видит вознаграждение за блок (за узел), более пропорциональное вычислительной мощности этого узла. узел. То есть в горнодобывающей отрасли все еще участвуют только «большие мальчики». С другой стороны, хотя принцип Парето по-прежнему будет действовать, в мире «один процессор — один голос» каждый участвует в сетевой безопасности и получает небольшой доход от майнинга. В мире ASIC нецелесообразно привязывать к себе каждый XBox и мобильный телефон. В мире «один процессор — один голос» это очень разумно с точки зрения вознаграждения за майнинг. Как приятное последствие, набрать 51% голосов труднее, когда голосов становится все больше и больше, что дает прекрасный польза для сетевой безопасности..оборудование, описанное ранее. Предположим, что глобальная скорость hash значительно снижается, даже для мгновение, теперь он может использовать свою мощность майнинга, чтобы разветвить цепочку и удвоить расходы. Как мы увидим далее в этой статье вполне вероятно, что ранее описанное событие имело место. 2.3 Нерегулярная эмиссия Bitcoin имеет заранее определенную скорость эмиссии: каждый решенный блок производит фиксированное количество монет. Примерно каждые четыре года эта награда уменьшается вдвое. Первоначальное намерение состояло в том, чтобы создать ограниченное плавное излучение с экспоненциальным затуханием, но по факту мы имеем кусочно-линейное излучение функция, точки останова которой могут вызвать проблемы в инфраструктуре Bitcoin. Когда происходит точка останова, майнеры начинают получать только половину стоимости своих предыдущих награда. Абсолютная разница между 12,5 и 6,25 BTC (прогноз на 2020 год) может кажутся терпимыми. Однако при рассмотрении падения BTC с 50 до 25, произошедшего в ноябре 28 2012 года, посчитали его неприемлемым для значительного числа членов горнодобывающего сообщества. Рисунок 1 показано резкое снижение скорости hash сети в конце ноября, как раз тогда, когда произошло халвинг. Это событие могло стать идеальным моментом для злонамеренного человека. описано в разделе функции proof-of-work для проведения атаки двойных расходов [36]. Рис. 1. График курса Bitcoin hash (источник: http://bitcoin.sipa.be) 2.4 Жестко запрограммированные константы Bitcoin имеет множество жестко запрограммированных ограничений, некоторые из которых являются естественными элементами исходного дизайна (например, частота блоков, максимальная сумма денежной массы, количество подтверждений), тогда как другие кажутся искусственными ограничениями. Дело не столько в ограничениях, сколько в невозможности быстро меняться. 3 оборудование, описанное ранее. Предположим, что глобальная скорость hash значительно снижается, даже для мгновение, теперь он может использовать свою мощность майнинга, чтобы разветвить цепочку и удвоить расходы. Как мы увидим далее в этой статье вполне вероятно, что ранее описанное событие имело место. 2.3 Нерегулярная эмиссия Bitcoin имеет заранее определенную скорость эмиссии: каждый решенный блок производит фиксированное количество монет. Примерно каждые четыре года эта награда уменьшается вдвое. Первоначальное намерение состояло в том, чтобы создать ограниченное плавное излучение с экспоненциальным затуханием, но по факту мы имеем кусочно-линейное излучение функция, точки останова которой могут вызвать проблемы в инфраструктуре Bitcoin. Когда происходит точка останова, майнеры начинают получать только половину стоимости своих предыдущих награда. Абсолютная разница между 12,5 и 6,25 BTC (прогноз на 2020 год) может кажутся терпимыми. Однако при рассмотрении падения BTC с 50 до 25, произошедшего в ноябре 28 2012 года, посчитали его неприемлемым для значительного числа членов горнодобывающего сообщества. Рисунок 1 показано резкое снижение скорости hash сети в конце ноября, как раз тогда, когда произошло халвинг. Это событие могло стать идеальным моментом для злонамеренного человека. описано в разделе функции proof-of-work для проведения атаки двойных расходов [36]. Рис. 1. График курса Bitcoin hash (источник: http://bitcoin.sipa.be) 2.4 Жестко запрограммированные константы Bitcoin имеет множество жестко запрограммированных ограничений, некоторые из которых являются естественными элементами исходного дизайна (например, частота блоков, максимальная сумма денежной массы, количество подтверждений), тогда как другие кажутся искусственными ограничениями. Дело не столько в ограничениях, сколько в невозможности быстро меняться. 3 6 Давайте назовем это тем, чем оно является, атакой зомби. Давайте обсудим, каким может быть непрерывное излучение. Это связано с принципом «один процессор — один голос» в сценарии атаки зомби. В мире «один процессор – один голос» каждый сотовый телефон и каждый автомобиль, когда бы они ни находились в режиме ожидания, будут заниматься майнингом. Собрать кучу дешевого оборудования для создания майнинг-фермы было бы очень-очень легко, потому что всего лишь почти во всем есть процессор. С другой стороны, в этот момент количество процессоров Я думаю, что необходимое для запуска атаки 51% было бы весьма удивительным. Кроме того, именно поскольку было бы легко собрать дешевое оборудование, мы можем разумно ожидать многие люди начинают копить что-нибудь с процессором. Гонка вооружений в мире «один процессор – один голос» обязательно более эгалитарен, чем в мире ASIC. Следовательно, разрыв в сети безопасность из-за уровня выбросов должна быть МЕНЬШЕЙ проблемой в мире «один процессор – один голос». Однако остаются два факта: 1) скачок в скорости выбросов может привести к эффекту заикания в и в экономике, и в сетевой безопасности, что плохо, и 2) хоть и атака 51% выполненный кем-то, кто собирает дешевое оборудование, все еще может происходить в однопроцессорном процессоре-голосуйте за мир, кажется, должно быть сложнее. Предположительно, защита от этого состоит в том, что все нечестные актеры будут пытаться это сделать. одновременно, и мы возвращаемся к предыдущему понятию безопасности Bitcoin: «мы не требуем нечестных действий». фракция будет контролировать более 51% сети». Автор утверждает здесь, что одна из проблем с биткойнами заключается в том, что может привести к внезапному снижению участия в сети и, следовательно, к снижению безопасности сети. Таким образом, Предпочтительна непрерывная, дифференцируемая и плавная скорость эмиссии монет. Автор не ошибается, это факт. Любое внезапное снижение участия в сети может привести к такой проблеме, и если мы можем устранить один из ее источников, мы должны это сделать. Сказав это, это возможно, что длительные периоды «относительно постоянной» эмиссии монет, перемежающиеся внезапными изменениями Это идеальный путь с экономической точки зрения. Я не экономист. Так что, возможно, мы должны решить, собираемся ли мы обменивать сетевую безопасность на что-то экономическое — что здесь? http://arxiv.org/abs/1402.2009их при необходимости, что вызывает основные недостатки. К сожалению, трудно предсказать, когда константы, возможно, придется изменить, а их замена может привести к ужасным последствиям. Хорошим примером жестко запрограммированного изменения лимита, приводящего к катастрофическим последствиям, является блок ограничение размера установлено на 250 КБ1. Этого лимита было достаточно для проведения около 10 000 стандартных транзакций. В В начале 2013 года этот предел был почти достигнут, и было достигнуто соглашение об увеличении предел. Изменение было реализовано в версии кошелька 0.8 и закончилось разделением цепочки на 24 блока. и успешная атака двойной траты [9]. Хотя ошибка была не в протоколе Bitcoin, а скорее, в ядре базы данных его можно было бы легко обнаружить с помощью простого стресс-теста, если бы было отсутствие искусственно введенного ограничения размера блока. Константы также действуют как форма точки централизации. Несмотря на одноранговый характер Bitcoin, подавляющее большинство узлов используют официальный эталонный клиент [10], разработанный небольшая группа людей. Эта группа принимает решение о внесении изменений в протокол. и большинство людей принимают эти изменения независимо от их «правильности». Некоторые решения вызвали бурные дискуссии и даже призывы к бойкоту [11], что свидетельствует о том, что сообщество и разработчики могут расходиться во мнениях по некоторым важным моментам. Поэтому кажется логичным иметь протокол с настраиваемыми пользователем и самонастраивающимися переменными как возможный способ избежать этих проблем. 2,5 Громоздкие скрипты Система сценариев в Bitcoin — сложная и тяжелая функция. Потенциально это позволяет создавать сложные транзакции [12], но некоторые из его функций отключены из соображений безопасности и некоторые даже никогда не использовались [13]. Скрипт (включая часть отправителя и получателя) для самой популярной транзакции в Bitcoin выглядит так: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Длина скрипта составляет 164 байта, и его единственная цель — проверить, обладает ли получатель секретный ключ, необходимый для проверки его подписи.

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

Análisis

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

5 No es que importe demasiado que mil millones de personas en el mundo vivan con menos de un dólar al año. día y no tengo esperanzas de participar alguna vez en ningún tipo de red minera... pero una economía Un mundo impulsado por un sistema monetario p2p con una CPU, un voto sería, presumiblemente, más más justo que un sistema impulsado por la banca de reserva fraccionaria. Pero el protocolo de Cryptonote todavía requiere un 51% de usuarios honestos... ver, por ejemplo, Cryptonote foros donde uno de los desarrolladores, Pliskov, dice que un ataque tradicional de reemplazo de datos en elblockchain 51% aún puede funcionar. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Tenga en cuenta que realmente no necesita un 51% de usuarios honestos. Realmente no necesitas "ni un solo deshonesto facción con más del 51% del hashing poder de la red." Llamemos a este llamado problema del bitcoin "rigidez adaptativa". La solución de Cryptonote para la adaptación La rigidez es la flexibilidad adaptativa en los valores de los parámetros del protocolo. Si necesitas tamaños de bloque más grandes, No hay problema, la red se habrá estado ajustando suavemente todo el tiempo. Es decir, la forma en que Bitcoin ajusta la dificultad a lo largo del tiempo se puede replicar en todo nuestro protocolo parámetros de modo que no sea necesario obtener el consenso de la red para actualizar el protocolo. Superficialmente esto parece una buena idea, pero sin una cuidadosa previsión, una solución autoajustable El sistema puede volverse bastante impredecible y caótico. Analizaremos esto más adelante a medida que surgen oportunidades. Los "buenos" sistemas están en algún punto entre adaptativamente rígidos y adaptativamente flexibles, y tal vez incluso la rigidez misma, son adaptativas. Si realmente tuviéramos "una CPU, un voto", entonces colaboraríamos y desarrollaríamos grupos para llegar al 51 %. Sería más difícil. Esperaríamos que todas las CPU del mundo estuvieran minando, desde teléfonos a la CPU integrada de su Tesla mientras se está cargando. http://en.wikipedia.org/wiki/Pareto_principle Sostengo que el equilibrio de Pareto es algo inevitable. O el 20% del sistema poseerá el 80% de las CPU, o el 20% del sistema poseerá el 80% de los ASIC. Mi hipótesis es esto porque la distribución subyacente de la riqueza en la sociedad ya muestra la distribución de Pareto, y a medida que se unen nuevos mineros, se extraen de esa distribución subyacente. Sin embargo, sostengo que los protocolos con una CPU, un voto generarán un retorno de la inversión en el hardware. Bloquear La recompensa por nodo será más proporcional al número de nodos en la red porque La distribución del rendimiento entre los nodos será mucho más ajustada. Bitcoin, por otro Por otro lado, ve una recompensa de bloque (por nodo) más proporcional a la capacidad computacional de ese nodo. Es decir, sólo los "grandes" siguen en el juego de la minería. Por otra parte, Aunque el principio de Pareto seguirá en vigor, en un mundo de una CPU, un voto, todos participa en la seguridad de la red y obtiene algunos ingresos mineros. En un mundo ASIC, no tiene sentido conectar todos los XBox y teléfonos móviles a los míos. En un mundo de una CPU, un voto, es muy sensato en términos de recompensa minera. Como deliciosa consecuencia, Obtener el 51% de los votos es más difícil cuando hay cada vez más votos, lo que arroja un resultado encantador. beneficio para la seguridad de la red.hardware descrito anteriormente. Supongamos que la tasa global hash disminuye significativamente, incluso para Por un momento, ahora puede usar su poder minero para bifurcar la cadena y gastar dos veces. Como veremos Más adelante en este artículo, no es improbable que ocurra el evento descrito anteriormente. 2.3 Emisión irregular Bitcoin tiene una tasa de emisión predeterminada: cada bloque resuelto produce una cantidad fija de monedas. Aproximadamente cada cuatro años esta recompensa se reduce a la mitad. La intención original era crear una emisión suave limitada con caída exponencial, pero de hecho tenemos una emisión lineal por partes función cuyos puntos de interrupción pueden causar problemas a la infraestructura Bitcoin. Cuando ocurre el punto de interrupción, los mineros comienzan a recibir solo la mitad del valor de su anterior recompensa. La diferencia absoluta entre 12,5 y 6,25 BTC (proyectada para el año 2020) puede parece tolerable. Sin embargo, al examinar la caída de 50 a 25 BTC que tuvo lugar en noviembre 28 de 2012, se consideró inapropiado para un número significativo de miembros de la comunidad minera. Figura 1 muestra una disminución dramática en la tasa hash de la red a fines de noviembre, exactamente cuando se produjo la reducción a la mitad. Este evento podría haber sido el momento perfecto para el individuo malévolo. descrito en la sección de funciones proof-of-work para llevar a cabo un ataque de doble gasto [36]. Fig. 1. Bitcoin hashtabla de tasas (fuente: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tiene muchos límites codificados, algunos de los cuales son elementos naturales del diseño original (p. ej. frecuencia de bloqueo, cantidad máxima de oferta monetaria, número de confirmaciones) mientras que otros Parecen limitaciones artificiales. No son tanto los límites, sino la incapacidad de cambiar rápidamente 3 hardware descrito anteriormente. Supongamos que la tasa global hash disminuye significativamente, incluso para Por un momento, ahora puede usar su poder minero para bifurcar la cadena y gastar dos veces. Como veremos Más adelante en este artículo, no es improbable que ocurra el evento descrito anteriormente. 2.3 Emisión irregular Bitcoin tiene una tasa de emisión predeterminada: cada bloque resuelto produce una cantidad fija de monedas. Aproximadamente cada cuatro años esta recompensa se reduce a la mitad. La intención original era crear una emisión suave limitada con caída exponencial, pero de hecho tenemos una emisión lineal por partes función cuyos puntos de interrupción pueden causar problemas a la infraestructura Bitcoin. Cuando ocurre el punto de interrupción, los mineros comienzan a recibir solo la mitad del valor de su anterior recompensa. La diferencia absoluta entre 12,5 y 6,25 BTC (proyectada para el año 2020) puede parece tolerable. Sin embargo, al examinar la caída de 50 a 25 BTC que tuvo lugar en noviembre 28 de 2012, se consideró inapropiado para un número significativo de miembros de la comunidad minera. Figura 1 muestra una disminución dramática en la tasa hash de la red a fines de noviembre, exactamente cuando se produjo la reducción a la mitad. Este evento podría haber sido el momento perfecto para el individuo malévolo. descrito en la sección de función proof-of-work para llevar a cabo un ataque de doble gasto [36]. Fig. 1. Bitcoin hashtabla de tasas (fuente: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tiene muchos límites codificados, algunos de los cuales son elementos naturales del diseño original (p. ej. frecuencia de bloqueo, cantidad máxima de oferta monetaria, número de confirmaciones) mientras que otros Parecen limitaciones artificiales. No son tanto los límites, sino la incapacidad de cambiar rápidamente 3 6 Llamemos a esto como es, un ataque zombie. Analicemos qué tan continua puede ser la emisión. relacionado con una CPU, un voto en un escenario de ataque zombie. En un mundo de una CPU, un voto, cada teléfono celular y automóvil, siempre que estén inactivos, estarían minando. Recolectar montones de hardware barato para crear una granja minera sería muy, muy fácil, porque solo Casi todo tiene una CPU. Por otro lado, en ese punto, la cantidad de CPU Creo que lo necesario para lanzar un ataque del 51% sería bastante sorprendente. Además, Precisamente porque sería fácil recolectar hardware barato, podemos esperar razonablemente una Mucha gente empieza a acumular cualquier cosa con una CPU. La carrera armamentista en un mundo de una CPU, un voto es necesariamente más igualitario que en un mundo ASIC. Por lo tanto, una discontinuidad en la red. La seguridad debido a las tasas de emisión debería ser un problema MENOR en un mundo de una CPU, un voto. Sin embargo, quedan dos hechos: 1) la discontinuidad en la tasa de emisión puede conducir a un efecto de tartamudeo en la economía y la seguridad de la red, lo cual es malo, y 2) a pesar de que un 51% de ataques realizado por alguien que recolecta hardware barato todavía puede ocurrir en una CPU-una-votar mundo, Parece que debería ser más difícil. Presumiblemente, la salvaguardia contra esto es que todos los actores deshonestos intentarán esto. simultáneamente, y volvemos a la noción de seguridad anterior de Bitcoin: "no requerimos facción para controlar más del 51% de la red". El autor afirma aquí que un problema con bitcoin es la discontinuidad en la emisión de monedas. La tasa podría provocar caídas repentinas en la participación de la red y, por lo tanto, en la seguridad de la red. Así, Es preferible una tasa de emisión de monedas continua, diferenciable y suave. El autor no se equivoca necesariamente. Cualquier tipo de disminución repentina en la participación en la red puede conducir a tal problema, y si podemos eliminar una fuente del mismo, deberíamos hacerlo. Dicho esto, es posible que largos períodos de emisión de monedas "relativamente constantes" puntuados por cambios repentinos es el camino ideal a seguir desde el punto de vista económico. No soy economista. Entonces, tal vez nosotros Debemos decidir si vamos a cambiar la seguridad de la red por algo económico: ¿qué hay aquí? http://arxiv.org/abs/1402.2009ellos si es necesario que causa los principales inconvenientes. Desafortunadamente, es difícil predecir cuándo Es posible que sea necesario cambiar las constantes y reemplazarlas puede tener consecuencias terribles. Un buen ejemplo de un cambio de límite codificado que conduce a consecuencias desastrosas es el bloque límite de tamaño establecido en 250kb1. Este límite era suficiente para albergar unas 10.000 transacciones estándar. en A principios de 2013, este límite casi se había alcanzado y se llegó a un acuerdo para aumentar el límite. El cambio se implementó en la versión 0.8 de la billetera y terminó con una división de la cadena de 24 bloques. y un exitoso ataque de doble gasto [9]. Si bien el error no estaba en el protocolo Bitcoin, pero más bien, en el motor de la base de datos, podría haberse detectado fácilmente mediante una simple prueba de estrés si hubiera No hay límite de tamaño de bloque introducido artificialmente. Las constantes también actúan como una forma de punto de centralización. A pesar de la naturaleza de igual a igual de Bitcoin, una abrumadora mayoría de nodos utilizan el cliente de referencia oficial [10] desarrollado por un pequeño grupo de personas. Este grupo toma la decisión de implementar cambios al protocolo y la mayoría de la gente acepta estos cambios independientemente de su “corrección”. Algunas decisiones provocaron discusiones acaloradas e incluso llamados al boicot [11], lo que indica que la comunidad y el Los desarrolladores pueden no estar de acuerdo en algunos puntos importantes. Por tanto, parece lógico disponer de un protocolo con variables configurables por el usuario y autoajustables como una posible forma de evitar estos problemas. 2.5 Guiones voluminosos El sistema de secuencias de comandos en Bitcoin es una característica pesada y compleja. Potencialmente permite crear transacciones sofisticadas [12], pero algunas de sus funciones están deshabilitadas debido a problemas de seguridad y algunos ni siquiera se han utilizado [13]. El guión (incluidas las partes del remitente y del receptor) para la transacción más popular en Bitcoin se ve así: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. El script tiene una longitud de 164 bytes y su único propósito es comprobar si el receptor posee la clave secreta requerida para verificar su firma.