Если BIP XYZ используется блок версии 4, то только варианты того, как "голос" было бы
нет мягкой вилки (остается с версией 2 блоков)
только BIP66 (перейти к версии 3 блоков)
BIP66 и BIP-XYZ только (перейти к версии 4 блоков)
Если бы было много мягких вилок собираются в то же время, то шахтеры не могли выбрать, какие из них они хотели голосовать.
Предлагаемое решение это изменить значение поля версии в заголовке блока. Он перестанет быть счетчик и иметь каждый бит действует независимо.
Цитата: gmaxwell
Pieter имеет новое предложение, которое делает значительные улучшения: каждый softfork сигнализируется один бит, то когда бит пересекла порог его «защелки» и
становится доступным для повторного использования снова, и есть крайний срок, по которому, если он не защелкнуть его прерванным и становится доступным для использования снова.
становится доступным для повторного использования снова, и есть крайний срок, по которому, если он не защелкнуть его прерванным и становится доступным для использования снова.
Детали, кажется, не будут доступны для связи (возможно, это обсуждалось на IRC?)
В интересах обсуждения, я предлагаю возможную схему.
Поле версии представляет собой 4-байтовое поле в заголовке.
Устаревшие клиенты проверить, какие правила действуют путем сравнения числа блоков версии с пороговым значением (ссылка). Это означает, что для сохранения обратной совместимости с устаревшими узлами, будущие номера версий должны быть по крайней мере, 3. При этом предполагается, что BIP66 принимается.
Установка MSB на 1 гарантирует, что, что номер версии больше 3.
Я предлагаю следующий мягкую вилку процесс.
- Обсуждение / Редакционный
- Эталонная реализация создано
- Выпуск обновленных программного обеспечения (Backports?)
- Выдвижение и распределение битов
- измерение консенсус
- Активация (>75%)
- Блокировка и немного открепление
- (Или отклонение)
Обсуждение / Редакционный
Этот этап включает в себя обсуждение достоинств изменения и создания документа BIP.
Эталонная реализация создано
Этот шаг включает в себя добавлении коды к эталонному клиенту с переключателем логикой, так что она отключена, если BIP не будет активирован.
Там может быть мягкой вилкой обработчик, который обрабатывает мягкие правила порождения. Мягкие вилки могут указывать, если они зависят от каких-либо других мягких вилок уже приняты. Если да, то BIP не будет делать ничего, если его зависимость не является также активной.
Выдвижение и распределение битов
MSB поля версии используется, чтобы указать, если блок назначения нового BIP. Поле версии интерпретируется следующим образом.
31: не-выдвижению мягкой вилки
30-24: версия офсет
23-2: номер BIP
1-0: должны быть установлены в 3
Код:
BOOL nominating_header = версия & 0x80000000 == 0;
uint8_t смещения = (версия & 0x7F000000) >> 24;
uint32_t BIP_number = (версия & 0x00FFFFFC) >> 2;
uint8_t зарезервированной = версия & 0x3; // должен быть установлен в 3
uint8_t смещения = (версия & 0x7F000000) >> 24;
uint32_t BIP_number = (версия & 0x00FFFFFC) >> 2;
uint8_t зарезервированной = версия & 0x3; // должен быть установлен в 3
При работе в режиме выдвижения, поле версии для блока копируются из предыдущего заголовка блока. Версия смещения указывает на то, сколько блоков, чтобы вернуться. Блок использует это поле версии блока, чтобы указать, какие биты использовать. Это может быть приковано. Если заголовок целевой блок был заголовок номинации, то он использует поле версии указывает, что заголовок.
Если нет поля версии в течение последних 127 блоков, спичками нужного поля версии, то клиент будет пропустить процесс выдвижения кандидатов.
Номер BIP указывает, какие BIP выдвинуть.
Если BIP уже назначен слот или он уже активен / заблокирован, то назначение игнорируется.
В противном случае, если 250 из последних 1000 блоков назначить одинаковое число BIP и есть свободный слот, то самый низкий свободный слот выделяется для этой BIP.
В противном случае, если 550 последних 1000 блоков назначить одинаковое число BIP и слот израсходован на неактивном BIP, то самые старые неактивный BIP отбрасываются и слот отдается BIP.
В случае успеха статус BIP был изменен с НЕРАСПРЕДЕЛЕННОГО на неактивный.
измерение консенсус
Каждый бит, считается, что слот для обозначения, какие мягкие вилки используются для блока.
Так как 1 бит используется вверх (бит 31 для выдвижения), что дает 31 слотов, доступных для голосования.
Есть 2 варианта голосования
0: Нет голосов (и блок потенциально несовместимый с мягкими вилкой правил)
1: В пользу (и что блок соответствует мягкой вилки правил)
активация
Если по крайней мере 750 из последних 1000 блоков голоса в пользу мягкой вилки, то она изменяет состояние из неактивного в активное. Это означает, что блоки, которые имеют набор битов должны быть совместимыми.
Он переходит из активного в неактивное, если поддержка падает ниже 750 из последних 1000 блоков.
Блокировка и немного открепление
Если по крайней мере 950 из последних 1000 блоков голоса в пользу мягкой вилки, то она изменяет состояние от ACTIVE блокированию. Это состояние работает так же, как в активном состоянии.
После того, как BIP входит в состояние запирания, не существует никакого способа, чтобы отклонить BIP. Биты все еще используются, чтобы указать, если блок соответствует.
запертый
1000 блоков после ввода состояния ЗАКРЫВАНИЯ, БИП должен войти в заблокированном состоянии.
Это означает, что блоки будут отклонены, если они не соответствуют требованиям.
Слот, который был использован BIP становится свободным слотом.
непринятие
Если 550 последних 1000 блоков голосовать против, то BIP считается отвергнутым и изменяет состояние из неактивного в НЕРАСПРЕДЕЛЕННЫЕ. Слот, который был использован BIP становится свободным слотом.
Блоки перед BIP были выдвинуты не считаются голосами против.
операция Ссылка клиента
По умолчанию ссылки клиент должен голосовать в пользу всех мягких вилок о которых он знает. Он должен голосовать против / не совместимую всех БИП, что он не знает о.
Если неизвестный BIP входит в состояние ЗАКРЫВАНИЯ, предупреждение должно быть сделано оператору узла.
Там должно быть параметры командной строки для управления эталонных клиента голосов. Это позволило бы ему голосовать против БИП, что он знает о. Вероятно, это не очень хорошая идея, чтобы позволить ему помоему даже если неизвестный BIP вступил в заблокированном состоянии. Переключатель командной строки может отключить, что для спам-БИП.
Узел должен назначить с наименьшим номером известного BIP, который не имеет слот, назначенный (и не заблокирована).
[Редактировать]
Бросьте его на один бит на BIP.