Перевод Подкаст «Monero Monitor». Эпизод 014

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 3 ноя 2017.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    288
    Симпатии:
    99
    Эпизод 014: Джон Тромп о Cuckoo Cycle и Джон Макафи о Monero.

    На этой неделе выпуск будет состоять из двух частей. В первой части я поговорю с Джоном Тромпом, изобретателем Cuckoo Cycle Proof алгоритма Work. Мы обсудим, что такое эгалитарное доказательство и почему Cuckoo Cycle больше ориентирован на пользовательское аппаратное обеспечение, а не на ASICs. Также мы поговорим о задаче, которую решает сам алгоритм, и о том, какие показатели нам ожидать при использовании оптимизированного под майнинг программного обеспечения для CPU и GPU. После этого я буду рад поделиться с вами той недолгой беседой о Monero, которая состоялась у меня с Джоном Макафи. Не так давно он упомянул Monero в нескольких телешоу, и мы поговорим именно о том, чем ему нравится этот проект.

    Адрес блога Джона Тромпа: tromp.github.io. С проектом Cuckoo Cycle можно ознакомиться, посетив github.com/tromp/cuckoo. Интересная статья по Cuckoo Cycle размещена на ресурсе cryptorials.io.

    ~{Вступительный клип и музыкальная заставка}~

    Майк: Привет всем! Это Майк и вы слушаете Monero Monitor. Я рад поделиться с вами тем, что сегодняшний выпуск впервые будет состоять из двух частей, и в каждой части мы поговорим с разными, но в равной степени интересными людьми. Сперва я собираюсь побеседовать с Джоном Тромпом, изобретателем альтернативного алгоритма «доказательства работы» Cuckoo Cycle. После этого я буду более чем рад поделиться с вами своим недолгим разговором, который у меня состоялся несколько дней назад с легендой в мире антивирусов, либертарианцем Джоном Макафи. Я надеюсь, вам понравится наше шоу, и спасибо, что остаетесь с нами.

    Интервью с Джоном Тромпом.

    Майк: Спасибо, что согласились принять участие в нашем шоу, Джон.

    Джон: Не за что. Я рад быть здесь.

    Майк: Oк, итак, Джон. Перед тем как мы перейдем к интервью, я думаю, для начала важно будет быстро объяснить нашим слушателям, почему я пригласил вас на наше шоу. Ничего, если я потрачу минутку и скажу пару вводных слов без вас?

    Джон: Да, конечно, давайте.

    Майк: Oк. Итак, Джон является изобретателем, я надеюсь, что в данном случае это правильное определение, алгоритма «доказательства работы» Cuckoo Cycle. И, что само по себе важно, может, и безотносительно Monero, примерно около полутора месяцев назад пользователь shaolinfry поднял на репозитории Monero Research Labs GitHub тему, которую сформулировал так: «Пришло время серьезно задуматься над проблемой изменения алгоритма доказательства работы». И, несмотря на то, что вклад shaolinfry в развитие Monero, по крайней мере, до последнего времени, не был регулярным, он все-таки был одним из разработчиков, работавших над Litecoin. Но, вероятно, он больше известен как «мозг», парень, который протолкнул идею UASF софт-форком Bitcoin, появившимся чуть раньше в этом году.

    В связи с этим, как мне кажется, у некоторых членов сообщества может появиться некоторое недоверие в отношении тех, кто стоял по обе стороны движения UASF, тех, кто присоединился к той или иной стороне, поляризовав и раздув дебаты вокруг Bitcoin, а затем, вероятно, частично и вокруг изменения «доказательства работы» Monero. Это серьезный вопрос. В любом случае, вокруг этой проблемы было много разговоров, появились десятки и десятки откликов, и тема циркулировала среди различных исследователей Monero, включая меня.

    А потом, буквально в течение последних двух недель, обсуждение проблемы немного поутихло, но, я думаю, была затронута гораздо более серьезная проблема, которая лично мне кажется действительно насущной. Она касается того, что Monero опирается на нечто, называемое CryptoNight, алгоритм доказательства работы, который был унаследован нами за неимением лучшего, когда мы отпочковывались от Bitcoin. Он тщательно анализировался, были некоторые люди, включая тех, кто работает в Monero Research Lab, которые исследовали его, но, возможно, этот технический анализ не был идеальным. Помимо этого, недостатком алгоритма является низкая скорость верификации, и, несмотря на то, что этот алгоритм доказал свою жизнеспособность в качестве эгалитарного средства доказательства работы (в основном означает, что CPU и GPU могут использоваться для майнинга Monero), теоретически, если будут разработаны ASIC, вероятно, они не получат радикальных преимуществ с точки зрения производительности.

    Но, несмотря на то, что этот алгоритм доказал свою надежность, не факт, что мы на 100% сможем доверять ему и в дальнейшем. Таким образом, мы переходим к множеству различных предложений, одним из которых является альтернативный алгоритм доказательства работы Cuckoo Cycle, о котором сегодня и пойдет речь. И тут хотелось бы прояснить, что сегодняшнее мое интервью не означает, что мы определенно должны перейти к его использованию. Я беру это интервью не потому, что подтверждаю правильность всего, что делает Джон, но я думаю, что он проделал хорошую работу, и было бы интересно прояснить некоторые факты и заполнить пробелы в понимании того, что такое Cuckoo Cycle. В том числе и мои собственные.

    QS 04:25

    Майк: Итак, концепция сегодняшнего выпуска обрисована. Но перед тем как мы перейдем к ней, Джон, я всегда считал, что сначала интересно получше узнать гостя, тем более что ты, возможно, не так известен в сообществе Monero. Ты не мог бы немного рассказать нам о себе?

    Джон: Конечно. Я — голландский исследователь в области компьютерной техники. Своими исследованиями я занимался в Амстердамском университете, и в последние годы я занимаюсь теорией Морзе. Темой моей диссертации были алгоритмы и их сложность. Работа не касалась чего-то конкретного. Скорее она охватывала множество тем, которые я свел воедино. Итак, я занимался исследованиями в области распределенной обработки данных, вычислительной биологии, а темой, которая мне нравилась особо, была алгоритмическая теория информации, которая касается пределов сжатия, насколько кратко вы способны описать вещи. И я также обожаю всякие пазлы и игры и поэтому пытаюсь включить их в свои исследования.

    Майк: Да, я заметил это. Я заметил, что ты большой поклонник игры Го. Не мог бы ты немного рассказать об этом?

    Джон: Разумеется. Я любил играть в шахматы, но, когда мне было, по-моему, 24, я узнал про игру Го. Кто-то из Центра математики и компьютерной техники, где я защищал свою диссертацию, был сильным голландским игроком, и мы играли на малой доске 9×9 за ленчем. Это было просто, потому что вы легко можете закончить игру за полтора часа или даже несколько игр…

    Ну вот мне и полюбилась эта игра — за предельную простоту правил в сочетании с глубиной стратегии, которая вытекает из этих правил. Помимо этого, игра очень хорошо сочетается с математическим подходом, поскольку вы можете напрямую перевести концепции Го в простые математические формулы. И она также тесно связана с теорией (??? 06:43). Поэтому мне также захотелось насколько это возможно рационализировать правила Го, и я немного поработал над наиболее точной формулировкой правил Го. Ну об этом вы также можете прочитать на моей веб-странице.

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

    Майк: Да, это реально круто. У меня у самого есть некоторое образование, и то, что ты смог объединить ваши увлечения и интересы с глубокими исследованиями, — реально круто.

    Джон: Да. Я счастлив, что так все получилось.

    QS 08:05

    Майк: А что такого в Го заставило тебя оторваться от шахмат, и почему ты возвращаешься к этой задаче? Это недостаточность проделанной исследовательской работы или что-то еще?

    Джон: Да просто то, что я стал первым, кто всерьез захотел вычислить эти свойства Го. А еще мне очень понравился программистский аспект всего этого, написание программного обеспечения, которое позволило провести вычисления, у меня были различные сотрудники, работавшие над проблемой. Был парень в CWI, Михал Кокки из Чехословакии, и он помог мне улучшить некоторые вещи: когда мне не хватало памяти для вычислений, он показал мне, как закодировать жесткий диск. Это стало довольно интересным способом применения того, что Google называет парадигмой MapReduce, когда вы продолжаете обработку большого объема данных, ряда элементов и трансформируете каждый элемент в пакет новых элементов, а потом вы некоторым образом комбинируете эти элементы.

    Таким образом, это оказалось довольно интересным способом применения концепции. И это также связано с другим моим исследованием, с формулировкой правил Го. Это помогло мне усилить аргументацию, почему эти правила улучшают уже существующие, и что математические формулировки делают их гораздо понятней. В Го существует известное правило, которое позволяет избежать «бесконечности» игры. Базовое правило «ко», я не очень преуспел в этом, но есть суперправило «ко», которое не позволяет вам повторять прошлые ходы, и есть некоторые его варианты. И математическая теория ясно показывает, как различные аспекты суперправила «ко» делают условия лучше или хуже. Таким образом, это также помогло мне частично оправдать наличие правила «ко».

    QS 10:18

    Майк: Очень круто. Oк, получается, что всю свою жизнь ты посвятил математике и компьютерной науке. Я начинаю догадываться, как случилось так, что ты столкнулся с Bitcoin. А как долго ты состоял в сообществе Bitcoin?

    Джон: Я уже об этом не так хорошо помню. Я возвращаюсь к своим первым постам на форуме BitcoinTalk и вижу, как согласился на предложение Даниэля Ларимера, который внедрял алгоритм доказательства работы Momentum, который лег в основу Cuckoo Cycle. Изначально я задумывался над улучшением этой идеи. В случае с Momentum ты просто пытаешься получить доказательство работы, соответствующее базовому парадоксу дней рождения, найти две вещи, два входа, которые имеют те же выходы под хеш-функцией.

    Майк: Да. Напомни мне, парадокс дней рождения состоит в следующем: несмотря на крайне малую вероятность совпадения дня рождения у двух человек, если людей будет достаточное количество, то вероятность нахождения тех двоих, у кого будет один и тот же день рождения, возрастет. Правильно?

    Джон: Точно. Поэтому, чтобы гарантировать, что по крайней мере у двух человек в группе день рождения совпадет, людей в группе должно быть больше, чем количество возможных дней рождения, то есть вам понадобится 367 человек. Но в случае с произвольно отобранной группой из 23 человек вероятность того, что найдется пара человек с одинаковым днем рождения, составляет уже более 50%.

    Майк: Да. Я помню, как мы говорили об этом, когда я учился в средней школе. По моему, это был учитель алгебры, он рассказывал нам об этом и пытался научить нас, ну я не знаю, чему-то, связанному с вероятностью, и тогда у нас в классе был 31 человек плюс он - всего 32 человека.

    Джон: Да, самое то, чтобы проверить.

    Майк: Он и проверил эту проблему с каждым. Мы проходили по комнате, а он говорил что-то вроде: «Не совпадает, не совпадает». В конце концов из 32 человек ни у кого не оказался день рождения в один и тот же день, и он просто не знал, что делать. За 40 лет его преподавательской деятельности такого еще никогда не было.

    Джон: Да, но как я и сказал, несовпадения лучше совпадений. Нет никакой гарантии того, что случится несовпадение. Даже когда у вас группа состоит из 50 человек, то вероятность вырастает еще значительней, более чем до 90%.

    QS 12:35

    Майк: Да. Ну и давай чуть больше поговорим о Cuckoo Cycle. Какова была твоя мотивация, когда ты решил заняться разработкой совершенно нового алгоритма доказательства работы? Тебе показалось это чем-то перспективным, и поэтому ты решил, что это может в итоге принести определенную выгоду, или тобой двигало нечто большее?

    Джон: К сожалению, я точно не помню, как я занялся этой разработкой и какая у меня была мотивация. Я знаю, что у меня уже был опыт работы с этой концепцией хеш-таблицы Cuckoo, которая представляет собой довольно интересную структуру данных. И мне кажется, что это как-то совпало с моим интересом к предложению, связанному с доказательством работы Momentum, его улучшением. В частности, как использовать больше памяти для решения проблемы. В основном, этого можно достичь, сократив ландшафт применимых алгоритмов, поскольку это и есть основная проблема парадокса дней рождения — наличие множества различных способов, которые можно использовать для решения. Трудно быть до конца уверенным в том, что ты нашел наиболее эффективный метод.

    QS 14:10

    Майк: Oк, хорошо. В твоем докладе я увидел, я, правда, не читал весь документ, но, пожалуй, ознакомился с первой его половиной, что одним из стимулов, который заставил тебя взяться за работу, было твое желание сделать алгоритм более эгалитарным, что звучит во многом так, как будто люди хотят, чтобы CryptoNight был использован для Monero. А также это означает, что ты собираешься заполнить рабочие пробелы между потребительским и специализированным аппаратным обеспечением. Теперь, не углубляясь в специфику проблемы, которую мы решаем, можно поговорить об этом позже, расскажи, что ты собираешься делать, задавшись целью создания эгалитарного алгоритма доказательства работы? Какие проектные решения тебе необходимы для выполнения поставленной задачи?

    Джон: В данном случае хотелось бы обратиться к свойствам аппаратного обеспечения, то есть к небольшой разнице между специализированным и обычными, потребительскими аппаратными средствами. И если вы возьмете тот же закон Мура, то увидите, что с каждым поколением, каждые 18 месяцев происходит бешеный рост вычислительной мощности. Однако, несмотря на то, что, например, пропускная способность памяти также развивается согласно этому росту, решение проблемы времени задержки не сильно продвинулось за последние более чем десять лет, этот параметр улучшился всего в два раза. Поэтому да, я решил создать алгоритм доказательства работы, который бы ограничивал время задержки. Но, безусловно, в конечном счете мои попытки не увенчались успехом.

    Но в течение долгого времени я думал об этом как о цели, как о стимуле, но это тоже было неким отсроченным последствием. Когда я написал свой начальный алгоритм, я заметил, что он использует всю оперативную память, и это заставило меня думать, что мотивацией служит ограничение времени задержки. Поэтому да, в течение долгого времени я находился под впечатлением, что мной движет желание ограничить время задержки. Но в этом году выяснилось, что существует альтернативный метод обращения к памяти, в основном, путем упорядочивания. И это меняет проблему и связывает ее уже с пропускной способностью.

    Майк: Да, я спрошу об этом попозже, хоть ты уже отчасти и говорил об этом. Было дело, вроде как в виде поощрительной премии ты уже размещал данные на репозитории программного обеспечения для майнинга GitHub, при этом написал: «Если кто-нибудь сможет побить эти показатели, то получит определенное денежное вознаграждение». По-моему, это было $5000 или около того. И таки да, недавно тут был разработчик, который увеличил требования к памяти примерно на порядок величины.

    Джон: Премия CPU не предусматривала каких-либо ограничений по использованию памяти. Поэтому я сказал: «Если вы сможете ускорить процесс вдвое, и неважно, какой объем памяти вы будете использовать, я заплачу вам». По-моему, на тот момент размер премии составлял $2500.

    Майк: Oк.

    Джон: $2500 были бы выплачены за удвоение. В случае четырехкратного увеличения, то есть, двойного удвоения, я бы заплатил $5000. То есть Xenocat, грубо говоря, учетвертил производительность.

    QS 17:17

    Майк: Хорошо. Ну и при всем при этом, что это значит для… Ну с одной стороны, я думаю, что CPU и GPU имеют одинаковую производительность, и все по-прежнему, или же теперь майнинг CPU… В общем, устареют ли они, как только будут разработаны эффективные майнеры для GPU, использующие этот новый алгоритм?

    Джон: Я думаю, что CPU некоторым образом устарели еще до этого, с точки зрения решения проблемы с задержкой. Программа, решающая эту проблему для GPU, уже в четыре раза быстрее, чем у высокопроизводительных CPU, а даже не был уверен, добился ли я максимально возможной оптимизации GPU, так как я не слишком большой эксперт в области программирования GPU. Итак, производительность выросла уже в четыре раза, поскольку новый, ориентированный на пропускную способность алгоритм еще больше усилит GPU, я думаю, что отрыв будет расти и достигнет, по крайней мере, он станет десятикратным.

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

    QS 18:40

    Майк: Продолжим в том же направлении. Эти новые улучшения, связанные уже с пропускной способностью, а не со временем задержки, могут ли они привести к тому, что кто-то возьмет и разработает производительную ASIC, которая только ухудшит положение?

    Джон: Безусловно, можно разработать ASIC, но ASIC придется соединять с обыкновенными микросхемами DRAM-памяти, а разрабатывать принципиально новую архитектуру DRAM — это просто немыслимо.

    Майк: Хорошо. То есть, не получится, как в случае с Bitcoin, когда кто-то разработал реально производительный кристалл и просто снес GPU, и сделал это так, что никто не смог достичь такой же производительности и построить нечто подобное. В нашем случае, поскольку все сильно зависит от DRAM, получится так, что, несмотря на возможность создания ASIC, возможно, многие группы смогут сделать это, и получится так, что вырастет… Затраты вырастут во всем, я правильно понимаю?

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

    Основная проблема микросхем памяти заключается в том, что вам необходимо оптимизировать затраты на хранение. Уже существуют технологии, обеспечивающие более высокую производительность, чем у микросхем DRAM. Но они дорогостоящи, как, например, статическая память. Поэтому, если что-то работает в десять раз быстрее, но стоит в 100 раз больше, то никто не купит это, чтобы использовать для майнинга.

    Поэтому, как мне кажется, можно построить схему памяти, которая будет немного оптимизирована под Cuckoo Cycle, но цена, по крайней мере, будет конкурентной, особенно сейчас, когда есть алгоритм, связанный с пропускной способностью. Фактически, вы будете проводить операции с памятью, в которых важную роль будет играть мощность DRAM и последовательность доступа, а оптимизировать чип памяти как-либо еще будет уже сложно. То есть уровень оптимизации, который нам предлагается с обычными потребительскими DRAM, слишком низок.

    Майк: Таким образом, даже несмотря на то, что привязка к времени задержки более не является свойством, это — общее свойство того, что может быть эгалитарным и оставаться действительным, из-за аппаратного обеспечения, необходимого для построения любого типа майнера.

    Джон: Я думаю, вы сможете создать ASIC только для выполнения вычислительной части, которая предназначена для вычисления всех этих маленьких хешей и которая генерирует все запросы памяти. Эту часть вы сможете оптимизировать. Но идея Cuckoo Cycle состоит в том, чтобы эта часть стала дешевой, она не должна быть максимально оптимизирована, она просто должна максимально использовать пропускную способность памяти, и это должен быть совсем небольшой чип, который бы не стоил дорого. В результате большая часть затрат будет по-прежнему касаться чипов памяти.

    Также большая часть потребляемой мощности будет отводиться на чипы памяти, а не на небольшую ASIC. И тогда такое решение ASIC не даст значительных преимуществ в сравнении с многоядерным CPU в сочетании с чипами памяти, которые также обеспечат максимальную производительность.

    Майк: Да, мне тоже кажется, что ASIC можно использовать для оптимизации вычислительной части, но это будет максимум, который можно выжать из этого, поскольку это всего лишь малая часть алгоритма, я правильно все понял?

    Джон: Да. Вы получите незначительное улучшение производительности, которое не погасит возросшие затраты на разработку и производство микросхем.

    QS 23:54

    Майк: Да, невероятно. Теперь, после беседы с тобой, я не могу претендовать на какие-либо знания в математике или компьютерной технике. Но все-таки я инженер и хотел бы немного погрузиться в дебри одного вопроса. Итак, меня интересует само проектное решение Cuckoo Cycle. В своем докладе ты описал его как алгоритм доказательства работы, основанный на теории графов, и противопоставил решению Hashcash Адама Бэка. Hashcash является технологией, лежащей в основе почти каждого метода доказательства работы. Ты выделил несколько исключений в этом правиле, как, например, теоретико-числовое доказательство работы Primecoin.

    Легко ли говорить о подобных различиях, о том, что делает что-то Hashcash, а что-то превращается в теоретико-числовой алгоритм, или это просто подробности, которые могут быть интересны только исследователю в области вычислительной техники, но не так занимательны, как сам алгоритм доказательства работы?

    Джон: Да, действительно, практически каждый алгоритм доказательства работы, известный вам на данный момент, является просто некой формой Hashcash. Люди думают, что между доказательством работы Bitcoin и доказательством работы Litecoin есть большая разница, но эти алгоритмы - лишь разновидность Hashcash. Сама идея Hashcash состоит в том, чтобы вам пришлось искать вход в хеш-функцию, которая дает малый выход. То есть ты выбираешь между вариантами Hashcash в зависимости от выбранной тобой хеш-функции.

    Bitcoin использует двойное применение SHA-256, а Litecoin использует хеш-функцию Scrypt, чтобы задействовать больше памяти. Но безусловно используется только 128 килобайт. То есть память используется не очень интенсивно. Мне пришлось сделать так, поскольку я хотел уменьшить затраты на верификацию.

    QS 25:08

    Майк: Этот компромисс необходим для всех функций Hashcash? Просто мне известно, что одной из проблем с алгоритмом доказательства работы Monero является тот факт, что это доказательство работы Hashcash…

    Джон: Так оно и есть. Нельзя сделать так, чтобы алгоритм доказательства работы Hashcash стал использовать память по максимуму, поскольку все верифицируют алгоритм доказательства работы, используя значительные ресурсы памяти, что занимает время. И это довольно сложно в случае с некоторыми устройствами, такими как мобильные телефоны, у которых память ограничена, или даже в случае с некоторыми встроенными устройствами. Вот поэтому, пожалуй, и стоит попытаться и реализовать асимметричный алгоритм доказательства работы, где эффективная попытка определения доказательства требует большого объема памяти, а для верификации такая память не нужна.

    QS 25:54

    Майк: Хорошо. Мы можем поговорить о том, как Cuckoo Cycle позволяет достичь цели? В одном блоге автор пытался описать алгоритм любительскими терминами. В частности, Cuckoo Cycle описывался как способ решения проблемы, при котором, если представить, что у вас есть миллиарды мест, куда надо попасть, и вы произвольно выбираете 42 дороги, и если у вас есть дорога, соединяющая каждый отдельный город, а вы произвольно выбрали 42 дороги, вы будете искать цикл, петлю, которая проведет вас через 42 различных города и соединит их…

    Джон: Нет никакого произвольного выбора 42 дорог. Просто у вас есть граф, узлы которого разбиваются на две группы. В теории графов это называется двудольным графом. Таким образом, узлы разбиваются на две группы, а границы - только между двумя группами, но не в пределах группы. Возникает вопрос, есть ли цикл определенной длины в этом длинном произвольном графе?

    Граф произволен в том смысле, что вы фиксируете количество границ и для границы номер «I» выбираете конечные точки, используя некоторую хеш-функцию, которая дает вам конечные точки. Таким образом, вы передаете значение «I» с нулевым битом в хеш-функцию, что дает вам произвольный выход, который вы назначаете узлу на одной стороне, а затем передаете «I» вместе с единичным битом в хеш-функцию, и это дает вам другой произвольный выход, указывая на другую конечную точку границы в другой группе.

    Таким образом, вы можете создать фиксированное количество псевдопроизвольных границ, и они будут определять ваш произвольный граф. Теперь вы можете спросить, есть ли в графе цикл определенной длины и как найти его? Штука в том, что для того, чтобы определить, был ли найден кем-то граф, вам не нужно вообще никакого объема памяти, поскольку этот кто-то просто предоставит вам список, включающий в себя, скажем, 42 индекса границ, и вам будет нужно просто перенести эти индексы на 84 конечные точки, как в случае с простой S-функцией. А потом вы просто проверяете, образовали они цикл или нет. Таким образом, все происходит моментально, без использования памяти, что обеспечивает супербыструю верификацию Cuckoo Cycle. Но чтобы именно найти цикл, уходит много ресурсов памяти.

    Майк: Следовательно, в случае с Hashcash способ, который позволяет регулировать сложность, что ограничивает время нахождения блока Bitcoin, грубо говоря, до 10 минут, заключается в снижении планки, то есть, приходится находить все меньшее и меньшее число…

    Джон: Точно. Есть точное отношение между сложностью нахождения доказательства Hashcash и этим порогом по выходу хеш-функции. Если вы зададите порог в два раза больше, то найти доказательство работы станет в два раза проще. То есть в основном мы позаимствовали эту возможность Hashcash, чтобы реализовать наш алгоритм доказательства работы Cuckoo Cycle. Как только вы найдете ваш цикл, вам просто нужно будет применить хеш-функцию к списку из 42 индексов, а затем вам снова потребуется, чтобы выход был ниже порога. Это действительно встроенное в Hashcash доказательство Cuckoo Cycle, которое позволяет удобно регулировать сложность.

    QS 30:11

    Майк: Oк. Итак, до меня доходило множество слухов, да и люди просто говорят, что реализация Cuckoo Cycle для пула — довольно непростая штука. Причиной называется тот факт, что пулы используют преимущества полос Hashcash и что придется соблюдать определенное соответствие. Они так и говорят: «OK, вы не совсем соответствуете полосе, но если бы вы обеспечили соответствие полосе чуть повыше…» По крайней мере, именно так я понимаю майнинг через пул. «Если вы обеспечили соответствие более высокой полосе, то мы принимаем это как долю в решении доказательства работы пула, поскольку вы показали, что работали, вы просто не сделали работу оптимально, как нам было нужно». Означает ли это, что Cuckoo Cycle может использоваться для майнинга через пул, потому что он обладает именно таким свойством?

    Джон: Что вам нужно в пуле, так это сложность прохождения и доля, которая будет значительно ниже сложности прохождения с фактическим решением. При использовании Cuckoo Cycle для попытки определения одного доказательства не требуется много усилий. Так было в случае с майнером, привязанным к задержке по времени, это занимало десятки секунд, но теперь, когда используется майнер, привязанный к пропускной способности, мы можем генерировать решения на GPU менее чем за секунду. Это означает, что если интервал вашего блока исчисляется в минутах, а во всем мире достаточно майнеров, то, возможно, будет сделано около миллиона попыток Cuckoo Cycle на один интервал блока, и это означает, что есть масса времени, чтобы определить долю.

    Например, самая простая возможная доля будет определяться любые 42 вычисленных цикла, несмотря на наличие верхнего ограничения Hashcash. И если сложность Hashcash составляет, по крайней мере, скажем, 100, то вычисление каждого 42-го цикла будет в сто раз проще, чем вычисление блока, который фактически принимается. Я думаю, что этого достаточно для того, чтобы генерировать доли. На самом деле, я жду, что сложность вырастет выше отметки 100, она станет ближе к миллиону, но не к сотне. Тогда, вероятно, можно будет получать доли, как в случае с Bitcoin, то есть где-то в пределах 1% или 0,1% от фактической сложности.

    QS 33:14

    Майк: Это звучит как еще один важный вопрос, который тебе хотелось бы учесть в ходе разработки. Ты сказал, что теперь прохождение цикла на CPU занимает около секунды, а это, вероятно, означает, что тебе захочется разработать какой-то блок…

    Например, если кому-нибудь захотелось бы реализовать новый блокчейн, я оговорюсь, кому-нибудь, кто знаком с протоколом Mimblewimble, существует проект под названием Grin, в рамках которого происходит попытка первой реализации Mimblewimble, и они, я уверен, используют Cuckoo Cycle. На самом деле, готовясь к этому интервью, я немного читал о том, что они делают.

    Но мне кажется, что тебе хотелось бы принять взвешенное решение относительно того, каким должно быть время нахождения блока, чтобы люди не останавливались на полпути прохождения Cuckoo Cycle, которое занимает секунду. Это, конечно, звучит как довольно короткий промежуток времени, однако это время довольно значительно, если у тебя 15-секундный блок, то есть она составляет одну пятнадцатую всего времени или около того, или у тебя 30-секундный блок, а это одна тридцатая.

    В общем, если кто-нибудь решит реализовать Cuckoo Cycle, то этому человеку придется сильно подумать над выбором времени нахождения блока. И тут что бы ты посоветовал, задать время поменьше? Потому что, например, в случае с Monero время нахождения блока составляет 2 минуты, и это достаточное время, чтобы не беспокоиться о том, что множество людей тратит свои компьютерные циклы из-за времени вычисления, или лучше задать время, составляющее 4 минуты? У тебя есть мнение на этот счет?

    Джон: Да, об этом велись разговоры, когда выбирался алгоритм доказательства работы для Zcash и Equihash занимал определенное количество секунд для доказательства, так как решающая программа еще совершенно не была оптимизирована. Фактически, авторы оригинального Equihash предлагали использовать ряд параметров, который, как они выяснили, обеспечил бы время, составляющее 30 секунд, и это пугало их, поскольку они использовали интервал в две с половиной минуты.

    И действительно, 1/5 интервала блока для одной попытки доказательства — это довольно неудобно, и, согласись, фактически им пришлось изменить параметры еще до того, как они полностью оптимизировали свой вариант реализации. А с новыми параметрами оказывается, что ты можешь сделать попытку доказательства за ничтожные доли секунды, и теперь люди совершают до 600 попыток в секунду, используя GPU. Теперь это выглядит уж очень консервативно.

    В случае с Cuckoo Cycle у нас появилась гораздо лучшая идея, как оптимизировать наш вариант реализации. Теперь время будет составлять порядка секунды для GPU, и я думаю, что время нахождения блока будет составлять, по крайней мере, минуту, что обеспечивает довольно удобные пределы. В среднем придется тратить менее одного процента вычислительных ресурсов, так как кто-то может найти блок на половине пути, может это будете вы… Половина пути, 60-я попытка доказательства, и вы видите, что вы потратили всего 1% на вычисления, что, как мне кажется, вполне приемлемо.

    Майк: Ну да. Ну а если кто-то сочтет, что этого недостаточно, то можно удвоить или учетверить время нахождения блока, или сделать еще что-нибудь. Это поможет?

    Джон: В этом случае можно подстроить сложность попытки доказательства, сделав граф наполовину меньше.

    Майк: Интересно.

    Джон: В основном, объем памяти и время, используемые Cuckoo Cycle, напрямую связаны с размером графа, который поэтапно растет на 2. Поэтому я рекомендую использовать размер в 1 миллиард узлов и называю это Cuckoo 30, так как это количество составляет 2^30 узлов. И это хорошо, поскольку при использовании привязанного к пропускной способности алгоритма решение займет около 3,3 гигабайт памяти, что, безусловно, привлекательно с точки зрения GPU. Ведь у каждого GPU есть по крайней мере 4 гигабайта памяти, и поэтому нам бы не хотелось увеличивать размер графа до 2 миллиардов, потому что тогда бы вам понадобилось 6 или 8 гигабайт GPU минимум, при том, что вы уже закрыли все возможные майнеры.

    QS 37:19

    Майк: Верно. Тогда существующее программное обеспечение для майнинга становится той точкой, в которой… Одним из выводов, который можно сделать после нашей с тобой сегодняшней беседы, может стать предположение, что если мы захотим изменить алгоритм доказательства работы, то нам понадобятся уже оптимизированные майнеры. Другими словами, нам захочется избежать того, что обычно происходит с новыми монетами. Это немного похоже на гонку вооружений с точки зрения программного обеспечения — у одних людей программный код будет лучше, чем у других, просто потому, что они смогли его написать. Поэтому кто-нибудь возьмет и скажет, что мы хотели попробовать и уже оптимизировали программное обеспечение. Находится ли Cuckoo Cycle уже на этом этапе, или еще требуется помощь разработчиков для создания программ для майнинга?

    Джон: Нет, алгоритм еще не достиг этого этапа. Сейчас мы работаем над оптимизацией программы решения для CPU. И, само собой, есть премия, которая на данный момент составляет $8000. Ее получит тот, кто сможет удвоить производительность майнера CPU, и я лично выплачу половину этой суммы, если производительность повысится всего на квадратный корень из 2. Конечно, решение еще не совсем устойчиво, и вы можете считать, что решение, которое можно улучшить еще на 25%, не совсем созрело. И я соглашусь с этим. Но я установил минимальный порог для этих премий.

    Майк: Понятно. Но это решение более зрело, чем что-то, что могло получиться 2-х, 4-х или 1-кратным в плане производительности.

    Джон: Да, но это со стороны CPU. И конечно, мы ожидаем, что большинство людей будет майнить, используя GPU, поэтому мы продолжаем писать и оптимизировать программу решения для GPU. Так я недавно начал работать над реализацией версии CUDA-программы решения, привязанной к пропускной способности.

    Майк: И эта программа будет предназначена для GPU nVidia, если кто не знает.

    Джон: Именно так. Но это будет просто чертеж программы решения для GPU, так как у меня нет достаточного опыта в написании кода для наилучшей реализации GPU. Поэтому написанное мною может служить основой для более опытных программистов GPU, которые сделают оптимизацию лучше меня. Я не знаю, что это будет. Есть несколько проектов, в рамках которых планируется использовать Cuckoo Cycle, включая проект под названием Aeternity. Его тоже планируют запустить в начале следующего года. Я бы тоже хотел проспонсировать некоторую часть портирования в этом проекте.

    Я бы сказал, что если вы хотите, чтобы к моменту перехода на новый алгоритм у вас было законченное программное обеспечение для майнинга, то вам лучше подождать до 2018 года, когда Cuckoo Cycle уже будет использоваться в других криптовалютах и когда такие люди, как его зовут, Claymore…

    Майк: Claymore или Wolf, их несколько.

    Джон: Все эти анонимные разработчики, вероятно, приложат усилия, чтобы заработать разработкой на новых криптовалютах.

    Майк: Я тоже могу представить, как в дополнение к проектам, которые должны появиться, майнерам, разработанным под них, если сообщество разработчиков Monero решит переключиться на них, возрастет премия, поскольку уже есть прецеденты в прошлом, когда оптимизация аппаратного обеспечения происходила за счет того, что сообщество Monero мобилизовало средства. И вот я представляю, что если бы такой переход наметился в определенный момент в будущем и еще требовалась определенная оптимизация, то сообщество Monero могло бы способствовать этому. Но это только в долгосрочной перспективе. Кто знает, когда еще это произойдет.

    Джон: Да, именно исходя из собственной уверенности в уровне оптимизации майнера CUDA, я назначаю премии, чтобы еще больше повысить его производительность.

    QS 40:55

    Майк: Хорошо. Я упомянул Grin, ты вспомнил про Aeternity. Эти два больших проекта уже начали работу над реализацией Cuckoo Cycle. Есть ли кто-нибудь еще?

    Джон: Ну, если я услышу о ком-то еще, то я вставлю их в список, размещенный в нижней части страницы проекта. На данный момент есть еще один проект в списке, но это только предложение от Bitcoin. Речь идет о работе не на уровне согласования, а на уровне сети, и целью является защита от DoS-атак. Кто-то предложил им использовать более простой вариант Cuckoo Cycle для приема одноранговых соединений при определенных обстоятельствах.

    Майк: Это напоминает мне об изначальной мотивации при создании Hashcash, которая сводилась к тому, чтобы люди могли доказать, что они сделали что-то перед тем, как они отправят вам email, чтобы победить спам.

    Джон: Правильно. Изначально все алгоритмы доказательства работы были ориентированы на борьбу со спамом. И есть кто-то, кто пытается построить децентрализованный форум, в основном, децентрализованный Reddit, и он тоже заинтересован в использовании Cuckoo Cycle. Вы можете найти все эти четыре проекта в нижней части страницы проекта Cuckoo Cycle.

    Майк: Oк, круто. Звучит здорово.

    Джон: И если я услышу о ком-то, кто планирует использовать алгоритм, я обязательно добавлю его в список.

    QS 42:26

    Майк: Невероятно. Хорошо, спасибо за невероятно интересную беседу. Не упустил ли я чего, что тебе показалось бы важным рассказать о Cuckoo Cycle?

    Джон: Когда ты упомянул вначале, что алгоритм доказательства работы Monero также разрабатывался как эгалитарный, я подумал, что нужно было бы сказать о том, что дело не только в том, чтобы добиться равенства CPU и GPU. Но теперь я думаю только о последних x86-CPU и GPU, поскольку они опираются на наличие эффективных AES-инструкций. Тут тоже наблюдается перекос, и я попытался избежать его при работе над Cuckoo Cycle. Поэтому в качестве хеш-примитива Cuckoo Cycle я выбрал то, что было бы легко реализовать для всех CPU, чтобы не было никакого преимущества в использовании x86-CPU в сравнении с ARM или чем-то другим, что установлено на вашем телефоне.

    Майк: О, это интересно.

    Джон: Я думаю, что все CPU должны эффективно вычислять криптографические операции. Мне не хотелось бы заниматься исследованием одного определенного варианта реализации на одном конкретном CPU.

    Майк: Да, это действительно важно, даже с точки зрения узлов. Если какой-либо тип аппаратного обеспечения может реально легко производить верификацию, то не придется беспокоиться о сложностях алгоритма доказательства работы, и есть ли какие-либо AES-NI инструкции или что-то в этом роде, и это дало бы массу преимуществ сети в целом. Круто, спасибо, что подметил.

    Джон: Да, хеш-функция, лежащая в основе Cuckoo Cycle, которая позволяет найти граф, - я старался сделать ее настолько легкой, насколько это возможно, но и имеющей определенную криптографическую силу. Это функция SipHash, в частности, SipHash 24, имеющая в общей сложности 6 циклов. Она довольно легкая с точки зрения вычисления и дает только 64-битный выход в отличие от больших криптографических функций, дающих выход размером 256 или 512 бит. Таким образом, вычисление производится легко, и мне не нужен выход свыше 64 бит. Фактически, это — рекомендуемые параметры, я использовал только 32-битный выход, но, по крайней мере, все можно масштабировать в этом направлении.

    Майк: Oк, спасибо, что побеседовал со мной и изложил все об алгоритме доказательства работы в мельчайших подробностях.

    Джон: Спасибо, что пригласил.

    Майк: Я хотел сказать, что не всякий раз я обсуждаю технические детали проектов, поэтому мне все очень понравилось. Надеюсь, что кто-то из слушателей получил такое же удовольствие. Если бы кто-то захотел… Ты уже говорил о своей личной веб-странице и странице Cuckoo Cycle. Если бы кто-то захотел узнать о тебе побольше или связаться с тобой, то эти страницы были бы лучшим способом для этого?

    Джон: Определенно. Просто зайдите на страницу проекта и пройдите по всем ссылкам, что найдете там. Вы сможете почитать мой блог и ознакомиться с докладом, несмотря на то, что он несколько устарел на данный момент. И, безусловно, я рад буду связаться с вами через email или обсудить вопросы прямо на странице GitHub. И я буду просто счастлив ответить на возникающие у вас вопросы на форуме, связанном с Monero, или при помощи рассылки.

    Майк: Oк, безусловно, я дам тебе знать когда опубликую это, а также покажу, где разместил материалы, например, на Reddit, если кто-то проявит интерес. Также в примечаниях к шоу я размещу ссылки на твою страницу, чтобы людям было проще найти ее. Ну и, если ты сказал все, что хотел, ты не будешь против, если мы закончим?

    Джон: Конечно, большое спасибо, что пригласил меня на шоу, Майк.

    Майк: Да, спасибо, Джон! Всего хорошего!

    Джон: Oк, пока!

    Интервью с Джоном Макафи.

    Майк: Это был Джон Тромп. Я надеюсь, вам было интересно и, возможно, вы узнали что-то новое. А теперь переключаем скорость и переходим к разговору, который состоялся у меня с Джоном Макафи. Это не было запланированным интервью. Мне просто повезло получить у него этот пятиминутный эксклюзив. Наслаждайтесь!

    Майк: Привет, Джон! Как дела?

    Джон: Спасибо, все прекрасно.

    QS 46:57

    Майк: Спасибо, что вы согласились поговорить со мной. Было замечено, что в своих интервью СМИ вы говорили о криптовалютах и Bitcoin, в частности. Также вы упомянули Monero. А что вас заинтересовало в Monero?

    Джон: Для меня в данном случае уникальна одна вещь. Я фундаментально занимаюсь вопросами кибербезопасности на экспертном уровне. Поэтому я провожу в «темной сети» больше времени, чем кто-либо другой. И если я не буду делать этого, каким же я буду экспертом по кибербезопасности, если не буду знать своего противника, того, что делает мой противник, как он ведет себя и какие козыри он держит в рукаве?

    И одной из вещей, на которые я обратил внимание в последние восемь месяцев, является тот факт, что Bitcoin раньше использовался в качестве криптовалюты при покупке незаконных наркотиков, для найма киллера или для покупки обезьяны в Испании, а импорт этих животных оттуда также незаконен, что бы то ни было — в качестве токена всегда выбирался Bitcoin. А теперь никто не использует Bitcoin. Все перешли на Monero. Тем не менее, в течение нескольких последних недель сайты, которые использовали Monero, стали использовать Verge, V-E-R-G-E, что как-то странно…

    Майк: Да. А вы вообще видели Verge?

    Джон: Никак нет, сэр. А вы?

    Майк: Verge - это Bitcoin со встроенным Tor-ом, поэтому у этой валюты нет таких характеристик «несвязываемости» и анонимности, как у Monero. Она просто скрывает ваш IP-адрес.

    Джон: Серьезно? Я не знал.

    Майк: В общем, ее нельзя рассматривать как серьезную монету.

    Джон: Все, что я знаю, я видел в темной сети, а все, что вы видите в темной сети в течение нескольких месяцев, иногда в течение года, потом появляется в открытом, реальном мире, как и в случае с Monero. Эта валюта обойдет Bitcoin, а затем все станут принимать Monero. Я заметил, что люди стали использовать Verge, и я говорю об этом. У меня нет ответа на вопрос, что такое реальность.

    Майк: Допустим, что реальность такова, что эта монета — просто Bitcoin со встроенным Tor-ом. Как по-вашему, это хорошая идея? Ведь мы уже знаем, что Bitcoin легко отслеживается. И как это происходит: Налоговое управление недавно заявило, что им было отслежено 50% транзакций.

    Джон: Да-да. Если это действительно правда, то да, идея не очень-то хороша. Тем не менее, люди используют эту валюту. Вот о чем я говорю.

    Майк: Хорошо, интересно.

    Джон: И если люди используют ее, значит, в ней есть что-то ценное.

    QS 49:27

    Майк: Теперь, как вы думаете… Загнала ли себя Monero в угол, где она используется наилучшим образом? Или же Monero благодаря невозможности ее отслеживания и своей конфиденциальности сможет стать просто обычными деньгами, поскольку деньги сами по себе анонимны или, по крайней мере, должны такими быть?

    Джон: Ну, в этом и вопрос. Я уверен, что у каждого, буквально у каждого есть свои секреты — у вас, у меня, у вашей жены, родителей, детей, друзей — да у всех есть секреты. И какой самый большой секрет, который мы стараемся держать в тайне? Наше финансовое состояние. Мы либо преувеличиваем его, когда, будучи банкротом, притворяемся миллионерами, либо преуменьшаем, когда, будучи миллионерами, притворяемся банкротами. И в обоих случаях на то есть причины.

    Таким образом, если у каждого есть своя финансовая тайна, тогда, конечно, Господи, любой захочет использовать Monero. То есть я имею в виду, что если вы сможете сказать: «Используй Monero, и никто не сможет отследить ни отправителя, ни получателя по транзакции»…

    Майк: Или сумму транзакции…

    Джон: Да что угодно, ничего о транзакции. Тогда конечно любой скажет: «Ха! А мне нравится это». Почему? Да потому что это отвечает человеческим запросам. А у человека «есть вещи, которые он хочет сохранить в тайне». Вот о чем речь. Ни больше, ни меньше. Учитывая все это, безусловно, Monero может распространиться за пределами Dark Web, где мы храним все свои секреты.

    Майк: И я думаю, что ваше собственное благосостояние является тайной, независимо от того, есть ли что-нибудь секретное в нем или нет.

    Джон: Если вы умны, то никогда не захотите, чтобы люди знали ваш достаток. Это жизненный факт.

    Майк: Совершенно верно. Если кто-то узнает о вашем достатке, из вас всегда будут вытягивать больше, какой бы ни была услуга, которую вам предлагают.

    Джон: Ну, или же правительство постарается вытянуть из вас побольше налогов. Ведь сильнее всего мы скрываем нашу тайну от правительства, которое хочет забрать у нас деньги, которые были нами с таким трудом заработаны. Боже правый! Да если дам вам инструмент или какое-то средство, на котором будет написано: «Используй это, и правительство никогда не узнает, сколько ты заработал», то останется только воскликнуть: «Спасибо тебе, Боже, наконец!» Так я вижу происходящее и, опять же, могу ошибаться. Но, знаете, я обычно оказываюсь прав. Хотя обычно терпеть не могу быть таким высокомерным.

    Майк: Oк, это было великолепно, спасибо! Желаю вам хорошо провести остаток дня.

    Джон: И вам спасибо, сэр. До свидания, Майк.

    ~{Финальная музыкальная заставка}~

    Источник: Episode 14: John Tromp on Cuckoo Cycle & John McAfee on Monero


    Перевод:
    Mr. Pickles (@v1docq47)

    Коррекция:
    Horrin (@Horrin)
     
    #1 Mr. Pickles, 3 ноя 2017
    Последнее редактирование: 7 ноя 2017
  • О нас

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