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

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 13 июн 2018.

  1. Mr. Pickles

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

    Регистрация:
    11 сен 2017
    Сообщения:
    252
    Симпатии:
    71
    Эпизод 016:
    Mimblewimble и Эндрю Поэлстра (Andrew Poelstra)

    В июле 2016 года неизвестный разработчик под именем Tom Elvis Jedusor разместил ссылку на скрытую службу Tor на IRC канале Bitcoin-Wizards. Это была ссылка на новый протокол, названный автором Mimblewimble. Название было придумано после прохождения курса языка Гарри Поттера, так как он «не давал блокчейну рассказывать о какой-либо информации, связанной с пользователем».

    С тех пор многие исследователи и разработчики продолжали облекать в плоть и развивать инновацию, которую предложил Jedusor. Во многих отношениях этим занимался и Эндрю Поэлстра (Andrew Poelstra), разработчик Bitcoin и математик из Blockstream.

    Мы предлагаем вам погрузиться вместе с Эндрю в технические глубины возможностей повышения уровня анонимности и масштабирования протокола Mimblewimble, обсудить, как он работает в условиях реального мира, а также разобраться с некоторыми невероятными вещами, которые позволяет реализовать эта технология. Мы поговорим о том, как Bulletproofs могут помочь в масштабировании как Mimblewimble, так и Monero, а также коснёмся вопроса ещё большего улучшения анонимности Mimblewimble при помощи ValueShuffle.

    Если вам понравится передача, и вы захотите больше узнать о Mimblewimble, посетите www.mimblewimble.cash. И обязательно почитайте стенограмму передачи ниже!

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


    Майк: Привет всем! Это Майк, и вы слушаете Monero Monitor. Одним из моих самых серьёзных стимулов к тому, чтобы вести этот подкаст, да и просто, связанный с моим интересом к Monero, заключается в том, чтобы узнать как можно больше о том, что делается, и что способствует повышению уровня анонимности и взаимозаменяемости в более широком пространстве Bitcoin. Мне кажется, что из моих предыдущих подкастов стало совершенно ясно, что я уверен в том, что на сегодняшний день Monero является наилучшим вариантом, чтобы сделать это, так как эта монета обеспечивает вашу защиту, не позволяя другим узнать, какие транзакции вы проводите и каково ваше состояние…

    Однако сегодня мне хотелось бы поговорить о проекте, который в последнее время не исчезал с моего радара, и он совсем не обязательно должен быть связан именно с Monero, но он имеет самое непосредственное отношение к анонимности, и поэтому некоторая его связь с Monero так же наблюдается. Итак, этот проект называется Mimblewimble. Не так давно о нём много говорили по каналам Monero, поэтому вы, возможно, уже слышали о нём. Но в сегодняшней передаче мне бы хотелось взглянуть на предмет немного глубже и получить более техническое понимание принципов его работы, и чем он отличается от других возможностей, которые мы имеем, от Monero или Zcash, или от чего-то другого.

    Что касается лично меня, я считаю, что в этой области существует множество проектов, которые по-настоящему раздражают меня. То есть в настоящее время развёрнута обширная деятельность, которая не имеет никакого результата. Тем не менее Mimblewimble, на мой взгляд, является одним из нескольких проектов, которые представляют для меня настоящий интерес, равно как и некоторые проекты, которые ещё не были запущены по-настоящему. Это реально одна из самых крутых технологий, которые мы имеем на этот момент, она уже практически готова к использованию.

    В силу всего вышесказанного, сегодня ко мне присоединяется Эндрю Поэлстра, математик из Blockstream, человек, который является ключевой фигурой, ну, по крайней мере, одной из ключевых фигур, занимающихся последние полтора года разработкой Mimblewimble.

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

    Эндрю: Да, спасибо, что пригласил. Как уже сказал Майк, я математик из Blockstream. По большей части я имею дело с вопросами анонимности и провожу исследования в области масштабируемости, в частности, я занимаюсь прикладной криптографией, чтобы понять уровень анонимности и масштабируемости. Поэтому Monero является одним из тех проектов, которые я стараюсь не терять из виду, равно как и в случае с Mimblewimble, проектом, над которым я работаю уже довольно долго, проводя свои исследования.

    Помимо этого, я занимаюсь разработкой в рамках проекта libsecp, который является криптографической реализацией, которая используется кольцевыми подписями в Bitcoin и Ethereum. Не то чтобы Ethereum был анонимным или масштабируемым, но они используют мой код. Вот чем я занимаюсь. Ну и так получается, что я в некотором роде являюсь официальным лицом Mimblewimble. Я впервые заговорил об этом протоколе на Scaling Bitcoin в 2016, и начиная с того момента, я стал одним из нескольких людей, продвигающих этот протокол и имеющих вполне реальное имя и реальное лицо. Мне начали задавать соответствующие вопросы, и я всегда рад поговорить на эту тему. Это очень интересный проект.

    Майк: Невероятно. Ты перечислил несколько других вещей, над которыми работал, и мне кажется, что необходимо подчеркнуть, что многие из вещей, с которыми ты имеешь дело, позволят сделать Bitcoin масштабируемым в будущем. Люди могут даже не понимать этого, поскольку об этом говорится совсем немного. Итак, ты упомянул libsecp. Знаешь, без этой в некотором роде новой библиотеки, в которой ты всё свёл вместе, Bitcoin пришлось бы туго, учитывая текущие объёмы и положение вещей в целом. Поэтому я считаю, что работа, которую ты делаешь в этом пространстве, особенно ценна, поэтому я и пригласил тебя и очень рад, что ты согласился встретиться.

    QS 03:56

    Майк: Ты некоторым образом упомянул, что за Mimblewimble стоит интересная история. Но перед тем, как мы коснёмся этой темы, на которую мне бы очень хотелось поговорить, так как я нахожу её забавной, не могли бы мы поговорить о самом высоком уровне? Что это такое Mimblewimble конкретно? Расскажи, как если бы ты встретил на улице человека, и тебе было бы нужно рассказать ему, что это за проект Mimblewimble?

    Эндрю: Конечно. Mimblewimble предназначен для решения двух вопросов. Первый — это конфиденциальность, в частности, аспект анонимности. Большая часть анонимности обеспечивается конфиденциальными транзакциями (Confidential Transactions), которые так же использует Monero. Скрывается сумма транзакций, и это уже само по себе устраняет большое количество внешних данных, которые, по идее, не должны быть общедоступны. Ну не должны быть общедоступны данные, касающиеся валидации транзакций. Публичными должны быть данные, которые подтверждают законность транзакции. Нельзя совать нос в чужие дела, в личную жизнь. Или даже так: люди должны иметь право на личную жизнь.

    Сокрытие суммы транзакции — большой шаг вперёд, так как это означает, что люди могут переводить деньги, не указывая, например, какая её часть относится к сдаче, а какая часть является основной суммой. Это делает зарплатные чеки, которые выписываются еженедельно в одно и то же время, и в которых указываются круглые суммы, менее распознаваемыми. А это означает, что когда вы платите, например, за квартиру, ваш хозяин не сможет отследить, какую сумму вы зарабатываете. То есть, не получится так: «Ага, тебе повысили зарплату? Пожалуй, пора тебе поднять плату за квартиру…»

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

    Эндрю: Точно так. Но есть ещё и эффект цепной реакции, который повышает анонимность. Этот эффект повышает значительно улучшить CoinJoin при помощи конфиденциальных транзакций. CoinJoin - это когда различные люди, проводящие независимые транзакции, решают объединить их в одну, как кажется, большую транзакцию. А когда у тебя в транзакциях все суммы видны, можно без труда определить, какие части совокупной транзакции соответствуют оригинальной транзакции.

    В частности, легко определяется, где находится сдача, так как у вас есть куча круглых значений, а потом вдруг идут некруглые числа, уйма десятичных значений, то есть то, что необходимо вбросить, чтобы сбалансировать транзакцию, сдача. Вот тут и вступает в дело Mimblewimble. Реальное волшебство Mimblewimble, то, что отличает протокол, например, от Monero, заключается в том, что он использует чудеса алгебры конфиденциальных транзакций, чтобы «прорезать» транзакцию.

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

    Что это означает для человека, который захочет верифицировать полную историю системы? В отличие от Bitcoin или Monero в данном случае придётся загрузить каждую транзакцию в истории и в основном проиграть их по новой, чтобы убедиться в том, что текущее состояние чейна правильно. В случае с Mimblewimble вы можете взять блокчейн, рассмотреть его как одну большую транзакцию, где изначально все деньги были в руках майнеров, а теперь в руках тех, у кого они, собственно, сейчас и находятся. И, конечно же, в реальной жизни деньги сменили владельца, тысячу или миллион раз до того, как Bitcoin был добыт, а монеты попали туда, где они сейчас находятся. Но те, кто пытаются верифицировать историю, не смогут этого проверить.

    Всё, что им необходимо проверить для каждой оригинальной транзакции — это единственная цифровая подпись, всего одна подпись. Даже подписывать не нужно ничего. Это просто подпись собственного публичного ключа. Поэтому, что в основном делает Mimblewimble — этот протокол позволяет сжать все транзакции в одиночные публичные ключи и одиночные подписи, которые реально не указывают на что-либо: на то, как выглядела оригинальная транзакция, сколько входов в ней было, сколько выходов, какую структуру имели выходы и так далее. Всё это просто убирается.

    Майк: Невероятно. Мне нравится, что ты рассказал про такое «прорезание», даже несмотря на то, что я не спросил об этом. Моё представление обо всём этом было основано на том, чему меня учили на уроках алгебры в средней школе, и я прекрасно понимаю, что математика здесь гораздо сложнее. Однако в то же самое время в основе лежат те же алгебраические действия. Это, как если бы ты написал уравнение, а с обоих сторон знака равно был бы написан ряд вещей, которые бы можно было сократить или, как любят говорить некоторые, взаимно уничтожить, то есть: +4B, -4B, +2B, -3B, +5B с одной стороны, а с другой стороны были бы другие знаки… как я себе представляю, как я всегда думал об этом, ты можешь сократить всё вплоть до, скажем, до самого простого состояния в конце. И так бы делалось со всеми нашими входами в coinbase транзакциях, когда происходит майнинг.

    А с другой стороны уравнения было бы состояние текущего владения монетой. Таким образом, кто-либо, владеющий в настоящее время определённым количеством монет, смог бы оказаться на этой стороне, а другого, который использовал все, можно было бы сократить. Идея в целом выглядит так?

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

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

    Эндрю: Да, точно, это критически важный момент. Фактически здесь всё почти так же. Сложность здесь заключается в значении слова «дополнение», которое, как это было в средней школе, толковалось как добавление двух чисел. В нашем случае это операция с эллиптической кривой. Но это операция с эллиптической кривой, которую мы можем представить в качестве дополнения, поскольку она сохраняет все алгебраические свойства, которые имеет дополнение. Поэтому концептуально в реальности это то же самое, что вам рассказывали на уроках алгебры в средней школе.

    QS 11:01

    Майк: Да, интересно. Хорошо, но мне бы хотелось поглубже копнуть вопрос анонимности. Но перед тем, как мы сделаем это, мы уже коснулись этой темы чуть раньше, давай начнём с истории, как всё это возникло. Не ты ведь изначально стоял за всем этим. Давай вернёмся назад, по-моему, в июль прошлого 2016 года. Насколько я помню, парня звали Tom Elvis Jedusor — это важное имя, но оно всплыло только на Bitcoin IRC или Bitcoin-Wizards, или где-то там, он просто вбросил документ. Так ведь?

    Эндрю: Да, правильно. Я могу рассказать чуть больше, добавить контекста.

    Майк: Конечно.

    Эндрю: Это не первый случай в истории криптовалют, когда объявляется какой-нибудь анонимный исследователь и просто вбрасывает идеи из ниоткуда. Как известно, Monero появилась на основе Bytecoin, странной скам-монеты с возможностью премайнинга. Но Bytecoin получил новшество, кольцевые подписи, которые стали ключевой особенностью Monero, которая использует их для обеспечения своей анонимности. Это изначально были просто кольцевые подписи, по крайней мере, в том виде, в котором их использовал Bytecoin. Сейчас Monero использует протокол RingCT, который обеспечивает более высокий уровень анонимности. Оригинальные подписи были изобретены человеком под именем Nicolas van Saberhagen.

    Все три части имени относятся к трём разным национальностям: Франции, Германии и Дании. Это не реальный человек. У нас нет свидетельств, что за этим именем скрывается реальный человек. Это произошло ещё в декабре 2012. А всё привело к созданию реальной системы, Monero.

    Майк: А знаешь, что интересно? События датируются декабрём 2012, но есть масса свидетельств, что работа фактически была написана либо в конце 2013, либо в начале 2014. Так что эта история не была в достаточной мере изучена такими людьми, как CoinDesk, или кем-то подобным.

    Что касается скам-монеты и странного премайнинга, следует добавить, что так же есть уйма свидетельств, что подпись на той работе была поддельной, и что она была выполнена с использованием программного обеспечения, которого в 2012 году и не существовало. Так что это ещё одна запутанная история, в которой было бы неплохо разобраться журналистам. Может, когда у меня появится время, я займусь этим вопросом. В любом случае, ряд прецедентов привёл к появлению протокола Mimblewimble, о котором, мне кажется, ты как раз собирался рассказать.

    Эндрю: Я не знал об этом, и это пугает, поскольку мой следующий пример был прямым предшественником Mimblewimble и назывался OWAS (one-way aggregate signatures). Односторонними совокупными подписями. Это был документ, который никогда и нигде не был реализован. Он был опубликован человеком под именем Horas Yuan Mouton. Произнёс, как мог хорошо. Это анаграмма слов «Anonymous author» (анонимный автор). Работа была опубликована в сентябре 2013 на bitcointalk. Она позволяла использовать криптографию на основе спаривания для структурирования транзакций таким образом, чтобы их можно было не интерактивно комбинировать и прорезать. То есть это то же самое, что делает Mimblewimble, используя конфиденциальные транзакции.

    Так что эта работа предшествовала появлению конфиденциальных транзакций. Но в данном случае суммы были очевидны, они не скрывались каким-либо образом, не использовалась какая-либо хитрость или скрывающий суму шифр. Просто была изобретена совершенно новая вещь, новый тип подписи, который позволял как бы одностороннее объединение. Подписи комбинировались таким образом, что вы не могли разъединить их. Поэтому эта работа, когда она появилась, представляла собой определённый интерес.

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

    Итак, очевидно, что это произошло примерно в то же самое время, когда фактически появилась работа van Saberhagen-а, что тоже интересно с точки зрения истории. Но после этого, пожалуй, спустя три года спустя, в августе 2016, появился наш друг Tom Elvis Jedusor, который подписался на IRC канал Bitcoin Wizards под именем Major Player с IP-адреса, который находился где-то за пределами Лос-Анджелеса. И он объявился, насколько мне помнится, в 2 часа ночи (UTC), то есть, если я находился в Техасе, то это было где-то 10 или 8 утра в Калифорнии, и он опубликовал ссылку, прокомментировав это как-то так: «У меня тут есть идея, как улучшить Bitcoin, и мои друзья сказали, что на этом канале ею могут заинтересоваться». Итак, он разместил ссылку, это была «луковая» ссылка на скрытую службу Tor, а по ссылке вы находили простой текстовый документ.

    Это был просто текстовый файл, содержащий алгебраические вычисления. И он был очень плохо написан, создавалось впечатление, что французом, и в этом и заключалась пара причин, почему, возможно, мне захотелось ознакомиться с документом. Итак, он разместил ссылку, удалил регистрацию и исчез. И, мне кажется, до следующего утра никто этого и не заметил. Я и Брайан Бишоп (Brian Bishop), который был в тот момент со мною в Остине, перешли по ссылке, скачали файл, проверили его — это действительно был обычный текстовый файл, а не какое-то вредоносное программное обеспечение или что-то в этом роде, и опубликовали файл в другом месте.

    Майк: Да, вы разместили его, по-моему, на Mimblewimble.org, я вот прямо сейчас смотрю на него. Так что, если кто-то хочет прочитать этот файл, просто зарегистрируйтесь на Mimblewimble.org.

    Эндрю: .org или .cash?

    Майк: Можно и на .cash, но файл точно есть на .org. Забавно, что я никогда раньше не слышал об этом.

    Эндрю: Так и есть.

    Майк: По крайней мере, насколько нам это известно, может, у них сейчас другое имя или что-то в этом роде.

    Эндрю: Да, может и так. И что интересно или обескураживающе, это как посмотреть, нет никаких доказательств, что это действительно он — он не оставил криптографического ключа и ничего в этом роде. Единственным способом, которым он сможет доказать, что это он, является ключ, который использовался для скрытой службы Tor, когда он размещал файл, но эта служба, мне кажется, исчезла через несколько недель после того, как файл был размещён, после чего она могла появиться в миллионе других мест.

    И вот с этого момента, после того, как упал сервер, мне неизвестно, какой ключ использовался. Я не подумал загрузить публичный ключ или сделать что-то подобное. Ну, я думаю, что в случае с Tor, URL является публичным ключом, поэтому нам может больше ничего и не понадобится. Но это реально единственный шанс для него доказать свою идентичность — повторно разместить что-то на том же самом сервисе Tor.

    Майк: Да, знаешь, в этом-то всё и дело, что этот человек не оставил нам своего публичного ключа, чтобы мы никогда не смогли определить, кто это. Не знаю, мне это кажется интересным, и имя опять же. Я думаю, что это, по крайней мере, одна из причин, почему некоторые думают, что это был француз. Tom Elvis Jedusor — важное имя, я бы даже сказал, для моего поколения (по-моему, ты и я одного возраста, поэтому для нашего поколения), поскольку для англоговорящих это имя не так узнаваемо, но если бы я сказал Томас Марволо Реддл, то люди бы точно узнали его.

    QS 18:24

    Итак, Tom Elvis Jedusor — это французское имя Лорда Волан-Де-Морта из книг про Гарри Поттера, и это, мне кажется, одна из причин. Почему он может быть французом. А есть ещё какие-нибудь зацепки?

    Эндрю: Ну, есть ещё одна: в середине работы он использовал слово «voilà». Но несмотря на это, он не правильно поставил ударение над «a», что может быть как опечаткой, так и означать, что он просто притворялся французом. Ну а другим имеющимся у меня доказательством является то, как написана работа. Я вырос в Канаде, где есть множество франкоговорящих на ТВ, большую часть моего детства премьер-министр был франкоговорящим, а также у таких людей есть некоторые особенности или варианты идиом, и в этой работе прослеживалась именно такая манера речи. Так что я могу сказать, что сам стиль написания для меня является зацепкой.

    Майк: Интересно. Я думаю, мне стоит продолжить и сказать о том, что, как известно нескольким моим слушателям, я сам фактически являюсь отчасти франкоканадцем, и тут я должен заявить, что я — не Tom Elvis Jedusor. Мне ничего не было известно об этой части истории, так что это просто интересное совпадение.

    Это забавно, поскольку получается, что люди в полный рост эксплуатируют тему Гарри Поттера, ведь название Mimblewimble так же взято из этой книги. По-моему, это заклятие, связывающее язык или что-то в этом роде, то есть это заклятие не даёт людям выбалтывать секреты, поэтому я думаю, именно оно и было выбрано в качестве названия протокола.

    Но люди, несколько увлекаясь, связывают с ним всего Гари Поттера. Ну и, заканчивая с этой темой, мы, конечно, можем поговорить ещё немного, так как был разработан целый альткоин и всё такое. Но мне бы не хотелось фокусироваться на этом надолго. Просто это довольно забавно, ведь даже мы можем немного расширить эту метафору, связанную с Гарри Поттером. Получается, что Mimblewimble был этаким маленьким Гарри Поттером, подброшенным к твоим дверям, а ты выкормил его и сделал таким, каким он сейчас является. Это прямо-таки оригинальная история Гарри Поттера. Я просто нахожу это довольно интересным каламбуром.

    QS 20:37

    Майк: Но что именно заставило тебя после прочтения работы прийти к решению, вроде: «Надо бы заняться этим и доработать?»

    Эндрю: Ну, я являюсь одним из соавторов, соизобретателем конфиденциальных транзакций, на которых в значительной степени основан Mimblewimble. За конфиденциальными транзакциями изначально стояли Грег Максвел (Greg Maxwell), Питер Вуйль (Pieter Wuille) и Адам Бэк (Adam Back). А мною было разработано расширение под названием конфиденциальные активы (Confidential Assets), которое было завершено через несколько месяцев после того, как был опубликован протокол Mimblewimble. Но на самом деле, я разработал его за несколько месяцев до этого для сокрытия сумм, как в случае с конфиденциальными транзакциями, но для блокчейнов со смешанными активами, то есть позволяющих совершать транзакции со множеством различных типов вещей, как в случае с сайдчейнами, вы можете пропускать через один блокчейн Bitcoin и Monero. При этом скрываются не только суммы, но и тип актива, то есть скрывается, передаётся Bitcoin или Monero.

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

    И фактически у нас есть такая для каждого отдельного выхода, и это просто некая замаскированная, зашифрованная форма реального, вполне определённого типа актива. Таким образом, получается, что Tom Elvis Jedusor взял другой кусок, называющийся маскирующим множителем (blinding factor), и сказал: «а почему бы нам не переинтерпретировать этот маскирующий множитель» в качестве ключа подписи и не использовать его для аутентификации вместо системы скриптов. Таким образом, это было в некотором роде морально схожее расширение конфиденциальных транзакций, то есть как то, над чем я работал, по крайней мере, на алгоритмическом уровне. А то, что он сделал с этим, в значительной степени отличалось от простого добавления поддержки различных активов.

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

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

    Эндрю: Да. Спустя пару месяцев после того, как Волан-Де-Морт подбросил работу, я написал свою собственную, которую обнародовал на Scaling Bitcoin в Милане в 2016 году. И с этого момента я бы хотел, чтобы было понятно, что я взял другой курс. То, чем занимался я, было уже в самом конце работы Волан-Де-Морта: у него оставалось три открытых вопроса.

    Первый касался предотвращения отказа служб, как может произойти, если кто-то даст тебе неправильный окончательный набор UTXO, и придётся загружать весь блокчейн, который окажется неправильным. Ты выбросишь его и заменишь. И как решать проблему? А оказывается, мы могли решить вопрос довольно быстро на reddit, просто нужно было побродить туда и обратно и обеспечить надлежащую работу других частей системы.

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

    А третий вопрос сводился к тому, можем ли мы обеспечить какую-либо поддержку скриптов? Можем ли мы поддерживать смарт-контракты, организовать lightning-сеть, реализовать атомарные свопы и т.д.

    Поэтому работа, которую я написал несколько месяцев спустя, была сфокусирована на решении второго вопроса. Она касалась масштабируемости, того, как нам сжать эти ядра. И я нашёл способ сделать это, используя спаривание, нашего старого друга из OWAS, который довольно в агрессивной манере позволил сжать блокчейн не только с 80 до 15 гигов, как это делал Волан-Де-Морт, но и с 15 гигов до 1 мегабайта. Это была восхитительная разработка, но теперь мы зависели от спаривания, которое обладает некоторыми не самыми лучшими эргономическими свойствами.

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

    Поэтому меня не очень интересует то, что я сделал тогда. К сожалению, начиная с той работы, я пытался формализовать Mimblewimble, и всё смешалось с тем, что я называю тонущими подписями (sinking signatures). Поэтому, мне не нравится большая часть работы, и я предпочёл бы, чтобы это были две отдельные работы: первая — по формализации Mimblewimble, в которой было бы написано то, что на данный момент я считаю правильным, из того, что было предложено Волан-Де-Мортом, а вторая отдельная работа касалась бы тонущих подписей как отдельной, самостоятельной вещи.

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

    QS 26:35
     
    TheFuzzStone нравится это.
  2. АВТОР
    АТ
    Mr. Pickles

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

    Регистрация:
    11 сен 2017
    Сообщения:
    252
    Симпатии:
    71
    Майк: Но мне бы хотелось ещё немного остановиться на тех вещах, о которых мы говорили. О Scriptless Scripts, на которые ты намекнул, о том, как они работают в Mimblewimble. Но перед тем, как мы перейдём к этому, не могли бы мы немного, но более глубоко поговорить о том, как могла бы выглядеть транзакция? Допустим, я смотрю на свой полный узел и вижу проходящий траффик, или же, допустим, я смотрю на это через блок-эксплорер, а другие люди, которых я не знаю, совершают транзакцию. Что я вижу при этом? В случае с Bitcoin я вижу источник в виде адреса, а также место назначения, на которое указывает уже другой адрес, ну и сдачу. Мы уже говорили о том, как будут скрываться суммы, но, исходя из того, что я понял о Mimblewimble, вся транзакция выглядит иначе. Не мог бы ты рассказать об этом побольше?

    Эндрю: Да, конечно. Но сначала я отвечу на твой вопрос про то, как ты смотришь через блок-эксплорер, что будет, если ты просто начнёшь загружать блоки Mimblewimble, в каждом из которых теперь будет целый пакет транзакций. Что ты увидишь? А ты в основном увидишь группу входов транзакций и группу выходов транзакций, а также группу ядер транзакций, которые, как мы помним, являются теми публичными ключами, которые заключают в себе суть транзакции. И все эти вещи ничем не будут связаны.

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

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

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

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

    QS 29:27

    Майк: Безусловно. Ну а если я работаю в Агентстве национальной безопасности (NSA) или, скажем, на Интерпол, и я настроил группу узлов, чтобы они регистрировали всю информацию, которая проходит через сеть, смогу ли я разбить всё обратно, чтобы понять, где находятся фактические входы и выходы, их соответствие друг другу? Или это будет так же сложно реализовать?

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

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

    Сначала я скажу про Bitcoin, Monero — более интересный случай. Так вот, в случае с Bitcoin каждый выход имеет свой адрес, который вы можете увидеть, вы можете увидеть сумму и получить массу информации о выходе. При использовании Mimblewimble адрес вообще отсутствует. Каждый выход — это просто сумма, а сама сумма, привязанная к этому объекту обязательства Педерсена, который является просто произвольной точкой на кривой. Любая точка на кривой подобна любой другой точке, поэтому не даёт никакой информации, которая бы позволила идентифицировать что-либо.

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

    Таким образом, результаты в обоих случаях похожи, как в случае Monero, так и в случае Mimblewimble: ваши выходы в значительной степени являются произвольными объектами и не содержат какой-либо важной информации.

    Майк: То есть, как я это понимаю, если взять Monero, убрать её «кольцевую» часть и оставить конфиденциальные транзакции и скрытые адреса, то можно будет скрыть, кто будет получателем, а затем, когда всё меняется, ты уже не знаешь, кто отправитель, и сумма транзакции скрывается. Но в случае с Monero, по крайней мере, есть блокчейн с постоянной историей, который может быть подвергнут анализу графов. То есть получается так: «Хорошо, нам неизвестен этот адрес, и нам неизвестен другой адрес, и третий адрес нам тоже неизвестен, но мы видим, что все три адреса потрачены в одной транзакции, поэтому мы знаем, что все они относятся к одному человеку». И вот тут «кольцевая» часть Monero становится значимым, важным фактором, потому как скрывается источник транзакции.

    Мне кажется, что если кто-нибудь найдёт действительно хороший способ просмотреть сеть Mimblewimble, то такой человек, пожалуй, сможет провести тот же анализ графов и скажет: «Хорошо, у нас есть три разные транзакции, все их входы потрачены и отправлены на этот другой выход, и мы не знаем, чьи это входы, и мы не знаем, чьи это выходы, но, по крайней мере, мы можем связать их вместе». Примерно так?

    Эндрю: Да, совершенно верно. Поэтому в случае с Mimblewimble всеведущий наблюдатель тот, кто следит за всеми транзакциями с самого начала, сможет реализовать что-то вроде анализа графов, что гораздо сложнее в случае с кольцевыми подписями Monero. Но, как и в случае с Monero, при любом варианте реализации Mimblewimble всегда остаётся надежда, есть технология ValueShuffle, разработанная Тимом Руффингом (Tim Ruffing) и Педро Морено-Санчесом (Pedro Moreno-Sanchez), позволяющая объединить конфиденциальные транзакции по методу CoinJoin.

    Это означает, что у вас будет две транзакции, чьи входы будут направлены на определённые выходы, и вы сможете комбинировать их, и вы получите уже целый пакет входов и целый пакет выходов, и их ничто не будет связывать друг с другом, потому что, как мы помним, они уже станут единообразно произвольными. Это не как в случае с Bitcoin, где некоторые из них представлены круглыми числами, а некоторые нет, у некоторых есть адреса в сети Интернет, а у некоторых нет, и прочее. И это сильно сближает вас со свойствами Mimblewimble, где в блоке у вас просто пакет входов и пакет выходов, которые ничего не связывает.

    А ValueShuffle является интерактивным протоколом. Майнеры сами по себе не могут сделать такого, как могут с блоками Mimblewimble. Но если участники находятся в онлайн режиме и хотят сделать это, то они, безусловно, сделают это и в значительной мере повысят свою анонимность, которую бы не получили в противном случае при условии проведения анализа графов транзакций.

    Майк: Да, фактически это и является интересной причиной, почему, на мой взгляд, Monero превосходит другую монету, которая претендует на анонимность, Dash, которая использует нечто отличное от ValueShuffle, но пытается достичь той же цели, используя свой вариант реализации CoinJoin. И когда я слышу CoinJoin — а я поэтому и не люблю Dash, и мне хотелось бы услышать твоё мнение по этому поводу, когда я слышу о варианте реализации CoinJoin, требующем активных участников, то это вызывает у меня определённые опасения, что кто-то сможет провести атаку типа Sybil, чтобы идентифицировать другого человека.

    QS 35:03

    Допустим, мне известно, что ты собрался провести транзакцию с Адамом Бэком (Adam Back), и мне по какой-то причине хочется получить информацию о транзакции, о том, где она была проведена, раз уж я знаю, что ты собирался провести её, то я могу использовать Sybil для атаки активной перемещающейся монеты, и, в принципе, в течение следующего получаса я могу определить, не знаю, 85% или 90% участников между которыми перемещалась монета, и таким образом я узнаю, что происходит с монетой, потому что мне известны все стороны, и остаётся не так уж и много других участников. Есть тут о чём волноваться, и есть ли что-либо в Mimblewimble… В общем, нужно ли мне задумываться над этим, если речь идёт о ValueShuffle?

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

    Майк: Верно.

    Эндрю: Таким образом, можно беспокоиться о том, что некто присоединится к CoinJoin, а все присоединяются как «кто-то», но не учувствуют в последнем этапе, они просто отступают? И таким образом, им понадобится потратить свои выходы множество раз, в этом они не ограничены. А ValueShuffle даёт возможность определить, кто занимается ерундой, и просто отсечь таких людей, выявить входы тех участников, которые не выполняют протокол соответствующим образом.

    Итак, у вас есть анти-Sybil или, как я бы назвал, Sybil-сопротивляемость, которая обеспечивается тем, что в мире существует множество выходов, некоторые из которых вы можете связать уникальным образом, или же вы просто можете использовать CoinJoin. Другая часть заключается в том, что несмотря на наличие некоторой Sybil-сопротивляемости, это не самая сильная вещь в мире, если ваша система CoinJoin не особо велика. Остаётся вероятность, что вы попадёте в те самые 80 или 90 процентов участников.

    Майк: Правильно.

    Эндрю: В этом случае анонимность реальных участников сама по себе снижает вероятность того, что могло произойти без CoinJoin. Это как в случае с конфиденциальными транзакциями: просто единообразно произвольные вещи вошли, и такие же произвольные вещи вышли. Итак, всё ещё остаётся некоторая… это всё ещё довольно хороший уровень анонимности, и с точки зрения CoinJoin, сохраняется некоторое преимущество, в том смысле, что человек уже деанонимизирован для какого-то определённого недоброжелателя, использующего Sybil, NSA или кого-то другого, но он не деанонимизирован для кого-то ещё, кто не имеет доступа к информации NSA.

    Майк: Да, я имел в виду, что в подобных случаях, с Monero, да и с Zcash тоже, их оптимизация не допускает даже атак такого рода, что гарантирует анонимность 100% пользователей. И как я понимаю, в случае с Mimblewimble, ну, если какой-то богач реально захочет и выберет частное лицо, то он сможет получить некоторую информацию о нём. В целом, если вы использовали что-то вроде ValueShuffle, то это не означает, что вы получили чейн, в котором информация будет полностью скрыта.

    Как по мне, то это говорит о том, что это 99% от возможной анонимности или 95%, или что-то около того. Я точно не скажу, какой процент мы могли бы иметь, используя Zcash или Monero. Но тогда компромисс заключается в том, что мы получаем улучшенное масштабирование, а также другие потенциальные преимущества. Такая оценка будет справедливой?

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

    В случае с Zcash мы видим, что при использовании возможностей анонимности этой валюты нам приходится совершать транзакции, эти так называемые защищённые транзакции, которые включают в себя доказательства с нулевым раскрытием конфиденциальных сведений, в результате чего приходится некоторым образом обновлять криптографический накапливающий регистр. И при проведении таких транзакций, как мне кажется, изначально были какие-то невероятные цифры. Я слышал что-то о 10 или 20 минутах, но теперь всё сократилось до одной-двух минут.

    Майк: Да, мне кажется, что они изменили что-то в канале, и это сделало работу более эффективной, чем было до этого, но да.

    Эндрю: Отлично, это хорошие новости. Из-за этих многоминутных транзакций на практике никто и не пользуется защищёнными транзакциями. Только 1 или 2% транзакций Zcash защищено, поскольку люди не проводят их. Это слишком затратно, если вы используете телефон, это слишком затратно для бирж, если совершать такие транзакции по 100 000 раз в день. Поэтому есть смысл в том, чтобы сделать это всё масштабируемым, используя всю эту технологию. Ведь чем больше у вас будет пользователей, тем выше будет уровень анонимности, так как чтобы спрятаться, вам будет нужно собрать толпу. Нет смысла стоять одному в маске посреди поля. Это вам вообще никак не поможет.

    QS 40:24

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

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

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

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

    Майк: Да.

    Эндрю: Каждый из этих окончательных выходов по-прежнему на месте, и из него торчит то, что называется рейндж-пруф (range proof), и это является способом не допустить отрицательной зашифрованной суммы, поскольку без таких рейндж-пруфов, при возможности создания отрицательных выходов, система просто не будет работать. Например, будет возможно вложить одну Monero в транзакцию и создать два выхода, в одном из которых будет 11 Monero, а в другом будет минус 10 Monero.

    И, безусловно, они будут суммироваться, 11 плюс -10 равно одному, но ведь ты создал 11 Monero просто из воздуха, просто чтобы убрать отрицательный выход. Во избежание этого, у нас есть то, что называется рейндж-пруф, который теперь есть в каждой конфиденциальной транзакции, в Liquid или Elements, где такие доказательства были впервые созданы, в Monero как часть RingCT и в любом варианте реализации Mimblewimble так же понадобятся доказательства рейндж-пруф.

    На данный момент их очень тяжело верифицировать, они эквивалентны, то есть, допустим, если мы делаем 64-битный рейндж-пруф, у нас есть числа от 0 до 64. В результате приходится производить верификацию что-то около 100 верификаций подписей за раз. В случае с моей системой проверка рейндж-пруфов занимает около 8 миллисекунд на выход, а эти рейндж-пруфы занимают что-то около 4 или 5 килобайт.

    Майк: Окей.

    Эндрю: Однако на этом фронте есть хорошие новости. Если мы захотим запускать полные узлы со смартфонов и все эти хорошие решения, нам реально придётся работать с размером и временем верификации рейндж-пруфов. Так что есть ещё один проект, над которым я работаю вместе с Дэном Бонехом (Dan Boneh), Джонатоном Бутлом (Jonathan Bootle) и Бенедиктом Бюнцем (Benedikt Bünz), которые в основном и стоят за ним, всё что я делаю для проекта — это код. Проект называется Bulletproofs. И его реализация позволит сделать рейндж-пруфы эффективнее.

    И тут так же есть две части. Во-первых, в случае с отдельными рейндж-пруфами, этот размер, составляющий 5 килобайт, снижается до 750 байт. Значительное снижение размера, но дела обстоят ещё лучше. В случае с отдельно взятыми транзакциями и такими вещами, как Monero, когда мы уже знаем, что выходы принадлежат к одной и той же транзакции, вы можете комбинировать эти рейндж-пруфы, а полученная комбинация будет просто логарифмической по размеру того количества рейндж-пруфов, которые есть у вас.

    Таким образом, как я уже сказал, при размере одного рейндж-пруфа, составляющем 750 байт, если складывать пару из них вместе, вы сможете это сделать только с 64 дополнительными байтами, но не ещё с 750. А это уже получается логарифм, то есть каждый раз, когда я удваиваю их, появляются ещё 64 байта. И в конечном счёте мы приходим к тому, что если у вас есть транзакция со 100 рейндж-пруфами, вы можете сложить все их вместе, и у вас получится всего пара килобайт, а не 100 раз по 5 килобайт, как было бы в противном случае.

    Так что, экономия места в данном случае очень значительна, она просто невероятна. К сожалению, время верификации не сокращается настолько же сильно, но и оно сокращается в значительной степени. Как я уже говорил, на моём компьютере верификация 64-битного рейндж-пруфа занимает около 8 миллисекунд. На том же самом компьютере эта же процедура, но с 64-битным рейндж-пруфом Bulletproof займёт что-то около двух с половиной, 2,2 миллисекунды, пожалуй. То есть для одного выхода результат улучшается примерно в 3,5 раза.

    И опять же, если я комбинирую выходы, то я улучшаю результат более чем в три с половиной раза. Эта цифра дойдёт до 4, а потом до 4,1 и так далее. Это не супер-круто, в конечном счёте рост прекратится, но это довольно заметное улучшение производительности.

    Майк: Да, я слышал, как люди из Monero Research Lab говорили об этом, я думаю, ты тоже на это намекал, это также даст преимущество Monero, а также всем остальным, использующим конфиденциальные транзакции, как я полагаю, когда размер транзакций сократится, а верификация (в случае с Monero они сказали, станет немного быстрее), а как мне кажется, ты говоришь, что в некоторых случаях она станет совсем немного быстрее.

    Эндрю: Да, цифры, которые озвучиваются Monero Research Lab, не настолько велики, как мои, но это чисто технический аспект. Мне кажется, если бы мы проделали достаточную базовую структурную работу, в частности с тем, что называется алгоритмом возведения в степень, который используется в libsecp, библиотеке Bitcoin, по несвязанным с этим причинам, для составных подписей, вроде того, что мы надеемся создать для Bitcoin.

    Если у вас есть алгоритм, подобный такому, и несколько других оптимизаций, которые я разработал для Bulletproofs, вы сможете получить схожие показатели производительности, то есть осуществить подобные улучшения. Я бы говорил об улучшении в два-три раза при наличии технической доработки. То есть, я хочу сказать, не сходите с ума, Sarang и Smooth. «Эндрю сказал, что можно всё повысить в три раза…». Я испытываю осторожный оптимизм, и это оптимистические цифры, которых мы когда-нибудь можем достичь с Monero.

    Майк: Знаешь, что интересно в Monero? За последние несколько лет была проведена большая работа, направленная на то, чтобы сделать монету удобнее и достигнуть максимальной анонимности, отчасти за счёт, окей, мы не пытаемся это пока оптимизировать, и кажется, особенно в случае с некоторыми вещами, которыми занимается Monero Research Lab в отношении кодовой базы, которая понемногу обрастает плотью, с точки зрения того, как уже выглядят RingCT и прочее, в будущем, мне кажется, такая оптимизация произойдёт, так что, может, Monero уже движется в этом направлении по мере того, как проходит время.

    QS 47:59

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

    Эндрю: Время от времени я заглядываю на канал Monero Research Lab. Было время, у них был свой IRC-сервер, и меня туда приглашали, а потом я то ли потерял свои логин и пароль, то ли произошло что-то подобное, но я не смог попасть туда, я и перестал заходить. Но теперь они перешли на Freenode, так что я снова могу околачиваться там. Я в полглаза слежу за тем, что происходит на канале исследовательской лаборатории.

    Я уделяю основное внимание конфиденциальным транзакциям и криптографии. Они же проводят много времени, рассуждая о всяких крутых вещах, думаю, и в твоём подкасте, о том, как структурирован блокчейн, можем ли мы использовать многопоточность или переплетения, или любое другое средство оптимизации… А я не слишком задумываюсь об этом, это не моя сфера интересов. Но когда дело касается Bulletproofs или чего-то вроде RingCT, тогда я, конечно, связываюсь с ними и стараюсь убедиться в том, что наши идеи сходятся, что никто не делает глупых ошибок, для чего требуется лишь ещё одна пара дополнительных глаз.

    Майк: Понятно, отлично. Мне кажется, что, поскольку это направление ещё очень ново, существует что-то вроде Ledger Journal, но, в реальности… многое из происходящего просто сильно завязано на официальной документации, а самые разные разработчики осуществляют независимый и неформальный анализ работ друг друга. А я принадлежу академической среде, где независимый анализ очень формализован, поэтому мне всегда очень интересно наблюдать отличие происходящего в науке, скажем, в медицине или другой области, от того, как проводится независимый анализ здесь. Так что приятно слышать о том, что Грег Максвелл (Greg Maxwell) стал ещё одним примером того, как можно не просто игнорировать Monero, потому что это не Bitcoin, а пытаться заниматься разработкой на основе результатов исследований друг друга, что, как мне кажется, полезно для всех вовлечённых сторон.

    Эндрю: Определённо. Грег и я дружим с ребятами из команды Monero. И довольно забавно то, что ты сказал относительно формалистики и той инфраструктуры, которые характерны для независимого анализа в научной среде, поскольку практически каждая научная область была образована именно таким образом. Несколько исследователей делали открытия, такие, как магнетизм, например, а потом Фарадей писал письма… ой, я забыл, кому писал Фарадей, я хотел сказать, что потом кто-то сотню лет спустя…

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

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

    QS 51:05

    Майк: Да, круто. Окей, можем ли мы поговорить побольше о… есть ещё одно основное различие, я знаю, что мы уже говорим довольно долго, поэтому останови меня, если тебя надо будет идти, но знаешь, если я использую узел Mimblewimble, допустим, он реализован на каком-то сайдчейне Bitcoin или каком-то другом, и, скажем, если я хочу принимать пожертвования через Mimblewimble, или я хочу подключить его для моего магазина, в Bitcoin или Monero, или в другой валюте, я могу опубликовать адрес, который люди смогут выбрать, чтобы передать средства.

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

    Эндрю: Конечно. Давай возьмём этот пример с магазином. Я покупаю что-то, и я собираюсь сделать это за одну монету. Магазин совершает транзакцию, которая почти сбалансирована, так как он тратит дополнительную монету, которую не должен, а затем эти две транзакции объединяются. Это объединение может происходить не интерактивно, а результат попадёт в блокчейн в качестве полностью сбалансированной транзакции.

    Теоретически это возможно. Но тут есть две проблемы. Первая заключается в том, что транзакция будет иметь два ядра, она станет в два раза больше с точки зрения последующих валидаций, что, на самом деле, ещё не конец света. Другая проблема будет посерьёзней. Допустим, я провожу транзакцию таким образом. У меня есть одна монета, которую я потратил, то есть, я произвёл половину транзакции, я отправил её в магазин. Магазин завершает транзакцию и публикует её в блокчейне. Теперь магазин добавляет свой выход с одной монетой и это единообразно произвольная точка, в ней нет ничего, что я мог бы идентифицировать в качестве принадлежащего магазину. Это означает, что если я покупаю вещь, я плачу за неё, а магазин позже говорит, что я не заплатил, и овощной магазин не смог бы так сказать, а вот лендлорд — запросто…

    Майк: Точно.

    Эндрю: У меня нет ресурса, я не могу обратиться к блокчейну и сказать: «Слушай, вот тут вот транзакция в блокчейне, в которой записан адрес магазина». То есть как бы я точно заплатил, а они получили деньги, так как это записано в блокчейне. Таким образом, в случае с Mimblewimble, магазин и ты, покупатель, должны создавать транзакцию интерактивно. Создаётся одна транзакция, которая полностью сбалансирована, а ядро, значит, будет, как я уже называл его, публичным ключом. Фактически это публичный ключ с мультиподписями, который вы с магазином можете подписать, взаимодействуя.

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

    Так что практически всё в Mimblewimble, за исключением сценариев, требующих высокого уровня доверия, как в случае, если ты посылаешь несколько монет на свой собственный холодный кошелёк или что-то вроде этого, требует интерактивности. Более того, даже при не интерактивном сценарии, магазину недостаточно будет просто создать небольшой 30-байтный адрес и перебросить его через стену. Магазину придётся провести половину транзакции, и эта половина должна быть уникальной для каждого платежа. Mimblewimble не допускает повторного использования половинок транзакций. Система… в общем, если вы будете делать это, ничего хорошего не выйдет. Таким образом вы подвергните риску собственную монету. Даже если это будет технически возможно, чего, по идее, быть не должно.

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

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

    QS 55:41
     
    #2 Mr. Pickles, 13 июн 2018
    Последнее редактирование: 13 июн 2018
  3. АВТОР
    АТ
    Mr. Pickles

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

    Регистрация:
    11 сен 2017
    Сообщения:
    252
    Симпатии:
    71
    Майк: Хорошо. Учитывая всё это, допустим, я являюсь владельцем этого магазина, если я принимаю Bitcoin, у меня может быть программа, которая будет проверять мои адреса Bitcoin и проверять блокчейн на предмет наличия входящих платежей, и когда она будет видеть входящий платёж, она будет говорить, хорошо, теперь это полная транзакция, и будет отправлять то, что продаёт мой магазин. И я могу делать это, не имея приватных ключей в магазине. Можно ли добиться такого каким-либо образом, не используя ваш, ну… просто получать платежи через Mimblewimble, но не отправлять платежи таким образом, чтобы сохранялся некоторый вид витрины с кошельком, но тебе не приходилось бы беспокоиться о том, что тебя взломают и украдут твои средства? Звучит разумно?

    Эндрю: Да, звучит разумно. Хмм… Это возможно. Но сложно. А ты мог бы хранить свой холодный кошелёк как бы в сейфе. А что дальше, я уже говорил, когда объяснял про не интерактивное взаимодействие, холодный кошелёк производит половинки транзакций, группу выходов… Теперь предположим, холодный кошелёк производит группу выходов по одной монете, затем, возможно, он присоединяет к ним несколько ядер, теперь витрина может взять эти половинки транзакций, а также некоторые, которые не станет добавлять к полной транзакции. Так, например, скажем, покупатель платит 10,1 монеты. Значит, витрина должна взять 10 выходов, которые создал холодный кошелёк утром и выслал, сложить их вместе, а затем магазин добавляет собственные 0,1 к ним, чтобы завершить транзакцию, а также он завершит и подпись.

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

    Майк: Конечно. Окей, это как раз то, о чём я много раз думал, но ещё никогда ни с кем не говорил. Так что я подумал, почему бы не поговорить именно с тобой.

    QS 59:10

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

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

    Эндрю: Конечно. Но, к сожалению, у меня осталось всего две или три минуты.

    Майк:
    Окей.

    Эндрю: Я бы хотел исследовать этот вопрос более глубоко и встретиться с тобой, чтобы поговорить на эту тему, в другой раз.

    Майк: Это было бы здорово.

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

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

    Но в результате вы получаете блокчейн с очень сжатым и масштабируемым чейном Mimblewimble, а также присоединившийся к нему параллельный блокчейн или блок расширения, если угодно, закрепления и открепления от различных других валют, и всё будет работать вместе вполне хорошо. Около года назад я рассылал высокоуровневое описание того, как это можно сделать с Grin.

    Что касается Scriptless Scripts. Это ещё гораздо более удивительная вещь, и я надеюсь, что смогу поговорить о ней более подробно в другой раз, когда у меня будет больше времени. Но это позволит вам добавить тщательно проработанных условий подписания транзакции, чтобы каждый участник мог подписать её. В качестве коротенького примера, это применимо к атомарным свопам. Что можно было бы сделать: допустим, я отправляю тебе деньги, и я хочу получить сдачу в Bitcoin, а также мы хотим, чтобы это был атомарный своп. Я пытаюсь отправить тебе эти Mimblewimble монеты, ты пытаешься отправить мне Bitcoin. При подписании я хочу передать тебе деньги, и в то же самое время я, некоторым образом, получаю свои деньги, а ты хочешь того же самого.

    Таким образом, проблема состоит в том, кто из нас будет первым, и кто, возможно, останется в дураках. И сделать это можно методом, который использует Bitcoin, который поддерживает прообразы хеша, то есть возникает некий вызов хеша, когда никто не сможет взять деньги, пока не покажет прообраз некоторому криптографическому хешу. Поэтому первое, что делает участник — показывает прообраз, а другой участник просто копирует прообраз с другого блокчейна, так происходит обмен некоторыми секретными данными.

    Monero не позволяет сделать этого, так как Monero не использует скрипты. И Mimblewimble определённо не позволяет сделать этого, так как так же не использует скрипты. Но есть способ поправить подписи таким образом, чтобы достичь того же эффекта. В сущности, мы создаём в транзакции мультиподпись, поэтому я кладу несколько монет, которые необходимы тебе и мне для подписи, чтобы ты мог их взять, ты кладёшь несколько монет, которые нужны тебе и мне для подписи для меня со стороны Bitcoin, и теперь, перед тем, как я подпишусь, чтобы дать тебе монеты, я попрошу тебя подписать обе стороны, часть, которая даст тебе монеты, и часть, которая заберёт монеты, но ты не должен будешь раскрывать мне подписей, ты вычитаешь их и даёшь мне разницу.

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

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

    Майк: Это точно.

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

    А также вы получаете преимущество, связанное с масштабируемостью, так как теперь валидаторам не приходится подробно изучать сложный контракт, составленный вами, всё, что они видят — это подпись, а им известно, как подтверждать подписи, и они сделают это. И это то, что делает Scriptless Scripts. И это можно использовать для атомарных свопов, для построения lightning-каналов, для осуществления непрерывных платежей с методом доказательства без раскрытия секретной информации. Все эти искусные вещи появились в течение последних нескольких лет, и вы можете реализовать их все, используя Scriptless Scripts.

    QS 1:04:49

    Майк: Невероятно. Окей, я не хочу более задерживать тебя. Один последний короткий вопрос. Есть монета, которая пытается реализовать всё это, и мне кажется, что это будет первая реализация Mimblewimble. Монета называется Grin. Ты работаешь над этим, или ты имеешь дело исключительно с протоколом?

    Эндрю: Ни то, ни другое. Безусловно, я не пишу код и не продвигаю проект каким-либо другим образом. Я даже более не слежу за ним так пристально, поскольку он развивается очень быстро. Над ним работает целая группа персонажей из Гарри Поттера: в частности, Игнотус и Антиох Первеллы, два брата Первелла из Даров смерти. Так что я слежу за ними ровно в той же степени, в какой наблюдаю за тем, что происходит с Monero, чисто с исследовательской стороны, а также пытаюсь их как-то направить с криптографической точки зрения. Но, определённо, они движутся гораздо быстрее, чем я поспеваю за всем следить, но мне не кажется, что они станут первым реальным воплощением Mimblewimble, которое смогут использовать люди.

    Хотя, есть исключение. Возможно, возможно, возможно, Elements команды Blockstream, проект Elements, который был первым случаем использования CT (конфиденциальных транзакций). Этот проект реально поддерживает Mimblewimble с первого дня, так как Mimblewimble — это CT без скриптов, так?

    Но у проекта нет кошелька, и есть подобие узла, который знает, как сжимать информацию и все эти вещи. Так что теоретически, сегодня кто-то может написать клиент для Elements и использовать Mimblewimble, и это окажется самым быстрым путём реализации основной идеи. Но Grin, безусловно, является первым независимым проектом, который взялся за эту идею и пытается использовать её.

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

    Эндрю:
    Я есть на IRC, на Freenode, там меня можно найти как andytoshi, вы можете связаться со мной по email, например, напишите по адресу grindelwald@wpsoftware.net, наконец, меня можно найти на wpsoftware.net. Окей, я занёс кое-кого в чёрный список, поэтому, чтобы ничего не пошло не так, скажем, пусть это будет MikesMoneroPodcast@wpsoftware.net.

    Майк: Окей. Спасибо, что побеседовал со мной, и я бы не против повторить это когда-нибудь, может, через пару месяцев, когда всё это обретёт уже чуть более ясные формы. Ну и на этом я тебя больше не могу задерживать.

    Эндрю: Да, конечно. Боюсь, что мне действительно пора бежать. Спасибо, что пригласил.

    Майк: Да, мне было очень приятно. Удачи.

    Эндрю: Тебе тоже!

    Майк: Окей. Ну, я определённо узнал что-то полезное, надеюсь, что и все вы нашли нашу беседу настолько же интересной и поучительной, насколько и я.

    Если кто-то захочет узнать больше о Mimblewimble, посетите страницу Эндрю, о которой говорилось в этой передаче, Mimblewimble.cash. Я недавно заходил на неё, и там есть куча ссылок на самые различные работы, которые были написаны о Mimblewimble, также есть рассылочный список Mimblewimble и много других мест, где вы смогли бы обсудить интересующие вас вопросы. Таким образом, скорее всего, посетив этот сайт, вы найдёте любую интересующую вас информацию.

    Если кто-то хочет послушать другие наши выпуски или почитать стенограмму сегодняшнего выпуска, посетите наш вебсайт, MoneroMonitor.com, или просто найдите нас через ваше любимое приложение для подкастов. Я только хотел бы добавить, что эта передача существует исключительно благодаря пожертвованиям, мы не используем рекламу или что-либо в подобном роде, поэтому, если вам понравилась передача, пожалуйста, внесите что-нибудь через наш вебсайт. Вы все можете найти меня на Twitter, я — @MoneroMonitor, и на этом я прощаюсь с вами. Хорошего вам дня!

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

    Источник: Episode 16: Mimblewimble with Andrew Poelstra


    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #3 Mr. Pickles, 13 июн 2018
    Последнее редактирование: 13 июн 2018
    TheFuzzStone нравится это.
  • О нас

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