Чего ожидать от Bitcoin Core 0.13.0?

30
ПОДЕЛИТЬСЯ

Bitcoin Core 0.13.0

Bitcoin Core 0.13.0, тринадцатое поколение Биткойн-клиента, созданного Сатоши Накамото почти восемь лет назад,  готово к релизу


Над Bitcoin Core 0.13.0 трудилось более ста разработчиков в течение пяти месяцев. Несмотря на то, что их усилия были сосредоточены, в основном, на разработке Segregated Witness, который будет активирован только в следующей версии программы, Bitcoin Core 0.13.0, по сравнению с Bitcoin Core 0.12.0, наделен еще дюжиной важных новшеств.

Далее, следует список наиболее важных изменений.

Child pays for parent (Алгоритм «ребенок платит за родителя»)

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

Такая ситуация создает проблемы, особенно в периоды «стресс-тестов», когда общее количество транзакций в сети резко растет, что сопровождается существенными задержками в проведении платежей.

Пользователи могут повысить приоритет своей транзакции путем повышения комиссии, тем самым мотивируя майнеров. При помощи функции Replace-by-Fee это можно сделать даже после отправки транзакции, но она доступна не во всех кошельках. К тому же, функция RBF является доступным решением только для отправителя транзакции. Ранее у получателя не было возможности повлиять на скорость проведения транзакции. Теперь эта проблема может быть решена с помощью приема «Child Pays for Parent». (CPFP). CPFP — опция для майнеров, используемая в процессе выбора транзакций, включаемых в блок.

С CPFP майнеры будут отдавать предпочтение не самым высокооплачиваемым (и валидным) транзакциям, а наиболее выгодным множествам. Иными словами: майнеры выберут транзакцию с низкой комиссией, если последующая транзакция, которая прилагается к транзакции с низкой комиссией, предлагает достаточные для компенсации комиссионные. В таком случае, майнер включает в блок обе транзакции.

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

Рассылка компактных блоков

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

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

Компактные блоки (BIP 152), разработанные программистом Мэттом Коралло (который работает в Blockstream), позволят снизить избыточную передачу данных. При добыче нового блока узлы передают очень короткие хэши данных о транзакции. После того, как весь объем данных получен узлами, они могут использовать эти хэши, чтобы определить, какие транзакции включены в блок, и даже реконструировать его.

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

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

Иерархически детерминированная генерация ключа

Ранее узлы Bitcoin Core генерировали новую пару ключей (открытый и закрытый) для каждого адреса  биткойн. Это целесообразно с точки зрения безопасности, но не всегда удобно. Чтобы избежать утраты приватных ключей необходимо регулярно осуществлять резервное копирование. Для решения этой проблемы в 2012-2013 годах разработчики Bitcoin Core Грегори Максвелл и Питер Вюлле, совместно с разработчиком Armory Аланом Райнером придумали криптографический метод BIP 32 — иерархически детерминированная (HD) генерация ключа. Метод HD-генерации позволяет создавать новую пару ключей для каждого нового адреса из одной начальной фразы, состоящей из 12 слов. Зная начальную фразу, можно повторно генерировать ключи, чтобы получить утраченный доступ к своим  биткойнам.

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

Производительность и безопасность

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

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

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

ПО обновлено для интеграции C++ 11 и Python 3 — обновленных версий языков программирования.

Двоичные файлы ARM (микропроцессорной архитектуры) для Linux теперь также являются частью релиза, поэтому пользователям не нужно собирать их отдельно.

Данные о связанных транзакциях (в том числе, при использовании с CPFP) можно передавать внешним программам. Узлы в сети могут запрашивать получение только тех транзакций, которые соответствуют определенному порогу комиссионных, с целью предотвращения DoS-атак.

И, наконец, в обновленной версии присутствует множество незначительных изменений в протоколе удаленного вызова процедур и системах передачи сообщений (ZMQ).

Источник: Bitcoinmagazine

 

