CryptoNote เวอร์ชัน 2.0
Представленная здесь работа — это вайтпейпер CryptoNote v2.0 Николаса ван Сабергагена (2013), описывающий криптографические основы, на которых построен Monero. Это не специфичный для Monero вайтпейпер — Monero запустился в 2014 году как форк эталонной реализации CryptoNote (Bytecoin) и с тех пор значительно эволюционировал за пределы исходного протокола.
Введение
«Bitcoin» [1] представляет собой успешную реализацию концепции электронных денег p2p. оба профессионалы и широкая общественность оценили удобное сочетание публичные транзакции и proof-of-work как модель доверия. Сегодня пользовательская база электронных денег растет устойчивыми темпами; клиентов привлекают низкие комиссии и обеспечиваемая анонимность электронными деньгами, и торговцы ценят ее прогнозируемую и децентрализованную эмиссию. Bitcoin имеет эффективно доказал, что электронные деньги могут быть такими же простыми, как бумажные деньги, и такими же удобными, как кредитные карты. К сожалению, Bitcoin имеет несколько недостатков. Например, распределенная система природа негибка и не позволяет внедрять новые функции до тех пор, пока почти все пользователи сети не обновят свои клиенты. Некоторые критические недостатки, которые невозможно быстро исправить, отпугивают Bitcoin. широкое распространение. В таких негибких моделях эффективнее развернуть новый проект. вместо того, чтобы постоянно исправлять первоначальный проект. В этой статье мы изучаем и предлагаем решения основных недостатков Bitcoin. Мы верим что система, учитывающая предлагаемые нами решения, приведет к здоровой конкуренции среди различных электронных денежных систем. Мы также предлагаем собственные электронные деньги «CryptoNote», имя, подчеркивающее следующий прорыв в области электронных денег.
การแนะนำ
“Bitcoin” [1] ประสบความสำเร็จในการนำแนวคิดเงินสดอิเล็กทรอนิกส์ p2p ไปใช้ ทั้งสองอย่าง มืออาชีพและประชาชนทั่วไปต่างก็ชื่นชมการผสมผสานที่สะดวกสบายของ ธุรกรรมสาธารณะและ proof-of-work เป็นรูปแบบความน่าเชื่อถือ ปัจจุบันฐานผู้ใช้เงินสดอิเล็กทรอนิกส์ กำลังเติบโตอย่างมั่นคง ลูกค้าถูกดึงดูดด้วยค่าธรรมเนียมต่ำและการไม่เปิดเผยตัวตน ด้วยเงินสดอิเล็กทรอนิกส์และร้านค้าให้ความสำคัญกับการปล่อยก๊าซเรือนกระจกที่คาดการณ์ไว้และกระจายอำนาจ Bitcoin มี ได้รับการพิสูจน์อย่างมีประสิทธิภาพว่าเงินสดอิเล็กทรอนิกส์สามารถทำได้ง่ายเหมือนกับเงินกระดาษและสะดวกพอ ๆ กับ บัตรเครดิต น่าเสียดายที่ Bitcoin ประสบกับข้อบกพร่องหลายประการ เช่น ระบบมีการกระจาย ธรรมชาติไม่สามารถยืดหยุ่นได้ ทำให้ไม่สามารถใช้งานคุณสมบัติใหม่ได้จนกว่าผู้ใช้เครือข่ายเกือบทั้งหมดจะอัปเดตไคลเอนต์ของตน ข้อบกพร่องที่สำคัญบางประการที่ไม่สามารถแก้ไขได้อย่างรวดเร็วจะขัดขวาง Bitcoin การแพร่กระจายอย่างกว้างขวาง ในโมเดลที่ไม่ยืดหยุ่นดังกล่าว การเปิดตัวโปรเจ็กต์ใหม่จะมีประสิทธิภาพมากกว่า แทนที่จะแก้ไขโครงการเดิมอย่างถาวร ในบทความนี้ เราศึกษาและเสนอวิธีแก้ปัญหาข้อบกพร่องหลักของ Bitcoin เราเชื่อ ว่าระบบที่คำนึงถึงแนวทางแก้ไขที่เราเสนอจะนำไปสู่การแข่งขันที่ดี ในระบบเงินสดอิเล็กทรอนิกส์ต่างๆ นอกจากนี้เรายังเสนอเงินสดอิเล็กทรอนิกส์ของเราเอง “CryptoNote” ชื่อที่เน้นความก้าวหน้าครั้งต่อไปในด้านเงินสดอิเล็กทรอนิกส์
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 ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้
2 Bitcoin ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้ 2.1 การติดตามธุรกรรม ความเป็นส่วนตัวและการไม่เปิดเผยตัวตนเป็นสิ่งสำคัญที่สุดของเงินสดอิเล็กทรอนิกส์ การชำระเงินแบบเพียร์ทูเพียร์ พยายามปกปิดจากมุมมองของบุคคลที่สาม ซึ่งเป็นความแตกต่างที่ชัดเจนเมื่อเปรียบเทียบกับแบบดั้งเดิม การธนาคาร โดยเฉพาะอย่างยิ่ง T. Okamoto และ K. Ohta ได้อธิบายเกณฑ์หกประการของเงินสดอิเล็กทรอนิกส์ในอุดมคติ ซึ่งรวมถึง “ความเป็นส่วนตัว: ความสัมพันธ์ระหว่างผู้ใช้กับการซื้อของเขาจะต้องไม่สามารถติดตามได้ โดยใครก็ตาม” [30]. จากคำอธิบาย เราได้รับคุณสมบัติสองประการที่ไม่ระบุชื่อโดยสมบูรณ์ แบบจำลองเงินสดอิเล็กทรอนิกส์จะต้องเป็นไปตามข้อกำหนดเพื่อให้เป็นไปตามข้อกำหนดที่ Okamoto ระบุไว้ และโอตะ: ไม่สามารถติดตามได้: สำหรับแต่ละธุรกรรมที่เข้ามา ผู้ส่งที่เป็นไปได้ทั้งหมดสามารถติดตั้งได้ ไม่สามารถเชื่อมโยงได้: สำหรับธุรกรรมขาออกสองรายการใดๆ จะไม่สามารถพิสูจน์ได้ว่าถูกส่งไป คนคนเดียวกัน ขออภัย Bitcoin ไม่เป็นไปตามข้อกำหนดที่ไม่สามารถติดตามได้ เนื่องจากธุรกรรมทั้งหมดที่เกิดขึ้นระหว่างผู้เข้าร่วมเครือข่ายนั้นเป็นแบบสาธารณะ ธุรกรรมใดๆ ก็สามารถเกิดขึ้นได้ 1 CryptoNote เวอร์ชัน 2.0 นิโคลัส ฟาน ซาเบอร์ฮาเกน 17 ตุลาคม 2556 1 บทนำ “Bitcoin” [1] ประสบความสำเร็จในการนำแนวคิดเงินสดอิเล็กทรอนิกส์ p2p ไปใช้ ทั้งสองอย่าง มืออาชีพและประชาชนทั่วไปต่างก็ชื่นชมการผสมผสานที่สะดวกสบายของ ธุรกรรมสาธารณะและ proof-of-work เป็นรูปแบบความน่าเชื่อถือ ปัจจุบันฐานผู้ใช้เงินสดอิเล็กทรอนิกส์ กำลังเติบโตอย่างมั่นคง ลูกค้าถูกดึงดูดด้วยค่าธรรมเนียมต่ำและการไม่เปิดเผยตัวตน ด้วยเงินสดอิเล็กทรอนิกส์และร้านค้าให้ความสำคัญกับการปล่อยก๊าซเรือนกระจกที่คาดการณ์ไว้และกระจายอำนาจ Bitcoin มี ได้รับการพิสูจน์อย่างมีประสิทธิภาพว่าเงินสดอิเล็กทรอนิกส์สามารถทำได้ง่ายเหมือนกับเงินกระดาษและสะดวกพอ ๆ กับ บัตรเครดิต น่าเสียดายที่ Bitcoin ประสบกับข้อบกพร่องหลายประการ เช่น ระบบมีการกระจาย ธรรมชาติไม่สามารถยืดหยุ่นได้ ทำให้ไม่สามารถใช้งานคุณสมบัติใหม่ได้จนกว่าผู้ใช้เครือข่ายเกือบทั้งหมดจะอัปเดตไคลเอนต์ของตน ข้อบกพร่องที่สำคัญบางประการที่ไม่สามารถแก้ไขได้อย่างรวดเร็วจะขัดขวาง Bitcoin การแพร่กระจายอย่างกว้างขวาง ในโมเดลที่ไม่ยืดหยุ่นดังกล่าว การเปิดตัวโปรเจ็กต์ใหม่จะมีประสิทธิภาพมากกว่า แทนที่จะแก้ไขโครงการเดิมอย่างถาวร ในบทความนี้ เราศึกษาและเสนอวิธีแก้ปัญหาข้อบกพร่องหลักของ Bitcoin เราเชื่อ ว่าระบบที่คำนึงถึงแนวทางแก้ไขที่เราเสนอจะนำไปสู่การแข่งขันที่ดี ในระบบเงินสดอิเล็กทรอนิกส์ต่างๆ นอกจากนี้เรายังเสนอเงินสดอิเล็กทรอนิกส์ของเราเอง “CryptoNote” ชื่อที่เน้นความก้าวหน้าครั้งต่อไปในด้านเงินสดอิเล็กทรอนิกส์ 2 Bitcoin ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้ 2.1 การติดตามธุรกรรม ความเป็นส่วนตัวและการไม่เปิดเผยตัวตนเป็นสิ่งสำคัญที่สุดของเงินสดอิเล็กทรอนิกส์ การชำระเงินแบบเพียร์ทูเพียร์ พยายามปกปิดจากมุมมองของบุคคลที่สาม ซึ่งเป็นความแตกต่างที่ชัดเจนเมื่อเปรียบเทียบกับแบบดั้งเดิม การธนาคาร โดยเฉพาะอย่างยิ่ง T. Okamoto และ K. Ohta ได้อธิบายเกณฑ์หกประการของเงินสดอิเล็กทรอนิกส์ในอุดมคติ ซึ่งรวมถึง “ความเป็นส่วนตัว: ความสัมพันธ์ระหว่างผู้ใช้กับการซื้อของเขาจะต้องไม่สามารถติดตามได้ โดยใครก็ตาม” [30] จากคำอธิบาย เราได้รับคุณสมบัติสองประการที่ไม่ระบุชื่อโดยสมบูรณ์ แบบจำลองเงินสดอิเล็กทรอนิกส์จะต้องเป็นไปตามข้อกำหนดเพื่อให้เป็นไปตามข้อกำหนดที่ Okamoto ระบุไว้ และโอตะ: ไม่สามารถติดตามได้: สำหรับแต่ละธุรกรรมที่เข้ามา ผู้ส่งที่เป็นไปได้ทั้งหมดสามารถติดตั้งได้ ไม่สามารถเชื่อมโยงได้: สำหรับธุรกรรมขาออกสองรายการใดๆ จะไม่สามารถพิสูจน์ได้ว่าถูกส่งไป คนคนเดียวกัน ขออภัย Bitcoin ไม่เป็นไปตามข้อกำหนดที่ไม่สามารถติดตามได้ เนื่องจากธุรกรรมทั้งหมดที่เกิดขึ้นระหว่างผู้เข้าร่วมเครือข่ายนั้นเป็นแบบสาธารณะ ธุรกรรมใดๆ ก็สามารถเกิดขึ้นได้ 1 3 Bitcoin ล้มเหลวอย่างแน่นอน "ไม่สามารถติดตามได้" เมื่อฉันส่ง BTC ให้คุณ ซึ่งเป็นกระเป๋าเงินที่มันถูกส่งไป ได้รับการประทับตราอย่างถาวรบน blockchain ไม่มีคำถามว่าใครเป็นผู้ส่งเงินเหล่านั้น เพราะมีเพียงผู้รู้คีย์ส่วนตัวเท่านั้นที่สามารถส่งได้สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม โต้แย้ง [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่สรุปไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองประการคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ตามขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (สิ่งนี้เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม งระบุ [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองวิธีคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ตามขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 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 ดูเหมือนว่าโปรโตคอลจะใช้ธุรกรรมขนาด 1kb โครงการดังกล่าวได้รับการสนับสนุนโดย แน่นอนว่ากองทัพสหรัฐฯ และอิสราเอล ใครจะรู้เกี่ยวกับความแข็งแกร่งของมัน ในอีกทางหนึ่ง มือไม่มีใครอยากที่จะใช้จ่ายเงินโดยไม่ต้องกำกับดูแลมากกว่ากองทัพ http://zerocash-project.org/ ฉันไม่มั่นใจ... ดูตัวอย่าง http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf อ้างอิงจากผู้พัฒนา Cryptonote Maurice Planck (อาจเป็นนามแฝง) จาก cryptonote ฟอรั่ม: “ซีโร่คอยน์, ซีโร่แคช” นี่คือเทคโนโลยีที่ทันสมัยที่สุดฉันต้องยอมรับ ใช่คำพูด ข้างต้นมาจากการวิเคราะห์โปรโตคอลเวอร์ชันก่อนหน้า สำหรับความรู้ของฉันมันไม่ใช่ 288 แต่เป็น 384 ไบต์ แต่อย่างไรก็ตาม นี่เป็นข่าวดี พวกเขาใช้เทคนิคใหม่ล่าสุดที่เรียกว่า SNARK ซึ่งมีข้อเสียบางประการ: ตัวอย่างเช่น ฐานข้อมูลเริ่มต้นขนาดใหญ่ของพารามิเตอร์สาธารณะที่จำเป็นในการสร้างลายเซ็น (มากกว่า 1 GB) และ เวลาสำคัญที่จำเป็นในการสร้างธุรกรรม (มากกว่าหนึ่งนาที) ในที่สุดพวกเขาก็ใช้ a crypto รุ่นเยาว์ ซึ่งฉันพูดถึงไปแล้วว่าเป็นแนวคิดที่น่าโต้แย้ง: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. พฤ. 03 เม.ย. 2557 19:56 น ฟังก์ชันที่ทำงานใน CPU และไม่เหมาะกับ GPU, FPGA หรือ ASIC การคำนวณ "ปริศนา" ที่ใช้ใน proof-of-work เรียกว่าฟังก์ชันการกำหนดราคา ฟังก์ชันต้นทุน หรือ ฟังก์ชั่นปริศนา
สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม โต้แย้ง [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองประการคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ขึ้นอยู่กับขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม งระบุ [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองวิธีคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ขึ้นอยู่กับขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 ความเห็นหน้า 2
Технология CryptoNote
Теперь, когда мы рассмотрели ограничения технологии PH_0000, мы сосредоточимся на представление возможностей CryptoNote.
เทคโนโลยี CryptoNote
ตอนนี้เราได้ครอบคลุมข้อจำกัดของเทคโนโลยี Bitcoin แล้ว เราจะมุ่งเน้นไปที่ นำเสนอคุณสมบัติของ 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 выглядит так:
ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [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 с общедоступным местом назначения новой транзакции. ключ(и) — это то, как мы отправляем новую транзакцию
- Боб может восстановить соответствующий одноразовый закрытый ключ: 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
-
Боб может восстановить соответствующий одноразовый закрытый ключ: 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, действующие как валюта, сохраняются, например, защита от двойных расходов и еще много чего.
-
Боб может восстановить соответствующий одноразовый закрытый ключ: 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
- Боб может восстановить соответствующий одноразовый закрытый ключ: 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. И, кажется, именно это они пытаются описать. Однако это не
ธุรกรรมที่ไม่สามารถติดตามได้
ในส่วนนี้ เราขอเสนอรูปแบบของธุรกรรมที่ไม่เปิดเผยตัวตนโดยสมบูรณ์ซึ่งตอบสนองทั้งความไม่สามารถตรวจสอบย้อนกลับได้
และเงื่อนไขที่ไม่สามารถเชื่อมโยงได้ คุณลักษณะที่สำคัญของโซลูชันของเราคือความเป็นอิสระ: ผู้ส่ง
ไม่จำเป็นต้องร่วมมือกับผู้ใช้รายอื่นหรือบุคคลที่สามที่เชื่อถือได้เพื่อทำธุรกรรมของเขา
ดังนั้นผู้เข้าร่วมแต่ละคนจึงสร้างการจราจรที่ปกคลุมอย่างอิสระ
4.1
การทบทวนวรรณกรรม
โครงการของเราอาศัยการเข้ารหัสแบบดั้งเดิมที่เรียกว่าลายเซ็นกลุ่ม นำเสนอครั้งแรกโดย
D. Chaum และ E. van Heyst [19] อนุญาตให้ผู้ใช้ลงนามข้อความในนามของกลุ่ม
หลังจากลงนามในข้อความที่ผู้ใช้ให้ (เพื่อวัตถุประสงค์ในการตรวจสอบ) ไม่ใช่สาธารณะของเขาเอง
1สิ่งนี้เรียกว่า “ขีดจำกัดซอฟต์” — ข้อจำกัดไคลเอนต์อ้างอิงสำหรับการสร้างบล็อกใหม่ ฮาร์ดสูงสุดของ
ขนาดบล็อกที่เป็นไปได้คือ 1 MB
4
หากจำเป็นซึ่งทำให้เกิดข้อเสียเปรียบหลัก น่าเสียดายที่เป็นการยากที่จะคาดเดาได้ว่าเมื่อใด
ค่าคงที่อาจจำเป็นต้องเปลี่ยนและการแทนที่อาจนำไปสู่ผลลัพธ์ที่เลวร้าย
ตัวอย่างที่ดีของการเปลี่ยนแปลงขีดจำกัดแบบฮาร์ดโค้ดที่นำไปสู่ผลที่ตามมาที่ร้ายแรงคือการบล็อก
จำกัดขนาดไว้ที่ 250kb1 ขีดจำกัดนี้เพียงพอที่จะรองรับธุรกรรมมาตรฐานได้ประมาณ 10,000 รายการ ใน
ต้นปี 2013 เกือบจะถึงขีดจำกัดนี้แล้ว และได้บรรลุข้อตกลงเพื่อเพิ่ม
ขีด จำกัด การเปลี่ยนแปลงถูกนำไปใช้ในกระเป๋าเงินเวอร์ชัน 0.8 และจบลงด้วยการแยกลูกโซ่ 24 บล็อก
และการโจมตีแบบใช้จ่ายสองครั้งที่ประสบความสำเร็จ [9] ในขณะที่จุดบกพร่องไม่ได้อยู่ในโปรโตคอล Bitcoin แต่
แต่ในกลไกฐานข้อมูลนั้นสามารถตรวจจับได้ง่ายโดยการทดสอบความเครียดแบบง่าย ๆ หากมี
ไม่มีการจำกัดขนาดบล็อกที่แนะนำโดยไม่ได้ตั้งใจ
ค่าคงที่ยังทำหน้าที่เป็นรูปแบบหนึ่งของจุดรวมศูนย์
แม้ว่าลักษณะแบบ peer-to-peer ของ
Bitcoin โหนดส่วนใหญ่ใช้ไคลเอนต์อ้างอิงอย่างเป็นทางการ [10] พัฒนาโดย
คนกลุ่มเล็กๆ กลุ่มนี้ตัดสินใจดำเนินการเปลี่ยนแปลงโปรโตคอล
และคนส่วนใหญ่ยอมรับการเปลี่ยนแปลงเหล่านี้โดยไม่คำนึงถึง "ความถูกต้อง" ของพวกเขา การตัดสินใจบางอย่างเกิดขึ้น
การอภิปรายอย่างดุเดือดและแม้กระทั่งเรียกร้องให้คว่ำบาตร [11] ซึ่งบ่งชี้ว่าชุมชนและ
นักพัฒนาซอฟต์แวร์อาจไม่เห็นด้วยกับประเด็นสำคัญบางประการ ดังนั้นจึงดูเหมือนสมเหตุสมผลที่จะมีโปรโตคอล
ด้วยตัวแปรที่ผู้ใช้สามารถกำหนดค่าได้และปรับได้เองซึ่งเป็นวิธีที่เป็นไปได้ในการหลีกเลี่ยงปัญหาเหล่านี้
2.5
สคริปต์ขนาดใหญ่
ระบบการเขียนสคริปต์ใน Bitcoin เป็นคุณลักษณะที่หนักและซับซ้อน มันอาจทำให้ใครคนหนึ่งสามารถสร้างได้
ธุรกรรมที่ซับซ้อน [12] แต่คุณลักษณะบางอย่างถูกปิดใช้งานเนื่องจากข้อกังวลด้านความปลอดภัยและ
บางตัวไม่เคยใช้ด้วยซ้ำ [13] สคริปต์ (รวมทั้งส่วนของผู้ส่งและผู้รับ)
สำหรับธุรกรรมยอดนิยมใน Bitcoin มีลักษณะดังนี้:
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค.ซูซูกิ [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: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 8 ลายเซ็นต์แหวนทำงานดังนี้: Alex ต้องการส่งข้อความถึง WikiLeaks เกี่ยวกับนายจ้างของเธอรั่วไหล พนักงานทุกคนในบริษัทของเธอมีคู่คีย์ส่วนตัว/สาธารณะ (Ri, Ui) เธอแต่ง ลายเซ็นของเธอพร้อมชุดอินพุตเป็นข้อความของเธอ, ม, คีย์ส่วนตัวของเธอ, 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
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [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: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงการของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 9 เอ้ย ผู้เขียน whitepaper นี้น่าจะใช้คำพูดได้ดีกว่านี้แน่นอน! สมมติว่าเป็น บริษัทที่พนักงานเป็นเจ้าของต้องการลงคะแนนเสียงว่าจะซื้อกิจการใหม่บางอย่างหรือไม่ สินทรัพย์ และอเล็กซ์และเบรนด้าก็เป็นพนักงานทั้งคู่ บริษัทจัดให้มีพนักงานแต่ละคนก ข้อความเช่น "ฉันลงคะแนนว่าใช่ในข้อเสนอ A!" ซึ่งมี metatainformation “ประเด็น” [PROP A] และขอให้พวกเขาลงนามด้วยลายเซ็นวงแหวนที่ติดตามได้หากพวกเขาสนับสนุนข้อเสนอ การใช้ลายเซ็นวงแหวนแบบดั้งเดิม พนักงานที่ไม่ซื่อสัตย์สามารถเซ็นข้อความได้หลายครั้ง อาจมี nonces ที่แตกต่างกันเพื่อที่จะลงคะแนนได้มากเท่าที่ต้องการ ในอีกทางหนึ่ง ในรูปแบบลายเซ็นวงแหวนที่ติดตามได้ อเล็กซ์จะไปลงคะแนน และคีย์ส่วนตัวของเธอจะมี ถูกนำมาใช้ในประเด็น [PROP A] ถ้าอเล็กซ์พยายามเซ็นข้อความเช่น "ฉัน เบรนด้า อนุมัติแล้ว" ข้อเสนอ A!" เพื่อ "เฟรม" เบรนดาและโหวตสองครั้ง ข้อความใหม่นี้จะมีปัญหาเช่นกัน [ข้อเสนอ ก]. เนื่องจากคีย์ส่วนตัวของ Alex ได้สะดุดปัญหา [PROP A] แล้ว ตัวตนของ Alex จะถูกเปิดเผยทันทีว่าเป็นการฉ้อโกง ซึ่งหน้ามันเจ๋งมาก! การเข้ารหัสบังคับใช้ความเท่าเทียมกันในการลงคะแนนเสียง 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 นี่ไม่ถูกต้องนักจากความเข้าใจของฉัน และความเข้าใจของฉันก็คงจะเปลี่ยนตาม ฉันเจาะลึกโครงการนี้มากขึ้น แต่จากความเข้าใจของฉัน ลำดับชั้นมีลักษณะเช่นนี้ ลายเซ็นกลุ่ม: ผู้จัดการกลุ่มควบคุมการตรวจสอบย้อนกลับและความสามารถในการเพิ่มหรือลบสมาชิก จากการเป็นผู้ลงนาม Ring sigs: การสร้างกลุ่มตามอำเภอใจโดยไม่มีผู้จัดการกลุ่ม ไม่มีการเพิกถอนการไม่เปิดเผยตัวตน ไม่มีทางที่จะปฏิเสธตนเองจากลายเซ็นเฉพาะ ด้วยวงแหวนที่ตรวจสอบย้อนกลับและเชื่อมโยงได้ ลายเซ็น การไม่เปิดเผยตัวตนสามารถปรับขนาดได้เล็กน้อย ลายเซ็นกลุ่มเฉพาะกิจ: เช่นเดียวกับลายเซ็นวงแหวน แต่สมาชิกสามารถพิสูจน์ได้ว่าพวกเขาไม่ได้สร้างขึ้น ลายเซ็นเฉพาะ นี่เป็นสิ่งสำคัญเมื่อใครก็ตามในกลุ่มสามารถสร้างลายเซ็นได้ http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 อัลกอริธึมของฟูจิซากิและซูซูกิได้รับการปรับแต่งในภายหลังโดยผู้เขียนเพื่อให้เกิดเพียงครั้งเดียว ดังนั้น เราจะวิเคราะห์อัลกอริทึมของ Fujisaki และ Suzuki ไปพร้อมกับอัลกอริทึมใหม่แทน กว่าการไปที่นี่
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [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: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −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-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 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 นี่กลายเป็นตัวเลขที่สำคัญมาก แต่ไม่มีคำอธิบายหรือการอ้างอิงว่าตัวเลขดังกล่าวเป็นอย่างไร ได้รับเลือก เพียงแค่เลือกจำนวนเฉพาะขนาดใหญ่ที่ทราบเพียงตัวเดียวก็ไม่เป็นไร แต่ถ้าทราบจำนวนเฉพาะนั้น ข้อเท็จจริงเกี่ยวกับไพรม์ขนาดใหญ่นี้ ที่อาจมีอิทธิพลต่อการเลือกของเรา Cryptonote หลากหลายรูปแบบ สามารถเลือกค่าที่แตกต่างกันของ ใช่ แต่ไม่มีการสนทนาในบทความนี้เกี่ยวกับวิธีการนั้น ตัวเลือกจะส่งผลต่อการเลือกพารามิเตอร์ส่วนกลางอื่น ๆ ของเราที่แสดงอยู่ในหน้า 5 บทความนี้ต้องการหัวข้อเกี่ยวกับการเลือกค่าพารามิเตอร์
คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและคีย์สาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2 โมเดล Bitcoin คีย์/ธุรกรรมแบบดั้งเดิม เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและคีย์สาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2. ตัวดัดแปลง Bitcoin คีย์/ธุรกรรมแบบดั้งเดิมเอล เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 11 นี่ก็เหมือนกับ Bitcoin แต่ด้วยตู้ไปรษณีย์ที่ไม่ระบุตัวตนที่ไม่มีที่สิ้นสุด ผู้รับเท่านั้นที่แลกได้ การสร้างคีย์ส่วนตัวที่ไม่เปิดเผยตัวตนเหมือนกับลายเซ็นวงแหวน Bitcoin ทำงานในลักษณะนี้ ถ้าอเล็กซ์มี 0.112 Bitcoin ในกระเป๋าสตางค์ของเธอที่เธอเพิ่งได้รับจากแฟรงก์ เธอมีลายเซ็นจริงๆ ข้อความ "ฉัน [FRANK] ส่ง 0.112 Bitcoin ไปที่ [alex] + H0 + N0" โดยที่ 1) Frank ได้ลงนามใน ข้อความด้วยคีย์ส่วนตัวของเขา [FRANK] 2) Frank ได้ลงนามข้อความกับสาธารณะของ Alex คีย์ [alex] 3) Frank ได้รวมประวัติของ bitcoin, H0 และ 4) Frank ไว้ด้วย รวมบิตข้อมูลสุ่มที่เรียกว่า nonce, N0 ถ้าอเล็กซ์ต้องการส่ง 0.011 Bitcoin ถึงชาร์ลีน เธอจะรับข้อความของแฟรงค์ และเธอ จะตั้งค่านั้นเป็น H1 และลงนามสองข้อความ: ข้อความหนึ่งสำหรับธุรกรรมของเธอ และอีกข้อความหนึ่งสำหรับการเปลี่ยนแปลง H1= "ฉัน [FRANK] ส่ง 0.112 Bitcoin ถึง [alex] + H0 + N" "ฉัน [ALEX] ส่ง 0.011 Bitcoin ถึง [charlene] + H1 + N1" "ฉัน [ALEX] ส่ง 0.101 Bitcoin เปลี่ยนเป็น [alex] + H1 + N2" โดยที่อเล็กซ์ลงนามทั้งสองข้อความด้วยคีย์ส่วนตัวของเธอ [ALEX] ซึ่งเป็นข้อความแรกกับชาร์ลีน รหัสสาธารณะ [charlene] ข้อความที่สองพร้อมรหัสสาธารณะของ Alex [alex] และรวมถึง ประวัติและ nonces N1 และ N2 ที่สร้างขึ้นแบบสุ่มบางส่วนอย่างเหมาะสม Cryptonote ทำงานในลักษณะนี้: หาก Alex มี Cryptonote 0.112 ในกระเป๋าเงินของเธอที่เธอเพิ่งได้รับจาก Frank เธอก็จะมีลายเซ็นจริงๆ ข้อความ "ฉัน [ใครบางคนในกลุ่มเฉพาะกิจ] ส่ง 0.112 Cryptonote ไปยัง [ที่อยู่แบบครั้งเดียว] + H0 + N0" อเล็กซ์ค้นพบว่านี่คือเงินของเธอโดยการตรวจสอบคีย์ส่วนตัวของเธอ [ALEX] [ที่อยู่แบบครั้งเดียว] สำหรับทุกข้อความที่ส่ง และหากเธอต้องการใช้จ่าย เธอก็ทำเช่นนั้น ตามวิธีต่อไปนี้ เธอเลือกผู้รับเงิน บางทีชาร์ลีนอาจเริ่มโหวตให้โดรนโจมตีแล้วก็ได้ อเล็กซ์ต้องการส่งเงินให้เบรนดาแทน อเล็กซ์จึงค้นหากุญแจสาธารณะของเบรนดา [เบรนดา] และใช้คีย์ส่วนตัวของเธอเอง [ALEX] เพื่อสร้างที่อยู่แบบครั้งเดียว [ALEX+brenda] เธอ จากนั้นเลือกคอลเลกชัน C โดยพลการจากเครือข่ายของผู้ใช้ cryptonote และเธอก็สร้าง ลายเซ็นต์จากกลุ่มเฉพาะกิจนี้ เรากำหนดประวัติของเราเป็นข้อความก่อนหน้าเพิ่ม nonces และดำเนินการตามปกติหรือไม่ H1 = "ฉัน [ใครบางคนในกลุ่มเฉพาะกิจ] ส่ง 0.112 Cryptonote ไปที่ [ที่อยู่แบบครั้งเดียว] + H0 + N0" "ฉัน [คนในคอลเลกชั่น C] ส่ง Cryptonote 0.011 ไปที่ [ที่อยู่ครั้งเดียวทำจากALEX+brenda] + H1 + N1" "ฉัน [คนในคอลเลกชัน C] ส่ง 0.101 Cryptonote เป็นการเปลี่ยนเป็น [one-time-address-madefrom-ALEX+alex] + H1 + N2" ตอนนี้ Alex และ Brenda ต่างสแกนข้อความขาเข้าทั้งหมดเพื่อหาที่อยู่แบบครั้งเดียว สร้างขึ้นโดยใช้กุญแจของพวกเขา หากพวกเขาพบข้อความนั้นก็ถือเป็นข้อความใหม่ของพวกเขาเอง คริปโตโน๊ต! และถึงอย่างนั้น ธุรกรรมก็ยังคงไปถึง blockchain หากเหรียญเข้าที่อยู่นั้น เป็นที่รู้กันว่าส่งมาจากอาชญากร ผู้มีส่วนร่วมทางการเมือง หรือจากคณะกรรมการและบัญชี ด้วยงบประมาณที่เข้มงวด (เช่น การยักยอก) หรือหากเจ้าของเหรียญเหล่านี้คนใหม่เคยทำผิดพลาด และส่งเหรียญเหล่านี้ไปยังที่อยู่ทั่วไปซึ่งมีเหรียญที่เขารู้จักเป็นเจ้าของ นั่นก็คือจิ๊กไม่เปิดเผยตัวตน เพิ่มขึ้นเป็น bitcoin
คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและสาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2 โมเดล Bitcoin คีย์/ธุรกรรมแบบดั้งเดิม เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและสาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2. mod Bitcoin คีย์/ธุรกรรมแบบดั้งเดิมเอล เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 12 ดังนั้น แทนที่จะให้ผู้ใช้ส่งเหรียญจากที่อยู่ (ซึ่งเป็นกุญแจสาธารณะจริงๆ) ไปยังที่อยู่ (กุญแจสาธารณะอื่น) โดยใช้กุญแจส่วนตัว ผู้ใช้จะส่งเหรียญจากตู้ไปรษณีย์แบบครั้งเดียว (ซึ่งสร้างโดยใช้รหัสสาธารณะของเพื่อนของคุณ) ไปยังตู้ไปรษณีย์แบบครั้งเดียว (ในทำนองเดียวกัน) โดยใช้ของคุณ คีย์ส่วนตัวของตัวเอง ในแง่หนึ่ง เรากำลังพูดว่า "เอาล่ะ ทุกคนเอาเงินของคุณไปในขณะที่เงินกำลังเป็นอยู่ โอนไปรอบ ๆ ! แค่รู้ว่ากุญแจของเรา สามารถ เปิดกล่องนั้นและกล่องนั้นได้ เรารู้ว่ามีเงินอยู่ในกล่องเท่าไหร่ อย่าวางลายนิ้วมือของคุณบนตู้ไปรษณีย์หรือ ใช้จริงแค่แลกกล่องที่เต็มไปด้วยเงินสดนั่นเอง โดยที่เราไม่รู้ว่าใครส่งมา อะไร แต่เนื้อหาของคำปราศรัยสาธารณะเหล่านี้ยังคงไม่มีความขัดแย้ง ทดแทนได้ แบ่งแยกได้ และ ยังคงมีคุณสมบัติที่ดีอื่น ๆ ของเงินที่เราต้องการเช่น Bitcoin" ชุดตู้ไปรษณีย์ที่ไม่มีที่สิ้นสุด คุณเผยแพร่ที่อยู่ฉันมีรหัสส่วนตัว ฉันใช้รหัสส่วนตัวและที่อยู่ของคุณและ ข้อมูลสุ่มบางส่วนเพื่อสร้างกุญแจสาธารณะ อัลกอริธึมได้รับการออกแบบเช่นนั้นเนื่องจากคุณ ที่อยู่ถูกใช้เพื่อสร้างกุญแจสาธารณะ มีเพียงกุญแจส่วนตัวของคุณเท่านั้นที่ใช้งานได้เพื่อปลดล็อค ข้อความ ผู้สังเกตการณ์ อีฟ เห็นคุณเผยแพร่ที่อยู่ของคุณ และเห็นกุญแจสาธารณะที่ฉันประกาศ อย่างไรก็ตาม เธอไม่รู้ว่าฉันประกาศกุญแจสาธารณะของฉันตามที่อยู่ของคุณหรือของเธอ หรือของเบรนดา หรือของชาร์ลีนหรือใครก็ตาม เธอตรวจสอบคีย์ส่วนตัวของเธอกับคีย์สาธารณะที่ฉันประกาศ และเห็นว่ามันไม่ได้ผล มันไม่ใช่เงินของเธอ เธอไม่รู้จักรหัสส่วนตัวของคนอื่นและ เฉพาะผู้รับข้อความเท่านั้นที่มีรหัสส่วนตัวที่สามารถปลดล็อคข้อความได้ เลยไม่มีใคร. การฟังสามารถระบุได้ว่าใครได้รับเงินน้อยกว่ามากจึงเอาเงินไป
สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เป็นเกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 13 ฉันสงสัยว่ามันจะปวดคอขนาดไหนหากใช้ ทางเลือก ของการเข้ารหัส โครงการ รูปไข่หรืออย่างอื่น ดังนั้นหากแผนการบางอย่างพังในอนาคต สกุลเงินจะเปลี่ยนไป โดยไม่ต้องกังวล คงจะปวดก้นมาก โอเค นี่คือสิ่งที่ฉันเพิ่งอธิบายไปในความคิดเห็นก่อนหน้า ประเภท Diffie-Hellman การแลกเปลี่ยนเป็นระเบียบเรียบร้อย สมมติว่าอเล็กซ์และเบรนดาต่างมีหมายเลขลับ A และ B และตัวเลข พวกเขาไม่สนใจที่จะเก็บความลับ ก และ ข พวกเขาต้องการสร้างความลับร่วมกันโดยปราศจาก เอวาค้นพบมัน Diffie และ Hellman คิดหาวิธีให้ Alex และ Brenda ร่วมกัน หมายเลขสาธารณะ a และ b แต่ไม่ใช่หมายเลขส่วนตัว A และ B และสร้างความลับร่วมกัน K. การใช้ความลับร่วมกันนี้ K โดยที่ Eva ไม่รับฟังในการสร้างสิ่งเดียวกัน K, Alex และ Brenda สามารถใช้ K เป็นคีย์เข้ารหัสลับและส่งข้อความลับกลับไปได้แล้ว และออกไป นี่คือวิธีการ CAN ทำงาน แม้ว่าควรจะทำงานกับตัวเลขที่มากกว่า 100 มากก็ตาม เราจะใช้ 100 เพราะการทำงานกับจำนวนเต็มแบบโมดูโล 100 เทียบเท่ากับ "การละทิ้งทั้งหมด แต่เป็นเลขสองหลักสุดท้าย" อเล็กซ์และเบรนดาต่างก็เลือก A, a, B และ b พวกเขาเก็บความลับ A และ B อเล็กซ์บอกเบรนดาว่าเธอมีค่าเป็นโมดูโล 100 (แค่เลขสองหลักสุดท้าย) และเบรนดาบอกอเล็กซ์ ค่าของเธอของ b โมดูโล 100 ตอนนี้เอวารู้ (a,b) โมดูโล 100 แต่อเล็กซ์รู้ (a,b,A) ดังนั้นเธอ สามารถคำนวณ x=abA แบบโมดูโล 100อเล็กซ์สับทั้งหมดยกเว้นเลขสุดท้ายเพราะเรากำลังดำเนินการอยู่ ภายใต้จำนวนเต็มโมดูโล 100 อีกครั้ง ในทำนองเดียวกัน เบรนดารู้ (a,b,B) ดังนั้นเธอจึงสามารถคำนวณได้ y=abB โมดูโล 100 ตอนนี้ Alex สามารถเผยแพร่ x และ Brenda สามารถเผยแพร่ y ได้ แต่ตอนนี้อเล็กซ์สามารถคำนวณ yA = abBA แบบโมดูโล 100 ได้ และเบรนดาสามารถคำนวณ xB ได้ = abBA โมดูโล 100 พวกเขาทั้งสองรู้หมายเลขเดียวกัน! แต่ทั้งหมดที่เอวาได้ยินก็คือ (ก,ข,กขก,กขข) เธอไม่มีวิธีง่ายๆ ในการคำนวณ abA*B ตอนนี้ นี่เป็นวิธีคิดที่ง่ายและปลอดภัยน้อยที่สุดเกี่ยวกับการแลกเปลี่ยน Diffie-Hellman มีเวอร์ชันที่ปลอดภัยมากขึ้น แต่เวอร์ชันส่วนใหญ่ใช้งานได้เพราะการแยกตัวประกอบจำนวนเต็มและไม่ต่อเนื่อง ลอการิทึมเป็นเรื่องยาก และปัญหาทั้งสองนั้นแก้ไขได้อย่างง่ายดายด้วยคอมพิวเตอร์ควอนตัม ฉันจะดูว่ามีเวอร์ชันใดบ้างที่ทนทานต่อควอนตัม http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "ลำดับ txn มาตรฐาน" ที่แสดงไว้ที่นี่ขาดขั้นตอนมากมาย เช่น SIGNATURES พวกเขาเพิ่งได้รับที่นี่ ซึ่งแย่มากจริงๆเพราะลำดับที่เรา ลงนาม ข้อมูลที่รวมอยู่ในข้อความที่ลงนาม และอื่นๆ... ทั้งหมดนี้สุดยอดมาก มีความสำคัญต่อโปรโตคอล ทำผิดขั้นตอนหนึ่งหรือสองขั้นตอน แม้จะผิดลำดับเล็กน้อยก็ตาม ในขณะที่ใช้ "the ลำดับธุรกรรมมาตรฐาน" อาจทำให้ความปลอดภัยของทั้งระบบเกิดความสงสัยได้ นอกจากนี้ หลักฐานที่นำเสนอในภายหลังในรายงานอาจไม่เข้มงวดเพียงพอหาก กรอบการทำงานภายใต้คำจำกัดความที่กำหนดไว้อย่างหลวมๆ ดังในส่วนนี้
สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เป็นเกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น 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) จะมี Ps เหล่านี้จำนวนหนึ่งวางอยู่รอบๆ ด้วยจำนวน เพื่อที่จะใช้จ่ายง พวกเขา ลงนามข้อความใหม่รวมทั้ง P. อลิซจะต้องลงนามในธุรกรรมนี้ด้วยคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องกับคีย์ปลายทางของเอาต์พุตธุรกรรมที่ยังไม่ได้ใช้ กุญแจปลายทางแต่ละอันที่อลิซเป็นเจ้าของมาพร้อมกับอุปกรณ์ครบครัน ด้วยรหัสส่วนตัวแบบครั้งเดียวที่อลิซเป็นเจ้าของ (สมมุติ) ทุกครั้งที่อลิซต้องการ ส่งเนื้อหาของรหัสปลายทางมาให้ฉัน หรือ Bob หรือ Brenda หรือ Charlie หรือ Charlene เธอ ใช้คีย์ส่วนตัวของเธอเพื่อลงนามในธุรกรรม เมื่อได้รับธุรกรรมแล้ว ฉันจะได้รับรายการใหม่ รหัสสาธารณะ Tx ซึ่งเป็นรหัสสาธารณะปลายทางใหม่ และฉันจะสามารถกู้คืนรหัสส่วนตัวแบบครั้งเดียวใหม่ได้ x การรวมคีย์ส่วนตัวแบบครั้งเดียวของฉัน x กับปลายทางสาธารณะของธุรกรรมใหม่ คีย์คือวิธีที่เราส่งธุรกรรมใหม่
- Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งก็คือ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะให้คำอธิบายทั่วไปของอัลกอริทึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8
-
Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งได้แก่ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะจัดให้มีรุ่นคำอธิบายอัลกอริธึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8 15 ผลลัพธ์ของธุรกรรมที่ยังไม่ได้ใช้มีลักษณะเป็นอย่างไรที่นี่ แผนภาพแสดงให้เห็นว่าเอาท์พุตธุรกรรมประกอบด้วยจุดข้อมูลเพียงสองจุดเท่านั้น ได้แก่ จำนวนเงินและคีย์ปลายทาง แต่นี่ไม่ใช่ เพียงพอเพราะเมื่อฉันพยายามใช้ "เอาต์พุต" นี้ ฉันยังคงจำเป็นต้องรู้ R=rG โปรดจำไว้ว่า r ถูกเลือกโดยผู้ส่ง และ R คือ a) ใช้เพื่อจดจำ cryptonotes ที่เข้ามาเป็นของคุณ เป็นเจ้าของและ b) ใช้เพื่อสร้างคีย์ส่วนตัวแบบครั้งเดียวที่ใช้เพื่อ "อ้างสิทธิ์" cryptonote ของคุณ ส่วนเกี่ยวกับเรื่องนี้ที่ฉันไม่เข้าใจ? ตามทฤษฎี "เอาล่ะ เรามีสิ่งเหล่านี้ ลายเซ็นและธุรกรรม แล้วเราจะส่งต่อกลับไปกลับมา" สู่โลกแห่งการเขียนโปรแกรม "โอเค ข้อมูลอะไร โดยเฉพาะ ที่ประกอบขึ้นเป็นรายบุคคล UTXO?" วิธีที่ดีที่สุดในการตอบคำถามนั้นคือการเจาะลึกเข้าไปในเนื้อความของโค้ดที่ไม่มีเครื่องหมายข้อคิดเห็นทั้งหมด เยี่ยมไปเลยทีม bytecoin จำได้ว่า: ความสามารถในการเชื่อมโยงหมายถึง "คนคนเดียวกันส่งหรือเปล่า" และไม่สามารถเชื่อมโยงได้หมายความว่า "ทำเช่นเดียวกัน คนรับ?". ดังนั้นระบบจึงสามารถเชื่อมโยงได้หรือไม่สามารถเชื่อมโยงได้ ไม่สามารถเชื่อมโยงได้หรือไม่สามารถเชื่อมโยงได้ น่ารำคาญฉันรู้ ดังนั้น เมื่อ Nic van Saberhagen พูดว่า "...การชำระเงินที่เข้ามา [จะ] เชื่อมโยงกับแบบครั้งเดียว กุญแจสาธารณะซึ่งผู้ชมไม่สามารถเชื่อมโยงได้" มาดูกันว่าเขาหมายถึงอะไร ขั้นแรก ให้พิจารณาสถานการณ์ที่ Alice ส่งธุรกรรมสองรายการแยกจากรายการเดียวกันให้ Bob ที่อยู่ไปยังที่อยู่เดียวกัน ในจักรวาล Bitcoin อลิซได้ทำผิดพลาดไปแล้ว ของการส่งจากที่อยู่เดียวกันดังนั้นการทำธุรกรรมจึงล้มเหลวในความต้องการของเรา ความสามารถในการเชื่อมโยง นอกจากนี้ เนื่องจากเธอส่งเงินไปยังที่อยู่เดียวกัน เธอจึงล้มเหลวตามความปรารถนาของเรา สำหรับการไม่สามารถเชื่อมโยงได้ ธุรกรรม bitcoin นี้สามารถเชื่อมโยงได้ (ทั้งหมด) และไม่สามารถเชื่อมโยงได้ ในทางกลับกัน ในจักรวาล cryptonote สมมติว่า Alice ส่ง cryptonote ให้กับ Bob โดยใช้ที่อยู่สาธารณะของ Bob เธอเลือกเป็นชุดกุญแจสาธารณะที่น่าสับสนซึ่งทุกคนรู้จัก กุญแจในพื้นที่รถไฟใต้ดินวอชิงตัน ดี.ซี. อเล็กซ์สร้างรหัสสาธารณะแบบใช้ครั้งเดียวโดยใช้ของเธอเอง ข้อมูลและข้อมูลสาธารณะของ Bob เธอส่งเงินไป และผู้สังเกตการณ์คนใดก็จะส่งเงินไป เท่านั้นที่สามารถรวบรวมได้ "มีคนจากพื้นที่รถไฟใต้ดินวอชิงตัน ดี.ซี. ส่ง cryptonotes 2.3 รายการไปให้ ที่อยู่สาธารณะแบบครั้งเดียว XYZ123" เรามีการควบคุมความน่าจะเป็นสำหรับการเชื่อมโยงได้ที่นี่ ดังนั้นเราจะเรียกสิ่งนี้ว่า "เกือบจะไม่สามารถเชื่อมโยงได้" นอกจากนี้เรายังเห็นเฉพาะเงินคีย์สาธารณะที่ถูกส่งไปเท่านั้น แม้ว่าเราจะสงสัยว่าผู้รับ คือบ็อบ เราไม่มีคีย์ส่วนตัวของเขา ดังนั้นเราจึงไม่สามารถทดสอบได้ว่ามีธุรกรรมที่ผ่านหรือไม่ เป็นของ Bob ไม่ต้องพูดถึงการสร้างคีย์ส่วนตัวเพียงครั้งเดียวเพื่อแลก cryptonote ของเขา ดังนั้นนี้ ที่จริงแล้วคือ "ไม่สามารถเชื่อมโยงได้" โดยสิ้นเชิง นี่เป็นเคล็ดลับที่ประณีตที่สุด ใครอยากจะเชื่อถือ MtGox อื่นจริงๆ? เราอาจจะ จัดเก็บ BTC จำนวนหนึ่งบน Coinbase ได้อย่างสะดวกสบาย แต่ความปลอดภัยขั้นสูงสุดของ Bitcoin ก็คือ กระเป๋าเงินจริง ซึ่งไม่สะดวก. ในกรณีนี้ คุณสามารถมอบคีย์ส่วนตัวของคุณครึ่งหนึ่งได้อย่างไม่ไว้วางใจโดยไม่กระทบต่อคุณ ความสามารถในการใช้จ่ายเงินของตัวเอง เมื่อทำเช่นนี้ สิ่งที่คุณทำคือบอกใครสักคนถึงวิธีทำลายการเชื่อมต่อไม่ได้ ส่วนอื่นๆ คุณสมบัติของ CN ที่ทำหน้าที่เหมือนสกุลเงินจะถูกรักษาไว้ เช่น การพิสูจน์การใช้จ่ายซ้ำซ้อน และ อะไรก็ตาม
-
Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งก็คือ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะให้คำอธิบายทั่วไปของอัลกอริทึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8
- Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งได้แก่ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะจัดให้มีรุ่นคำอธิบายอัลกอริธึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8 16 ใช่ ตอนนี้เรามี a) ที่อยู่การชำระเงิน และ b) รหัสการชำระเงิน นักวิจารณ์อาจถามว่า "เราจำเป็นต้องทำเช่นนี้จริงๆ หรือไม่ เพราะหากร้านค้าได้รับ 112.00678952 CN นั่นแหละ นั่นคือคำสั่งของฉัน และฉันมีภาพหน้าจอหรือใบเสร็จหรืออะไรก็ตาม ไม่ใช่อย่างนั้น ระดับความแม่นยำที่บ้าคลั่งเพียงพอ?” คำตอบคือ "บางที โดยส่วนใหญ่ ในแต่ละวัน การทำธุรกรรมแบบเห็นหน้ากัน" อย่างไรก็ตาม สถานการณ์ที่พบบ่อยกว่า (โดยเฉพาะในโลกดิจิทัล) คือ: พ่อค้าขายของ ชุดของวัตถุ แต่ละชิ้นมีราคาคงที่ สมมติว่าวัตถุ A คือ 0.001 CN, วัตถุ B คือ 0.01 CN และ วัตถุ C คือ 0.1 CN ตอนนี้หากพ่อค้าได้รับคำสั่งซื้อจำนวน 1.618 CN ก็มีจำนวนมากมาย (หลายวิธี!) ในการจัดเตรียมคำสั่งซื้อให้กับลูกค้า หากไม่มีรหัสการชำระเงิน การระบุคำสั่งซื้อที่เรียกว่า "ไม่ซ้ำกัน" ของลูกค้าด้วยต้นทุนที่เรียกว่า "ไม่ซ้ำกัน" ของลูกค้า คำสั่งกลายเป็นไปไม่ได้ ตลกยิ่งกว่า: ถ้าทุกอย่างในร้านค้าออนไลน์ของฉันมีราคา 1.0 พอดี CN และฉันได้รับลูกค้า 1,000 รายต่อวันเหรอ? และคุณต้องการพิสูจน์ว่าคุณซื้อวัตถุมา 3 ชิ้นพอดี สองสัปดาห์ก่อน? ไม่มีรหัสการชำระเงิน? ขอให้โชคดีนะเพื่อน เรื่องสั้นเรื่องยาว: เมื่อ Bob เผยแพร่ที่อยู่การชำระเงิน เขาอาจลงเอยด้วยการเผยแพร่ a รหัสการชำระเงินด้วย (ดู เช่น การฝากเงิน Poloniex XMR) สิ่งนี้แตกต่างไปจากที่อธิบายไว้ ในข้อความที่นี่ โดยที่ Alice เป็นคนสร้างรหัสการชำระเงิน Bob จะต้องมีวิธีสร้างรหัสการชำระเงินด้วยเช่นกัน (ก,ข) โปรดจำไว้ว่าสามารถเผยแพร่คีย์การติดตาม (a,B) ได้ สูญเสียความลับของคุณค่าของพินัยกรรม 'a' ไม่ละเมิดความสามารถในการจับจ่ายหรือยอมให้คนอื่นมาขโมยของ (ผมคิดว่า...ก็คงมี ได้รับการพิสูจน์แล้ว) จะช่วยให้ผู้ใช้สามารถดูธุรกรรมที่เข้ามาทั้งหมดได้ ที่อยู่ที่ถูกตัดทอนตามที่อธิบายไว้ในย่อหน้านี้ จะใช้ส่วน "ส่วนตัว" ของคีย์เท่านั้น และสร้างขึ้นจากส่วน "สาธารณะ" การเปิดเผยค่าสำหรับ 'a' จะลบความสามารถในการลิงก์ไม่ได้ แต่จะเก็บธุรกรรมที่เหลือไว้ ผู้เขียนหมายถึง "ไม่สามารถเชื่อมโยงได้" เพราะไม่สามารถเชื่อมโยงได้หมายถึงผู้รับและสามารถเชื่อมโยงได้ หมายถึงผู้ส่ง เห็นได้ชัดว่าผู้เขียนไม่ได้ตระหนักดีว่าการเชื่อมโยงได้มีแง่มุมที่แตกต่างกันสองประการ เนื่องจากท้ายที่สุดแล้ว ธุรกรรมเป็นวัตถุที่มีทิศทางบนกราฟ จึงมีคำถามสองข้อ: "ธุรกรรมทั้งสองนี้ไปที่บุคคลคนเดียวกันหรือไม่" และ "ธุรกรรมทั้งสองนี้กำลังจะมา จากคนคนเดียวกัน?” นี่เป็นนโยบาย "ไม่ย้อนกลับ" ซึ่งเป็นคุณสมบัติที่ไม่สามารถเชื่อมโยงได้ของ CryptoNote มีเงื่อนไข กล่าวคือ Bob สามารถเลือกธุรกรรมที่เข้ามาของเขาว่าไม่สามารถยกเลิกการเชื่อมโยงได้ การใช้นโยบายนี้ นี่คือการอ้างสิทธิ์ที่พวกเขาพิสูจน์ภายใต้ Random Oracle Model เราจะไปถึงจุดนั้น การสุ่ม ออราเคิลมีข้อดีและข้อเสีย
VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(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) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(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) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 17 บางทีนี่อาจจะโง่ แต่ต้องระมัดระวังเมื่อรวม S และ P_s หากคุณเพียงแค่ต่อท้าย พับลิกคีย์ตัวสุดท้าย การเชื่อมต่อไม่ได้เสียหายเพราะใครก็ตามที่ตรวจสอบธุรกรรมที่ส่งผ่าน สามารถตรวจสอบรหัสสาธารณะล่าสุดที่แสดงในแต่ละธุรกรรมและบูมได้ นั่นคือกุญแจสาธารณะ ที่เกี่ยวข้องกับผู้ส่ง ดังนั้นหลังจากการรวมตัวแล้ว จะต้องมีเครื่องกำเนิดตัวเลขสุ่มเทียม ใช้เพื่อสับเปลี่ยนกุญแจสาธารณะที่เลือก "...จนกว่าเจ้าของจะจัดทำลายเซ็นครั้งที่สองโดยใช้คู่กุญแจอันเดียวกัน" ฉันหวังว่าผู้เขียน(s?) จะอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ ฉันเชื่อว่านี่หมายถึง "ตรวจสอบให้แน่ใจว่าทุกครั้งที่คุณเลือกชุดกุญแจสาธารณะเพื่อทำให้สับสน ตัวคุณเองด้วย คุณเลือกชุดใหม่ที่ไม่มีกุญแจสองดอกเหมือนกัน" ซึ่งดูเหมือนก สภาพค่อนข้างแข็งแกร่งเมื่อไม่สามารถเชื่อมต่อได้ บางที "คุณเลือกชุดสุ่มใหม่จาก กุญแจที่เป็นไปได้ทั้งหมด" โดยมีสมมติฐานว่าถึงแม้ทางแยกที่ไม่เล็กน้อยจะหลีกเลี่ยงไม่ได้ เกิดขึ้นก็ไม่ได้เกิดขึ้นบ่อยนัก ไม่ว่าจะด้วยวิธีใด ฉันต้องเจาะลึกลงไปในข้อความนี้ นี่คือการสร้างลายเซ็นแหวน การพิสูจน์ที่ไม่มีความรู้นั้นยอดเยี่ยมมาก ฉันขอท้าให้คุณพิสูจน์ให้ฉันเห็นว่าคุณรู้ความลับ โดยไม่เปิดเผยความลับ เช่น สมมติว่าเราอยู่ปากทางเข้าถ้ำรูปโดนัท และด้านหลังถ้ำ (เกินสายตาจากทางเข้า) มีโอประตูทางใหม่ที่คุณไป อ้างว่าคุณมีกุญแจ ถ้าคุณไปทางเดียว มันจะทำให้คุณผ่านไปได้เสมอ แต่ถ้าคุณไปทางนั้น ไปทางอื่นคุณต้องมีกุญแจ แต่คุณไม่ต้องการแสดงกุญแจให้ฉันเห็นด้วยซ้ำ แสดงให้ฉันเห็นว่ามันเปิดประตู แต่คุณต้องการพิสูจน์ให้ฉันเห็นว่าคุณรู้วิธีเปิด ประตู ในสภาพแวดล้อมแบบโต้ตอบ ฉันจะหงายเหรียญ หัวอยู่ซ้าย หางอยู่ขวา แล้วคุณก็ลงไป ถ้ำรูปโดนัทไม่ว่าเหรียญจะพาคุณไปในทางใดก็ตาม ที่ด้านหลังสุดสายตาของฉันคุณ เปิดประตูกลับมาอีกด้าน เราทำซ้ำการทดลองหยอดเหรียญ จนกว่าฉันจะพอใจที่คุณมีกุญแจ แต่นั่นเป็นการพิสูจน์ความรู้แบบไม่มีศูนย์เชิงโต้ตอบอย่างชัดเจน มีเวอร์ชันที่ไม่โต้ตอบซึ่งคุณและฉันไม่ต้องสื่อสารกัน ด้วยวิธีนี้ไม่มีผู้ดักฟังสามารถรบกวนได้ http://en.wikipedia.org/wiki/Zero-knowledge_proof สิ่งนี้กลับกันจากคำจำกัดความก่อนหน้า
VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(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) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(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) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 18 พื้นที่ทั้งหมดนี้เป็นผู้ไม่เชื่อเรื่อง cryptonote เพียงแค่อธิบายอัลกอริธึมลายเซ็นวงแหวนโดยไม่มี อ้างอิงถึงสกุลเงิน ฉันสงสัยว่าสัญกรณ์บางอย่างสอดคล้องกับส่วนที่เหลือของรายงาน แม้ว่า ตัวอย่างเช่น x คือคีย์ลับ "สุ่ม" ที่เลือกใน GEN ซึ่งให้คีย์สาธารณะ P และอิมเมจคีย์สาธารณะ I ค่าของ x นี้คือค่าที่ Bob คำนวณไว้ในตอนที่ 6 หน้า 8 นี่ก็คือ เริ่มคลายความสับสนจากคำอธิบายที่แล้ว นี่มันเจ๋งมาก เงินไม่ได้ถูกโอนจาก "ที่อยู่สาธารณะของอลิซไปยังสาธารณะของ Bob ที่อยู่" กำลังโอนจากที่อยู่แบบครั้งเดียวไปยังที่อยู่แบบครั้งเดียว ในแง่หนึ่ง นี่คือวิธีการทำงานของนักเรียน ถ้าอเล็กซ์มี cryptonotes เพราะใครบางคน ส่งให้พวกเขาไปหาเธอ ซึ่งหมายความว่าเธอมีกุญแจส่วนตัวที่จำเป็นในการส่งให้บ็อบ เธอใช้ การแลกเปลี่ยน Diffie-Hellman โดยใช้ข้อมูลสาธารณะของ Bob เพื่อสร้างที่อยู่แบบครั้งเดียวใหม่ และ cryptonotes จะถูกโอนไปยังที่อยู่นั้น ขณะนี้ เนื่องจากมีการใช้การแลกเปลี่ยน DH (น่าจะปลอดภัย) เพื่อสร้างที่อยู่แบบครั้งเดียวใหม่ ซึ่งอเล็กซ์ส่ง CN ของเธอให้ Bob เป็นคนเดียวที่มีคีย์ส่วนตัวที่จำเป็นในการทำซ้ำ ด้านบน ตอนนี้บ๊อบก็คืออเล็กซ์ http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation ผลรวมควรจัดทำดัชนีเหนือ j ไม่ใช่ i แต่ละ c_i เป็นขยะแบบสุ่ม (เนื่องจาก w_i เป็นแบบสุ่ม) ยกเว้นตูด c_iเชื่อมโยงกับรหัสจริงที่เกี่ยวข้องกับลายเซ็นนี้ ค่าของ c คือ a 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 อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และเก็บไว้ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และ stแร่มันอยู่ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 19 เมื่อมาถึงจุดนี้ฉันสับสนมาก Alex ได้รับข้อความ M พร้อมลายเซ็น (I,c_1, ..., c_n, r_1, ..., r_n) และรายชื่อสาธารณะ คีย์ เอส และเธอวิ่ง 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’ ดังนั้นให้ตรวจสอบลายเซ็น แต่แล้วฉันก็จำได้ว่าส่วนนี้เป็นเพียงการอธิบายอัลกอริธึมลายเซ็น ไม่ใช่ "ตรวจสอบ หากลงนามแล้ว ให้ตรวจสอบว่าส่งถึงฉันหรือไม่ และหากเป็นเช่นนั้น ก็ให้ใช้เงิน" นี่เป็นเพียง ส่วนหนึ่งของเกมอันเป็นเอกลักษณ์ ฉันสนใจที่จะอ่านภาคผนวก A เมื่อไปถึงที่นั่นในที่สุด ฉันต้องการดูการเปรียบเทียบการดำเนินการโดยเต็มรูปแบบของ Cryptonote กับ Bitcoin อีกทั้งไฟฟ้า/ความยั่งยืน อัลกอริธึมส่วนใดที่ประกอบขึ้นเป็น "อินพุต" ที่นี่ ฉันเชื่อว่าอินพุตธุรกรรมคือจำนวนเงินและชุดของ UTXOs ที่รวมกันเป็นจำนวนที่มากกว่า จำนวน. สิ่งนี้ไม่ชัดเจน “เป้าหมายในการซ่อนตัว?” ฉันคิดเกี่ยวกับเรื่องนี้มาสองสามนาทีแล้วและฉันก็ยังไม่ได้ ความคิดที่คลุมเครือที่สุดว่ามันอาจหมายถึงอะไร การโจมตีแบบใช้จ่ายสองครั้งสามารถทำได้โดยการจัดการคีย์ที่ใช้ที่รับรู้ของโหนดเท่านั้น ชุดรูปภาพ \(I\) "ระดับความคลุมเครือ" = n แต่จำนวนกุญแจสาธารณะทั้งหมดที่รวมอยู่ในธุรกรรมคือ n+1 กล่าวคือ ระดับความกำกวมจะเป็น "คุณต้องการให้มีบุคคลอื่นอีกกี่คน" ฝูงชน?” คำตอบน่าจะเป็น "ให้มากที่สุด" โดยค่าเริ่มต้น
VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และเก็บไว้ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และ stแร่มันอยู่ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 20 สิ่งนี้น่าสนใจ ก่อนหน้านี้ เราได้จัดเตรียมช่องทางให้ผู้รับ Bob เพื่อทำการ INCOMING ทั้งหมด ธุรกรรมที่ไม่สามารถยกเลิกการเชื่อมโยงได้โดยการเลือกครึ่งหนึ่งของคีย์ส่วนตัวของเขาตามที่กำหนดหรือโดย เผยแพร่คีย์ส่วนตัวของเขาครึ่งหนึ่งเป็นสาธารณะ นี่เป็นนโยบายประเภทที่ไม่มีการย้อนกลับ ที่นี่เราเห็น วิธีการของผู้ส่ง Alex ในการเลือกธุรกรรมขาออกรายการเดียวที่สามารถเชื่อมโยงได้ แต่ในความเป็นจริงแล้ว เผยอเล็กซ์เป็นผู้ส่งทั้งเครือข่าย นี่ไม่ใช่นโยบายประเภทที่ไม่มีการย้อนกลับ นี่คือธุรกรรมต่อธุรกรรม มีนโยบายที่สามหรือไม่? Bob ผู้รับสามารถสร้างรหัสการชำระเงินเฉพาะสำหรับ Alex ได้หรือไม่ ไม่เคยเปลี่ยนแปลง บางทีอาจใช้การแลกเปลี่ยน Diffie-Hellman? หากใครรวมการชำระเงินนั้นไว้ด้วย รหัสที่รวมไว้ที่ไหนสักแห่งในการทำธุรกรรมของเธอไปยังที่อยู่ของ Bob นั้นต้องมาจากอเล็กซ์ ด้วยวิธีนี้ อเล็กซ์ไม่จำเป็นต้องเปิดเผยตัวเองต่อทั้งเครือข่ายโดยเลือกที่จะเชื่อมโยงเครือข่ายใดเครือข่ายหนึ่งโดยเฉพาะ ทำธุรกรรม แต่เธอยังคงสามารถระบุตัวเองกับบุคคลที่เธอส่งเงินให้ได้ นี่ไม่ใช่สิ่งที่ Poloniex ทำใช่ไหม
การทำธุรกรรม อินพุต TX เอาท์พุต0 . . . เอาท์พุต . . . เอาท์พุต รูปภาพที่สำคัญ ลายเซ็น ลายเซ็นต์แหวน กุญแจปลายทาง เอาท์พุต1 กุญแจปลายทาง เอาท์พุต ธุรกรรมต่างประเทศ เอาต์พุตของผู้ส่ง กุญแจปลายทาง คู่กุญแจแบบครั้งเดียว ครั้งเดียว รหัสส่วนตัว ผม = xHp(P) พี,เอ็กซ์ รูปที่ 7 การสร้างลายเซ็น Ring ในธุรกรรมมาตรฐาน 5 หลักฐานการทำงานที่เท่าเทียมกัน ในส่วนนี้เราขอเสนอและวางอัลกอริทึม proof-of-work ใหม่ เป้าหมายหลักของเรา คือการปิดช่องว่างระหว่าง CPU (ส่วนใหญ่) และ GPU/FPGA/ASIC (ชนกลุ่มน้อย) ผู้ขุด มันคือ เหมาะสมที่ผู้ใช้บางคนสามารถมีข้อได้เปรียบเหนือผู้อื่นได้ แต่การลงทุนของพวกเขา ควรจะเติบโตอย่างน้อยเป็นเส้นตรงตามกำลัง โดยทั่วไปแล้ว การผลิตอุปกรณ์ที่มีวัตถุประสงค์พิเศษ จะต้องมีกำไรน้อยที่สุด 5.1 ผลงานที่เกี่ยวข้อง โปรโตคอล Bitcoin proof-of-work ดั้งเดิมใช้ฟังก์ชันการกำหนดราคาที่เน้น CPU SHA-256 โดยส่วนใหญ่ประกอบด้วยตัวดำเนินการเชิงตรรกะขั้นพื้นฐานและอาศัยความเร็วในการคำนวณเท่านั้น โปรเซสเซอร์จึงเหมาะอย่างยิ่งสำหรับการใช้งานแบบมัลติคอร์/สายพานลำเลียง อย่างไรก็ตาม คอมพิวเตอร์สมัยใหม่ไม่ได้ถูกจำกัดด้วยจำนวนการทำงานต่อวินาทีเพียงอย่างเดียว แต่ยังตามขนาดหน่วยความจำด้วย แม้ว่าโปรเซสเซอร์บางตัวอาจเร็วกว่าตัวประมวลผลอื่นอย่างมาก [8] ขนาดหน่วยความจำมีโอกาสน้อยที่จะแตกต่างกันระหว่างเครื่อง ฟังก์ชันราคาที่ผูกกับหน่วยความจำถูกนำมาใช้ครั้งแรกโดย Abadi และคณะ และถูกกำหนดให้เป็น “ฟังก์ชันที่เวลาในการคำนวณถูกครอบงำโดยเวลาที่ใช้ในการเข้าถึงหน่วยความจำ” [15] แนวคิดหลักคือการสร้างอัลกอริทึมที่จัดสรรบล็อกข้อมูลขนาดใหญ่ (“scratchpad”) ภายในหน่วยความจำที่สามารถเข้าถึงได้ค่อนข้างช้า (เช่น RAM) และ "การเข้าถึงไฟล์ ลำดับตำแหน่งที่คาดเดาไม่ได้” ภายในนั้น บล็อกควรมีขนาดใหญ่พอที่จะเก็บรักษาได้ ข้อมูลที่ได้เปรียบมากกว่าการคำนวณใหม่สำหรับการเข้าถึงแต่ละครั้ง อัลกอริทึมก็ควรเช่นกัน ป้องกันการขนานภายใน ดังนั้นเธรดพร้อมกัน N ควรต้องใช้หน่วยความจำเพิ่มขึ้น N เท่า ในครั้งเดียว Dwork และคณะ [22] ตรวจสอบและทำให้แนวทางนี้เป็นทางการ ซึ่งทำให้พวกเขาเสนอแนะแนวทางอื่น ตัวแปรของฟังก์ชันการกำหนดราคา: "Mbound" อีกหนึ่งงานเป็นของ F. Coelho [20] ใคร 11 การทำธุรกรรม อินพุต TX เอาท์พุต0 . . . เอาท์พุต . . . เอาท์พุต รูปภาพที่สำคัญ ลายเซ็น ลายเซ็นต์แหวน กุญแจปลายทาง เอาท์พุต1 กุญแจปลายทาง เอาท์พุต ธุรกรรมต่างประเทศ เอาต์พุตของผู้ส่ง กุญแจปลายทาง คู่กุญแจแบบครั้งเดียว ครั้งเดียว รหัสส่วนตัว ผม = xHp(P) พี,เอ็กซ์ รูปที่ 7 การสร้างลายเซ็น Ring ในธุรกรรมมาตรฐาน 5 หลักฐานการทำงานที่เท่าเทียมกัน ในส่วนนี้เราขอเสนอและวางอัลกอริทึม proof-of-work ใหม่ เป้าหมายหลักของเรา คือการปิดช่องว่างระหว่าง CPU (ส่วนใหญ่) และ GPU/FPGA/ASIC (ชนกลุ่มน้อย) ผู้ขุด มันคือ เหมาะสมที่ผู้ใช้บางคนสามารถมีข้อได้เปรียบเหนือผู้อื่นได้ แต่การลงทุนของพวกเขา ควรจะเติบโตอย่างน้อยเป็นเส้นตรงตามกำลัง โดยทั่วไปแล้ว การผลิตอุปกรณ์ที่มีวัตถุประสงค์พิเศษ จะต้องมีกำไรน้อยที่สุด 5.1 ผลงานที่เกี่ยวข้อง โปรโตคอล Bitcoin proof-of-work ดั้งเดิมใช้ฟังก์ชันการกำหนดราคาที่เน้น CPU SHA-256 โดยส่วนใหญ่ประกอบด้วยตัวดำเนินการเชิงตรรกะขั้นพื้นฐานและอาศัยความเร็วในการคำนวณเท่านั้น โปรเซสเซอร์จึงเหมาะอย่างยิ่งสำหรับการใช้งานแบบมัลติคอร์/สายพานลำเลียง อย่างไรก็ตาม คอมพิวเตอร์สมัยใหม่ไม่ได้ถูกจำกัดด้วยจำนวนการทำงานต่อวินาทีเพียงอย่างเดียว แต่ยังตามขนาดหน่วยความจำด้วย แม้ว่าโปรเซสเซอร์บางตัวอาจเร็วกว่าโปรเซสเซอร์ตัวอื่นอย่างมาก [8] ขนาดหน่วยความจำมีโอกาสน้อยที่จะแตกต่างกันระหว่างเครื่อง ฟังก์ชันราคาที่ผูกกับหน่วยความจำถูกนำมาใช้ครั้งแรกโดย Abadi และคณะ และถูกกำหนดให้เป็น “ฟังก์ชันที่เวลาในการคำนวณถูกครอบงำโดยเวลาที่ใช้ในการเข้าถึงหน่วยความจำ” [15] แนวคิดหลักคือการสร้างอัลกอริทึมที่จัดสรรบล็อกข้อมูลขนาดใหญ่ (“scratchpad”) ภายในหน่วยความจำที่สามารถเข้าถึงได้ค่อนข้างช้า (เช่น RAM) และ "การเข้าถึงไฟล์ ลำดับตำแหน่งที่คาดเดาไม่ได้” ภายในนั้น บล็อกควรมีขนาดใหญ่พอที่จะเก็บรักษาได้ ข้อมูลที่ได้เปรียบมากกว่าการคำนวณใหม่สำหรับการเข้าถึงแต่ละครั้ง อัลกอริทึมก็ควรเช่นกัน ป้องกันการขนานภายใน ดังนั้นเธรดพร้อมกัน N ควรต้องใช้หน่วยความจำเพิ่มขึ้น N เท่า ในครั้งเดียว Dwork และคณะ [22] ตรวจสอบและทำให้แนวทางนี้เป็นทางการ ทำให้พวกเขาเสนอแนะแนวทางอื่น ตัวแปรของฟังก์ชันการกำหนดราคา: "Mbound" อีกหนึ่งงานเป็นของ F. Coelho [20] ใคร 11 21 เห็นได้ชัดว่านี่คือ UTXO's ของเรา: จำนวนและคีย์ปลายทาง หาก Alex เป็นคนสร้างธุรกรรมมาตรฐานนี้และส่งไปให้ Bob แสดงว่า Alex ก็มีคีย์ส่วนตัวเช่นกัน ในแต่ละสิ่งเหล่านี้ ฉันชอบไดอะแกรมนี้มาก เพราะมันตอบคำถามก่อนหน้านี้บางข้อ อินพุต Txn ประกอบด้วย ของชุดเอาต์พุต Txn และ keรูปภาพของคุณ จากนั้นจะมีการลงนามด้วยลายเซ็นแหวนรวมทั้งทั้งหมด ของคีย์ส่วนตัวที่ Alex เป็นเจ้าของธุรกรรมต่างประเทศทั้งหมดที่รวมอยู่ในข้อตกลง ที่ เอาต์พุต Txn ประกอบด้วยจำนวนเงินและคีย์ปลายทาง ผู้รับรายการอาจ หากต้องการ ให้สร้างคีย์ส่วนตัวแบบครั้งเดียวตามที่อธิบายไว้ก่อนหน้าในรายงานเพื่อใช้จ่าย เงิน คงจะน่ายินดีที่ได้ทราบว่าสิ่งนี้ตรงกับโค้ดจริงมากน้อยเพียงใด... ไม่ Nic van Saberhagen อธิบายคุณสมบัติบางอย่างของอัลกอริธึมการพิสูจน์การทำงานอย่างหลวมๆ โดยไม่ได้อธิบายอัลกอริทึมนั้นจริงๆ อัลกอริธึม CryptoNight นั้นจำเป็นต้องมีการวิเคราะห์เชิงลึก เมื่อฉันอ่านสิ่งนี้ฉันก็พูดติดอ่าง การลงทุนควรเติบโตอย่างน้อยเชิงเส้นตามกำลังหรือควร การลงทุนเติบโต สูงสุด เป็นเส้นตรงด้วยพลังใช่ไหม? แล้วฉันก็ตระหนักได้ว่า ฉันในฐานะคนขุดแร่หรือนักลงทุน มักจะคิดว่า "ฉันจะได้รับพลังงานได้มากเพียงใด เพื่อการลงทุน?” ไม่ใช่ "ต้องลงทุนเท่าไหร่ถึงจะได้พลังงานที่แน่นอน" แน่นอน แสดงว่าการลงทุนโดย I และกำลังโดย P ถ้า I(P) คือการลงทุนในรูปของกำลัง และ P(I) คือกำลังที่เป็นหน้าที่ของการลงทุน พวกมันจะผกผันกัน (ไม่ว่าจะอยู่ที่ใดก็ตาม ผกผันสามารถมีได้) และถ้า I(P) เร็วกว่าเชิงเส้น มากกว่า P(I) ก็จะช้ากว่าเชิงเส้น ดังนั้น จะมีอัตราผลตอบแทนลดลงสำหรับผู้ลงทุน กล่าวคือสิ่งที่ผู้เขียนพูดในที่นี้ก็คือ "แน่นอน เมื่อคุณลงทุนมากขึ้น คุณก็จะได้รับมากขึ้น" อำนาจ แต่เราควรพยายามทำให้อัตราผลตอบแทนลดลง" การลงทุนของ CPU จะจำกัดขอบเขตย่อยเชิงเส้นในที่สุด คำถามก็คือว่าผู้เขียน ได้ออกแบบอัลกอริธึม POW ที่จะบังคับให้ ASIC ทำเช่นนี้ด้วย "สกุลเงินในอนาคต" สมมุติควรขุดด้วยทรัพยากรที่ช้าที่สุด/จำกัดที่สุดเสมอหรือไม่ บทความโดย Abadi และคณะ (ซึ่งมีวิศวกรของ Google และ Microsoft บางคนเป็นผู้เขียน) คือ โดยพื้นฐานแล้วโดยใช้ความจริงที่ว่าขนาดหน่วยความจำ ในช่วงไม่กี่ปีที่ผ่านมา มีขนาดเล็กลงมาก ความแปรปรวนในเครื่องต่างๆ มากกว่าความเร็วของโปรเซสเซอร์ และมีอัตราส่วนการลงทุนต่อกำลังที่มากกว่าเชิงเส้น อีกไม่กี่ปีอาจต้องประเมินใหม่! ทุกอย่างคือการแข่งขันทางอาวุธ... การสร้างฟังก์ชัน hash เป็นเรื่องยาก การสร้างฟังก์ชัน hash ที่เป็นไปตามข้อจำกัดเหล่านี้ดูเหมือนจะยากกว่า บทความนี้ดูเหมือนจะไม่มีคำอธิบายเกี่ยวกับความเป็นจริง hashing อัลกอริทึม CryptoNight ฉันคิดว่ามันเป็นการใช้งาน SHA-3 ที่ต้องใช้หน่วยความจำอย่างหนัก ในโพสต์ในฟอรัม แต่ฉันไม่รู้... และนั่นคือประเด็น มันจะต้องอธิบาย
เสนอวิธีแก้ปัญหาที่มีประสิทธิภาพสูงสุด: “ฮอกไกโด” สำหรับความรู้ของเรา งานล่าสุดที่มีพื้นฐานอยู่บนแนวคิดของการค้นหาแบบสุ่มหลอกในอาเรย์ขนาดใหญ่คือ อัลกอริธึมที่เรียกว่า “scrypt” โดย C. Percival [32] ต่างจากฟังก์ชั่นก่อนหน้านี้ที่เน้นไปที่ แหล่งที่มาของคีย์ และไม่ใช่ระบบ proof-of-work แม้ว่าข้อเท็จจริงนี้ scrypt สามารถตอบสนองวัตถุประสงค์ของเราได้: มันทำงานได้ดีเป็นฟังก์ชันการกำหนดราคาในปัญหาการแปลง hash บางส่วน เช่น SHA-256 ใน Bitcoin. ถึงตอนนี้ scrypt ได้ถูกนำไปใช้ใน Litecoin [14] และ Bitcoin forks อื่นๆ แล้ว อย่างไรก็ตาม การใช้งานนั้นไม่ได้ผูกกับหน่วยความจำจริงๆ: อัตราส่วน "เวลาในการเข้าถึงหน่วยความจำ/โดยรวม time” ไม่เพียงพอ เนื่องจากแต่ละอินสแตนซ์ใช้พื้นที่เพียง 128 KB สิ่งนี้อนุญาตให้นักขุด GPU ให้มีประสิทธิภาพมากขึ้นประมาณ 10 เท่า และยังคงทิ้งความเป็นไปได้ในการสร้างสรรค์ไว้ค่อนข้างมาก อุปกรณ์ขุดเหมืองราคาถูกแต่มีประสิทธิภาพสูง นอกจากนี้ โครงสร้างการเข้ารหัสยังช่วยให้สามารถแลกเปลี่ยนขนาดหน่วยความจำเป็นเส้นตรงและ ความเร็วของ CPU เนื่องจากทุกบล็อกใน scratchpad นั้นได้มาจากบล็อกก่อนหน้าเท่านั้น ตัวอย่างเช่น คุณสามารถจัดเก็บบล็อกทุก ๆ วินาทีและคำนวณบล็อกอื่น ๆ ในลักษณะขี้เกียจได้ เช่น เท่านั้น เมื่อจำเป็น ดัชนีสุ่มหลอกจะถือว่ามีการกระจายอย่างสม่ำเสมอ ดังนั้นค่าที่คาดหวังของการคำนวณใหม่ของบล็อกเพิ่มเติมคือ 1 \(2 \cdot N\) โดยที่ N คือตัวเลข ของการวนซ้ำ เวลาคำนวณโดยรวมเพิ่มขึ้นน้อยกว่าครึ่งเพราะยังมี การดำเนินการที่ไม่ขึ้นอยู่กับเวลา (เวลาคงที่) เช่น การเตรียมแผ่นรอยขีดข่วนและ hashing on การวนซ้ำทุกครั้ง ประหยัด 2/3 ของต้นทุนหน่วยความจำ 1 3 \(\cdot\) ยังไม่มี + 1 3 \(\cdot\) \(2 \cdot N\) = N การคำนวณใหม่เพิ่มเติม ผล 9/10 เข้า 1 10 \(\cdot\) ยังไม่มี + . . . +1 10 \(\cdot\) 9 \(\cdot\) ยังไม่มีข้อความ = 4.5N. มันง่ายที่จะแสดงให้เห็นว่าการจัดเก็บเพียง 1 ของบล็อกทั้งหมด เพิ่มเวลาน้อยกว่าปัจจัยของ s−1 2. นี่หมายถึงเครื่องที่มี CPU เร็วกว่าชิปสมัยใหม่ถึง 200 เท่า สามารถจัดเก็บ scratchpad ได้เพียง 320 ไบต์ 5.2 อัลกอริธึมที่นำเสนอ เราขอเสนออัลกอริธึมที่ผูกกับหน่วยความจำใหม่สำหรับฟังก์ชันการกำหนดราคา proof-of-work มันขึ้นอยู่กับ การเข้าถึงหน่วยความจำช้าแบบสุ่มและเน้นการพึ่งพาเวลาแฝง ตรงข้ามกับการเข้ารหัสทุกครั้ง บล็อกใหม่ (ความยาว 64 ไบต์) ขึ้นอยู่กับบล็อกก่อนหน้าทั้งหมด จึงเกิดเรื่องสมมุติขึ้นมา “โปรแกรมรักษาหน่วยความจำ” ควรเพิ่มความเร็วในการคำนวณแบบทวีคูณ อัลกอริทึมของเราต้องการประมาณ 2 Mb ต่ออินสแตนซ์ด้วยเหตุผลต่อไปนี้: 1. พอดีกับแคช L3 (ต่อคอร์) ของโปรเซสเซอร์สมัยใหม่ ซึ่งควรจะกลายเป็นกระแสหลัก ในอีกไม่กี่ปี; 2. หน่วยความจำภายในหนึ่งเมกะไบต์เป็นขนาดที่แทบจะยอมรับไม่ได้สำหรับไปป์ไลน์ ASIC สมัยใหม่ 3. GPU อาจเรียกใช้อินสแตนซ์หลายร้อยอินสแตนซ์พร้อมกัน แต่ถูกจำกัดด้วยวิธีอื่น: หน่วยความจำ GDDR5 ช้ากว่าแคช CPU L3 และน่าทึ่งในเรื่องแบนด์วิธด้วย ความเร็วในการเข้าถึงแบบสุ่ม 4. การขยาย Scratchpad อย่างมีนัยสำคัญจะต้องมีการวนซ้ำเพิ่มขึ้น ซึ่งใน เทิร์นหมายถึงการเพิ่มเวลาโดยรวม การโทร "หนัก" ในเครือข่าย p2p ที่ไม่น่าเชื่อถืออาจนำไปสู่ ช่องโหว่ร้ายแรง เนื่องจากโหนดจำเป็นต้องตรวจสอบ proof-of-work ของทุกบล็อกใหม่ หากโหนดใช้เวลาเป็นจำนวนมากในการประเมิน hash แต่ละครั้ง ก็สามารถดำเนินการได้อย่างง่ายดาย DDoSed โดยวัตถุปลอมมากมายพร้อมข้อมูลงานที่กำหนดเอง (ค่า nonce) 12 เสนอวิธีแก้ปัญหาที่มีประสิทธิภาพสูงสุด: “ฮอกไกโด” สำหรับความรู้ของเรา งานล่าสุดที่มีพื้นฐานอยู่บนแนวคิดของการค้นหาแบบสุ่มหลอกในอาเรย์ขนาดใหญ่คือ อัลกอริธึมที่เรียกว่า “scrypt” โดย C. Percival [32] ต่างจากฟังก์ชั่นก่อนหน้านี้ที่เน้นไปที่ แหล่งที่มาของคีย์ และไม่ใช่ระบบ proof-of-work แม้ว่าข้อเท็จจริงนี้ scrypt สามารถตอบสนองวัตถุประสงค์ของเราได้: มันทำงานได้ดีเป็นฟังก์ชันการกำหนดราคาในปัญหาการแปลง hash บางส่วน เช่น SHA-256 ใน Bitcoin. ถึงตอนนี้ scrypt ได้ถูกนำไปใช้ใน Litecoin [14] และ Bitcoin forks อื่นๆ แล้ว อย่างไรก็ตาม การใช้งานนั้นไม่ได้ผูกกับหน่วยความจำจริงๆ: อัตราส่วน "เวลาในการเข้าถึงหน่วยความจำ / โดยรวม time” ไม่เพียงพอ เนื่องจากแต่ละอินสแตนซ์ใช้พื้นที่เพียง 128 KB สิ่งนี้อนุญาตให้นักขุด GPU ให้มีประสิทธิภาพมากขึ้นประมาณ 10 เท่า และยังคงทิ้งความเป็นไปได้ในการสร้างสรรค์ไว้ค่อนข้างมาก อุปกรณ์ขุดเหมืองราคาถูกแต่มีประสิทธิภาพสูง นอกจากนี้ โครงสร้างการเข้ารหัสยังช่วยให้สามารถแลกเปลี่ยนขนาดหน่วยความจำเป็นเส้นตรงและ ความเร็วของ CPU เนื่องจากทุกบล็อกใน scratchpad นั้นได้มาจากบล็อกก่อนหน้าเท่านั้น ตัวอย่างเช่น คุณสามารถจัดเก็บบล็อกทุก ๆ วินาทีและคำนวณบล็อกอื่น ๆ ในลักษณะขี้เกียจได้ เช่น เท่านั้น เมื่อจำเป็น ดัชนีสุ่มหลอกจะถือว่ามีการกระจายอย่างสม่ำเสมอ ดังนั้นค่าที่คาดหวังของการคำนวณใหม่ของบล็อกเพิ่มเติมคือ 1 \(2 \cdot N\) โดยที่N คือตัวเลข ของการวนซ้ำ เวลาคำนวณโดยรวมเพิ่มขึ้นน้อยกว่าครึ่งเพราะยังมี การดำเนินการที่ไม่ขึ้นอยู่กับเวลา (เวลาคงที่) เช่น การเตรียมแผ่นรอยขีดข่วนและ hashing on การวนซ้ำทุกครั้ง ประหยัด 2/3 ของต้นทุนหน่วยความจำ 1 3 \(\cdot\) ยังไม่มี + 1 3 \(\cdot\) \(2 \cdot N\) = N การคำนวณใหม่เพิ่มเติม ผล 9/10 เข้า 1 10 \(\cdot\) ยังไม่มี + . . . +1 10 \(\cdot\) 9 \(\cdot\) ยังไม่มีข้อความ = 4.5N. มันง่ายที่จะแสดงให้เห็นว่าการจัดเก็บเพียง 1 ของบล็อกทั้งหมด เพิ่มเวลาน้อยกว่าปัจจัยของ s−1 2. นี่หมายถึงเครื่องที่มี CPU เร็วกว่าชิปสมัยใหม่ถึง 200 เท่า สามารถจัดเก็บ scratchpad ได้เพียง 320 ไบต์ 5.2 อัลกอริธึมที่นำเสนอ เราขอเสนออัลกอริธึมที่ผูกกับหน่วยความจำใหม่สำหรับฟังก์ชันการกำหนดราคา proof-of-work มันขึ้นอยู่กับ การเข้าถึงหน่วยความจำช้าแบบสุ่มและเน้นการพึ่งพาเวลาแฝง ตรงข้ามกับการเข้ารหัสทุกครั้ง บล็อกใหม่ (ความยาว 64 ไบต์) ขึ้นอยู่กับบล็อกก่อนหน้าทั้งหมด จึงเกิดเรื่องสมมุติขึ้นมา “โปรแกรมรักษาหน่วยความจำ” ควรเพิ่มความเร็วในการคำนวณแบบทวีคูณ อัลกอริทึมของเราต้องการประมาณ 2 Mb ต่ออินสแตนซ์ด้วยเหตุผลต่อไปนี้: 1. พอดีกับแคช L3 (ต่อคอร์) ของโปรเซสเซอร์สมัยใหม่ ซึ่งควรจะกลายเป็นกระแสหลัก ในอีกไม่กี่ปี; 2. หน่วยความจำภายในหนึ่งเมกะไบต์เป็นขนาดที่แทบจะยอมรับไม่ได้สำหรับไปป์ไลน์ ASIC สมัยใหม่ 3. GPU อาจเรียกใช้อินสแตนซ์หลายร้อยอินสแตนซ์พร้อมกัน แต่ถูกจำกัดด้วยวิธีอื่น: หน่วยความจำ GDDR5 ช้ากว่าแคช CPU L3 และน่าทึ่งในเรื่องแบนด์วิธด้วย ความเร็วในการเข้าถึงแบบสุ่ม 4. การขยาย Scratchpad อย่างมีนัยสำคัญจะต้องมีการวนซ้ำเพิ่มขึ้น ซึ่งใน เทิร์นหมายถึงการเพิ่มเวลาโดยรวม การโทร "หนัก" ในเครือข่าย p2p ที่ไม่น่าเชื่อถืออาจนำไปสู่ ช่องโหว่ร้ายแรง เนื่องจากโหนดจำเป็นต้องตรวจสอบ proof-of-work ของทุกบล็อกใหม่ หากโหนดใช้เวลาเป็นจำนวนมากในการประเมิน hash แต่ละครั้ง ก็สามารถดำเนินการได้อย่างง่ายดาย DDoSed โดยวัตถุปลอมมากมายพร้อมข้อมูลงานที่กำหนดเอง (ค่า 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 ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ 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 ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 23 หน่วยอะตอม ฉันชอบแบบนั้น นี่เทียบเท่ากับ Satoshis หรือไม่? หากเป็นเช่นนั้น นั่นหมายความว่าจะมี cryptonote อยู่ที่ 185 พันล้าน ฉันรู้ว่าในที่สุดแล้วสิ่งนี้จะต้องได้รับการปรับแต่งในไม่กี่หน้า หรืออาจมีการพิมพ์ผิด หากรางวัลพื้นฐานคือ "เหรียญที่เหลือทั้งหมด" มีเพียงบล็อกเดียวเท่านั้นที่จะสามารถรับเหรียญทั้งหมดได้ อินสตามีน. ในทางกลับกัน หากนี่ควรจะเป็นสัดส่วนไม่ทางใดก็ทางหนึ่ง ความแตกต่างในเวลาระหว่างปัจจุบันและวันที่สิ้นสุดการผลิตเหรียญบางรายการ? นั่นก็จะ สมเหตุสมผล นอกจากนี้ ในโลกของฉัน สองสัญลักษณ์ที่ยิ่งใหญ่กว่าเช่นนี้หมายถึง "ยิ่งใหญ่กว่ามาก" ผู้เขียนทำ อาจหมายถึงอย่างอื่นใช่ไหม? หากการปรับตัวต่อความยากลำบากเกิดขึ้นทุกๆ บล็อก ผู้โจมตีก็อาจมีฟาร์มขนาดใหญ่มาก เครื่องจักรขุดและขุดตามช่วงเวลาที่เลือกอย่างระมัดระวัง สิ่งนี้อาจทำให้เกิดการระเบิดวุ่นวาย (หรือความผิดพลาดจนเหลือศูนย์) ในความยากลำบาก หากสูตรการปรับความยากลำบากไม่ได้รับการหน่วงอย่างเหมาะสม ไม่ต้องสงสัยเลยว่าวิธีการของ Bitcoin นั้นไม่เหมาะสมสำหรับการคำนวณใหม่อย่างรวดเร็ว แต่เป็นแนวคิดเรื่องความเฉื่อย ในระบบเหล่านี้จะต้องได้รับการพิสูจน์ ไม่ใช่ถูกมองข้าม นอกจากนี้การแกว่ง ในความยากลำบากของเครือข่ายไม่จำเป็นต้องเป็นปัญหา เว้นแต่จะส่งผลให้เกิดความผันผวนที่เห็นได้ชัด การจัดหาเหรียญ - และการมีปัญหาที่เปลี่ยนแปลงอย่างรวดเร็วอาจทำให้เกิด "การแก้ไขมากเกินไป" เวลาที่ใช้โดยเฉพาะในช่วงเวลาสั้นๆ เช่น ไม่กี่นาที จะเป็นสัดส่วนกับ "ผลรวม จำนวนบล็อกที่สร้างขึ้นบนเครือข่าย" ค่าคงที่ของสัดส่วนก็จะเติบโตขึ้นด้วยตัวมันเอง เมื่อเวลาผ่านไป น่าจะเป็นแบบทวีคูณหาก CN ปิดกิจการ อาจเป็นความคิดที่ดีกว่าที่จะปรับความยากเพื่อเก็บ "บล็อกทั้งหมดที่สร้างขึ้นใน เครือข่ายตั้งแต่บล็อกสุดท้ายถูกเพิ่มเข้าไปในเชนหลัก" ภายในค่าคงที่บางส่วนหรือด้วย การแปรผันที่มีขอบเขตหรืออะไรทำนองนั้น ถ้าเป็นอัลกอริธึมแบบปรับตัวที่มีการคำนวณ สามารถกำหนดได้ว่านำไปปฏิบัติได้ง่ายซึ่งดูเหมือนจะช่วยแก้ปัญหาได้ แต่ถ้าเราใช้วิธีการนั้น ผู้ที่มีฟาร์มขุดขนาดใหญ่ก็สามารถปิดฟาร์มของตนได้ สักสองสามชั่วโมงแล้วเปิดใหม่อีกครั้ง ในช่วงสองสามช่วงตึกแรก ฟาร์มนั้นจะสร้าง ธนาคาร ดังนั้น จริงๆ แล้ว วิธีการนี้จะนำมาซึ่งจุดที่น่าสนใจ: การขุดกลายเป็น (โดยเฉลี่ย) แพ้เกมโดยไม่มี ROI โดยเฉพาะอย่างยิ่งเมื่อมีผู้คนกระโดดเข้าสู่เครือข่ายมากขึ้น หากเกิดความยุ่งยากในการขุด เครือข่ายที่มีการติดตามอย่างใกล้ชิดมาก hashrate ฉันสงสัยว่าผู้คนจะขุดได้มากเท่ากับพวกเขา กำลังทำอยู่ หรือในทางกลับกัน แทนที่จะให้ฟาร์มขุดเปิดตลอด 24 ชั่วโมงทุกวัน พวกเขาอาจเปลี่ยนมัน เปิดเป็นเวลา 6 ชั่วโมง ปิดเป็นเวลา 2 เปิดเป็นเวลา 6 ชั่วโมง ปิดเป็นเวลา 2 หรืออะไรทำนองนั้น เพียงเปลี่ยนไปใช้เหรียญอื่น สองสามชั่วโมง รอให้ความยากลดลง จากนั้นค่อยกลับมาลุยต่อเพื่อรับส่วนพิเศษเหล่านั้น บล็อกความสามารถในการทำกำไรเมื่อเครือข่ายปรับตัว และคุณรู้อะไรไหม? นี่คงจะเป็นอย่างนั้นจริงๆ หนึ่งในสถานการณ์การขุดที่ดีกว่าที่ฉันคำนึงถึง... นี่อาจเป็นวงกลม แต่ถ้าเวลาในการสร้างบล็อก เฉลี่ย ประมาณหนึ่งนาที เราก็สามารถทำได้ ใช้จำนวนบล็อกเป็นพร็อกซีสำหรับ "เวลาที่ใช้ไป"
6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ 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 ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 24 เอาล่ะ เรามี blockchain และแต่ละบล็อกมีการประทับเวลา นอกเหนือจากนั้น สั่ง สิ่งนี้ถูกแทรกไว้อย่างชัดเจนเพื่อการปรับเปลี่ยนความยากเนื่องจากการประทับเวลา เชื่อถือไม่ได้มากดังที่กล่าวไปแล้ว เราได้รับอนุญาตให้มีการประทับเวลาที่ขัดแย้งกันในห่วงโซ่หรือไม่ หาก Block A มาก่อน Block B ในห่วงโซ่ และทุกอย่างสอดคล้องกันในแง่ของการเงิน แต่ดูเหมือนว่า Block A จะถูกสร้างขึ้นหลังจาก Block B? เพราะบางทีอาจมีคนเป็นเจ้าของ ส่วนใหญ่ของเครือข่าย? ไม่เป็นไรใช่ไหม? อาจเป็นเพราะการเงินไม่ได้ถูกหลอก โอเค ฉันเกลียดกฎเกณฑ์นี้ "มีเพียง 80% ของบล็อกที่ถูกต้องตามกฎหมายสำหรับหลัก blockchain" วิธีการ มีจุดประสงค์เพื่อป้องกันไม่ให้คนโกหกปรับแต่งการประทับเวลาของตนหรือไม่ แต่ตอนนี้มันเพิ่ม สิ่งจูงใจให้ทุกคนโกหกเรื่องการประทับเวลาและเลือกค่ามัธยฐาน กรุณากำหนด. ความหมาย "สำหรับบล็อกนี้ให้รวมเฉพาะธุรกรรมที่รวมค่าธรรมเนียมมากกว่าเท่านั้น มากกว่า p% โดยเฉพาะอย่างยิ่งมีค่าธรรมเนียมมากกว่า 2p%" หรืออะไรทำนองนั้น พวกเขาหมายถึงอะไรโดยหลอกลวง? หากการทำธุรกรรมสอดคล้องกับประวัติที่ผ่านมาของ blockchain และการทำธุรกรรมรวมค่าธรรมเนียมที่นักขุดพึงพอใจ ยังไม่เพียงพอหรือ? เอาละ ไม่ ไม่จำเป็น หากไม่มีขนาดบล็อกสูงสุด ก็ไม่มีอะไรที่จะเก็บผู้ใช้ที่เป็นอันตรายได้ จากการอัปโหลดธุรกรรมจำนวนมหาศาลถึงตัวเขาในคราวเดียวเพื่อทำให้ช้าลง เครือข่าย กฎหลักสำหรับขนาดบล็อกสูงสุดจะป้องกันไม่ให้ผู้คนใส่ขยะจำนวนมหาศาล ข้อมูลบน blockchain ทั้งหมดพร้อมกันเพื่อทำให้สิ่งต่างๆ ช้าลง แต่ต้องมีกฎดังกล่าวอย่างแน่นอน ปรับตัว เช่น ในช่วงเทศกาลคริสต์มาส การจราจรจะติดขัด และ ขนาดบล็อกจะใหญ่มากและหลังจากนั้นทันทีเพื่อให้ขนาดบล็อกลดลงในภายหลัง อีกครั้ง ดังนั้นเราจึงต้องมี a) หมวกแบบปรับได้บางประเภท หรือ b) หมวกที่ใหญ่เพียงพอถึง 99% ยอดเขาคริสต์มาสที่สมเหตุสมผลไม่ทำให้หมวกแตก แน่นอนว่าอันที่สองนั้นเป็นไปไม่ได้ การประมาณการ - ใครจะรู้ว่าสกุลเงินจะปรับตัวทันหรือไม่? ดีกว่าที่จะปรับตัวและไม่ต้องกังวล เกี่ยวกับมัน แต่แล้วเราก็มีปัญหาเกี่ยวกับทฤษฎีการควบคุม: จะทำให้สิ่งนี้ปรับตัวได้อย่างไรโดยไม่ต้อง ช่องโหว่ในการโจมตีหรือการแกว่งอย่างดุเดือดและบ้าคลั่ง? สังเกตว่าวิธีการปรับเปลี่ยนไม่ได้หยุดผู้ใช้ที่เป็นอันตรายจากการสะสมจำนวนเล็กน้อย ของข้อมูลขยะเมื่อเวลาผ่านไปบน blockchain ทำให้เกิดการขยายตัวในระยะยาว นี่เป็นปัญหาที่แตกต่าง โดยรวมแล้วเหรียญ cryptonote มีปัญหาร้ายแรงด้วย
6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ 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 ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ 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 ลำดับนี้จะเท่ากับ จริงๆ แล้ว M_n กM_n aˆ2M_n aˆ3M_n ... และแน่นอน วิธีเดียวที่จะจำกัดการเติบโตเชิงเส้นให้ได้มากที่สุดก็คือการเลือก a=1 แน่นอนว่านี่เป็นไปไม่ได้ มันไม่อนุญาตให้มีการเติบโตเลย ในทางกลับกัน หาก f(M_n) เป็นฟังก์ชันที่ไม่คงที่ สถานการณ์ก็จะมากกว่านั้นมาก ซับซ้อนและอาจนำไปสู่วิธีแก้ปัญหาที่หรูหรา ฉันจะคิดเรื่องนี้สักพัก ค่าธรรมเนียมนี้จะต้องมากพอที่จะลดค่าปรับขนาดส่วนเกินจากส่วนถัดไป ทำไมผู้ใช้ทั่วไปถึงคิดว่าเป็นผู้ชายล่ะฮะ? ฮะ?
ความเป็นไปได้ที่จะขยาย blockchain และสร้างภาระเพิ่มเติมบนโหนด ที่จะท้อแท้ ผู้เข้าร่วมที่ประสงค์ร้ายจากการสร้างบล็อกขนาดใหญ่เราแนะนำฟังก์ชันการลงโทษ: รางวัลใหม่ = รางวัลฐาน \(\cdot\) BlkSize มน −1 2 กฎนี้ใช้เฉพาะเมื่อ BlkSize มากกว่าขนาดบล็อกอิสระขั้นต่ำที่ควรจะเป็น ใกล้เคียงกับค่าสูงสุด (10kb, \(M_N \cdot 110\%\)) คนงานเหมืองได้รับอนุญาตให้สร้างบล็อกที่มี "ขนาดปกติ" และแม้แต่เท่าๆ กัน เกินด้วยผลกำไรเมื่อค่าธรรมเนียมโดยรวมเกินกว่าค่าปรับ แต่ค่าธรรมเนียมไม่น่าจะเติบโต ไม่เหมือนค่าปรับกำลังสองจึงจะมีความสมดุล 6.3 สคริปต์ธุรกรรม CryptoNote มีระบบย่อยการเขียนสคริปต์ที่เรียบง่ายมาก ผู้ส่งระบุนิพจน์ Φ = f (x1, x2, . . . , xn) โดยที่ n คือจำนวนคีย์สาธารณะปลายทาง {Pi}n ผม=1. ไบนารีห้าเท่านั้น รองรับตัวดำเนินการ: ต่ำสุด สูงสุด ผลรวม mul และ cmp เมื่อผู้รับชำระเงินนี้แล้ว เขาสร้างลายเซ็น \(0 \leq k \leq n\) และส่งต่อไปยังอินพุตธุรกรรม กระบวนการตรวจสอบ เพียงประเมิน Φ ด้วย xi = 1 เพื่อตรวจสอบลายเซ็นที่ถูกต้องสำหรับคีย์สาธารณะ Pi และ xi = 0 ผู้ตรวจสอบยอมรับการพิสูจน์ iffΦ > 0 แม้จะเรียบง่าย แต่วิธีนี้ก็ครอบคลุมทุกกรณีที่เป็นไปได้: • ลายเซ็นหลาย/เกณฑ์ สำหรับลายเซ็นหลายลายเซ็นแบบ Bitcoin สไตล์ “M-out-of-N” (เช่น ผู้รับควรจัดเตรียมลายเซ็นที่ถูกต้องอย่างน้อย \(0 \leq M \leq N\)) Φ = x1+x2+ . .+xN \(\geq M\) (เพื่อความชัดเจน เราใช้สัญลักษณ์พีชคณิตทั่วไป) ลายเซ็นขีดจำกัดแบบถ่วงน้ำหนัก (บางคีย์อาจมีความสำคัญมากกว่าคีย์อื่น) สามารถแสดงเป็น Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\) และสถานการณ์ที่มาสเตอร์คีย์สอดคล้องกับ Φ = สูงสุด(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\) มันง่ายที่จะแสดงให้เห็นว่าเคสที่ซับซ้อนใดๆ ก็สามารถเป็นได้ แสดงกับตัวดำเนินการเหล่านี้ เช่น พวกเขาสร้างพื้นฐาน • การป้องกันด้วยรหัสผ่าน การครอบครองรหัสผ่านลับนั้นเทียบเท่ากับความรู้ของ คีย์ส่วนตัว ซึ่งกำหนดมาจากรหัสผ่าน: k = KDF(s) จึงเป็นผู้รับ สามารถพิสูจน์ได้ว่าเขารู้รหัสผ่านโดยการให้ลายเซ็นอื่นใต้คีย์ k ผู้ส่งเพียงแค่เพิ่มกุญแจสาธารณะที่เกี่ยวข้องให้กับเอาท์พุทของเขาเอง โปรดทราบว่าสิ่งนี้ วิธีการมีความปลอดภัยมากกว่า "ปริศนาธุรกรรม" ที่ใช้ใน Bitcoin [13] โดยที่ รหัสผ่านถูกส่งอย่างชัดเจนในอินพุต • กรณีเสื่อมโทรม Φ = 1 หมายความว่าใครๆ ก็สามารถใช้จ่ายเงินได้ Φ = 0 ทำเครื่องหมาย ผลผลิตออกมาใช้ไม่ได้ตลอดไป ในกรณีที่สคริปต์เอาต์พุตรวมกับกุญแจสาธารณะมีขนาดใหญ่เกินไปสำหรับผู้ส่ง สามารถใช้ประเภทเอาต์พุตพิเศษซึ่งระบุว่าผู้รับจะใส่ข้อมูลนี้ลงในอินพุตของเขา ในขณะที่ผู้ส่งให้ข้อมูลเพียง hash เท่านั้น วิธีการนี้คล้ายกับ “จ่ายเพื่อ-hash” ของ Bitcoin คุณลักษณะ แต่แทนที่จะเพิ่มคำสั่งสคริปต์ใหม่ เราจะจัดการกรณีนี้ที่โครงสร้างข้อมูล ระดับ 7 บทสรุป เราได้ตรวจสอบข้อบกพร่องที่สำคัญใน Bitcoin และเสนอแนวทางแก้ไขที่เป็นไปได้ คุณสมบัติที่เป็นประโยชน์เหล่านี้และการพัฒนาอย่างต่อเนื่องของเราทำให้เกิดระบบเงินสดอิเล็กทรอนิกส์ใหม่ CryptoNote เป็นคู่แข่งสำคัญของ Bitcoin ซึ่งเหนือกว่าทางแยกทั้งหมด 14 ความเป็นไปได้ที่จะขยาย blockchain และสร้างภาระเพิ่มเติมบนโหนด ที่จะท้อแท้ ผู้เข้าร่วมที่ประสงค์ร้ายจากการสร้างบล็อกขนาดใหญ่เราแนะนำฟังก์ชันการลงโทษ: รางวัลใหม่ = รางวัลฐาน \(\cdot\) BlkSize มน −1 2 กฎนี้ใช้เฉพาะเมื่อ BlkSize มากกว่าขนาดบล็อกอิสระขั้นต่ำที่ควรจะเป็น ใกล้เคียงกับค่าสูงสุด (10kb, \(M_N \cdot 110\%\)) คนงานเหมืองได้รับอนุญาตให้สร้างบล็อกที่มี "ขนาดปกติ" และแม้แต่เท่าๆ กัน เกินด้วยผลกำไรเมื่อค่าธรรมเนียมโดยรวมเกินกว่าค่าปรับ แต่ค่าธรรมเนียมไม่น่าจะเติบโต ไม่เหมือนค่าปรับกำลังสองจึงจะมีความสมดุล 6.3 สคริปต์ธุรกรรม CryptoNote มีระบบย่อยการเขียนสคริปต์ที่เรียบง่ายมาก ผู้ส่งระบุนิพจน์ Φ = f (x1, x2, . . . , xn) โดยที่ n คือจำนวนคีย์สาธารณะปลายทาง {Pi}n ผม=1. ไบนารีห้าเท่านั้น รองรับตัวดำเนินการ: ต่ำสุด สูงสุด ผลรวม mul และ cmp เมื่อผู้รับชำระเงินนี้แล้ว เขาสร้างลายเซ็น \(0 \leq k \leq n\) และส่งต่อไปยังอินพุตธุรกรรม กระบวนการตรวจสอบ เพียงประเมิน Φ ด้วย xi = 1 เพื่อตรวจสอบลายเซ็นที่ถูกต้องสำหรับคีย์สาธารณะ Pi และ xi = 0 ผู้ตรวจสอบยอมรับการพิสูจน์ iffΦ > 0 แม้จะเรียบง่าย แต่วิธีนี้ก็ครอบคลุมทุกกรณีที่เป็นไปได้: • ลายเซ็นหลาย/เกณฑ์ สำหรับลายเซ็นหลายลายเซ็นแบบ Bitcoin สไตล์ “M-out-of-N” (เช่น ผู้รับควรจัดเตรียมลายเซ็นที่ถูกต้องอย่างน้อย \(0 \leq M \leq N\)) Φ = x1+x2+ . .+xN \(\geq M\) (เพื่อความชัดเจน เราใช้สัญลักษณ์พีชคณิตทั่วไป) ลายเซ็นขีดจำกัดแบบถ่วงน้ำหนัก (บางคีย์อาจมีความสำคัญมากกว่าคีย์อื่น) สามารถแสดงเป็น Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\) และฉากio โดยที่มาสเตอร์คีย์สอดคล้องกับ Φ = สูงสุด(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\) มันง่ายที่จะแสดงให้เห็นว่าเคสที่ซับซ้อนใดๆ ก็สามารถเป็นได้ แสดงกับตัวดำเนินการเหล่านี้ เช่น พวกเขาสร้างพื้นฐาน • การป้องกันด้วยรหัสผ่าน การครอบครองรหัสผ่านลับนั้นเทียบเท่ากับความรู้ของ คีย์ส่วนตัว ซึ่งกำหนดมาจากรหัสผ่าน: k = KDF(s) จึงเป็นผู้รับ สามารถพิสูจน์ได้ว่าเขารู้รหัสผ่านโดยการให้ลายเซ็นอื่นใต้คีย์ k ผู้ส่งเพียงแค่เพิ่มกุญแจสาธารณะที่เกี่ยวข้องให้กับเอาท์พุทของเขาเอง โปรดทราบว่าสิ่งนี้ วิธีการนี้มีความปลอดภัยมากกว่า "ปริศนาธุรกรรม" ที่ใช้ใน Bitcoin [13] โดยที่ รหัสผ่านถูกส่งอย่างชัดเจนในอินพุต • กรณีเสื่อมโทรม Φ = 1 หมายความว่าใครๆ ก็สามารถใช้จ่ายเงินได้ Φ = 0 ทำเครื่องหมาย ผลผลิตออกมาใช้ไม่ได้ตลอดไป ในกรณีที่สคริปต์เอาต์พุตรวมกับกุญแจสาธารณะมีขนาดใหญ่เกินไปสำหรับผู้ส่ง สามารถใช้ประเภทเอาต์พุตพิเศษซึ่งระบุว่าผู้รับจะใส่ข้อมูลนี้ลงในอินพุตของเขา ในขณะที่ผู้ส่งให้ข้อมูลเพียง hash เท่านั้น วิธีการนี้คล้ายกับ “จ่ายเพื่อ-hash” ของ Bitcoin คุณลักษณะ แต่แทนที่จะเพิ่มคำสั่งสคริปต์ใหม่ เราจะจัดการกรณีนี้ที่โครงสร้างข้อมูล ระดับ 7 บทสรุป เราได้ตรวจสอบข้อบกพร่องที่สำคัญใน Bitcoin และเสนอแนวทางแก้ไขที่เป็นไปได้ คุณสมบัติที่เป็นประโยชน์เหล่านี้และการพัฒนาอย่างต่อเนื่องของเราทำให้เกิดระบบเงินสดอิเล็กทรอนิกส์ใหม่ CryptoNote เป็นคู่แข่งสำคัญของ Bitcoin ซึ่งเหนือกว่าทางแยกทั้งหมด 14 26 สิ่งนี้อาจไม่จำเป็นหากเราสามารถหาวิธีผูกขนาดบล็อกเมื่อเวลาผ่านไปได้... สิ่งนี้ก็ไม่ถูกต้องเช่นกัน พวกเขาเพิ่งตั้งค่า "NewReward" ให้เป็นพาราโบลาที่หันขึ้นด้านบน ขนาดบล็อกเป็นตัวแปรอิสระ รางวัลใหม่จึงระเบิดขึ้นจนไม่มีที่สิ้นสุด ถ้าในทางกลับกัน มือ รางวัลใหม่คือสูงสุด(0,รางวัลฐาน(1-(BlkSize/Mn - 1)ˆ2)) จากนั้นรางวัลใหม่ จะเป็นพาราโบลาหันหน้าลงโดยมีจุดสูงสุดที่ขนาดบล็อก = Mn และมีจุดตัดที่ ขนาดบล็อก = 0 และขนาดบล็อก = 2Mn และนั่นดูเหมือนจะเป็นสิ่งที่พวกเขาพยายามจะอธิบาย อย่างไรก็ตามสิ่งนี้ไม่ได้
Анализ
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 выглядит так:

