Над 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 майнеры будут отдавать предпочтение не самым высокооплачиваемым (и валидным) транзакциям, а наиболее выгодным сетам. Иными словами: майнеры выберут транзакцию с низкой комиссией, если последующая транзакция, которая прилагается к транзакции с низкой комиссией, предлагает достаточные для компенсации комиссионные. В таком случае, майнер включает в блок обе транзакции.
На практике это означает, что получатель транзакции с низкой комиссией может «прикрепить» к ней последующую транзакцию с высокой комиссией. Мотивированный новой транзакцией с высокой комиссией майнер будет включать в блок весь комплект транзакций. Таким образом, получателю не нужно будет долго ждать подтверждения, тогда как майнер увеличит свой доход.
Реле Compact Blocks
На сегодняшний день протокол Биткойна не отличается высокой эффективностью. Узлы отправляют друг другу большинство данных транзакции дважды: первый раз в качестве самой транзакции, при её первоначальной отправке, и второй раз — в качестве части блока при подтверждении транзакции.
Эта модель имеет определенные недостатки. Во-первых, на двойную пересылку данных транзакции требуется больше сетевого трафика, что повышает стоимость оперирования узлом Bitcoin Core. Во-вторых, что еще важнее, сопровождение новых блоков одновременно в несколько пиров может привести к значительным скачкам выходного трафика. Теоретически, эта ситуация нагружает интернет при каждом обнаружении нового блока, что доставляет неудобство пользователям. И, что ещё важнее, может затормозить распространение блоков в сети. В свою очередь, медленное распространение блоков потворствует развитию крупных пулов, способствуя формированию более централизованного ландшафта.
Реле Compact Blocks (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).
Источник. https://bitnovosti.com/2016/09/07/bitcoin-core-0-13-0/
Далее, следует список наиболее важных изменений.
Child pays for parent (Алгоритм «ребенок платит за родителя»)
Число транзакций в сети Биткойн непрерывно росло на протяжении долгого времени. В результате, заполняется всё больше блоков, и для включения транзакций в блок майнерам приходится устанавливать более высокие комиссионные. Транзакции с недостаточно высокими комиссионными ждут подтверждения дольше, а иногда и вовсе не подтверждаются.
Такая ситуация создает проблемы, особенно в периоды «стресс-тестов», когда общее количество транзакций в сети резко растет, что сопровождается существенными задержками в проведении платежей.
Пользователи могут повысить приоритет своей транзакции путем повышения комиссии, тем самым мотивируя майнеров. При помощи функции Replace-by-Fee это можно сделать даже после отправки транзакции, но она доступна не во всех кошельках. К тому же, функция RBF является доступным решением только для отправителя транзакции. Ранее у получателя не было возможности повлиять на скорость проведения транзакции. Теперь эта проблема может быть решена с помощью приема «Child Pays for Parent». (CPFP). CPFP — опция для майнеров, используемая в процессе выбора транзакций, включаемых в блок.
С CPFP майнеры будут отдавать предпочтение не самым высокооплачиваемым (и валидным) транзакциям, а наиболее выгодным сетам. Иными словами: майнеры выберут транзакцию с низкой комиссией, если последующая транзакция, которая прилагается к транзакции с низкой комиссией, предлагает достаточные для компенсации комиссионные. В таком случае, майнер включает в блок обе транзакции.
На практике это означает, что получатель транзакции с низкой комиссией может «прикрепить» к ней последующую транзакцию с высокой комиссией. Мотивированный новой транзакцией с высокой комиссией майнер будет включать в блок весь комплект транзакций. Таким образом, получателю не нужно будет долго ждать подтверждения, тогда как майнер увеличит свой доход.
Реле Compact Blocks
На сегодняшний день протокол Биткойна не отличается высокой эффективностью. Узлы отправляют друг другу большинство данных транзакции дважды: первый раз в качестве самой транзакции, при её первоначальной отправке, и второй раз — в качестве части блока при подтверждении транзакции.
Эта модель имеет определенные недостатки. Во-первых, на двойную пересылку данных транзакции требуется больше сетевого трафика, что повышает стоимость оперирования узлом Bitcoin Core. Во-вторых, что еще важнее, сопровождение новых блоков одновременно в несколько пиров может привести к значительным скачкам выходного трафика. Теоретически, эта ситуация нагружает интернет при каждом обнаружении нового блока, что доставляет неудобство пользователям. И, что ещё важнее, может затормозить распространение блоков в сети. В свою очередь, медленное распространение блоков потворствует развитию крупных пулов, способствуя формированию более централизованного ландшафта.
Реле Compact Blocks (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).
Источник. https://bitnovosti.com/2016/09/07/bitcoin-core-0-13-0/