30 КОММЕНТАРИИ

  1. Про Compact Blocks (BIP 152). Забыли сказать, что это модификация технологии Xthin, предложенная другими разработчиками и реализованная в альтернативном клиенте.
    Просто скромно написали:
    “разработанное программистом Мэттом Коралло (который работает в Blockstream)”

    Когда идея была впервые предложена, разработчики Core не спешили заморачиваться им. Но когда реализовали в другом клиенте и на практике технология показала существенное уменьшение трафика, дальнейшее игнорирование уже стало невозможно.

  2. CPFP: Транзакция делается с единственной целью – протолкнуть застрявшую транзакцию. Чем такая транзакция лучше спама?
    Очередная бесполезная фича после RFB. При этом преподносится, как очень крутая штука. 🙂 Жалко потраченных ресурсов.

    Compact Blocks: Реальное движение в сторону истинного масштабирования Биткоин-системы. Если не увеличивать блок, то не так и нужна. При нынешних масштабах и без него ноды справлялись. Но когда произойдет увеличение блока, кратное снижение трафика будет приносить пользу.

    HD-генерация: Хорошая штука. Мне уже надоело по мере использования биткоин-кошелька вытаскивать приватные ключи и делать холодные копии адресов, которые предполагаю использовать.
    Сгенерировал СЛУЧАЙНУЮ начальную фразу, распечатал и сохранил в нескольких копиях. И можно пользоваться кошельком годами.

    • Разверни пожалуйста мысль насчет – “Чем такая транзакция лучше спама?”

      Что вижу я, например чел отправил мне транзу, но жлобанул комсу. Таких утырков пруд прудит. Подтверждение важно, т.к я покупаю эти монеты за свой фиатик. И вот проблема, человек орет “я все отправил, где мой лавандос?”, объяснять что нет подтверждений бесполезно, особенно, когда прошло три часа. Вариант – взять и создать child транзакцию используя выход этого недоразумения, и получить подтверждение. Может и не самое идеальное решение, но при случае позволяет решить проблему прохождения транзакции.

      • Ведь Вы сделаете child транзакцию сами себе. Польза от этой транзакции – заплатить комиссию майнерам. При этом даже двойную. За эту транзакцию и предыдущую. Эта транзакция заберет часть ограниченного блока и останется в блокчейне на века. Такой же смысл у спамовой транзакции – заплатить комиссию майнерам, забрать часть блока.

        • Комиссия определяет место в очереди. Будь она хоть совершенно бессмысленной, спамом она не является, пока место в блоке оплачено. CPFP позволяет просто доплатить комиссию второй транзакцией. Но плата идет за размер обеих транзакций всё равно.

          Может оно конечно экономичнее и дешевле переотправить транзакцию с повышенной комиссией, но CPFP это плата за удобство.

        • Технически все транзакции равны, т.е они имеют нейтральную сущность в вопросе спам/не спам.
          Другой вопрос экономическая полезность транзакции для всей сети. Под “экономически полезными” транзакциями я понимаю такие транзакции, которые участвуют в реальной экономике, т.е являются оплатой за товары, услуги и т,д, попросту выполняют функцию денег, а так же те функции, которые способствуют этому.
          Спам-транзакция экономически, в контексте всей сети, бесполезна. Возможно, можно извлечь какой либо полезный элемент, но эта полезность будет сугубо локальной, сеть в целом проигрывает от наличия таких транзакций.
          Описанное является чисто личным размышлением, тоже относится и к определениям.

        • Согласен с постом.

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

          Поэтому странно видеть, что разработчики преподносят эту опцию как прорывную и в списке нововведений ставят на первое место.
          Да она по своему значению рядом не стоит с Compact Blocks и HD-генерацией.

        • Нет других адекватных критериев для оценки того что следует писать в блокчейн, а что нет. Если начать на каждый чих писать правила, запрещающие транзакции не являющиеся экономически эффективными, согласно чьим-то субъективным оценкам, то это только породит способы обхода, ещё более затратные в плане пространства в блоке. Да и само наличие таких правил это вовсе все не сделает биткоин более привлекательным. Я вот все не пойму, что так тут все хотят прыгнуть выше головы. Одним лимит блока маленький, другим нестандартные транзакции мешают. При том справедливо оплаченные. Высокие комиссии в бокчейне – это неизбежность. Да, в некотором скаме можно и 10 МБ блоки найти, при том что транзакций там нет почти совсем. И они хвалятся у себя нулевыми комиссиями. Но это все оттого что их блокчейном почти никто не пользуется. Пользовались бы, были бы комиссии.

        • Спам-транзакция экономически, в контексте всей сети, бесполезна.

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

        • Если отправитель и получатель одно и тоже лицо, при этом создающее огромное количество транзакций просто ради забавы, ради “Я смогу”, ради “вы все у меня попляшите”, ради… любые варианты которые сможете придумать. Что это, и что с этим делать?
          Еще вариант. У биткойна отличное хранилище – блокчейн, все, что туда попадет, остается на века. Почему бы в этот блокчейн не поместить фото своих кошечек, собачек, или свои мемуары, вообще давайте туда всю wikipedia. Конечно, запретить это делать невозможно. Вообще, транзакционный вопрос цензуры, это вопрос жизни и смерти для биткойна, для такого биткойна которым мы его знаем сейчас. Суть в другом, зачем биткойн сети это надо, хранить данные вообще не имеющие отношения к функции денег?

        • Блокчейн просто надежная БД транзакций, настолько, что позволяет использовать её для финансовых транзакций. Ценой этого является высокие комиссии. Если кто считает кошечек важными, пусть пишет кошечек.

          Попытки явно спамить сеть не долго продержались и не часто повторяюся. Потому-что это затратно. Фильтровать транзакции отсеивая неправильные: это приведет к тому что пострадают в первую очередь обычные пользователи.

        • Если отправитель и получатель одно и тоже лицо, при этом создающее огромное количество транзакций просто ради забавы, ради “Я смогу”, ради “вы все у меня попляшите”, ради… любые варианты которые сможете придумать. Что это, и что с этим делать?

          Он потратит все свои биткойны на комиссии и на этом его забавы кончатся.

          Суть в другом, зачем биткойн сети это надо, хранить данные вообще не имеющие отношения к функции денег?

          Сети биткойн вообще ничего не надо, она неодушевленная и не имеет желаний и потребностей.
          Зачем “сети биткойн” вообще хранить данные транзакций для покупки всякой ерунды? Отправляешь транзакцию – будь добр обосновать ее полезность и необходимость для мирового сообщества!

  3. … а поскольку для каждой транзакции кошель использует (по умолчанию) новые адреса, то адрес со сдачей (до проходения проблемной транзакции) – пустой, и отправлять с него нечего.
    Очень нужная весчь, эта CPFP, да и Compact Blocks больше дыр открывает, чем пользы приносит. Про HD-генерацию вообще молчу – мечта брутфорсера.

    imho всё, конечно, может и перегнул чуток.

    • А если сгенерировать транзакцию через coinb.in, то нельщя отправить до того, как пришло подтверждение?

      Насчет HD – это касактся толтко самого кошельуа в Core? Я им не пользуюсь, хотя у меня дома крутится Core, но не доя меня лично, а для всеобщего блага

    • HD – мечта брутфорсера, что, что? Можно подробнее?
      Забегая наперед, если у тебя есть лишних 54 миллиарда тысячелетий, то может что-то и выйдет. А, ну и около 100 триллионов долларов на закупку мощностей, расчет времени делался исходя из возможности 200,000,000,000,000,000 хешей/сек.

      Насчет CPFP, и Compact Blocks, ты не привел аргументов, где там дыры?

  4. По поводу CPFP.
    Если ты отправитель, то надо сделать новую транзакцию с адреса, на который пришла твоя сдача от той транзакции, которую ты хочешь ускорить.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here