Я посылаю эту BIP для сообщества, чтобы обсудить. Я надеюсь получить хорошую обратную связь, поэтому я могу приступить к его реализации, опубликовать его в вики БИП, и сделать это в протокол.
BIP:
Заглавие: Увеличение сети HASHING питания за счет сокращения времени прохождения блока
Автор: Sergio Демьян Лернер
Статус: Проект (неполный)
Создан 19-Февраль-2013
Абстрактные
Когда блок получает сиротой, то это означает, что некоторые из имеющейся мощности сети хеширования были потрачены впустую. Это впустую хэширования власть не выгодно никому в сети Bitcoin.
Сирота блоки создаются в основном из-за время распространения сети новых блоков. А 1 Мбайта блок, посланный через соединение 50 Кбайт / с, занимает 20 секунд. Предполагая, что средний диаметр сетевого графика 4 хмеля, это занимает больше, чем 1 минуту для такого блока для распространения по сети. Текущий размер блока в среднем составляет 150 Кбайт, так что это не проблема сегодня. Как мы ожидаем, что сеть Bitcoin расти ДО максимальной мощности, разумно ожидать 13% отходов в сети хеширования власти в ближайшем будущем из-за осиротевших блоков.
Один из способов уменьшить блок время распространения является отправка только заголовка блока и транзакции хэш в первой команде полезной нагрузке ("заголовок"), А затем отправить оставшиеся данные (операции), во второй команде полезной нагрузке ("блок"). Поскольку coinbase сделка не может быть отправлена по отношению к аналогам без блока корпуса, то "заголовок" Команда должна также отправить эту специальную операцию.
Спецификация
"заголовок" Формат команды:
- заголовок блока
- Операции хеширования список
- Coinbase транзакций (максимум 10 Кбайт)
В среднем "заголовок" Размер команды (для блока 1 Мбайта, учитывая средний 400 байт ТХ) составляет 80 кбайт, что занимает 1,5 секунд на хмеля.
"заголовок" Команда должна быть отправлена только для вновь созданных блоков, а не для исторических.
Семантика
Сразу после первой команды "заголовок" принимается, узел должен:
1. Убедитесь, что блок родитель известен. Если это не так, то отбросить команду.
2. Убедитесь, что блок является последним блоком цепи (по полю времени)
3. Вычислить POW и проверить, если он похож на родительский блок Pow (
4. возмущает "заголовок" команда для всех коллег.
5. Проверьте, транзакционные хэши, содержащиеся в "заголовок" Команда уже в бассейне Tx.
6а. Если все хэши в бассейне, восстановить блок, отнесенным "заголовок" и объявить коллега.
6b. Если очень немногие из них не в бассейне, а затем недостающие TXS может быть запрошена от сверстников.
6с. Если почти все они не являются, игнорировать "заголовок" Команда и запросить блок от партнера послав "заголовок" Команда с помощью "getblocks",
7. После того, как весь блок Х реконструируются / получено, действовать в нормальном режиме (объявить блок, "фактура" по отношению к аналогам и вперед по запросу)
Шахтеры должны, после выполнения предыдущих шагов 1-6, сделайте следующее:
1. Подождите, пока полный блок не восстанавливаются или получено (при добыче в обычном режиме без перерыва)
2а. Если блок X получен до нашего собственного блока решается начать пытается решить блок, родитель X.
2b. Если блок решается локально до полного блока X восстанавливается, отбросить X и попытаться выиграть гонку блок цепи против X.
Это BIP не требует какой-либо мягкой вилки или жесткой вилки и 100% обратная совместимость, так как она включает в себя только изменения в протоколе p2p связи. Сверстники, которые не понимают "заголовок" Команда будет обрабатывать "блок" команды вместо этого.
Reference Implementation
<еще не реализовано>
Кроме того, связанные улучшения
С максимальной 10 секунд времени распространения, 2 минуты блок интервал подтверждения должен быть стабильным, так что это может быть возможно в будущем (с согласия общин), чтобы уменьшить интервал блока до 2 минут или меньше с hardfork (сокращение и сборов и размер блока пропорционально, чтобы сохранить те же экономические свойства Bitcoin нетронутыми и сохранить контракт с сообществом).
Кто выигрывает от этого BIP?
Шахтеры: шахтеры, которые реализуют этот протокол (даже если в частном порядке между ними) получить 10% преимущество над остальными.
Пользователи: Они получают 10% дополнительную безопасность практически без дополнительных затрат (накладные расходы должны быть незначительными). Кроме того, если блоки реконструируют с использованием существующей транзакции в бассейне, а не отправлено, использование полосы пропускания сокращается до половины.
Это беспроигрышная ситуация.
С наилучшими пожеланиями,
Серхио.