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

image

Над новой версией в течение пяти месяцев работало около сотни программистов. Разработка Bitcoin Core 0.13.0 заняла пяти месяцев.
Все предложения по улучшению протокола биткоина были сформированы в общий список из 27 пунктов bitcoincore.org/en/2016/08/23/release-0.13.0.

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

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


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

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

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

Реле Compact Blocks


image

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

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

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

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


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

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

И, конечно, Bitcoin Core 0.13.0 содержит внушительный список обновлений в сфере эксплуатации и безопасности.

Майнить ещё не поздно:
image
Поделиться с друзьями
-->

Комментарии (15)


  1. elite7
    24.08.2016 18:55

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


  1. RussianNeuroMancer
    24.08.2016 19:42

    SegWit софт-форком превращает не обновившиеся ноды в тыкву (они не смогут верифицировать новые транзакции) что делает бессмысленным использование софт-форка вместо хард-форка. Тем не менее, разработчики Bitcoin Core всё равно выбрали софт-форк.
    Майнерам не нужно было бы выбирать транзакции с более высокими комиссиями, если бы транзакций могло быть больше (в прошлом временного) лимита в один мегабайт. Если SegWit является решением, значит и увеличение размера блока до 4 МБ тоже могло бы быть решением, но разработчики Bitcoin Core отвергают даже вариант с 2 МБ.
    Концепция Compact Block, если мне не изменяет память, стырена из проекта Bitcoin Unlimited, даже id фичи стянули.

    Тем временем китайские форумы, где обсуждают Bitcoin, свободны от pro-Core цензуры, а самые посещаемые англоязычные форумы (bitcointalk.org и сабреддит /r/bitcoin) жестко цензурируются. Сказать что ситуация ироничная — ничего не сказать.


    1. Mad__Max
      27.08.2016 02:12

      В тыкву они не превращаются — полноценно проверить не могут, но продолжают работать — с точки зрения старых клиентов SegWit транзации все еще являются валидными транзакциями. А новые клиенты не бракуют транзакций созданных «по старинке» (без использования SegWit). Поэтому могут продолжать работать совместно.
      Тогда как хард форк именно сразу превращает в тыкву всех кто не обновился — они просто не смогут работать и окажутся в побочной(мертвой) цепочке блоков. И даже не полные ноды тоже превращаются в тыкву.

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


      1. RussianNeuroMancer
        27.08.2016 07:57

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

        Вся индустрия согласна с необходимостью SegWit, но только разработчики Core, и обработанные их пропагандой, считают что нельзя реализовывать SegWit хардфорком. У Core по известным причинам аллергия на хардфорки — их бездействие меняет модель экономики Bitcoin.

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


  1. doobrik
    24.08.2016 22:57
    -1

    > официального клиента биткоина
    Что значит «официальный клиент биткоина»? ЭЛИ35.

    > SegWit обладает двумя главными преимуществами: повышает безопасность транзакций и увеличивает емкость блоков
    Увеличивает ёмкость во сколько, в 1,4 раза если повезёт? Повышает безопасность? Вы серьёзно? Немеряно строк непонятного кода, который рождался в муках больше чем пол года. И эта хрень повышает безопасность? Сравните с изменением одной строчки, которая _на самом деле_ повышает размер блоков, и на несколько порядков безопаснее.

    > Пользователи могут повысить приоритетность своей транзации путем повышения комиссии, тем самым мотивируя майнеров (при помощи функции Replace-by-Fee это можно сделать даже после отправки транзакции, но она доступна не во всех кошельках)
    А ещё РбФ ломает принцип безоткатываимых транзакций. Кроме того РбФ полностью рушит торговлю с 0 подтверждений. Да, РбФ сейчас не обязателен, но Блокстрим-команда сделает его обязательным, вопрос времени: лягушку главное варить медленно. Петер уже начал об этом говорить. Они не смогут свой лайтинг пропихнуть без РбФ.
    > На практике это означает…
    На практике это означает что транзакции больше не безоткатывыемые.

    > При двойной пересылке данных транзакции требуется больше сетевого трафика, что повышает стоимость оперирования узлами и тормозит распространение блоков в сети.
    Так и слышиться голос Диалап-Люка. Алё, за окном август 2016-го!

    > Реле Compact Blocks, разработанное программистом Мэттом Коралло (который работает в Blockstream)
    Минуточку! Копирование xthin я бы не стал называть «разработанное»


    1. ShadowAlexey
      25.08.2016 16:39

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


      1. RussianNeuroMancer
        25.08.2016 17:59
        +1

        Насколько я понимаю сейчас проведение двойной траты вопрос везения. RbF делает двойную трату частью протокола, вот что не нравится людям — то есть на массовом применении Bitcoin в ритейле можно будет поставить крест.


        1. ShadowAlexey
          25.08.2016 20:17

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


          1. RussianNeuroMancer
            25.08.2016 20:43
            +1

            Двойная трата, конечно, возможна, но RbF делает проведение двойной траты гарантированной — как говориться, почувствуйте разницу.
            Для чего предназначен протокол Bitcoin решать ни вам, ни мне, и уж точно ни разработчикам Bitcoin Core. Тем не менее, они почему-то считают, что имеют право убивать то один use case, то другой. А майнеры не спешат снимать навешанную им на уши лапшу: https://www.cryptocoinsnews.com/bitcoin-core-miners-agree-hard-fork-code-comes-july-2016-activation-in-2017/ (по ссылке можно не ходить, я про то что и так видно в URL).
            Идея Lightning в текущем виде описывает нечто неудобное с точки зрения потребителя, а её упрощение (например открытие канала не с магазином, а с распространённой платежной системой) приводит к всё тем же централизованным решениям, доступным и сейчас (BitGo). И это если закрыть глаза на более сёрьезные проблемы Lightning, о которых вы скорее всего в курсе.


            1. ShadowAlexey
              25.08.2016 21:07

              > Двойная трата, конечно, возможна, но RbF делает проведение двойной траты гарантированной — как говориться, почувствуйте разницу.
              Не очень понимаю, в чем гарантированность. Дабл спенд, как был возможен для злоумышленника, так и остался, а тот, кто хочет, что бы его транзакции прошли быстрее, получил новую возможность «доплатить»

              > Для чего предназначен протокол Bitcoin решать ни вам, ни мне, и уж точно ни разработчикам Bitcoin Core
              By design с самого начала биткоин клиент считает транзакцию успешной только после 6 подтверждений.
              Так что требование к кол-ву подтверждений идет с момента зарождения.

              Хардфорки для развивающейся системы возможны, то что разработчики пошли по пути софтфорка с недоступность нового функционала для старых клиентов, считаю разумным и верным. Есть пример хардфорка эфира, который привел к балагану, особенно, когда eth classic ввели на биржи и транзакции дублировались в обоих сетях.
              Касательно размера блока, имхо, согласен, что нужно прийти к соглашению, но оно не обязательно должно сразу же отсекать все старые клиенты, пусть лучше они постепенно добавят поддержку в новые клиенты, а когда уже почти что вся сеть будет на них и пройдет пол-года\год, переведут сеть на новый протокол.
              Стабильность и постепенные запланированные изменения очень важный в финансовом секторе.


              1. RussianNeuroMancer
                25.08.2016 21:45

                Гарантированность в том что доплатил и вернул потраченное себе, ну очевидно же. А сама необходимость доплачивать — это решение для проблемы, созданной разработчиками Bitcoin Core искусственным образом.

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

                Прошу не путать «недоступность функционала» с «невозможностью принимать поступающие платежи» — фактически тех, кто не обновился, отправляют за борт (точно как при хард-форках). Старые ноды не будут видеть блокчейн в полном объёме, то есть они будут видеть другой блокчейн. Задумайтесь над этим.
                DAO bail-out спорное событие, но в итоге всё устаканилось — пользователи, разработчики приложений и майнеры выбрали новую цепочку: https://poloniex.com/exchange#eth_etc
                Такая демократия нам не то, что в России не снилась, её даже в Bitcoin нет.

                Касательно размера блока Bitcoin Unlimited самое идеальное решение — оператор полной ноды вписывает тот лимит, который посчитает нужным, и по мере необходимости со временем увеличивает (или же убирает ограничение). На всякий случай напомню, что обычному пользователю полная нода не нужна: https://geektimes.ru/post/279148/#comment_9482440


                1. ShadowAlexey
                  25.08.2016 21:53

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

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

                  Лично мне важно, что на старом клиенте я могу отправить старые деньги.А то что я не увижу транзакций от новых клиентов, это допустимо, имхо.

                  Очевидно, что биткоин unlimited слишком радикален, т.е. метод решения проблемы мне нравится, но скорость его внедрения должна быть куда меньшей.

                  P.S. Да, свой ETC я слил при первой возможности, т.к. все было очевидно, но сам балаган постриг не мало хомяков, что есть минус в цивилизованном обществе.


                  1. RussianNeuroMancer
                    25.08.2016 22:26

                    Про отмену транзакций имеющих хотя бы одно подтверждение никто не говорил.
                    Bitcoin Core вообще не пересылает транзакцию дальше, если обнаруживает факт двойной траты (к слову, а Bitcoin XT пересылает, в этом одно из его ключевых отличий — он позволяет участникам сети узнавать о попытке двойной траты). То есть для начала вторую транзакцию нужно отправлять напрямую майнеру и надеяться что у него в mempool ещё нет первой транзакции (а она есть у него в mempool спустя пару секунд после отправки — выйти из магазина точно не успеете) иначе вторая транзакция будет дропнута нодой.

                    Валидная неподтверждённая транзакция и валидная подтверждённая транзакция — они обе вполне валидны, их отличие в другом (вполне очевидно, в чём же именно).

                    То есть вам переводят деньги (зарплату, например) но вы не можете их потратить, и это допустимо. Возможно, стоит попытаться задуматься ещё раз? Вот прямо сесть и подумать.

                    Пострижены были только те, кто попытались что-то делать, при этом не понимая, что они делают. Или я что-то пропустил?


                    1. ShadowAlexey
                      25.08.2016 22:37

                      > Пострижены были только те, кто попытались что-то делать, при этом не понимая, что они делают. Или я что-то пропустил?

                      Например те, кто был не в теме, что эфир уже может быть и не тем самым эфиром, не очень то корректно к пользователю, который не полностью в теме.

                      > То есть вам переводят деньги (зарплату, например) но вы не можете их потратить, и это допустимо. Возможно, стоит попытаться задуматься ещё раз? Вот прямо сесть и подумать.

                      Если мне дали только справку, о том, что «зарплата оплачена», но я не получил подтверждения от своего банка, что она дошла, и я решу ее потратить, то сам себе буратина)


                      1. RussianNeuroMancer
                        25.08.2016 22:53

                        У обновлённой версии Mist при запуске предлагалось выбрать цепочку. Это достаточные основания, чтобы озаботиться вопросом.

                        Не обновив клиент вы не получите ни одной зарплаты и помрёте с голоду, потому что так и не поняли, что обновившаяся сеть оперирует не с BTC, а с SegwitCoin (назовём Bitcoin Segwit Softfork так) и вы на ваш старый клиент получить SegwitCoin не можете. Удивительные аналогии: а ваши попытки отправлять BTC в обновившуюся сеть, это почти как с replay между ETH и ETC.