การวิเคราะห์

5
ไม่ใช่ว่ามันจะสำคัญมากเกินไปเมื่อผู้คนนับพันล้านคนในโลกนี้ใช้ชีวิตด้วยเงินน้อยกว่าหนึ่งดอลลาร์ต่อหนึ่งดอลลาร์
และไม่มีความหวังที่จะเข้าร่วมในเครือข่ายการขุดใดๆ... แต่เป็นเศรษฐกิจ
โลกที่ขับเคลื่อนด้วยระบบสกุลเงิน p2p ที่มีหนึ่ง cpu หนึ่งโหวตน่าจะมากกว่านั้น
ยุติธรรมกว่าระบบที่ขับเคลื่อนโดยธนาคารสำรองแบบเศษส่วน
แต่โปรโตคอลของ Cryptonote ยังคงต้องการผู้ใช้ที่ซื่อสัตย์ 51%... ดูตัวอย่าง Cryptonote
ฟอรัมที่ Pliskov หนึ่งในนักพัฒนากล่าวว่าการโจมตีแบบแทนที่ข้อมูลบน theblockchain 51% ยังคงสามารถทำงานได้ https://forum.cryptonote.org/viewtopic.php?f=2&t=198
โปรดทราบว่าคุณไม่จำเป็นต้องมีผู้ใช้ที่ซื่อสัตย์ถึง 51% คุณแค่ต้องการ "ไม่มีความทุจริตแม้แต่คนเดียว"
ฝ่ายที่มีอำนาจมากกว่า 51% ของ hashing ของเครือข่าย"
ลองเรียกสิ่งนี้ว่าปัญหาของ bitcoin ว่า "ความแข็งแกร่งในการปรับตัว" โซลูชันของ Cryptonote เพื่อการปรับตัว
ความแข็งแกร่งคือความยืดหยุ่นในการปรับตัวในค่าพารามิเตอร์โปรโตคอล หากคุณต้องการขนาดบล็อกที่ใหญ่ขึ้น
ไม่มีปัญหา เครือข่ายจะมีการปรับเบาๆ ตลอดเวลา
กล่าวคือ
วิธีที่ Bitcoin ปรับความยากเมื่อเวลาผ่านไปสามารถทำซ้ำได้ทั่วทั้งโปรโตคอลของเรา
พารามิเตอร์เพื่อให้ไม่จำเป็นต้องได้รับฉันทามติของเครือข่ายในการอัพเดตโปรโตคอล
ดูเผินๆ ดูเหมือนเป็นความคิดที่ดี แต่หากปราศจากการไตร่ตรองอย่างรอบคอบ จะเป็นการปรับตัวเอง
ระบบอาจคาดเดาไม่ได้และวุ่นวายเลยทีเดียว เราจะพิจารณาเรื่องนี้เพิ่มเติมในภายหลังในฐานะ
โอกาสเกิดขึ้น ระบบ "ดี" อยู่ระหว่างการปรับตัวที่เข้มงวดกับการปรับตัว
ยืดหยุ่นได้ และบางทีแม้แต่ความแข็งแกร่งเองก็สามารถปรับเปลี่ยนได้
หากเรามี "หนึ่ง CPU-หนึ่ง-โหวต" อย่างแท้จริง ให้ร่วมมือกันและพัฒนากลุ่มเพื่อให้ได้คะแนนถึง 51%
คงจะลำบากกว่า.. เราคาดหวังว่า CPU ทุกตัวในโลกจะถูกขุดจากโทรศัพท์
ไปยัง CPU ออนบอร์ดใน Tesla ของคุณในขณะที่กำลังชาร์จ
http://en.wikipedia.org/wiki/Pareto_principle
ฉันอ้างว่าสมดุลของพาเรโตค่อนข้างหลีกเลี่ยงไม่ได้ 20% ของระบบจะเป็นเช่นนั้น
เป็นเจ้าของ CPU 80% หรือ 20% ของระบบจะเป็นเจ้าของ ASIC 80% ฉันตั้งสมมติฐานนี้เพราะว่าการกระจายความมั่งคั่งในสังคมนั้นได้แสดงให้เห็นการกระจายของพาเรโตแล้ว
และเมื่อมีผู้ขุดรายใหม่เข้าร่วม พวกเขาจะถูกดึงมาจากการกระจายพื้นฐานนั้น
อย่างไรก็ตาม ฉันยืนยันว่าโปรโตคอลที่มีหนึ่ง cpu-หนึ่งโหวตจะเห็น ROI บนฮาร์ดแวร์
บล็อก
รางวัลต่อโหนดจะแปรผันตามจำนวนโหนดในเครือข่ายอย่างใกล้ชิดมากขึ้นเพราะว่า
การกระจายประสิทธิภาพข้ามโหนดจะแน่นแฟ้นยิ่งขึ้น Bitcoin อีกด้านหนึ่ง
hand เห็นรางวัลบล็อก (ต่อโหนด) เป็นสัดส่วนมากกว่าความสามารถในการคำนวณของสิ่งนั้น
โหนด กล่าวคือ มีเพียง "หนุ่มใหญ่" เท่านั้นที่ยังคงอยู่ในเกมการขุด ในทางกลับกัน
แม้ว่าหลักการ Pareto จะยังคงมีบทบาทอยู่ แต่ในโลกที่มีหนึ่ง CPU หนึ่งเสียง ทุกคน
มีส่วนร่วมในการรักษาความปลอดภัยเครือข่ายและได้รับรายได้จากการขุดเล็กน้อย
ในโลกของ ASIC มันไม่สมเหตุสมผลเลยที่จะขุด XBox และโทรศัพท์มือถือทุกเครื่องมาทำเหมือง
ในโลกแบบ onecpu-one-vote มันสมเหตุสมผลมากในแง่ของรางวัลการขุด ผลอันน่ายินดีก็คือ
การได้คะแนนเสียงถึง 51% จะยิ่งยากขึ้นไปอีกเมื่อมีคะแนนโหวตเพิ่มมากขึ้นเรื่อยๆ ทำให้ได้คะแนนน่ารัก
ประโยชน์ต่อความปลอดภัยของเครือข่าย..ฮาร์ดแวร์ที่อธิบายไว้ก่อนหน้านี้ สมมติว่าอัตรา hash ทั่วโลกลดลงอย่างมีนัยสำคัญ แม้กระทั่งสำหรับ
ขณะนี้เขาสามารถใช้พลังการขุดเพื่อแยกโซ่และใช้จ่ายสองเท่า ดังที่เราจะได้เห็น
ภายหลังในบทความนี้ ไม่น่าเป็นไปได้ที่เหตุการณ์ที่อธิบายไว้ก่อนหน้านี้จะเกิดขึ้น
2.3
การปล่อยก๊าซเรือนกระจกไม่สม่ำเสมอ
Bitcoin มีอัตราการปล่อยก๊าซที่กำหนดไว้ล่วงหน้า: แต่ละบล็อกที่แก้ไขได้จะผลิตเหรียญจำนวนคงที่
ประมาณทุกๆ สี่ปี รางวัลนี้จะลดลงครึ่งหนึ่ง ความตั้งใจเดิมคือการสร้าง
การแผ่รังสีที่ราบรื่นจำกัดโดยมีการสลายตัวแบบเอ็กซ์โปเนนเชียล แต่จริงๆ แล้ว เรามีการแผ่รังสีเชิงเส้นแบบชิ้นๆ
ฟังก์ชั่นที่มีจุดพักอาจทำให้เกิดปัญหากับโครงสร้างพื้นฐาน Bitcoin
เมื่อจุดพักเกิดขึ้น นักขุดจะเริ่มได้รับเพียงครึ่งหนึ่งของมูลค่าก่อนหน้า
รางวัล ความแตกต่างสัมบูรณ์ระหว่าง 12.5 และ 6.25 BTC (คาดการณ์สำหรับปี 2020) อาจ
ดูเหมือนจะทนได้ อย่างไรก็ตาม เมื่อตรวจสอบการลดลง 50 ถึง 25 BTC ที่เกิดขึ้นในเดือนพฤศจิกายน
เมื่อวันที่ 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) อาจ
ดูเหมือนจะทนได้ อย่างไรก็ตาม เมื่อตรวจสอบการลดลง 50 ถึง 25 BTC ที่เกิดขึ้นในเดือนพฤศจิกายน
เมื่อวันที่ 28 กันยายน 2012 รู้สึกว่าไม่เหมาะสมสำหรับสมาชิกของชุมชนเหมืองแร่จำนวนที่มีนัยสำคัญ รูปที่
1 แสดงการลดลงอย่างมากในอัตรา hash ของเครือข่ายในช่วงปลายเดือนพฤศจิกายน ซึ่งตรงกับเวลาที่
การลดจำนวนลงครึ่งหนึ่งเกิดขึ้น เหตุการณ์นี้อาจเป็นช่วงเวลาที่สมบูรณ์แบบสำหรับบุคคลที่มุ่งร้าย
อธิบายไว้ในส่วนฟังก์ชัน proof-of-work เพื่อดำเนินการโจมตีการใช้จ่ายสองเท่า [36]
รูปที่ 1. Bitcoin hashกราฟอัตรา
(ที่มา: http://bitcoin.sipa.be)
2.4
ค่าคงที่แบบฮาร์ดโค้ด
Bitcoin มีข้อจำกัดแบบฮาร์ดโค้ดมากมาย โดยที่บางส่วนเป็นองค์ประกอบตามธรรมชาติของการออกแบบดั้งเดิม (เช่น
ความถี่บล็อก ปริมาณเงินสูงสุด จำนวนการยืนยัน) ในขณะที่อื่นๆ
ดูเหมือนจะเป็นข้อจำกัดเทียม ไม่ได้มีข้อจำกัดมากนัก เนื่องจากไม่สามารถเปลี่ยนแปลงได้อย่างรวดเร็ว
3
6
เรียกสิ่งนี้ว่ามันคือการโจมตีของซอมบี้
เรามาหารือกันว่าการปล่อยก๊าซเรือนกระจกอย่างต่อเนื่องจะเป็นอย่างไร
เกี่ยวข้องกับ one-cpu-one-vote ในสถานการณ์การโจมตีด้วยซอมบี้
ในโลกที่มีหนึ่ง CPU หนึ่งโหวต โทรศัพท์มือถือและรถยนต์ทุกเครื่อง เมื่อใดก็ตามที่ไม่ได้ใช้งาน จะถูกขุดเหมือง การรวบรวมฮาร์ดแวร์ราคาถูกจำนวนมากเพื่อสร้างฟาร์มขุดจะง่ายมากเพราะเพียง
เกี่ยวกับทุกสิ่งที่มี CPU อยู่ในนั้น ในทางกลับกัน ณ จุดนั้นคือจำนวน CPU
ฉันคิดว่าจำเป็นต้องทำการโจมตี 51% ค่อนข้างน่าประหลาดใจ
นอกจากนี้
แม่นยำ เพราะ ง่ายต่อการรวบรวมฮาร์ดแวร์ราคาถูก เราจึงสามารถคาดหวังได้อย่างสมเหตุสมผล
หลายๆ คนเริ่มสะสมอะไรก็ตามด้วย CPU การแข่งขันทางอาวุธในโลกที่มีหนึ่งซีพียูหนึ่งโหวต
จำเป็นต้องมีความเสมอภาคมากกว่าในโลก ASIC
จึงมีความไม่ต่อเนื่องในเครือข่าย
ความปลอดภัยเนื่องจากอัตราการปล่อยมลพิษควรจะเป็นปัญหาน้อยกว่าในโลกที่มีหนึ่งซีพียูหนึ่งเสียง
อย่างไรก็ตาม ยังมีข้อเท็จจริงสองประการ: 1) อัตราการปล่อยก๊าซที่ไม่ต่อเนื่องอาจทำให้เกิดอาการติดอ่างใน
ทั้งด้านเศรษฐกิจและความปลอดภัยเครือข่าย ซึ่งแย่ และ 2) แม้ว่าจะมีการโจมตีถึง 51% ก็ตาม
ดำเนินการโดยคนที่รวบรวมฮาร์ดแวร์ราคาถูกยังสามารถเกิดขึ้นในซีพียูตัวเดียวได้-โหวตโลก
ดูเหมือนว่ามันควรจะยากกว่านี้
สมมุติว่าการป้องกันสิ่งนี้ก็คือ นักแสดงที่ไม่ซื่อสัตย์ทั้งหมด จะลองทำสิ่งนี้
พร้อมกัน และเราถอยกลับไปใช้แนวคิดด้านความปลอดภัยก่อนหน้าของ Bitcoin: "เราไม่ต้องการการทุจริต
ฝ่ายที่จะควบคุมมากกว่า 51% ของเครือข่าย”
ผู้เขียนอ้างที่นี่ว่าปัญหาหนึ่งของ bitcoin ก็คือความไม่ต่อเนื่องในการปล่อยเหรียญ
อัตรานี้อาจส่งผลให้การมีส่วนร่วมของเครือข่ายลดลงอย่างกะทันหัน และด้วยเหตุนี้ความปลอดภัยของเครือข่าย ดังนั้น
อัตราการปล่อยเหรียญที่ต่อเนื่อง เปลี่ยนแปลงได้ และราบรื่นจะดีกว่า
ผู้เขียนไม่ผิดแน่นอน การมีส่วนร่วมของเครือข่ายที่ลดลงอย่างกะทันหันสามารถทำได้
นำไปสู่ปัญหาดังกล่าว และถ้าเราสามารถลบแหล่งที่มาของมันได้ เราก็ควรทำ พูดแล้วก็เป็นอย่างนั้น
เป็นไปได้ว่าการปล่อยเหรียญ "ค่อนข้างคงที่" เป็นระยะเวลานานจะถูกคั่นด้วยการเปลี่ยนแปลงอย่างกะทันหัน
เป็นวิธีที่เหมาะที่จะไปจากมุมมองทางเศรษฐศาสตร์ ฉันไม่ใช่นักเศรษฐศาสตร์ ดังนั้นบางทีเรา
ต้องตัดสินใจว่าเราจะแลกความปลอดภัยเครือข่ายเพื่ออะไรบางอย่างทางเศรษฐกิจหรือไม่?
http://arxiv.org/abs/1402.2009หากจำเป็นซึ่งทำให้เกิดข้อเสียเปรียบหลัก น่าเสียดายที่เป็นการยากที่จะคาดเดาได้ว่าเมื่อใด
ค่าคงที่อาจจำเป็นต้องเปลี่ยนและการแทนที่อาจนำไปสู่ผลลัพธ์ที่เลวร้าย
ตัวอย่างที่ดีของการเปลี่ยนแปลงขีดจำกัดแบบฮาร์ดโค้ดที่นำไปสู่ผลที่ตามมาที่ร้ายแรงคือการบล็อก
จำกัดขนาดไว้ที่ 250kb1 ขีดจำกัดนี้เพียงพอที่จะรองรับธุรกรรมมาตรฐานได้ประมาณ 10,000 รายการ ใน
ต้นปี 2013 เกือบจะถึงขีดจำกัดนี้แล้ว และได้บรรลุข้อตกลงเพื่อเพิ่ม
ขีด จำกัด การเปลี่ยนแปลงถูกนำไปใช้ในกระเป๋าเงินเวอร์ชัน 0.8 และจบลงด้วยการแยกลูกโซ่ 24 บล็อก
และการโจมตีแบบใช้จ่ายสองครั้งที่ประสบความสำเร็จ [9] ในขณะที่จุดบกพร่องไม่ได้อยู่ในโปรโตคอล Bitcoin แต่
แต่ในกลไกฐานข้อมูลนั้นสามารถตรวจจับได้ง่ายโดยการทดสอบความเครียดแบบง่าย ๆ หากมี
ไม่มีการจำกัดขนาดบล็อกที่แนะนำโดยไม่ได้ตั้งใจ
ค่าคงที่ยังทำหน้าที่เป็นรูปแบบหนึ่งของจุดรวมศูนย์
แม้ว่าลักษณะแบบ peer-to-peer ของ
Bitcoin โหนดส่วนใหญ่ใช้ไคลเอนต์อ้างอิงอย่างเป็นทางการ [10] พัฒนาโดย
คนกลุ่มเล็กๆ กลุ่มนี้ตัดสินใจดำเนินการเปลี่ยนแปลงโปรโตคอล
และคนส่วนใหญ่ยอมรับการเปลี่ยนแปลงเหล่านี้โดยไม่คำนึงถึง "ความถูกต้อง" ของพวกเขา การตัดสินใจบางอย่างเกิดขึ้น
การอภิปรายอย่างเผ็ดร้อนและแม้กระทั่งเรียกร้องให้คว่ำบาตร [11] ซึ่งบ่งชี้ว่าชุมชนและ
นักพัฒนาซอฟต์แวร์อาจไม่เห็นด้วยกับประเด็นสำคัญบางประการ ดังนั้นจึงดูเหมือนสมเหตุสมผลที่จะมีโปรโตคอล
ด้วยตัวแปรที่ผู้ใช้สามารถกำหนดค่าได้และปรับได้เองซึ่งเป็นวิธีที่เป็นไปได้ในการหลีกเลี่ยงปัญหาเหล่านี้
2.5
สคริปต์ขนาดใหญ่
ระบบการเขียนสคริปต์ใน Bitcoin เป็นคุณลักษณะที่หนักและซับซ้อน มันอาจทำให้ใครคนหนึ่งสามารถสร้างได้
ธุรกรรมที่ซับซ้อน [12] แต่คุณลักษณะบางอย่างถูกปิดใช้งานเนื่องจากข้อกังวลด้านความปลอดภัยและ
บางตัวไม่เคยใช้ด้วยซ้ำ [13] สคริปต์ (รวมทั้งส่วนของผู้ส่งและผู้รับ)
สำหรับธุรกรรมยอดนิยมใน Bitcoin มีลักษณะดังนี้: