ТЛ; д-р: я предлагаю заменить жесткий колпачок на размер данных блока (1 Мб, 20 Мб или бы то ни было) с упругим одной, где сопротивление крупных блоков постепенно накапливается. Шахтеры будут обязаны заплатить штраф сверхлинейного для больших блоков, которые будут выплачен в бассейн платы опрокидывания. Это позволит значительно повысить надежность Bitcoin к ситуации, когда приближенная блок колпачок, и позволить здоровый рынку платы.
Задний план
В эти дни там жаркие споры о том, следует ли быть смягчены предельный размер блока 1 МБ. Многие аргументы обсуждаются, но наиболее распространенным является классическим компромиссом:
Большие блоки -> Тяжелее запустить узел -> Меньше узлов -> Более централизация
Меньшие блоки -> Минус платежи могут осуществляться непосредственно в операциях по blockchain -> Более зависимость от решений по обработке платежей, связанных с 3 сторон -> Более централизация
Большинство соглашается, что существует некоторая оптимальная величина для этого компромисса, и дебаты о том, что это такое, как его определить, как принимать решения, вращая его, и т.д. И большинство считают, что если блоки слишком малы, мы получим "Берегись" в виде увеличения ТХ сборов.
Однако, Майк утверждает,, и я склонен согласиться, что это не так, как он будет работать. Скорее всего, если предел блока слишком мал для спроса сделки, сеть Bitcoin будет врезаться. Суть его рассуждений, как я вижу, это - рыночные силы должен найти плату равновесию, где предложение сделки соответствует спросу, что они есть. Однако рыночные силы не достаточно быстро реагировать на колебания, создавая что технически постройки не может быть обработано с помощью программного обеспечения.
Майк утверждает также, что, так как мы не знаем, когда мы достигнем предела - и когда мы делаем, мы будем иметь катастрофические неудачи без предупреждения - мы должны торопиться, чтобы поднять предел оставаться в безопасности. Эта часть у меня есть проблема с - если Bitcoin не может корректно деградировать в условиях роста объема сделок, мы не будем иметь проблемы, независимо от того, что текущий блока ограничение размера. Вместо этого мы должны сосредоточиться на решении что проблема.
В этом посте я представлю модификацию протокола, который может устранить эту проблему. Я опишу предложение и проанализировать, каким образом это может помочь. С его помощью на месте, мы больше не рискуем аварийную посадку, только рост сборов - дают нам указание, что-то должно быть изменено.
И тогда мы можем вернуться к утверждая, что размер блока должен быть, учитывая компромисс выше.
Перевернулся плата бассейн
Это предположение требует, в качестве предварительного условия, использования пула платы опрокидывание. Я впервые ввел понятие Вот - этот пост стоит читать, но он использовал понятие для другой цели, чем мы здесь.
Первоначальная идея заключалась в том, что плата за транзакцию не будет выплачена в один шахтер из блока, который включает в себя это - скорее, плате будет выплачиваться в пул, из которого средства будут постепенно выплачиваемым будущими шахтеры. Вы могли бы, например, что в каждом блоке, шахтер имеет право на 1% оборотных средств в бассейне (в дополнение к любым другим блок наград).
В текущем предложении, мы будем использовать такой пул, который выплачивается в течение долгого времени, - но это не будет пользователей, которые ставят деньги в бассейн. Операционные сборы будут выплачены шахтеру, который нашел блок в обычном режиме.
Edit: снова говорят для ясности - В данном предложении, сборы от сделок будет уделено шахтера текущего блока мгновенно и в полном объеме. Шахтеры не могут ничего, соглашаясь ТМИ сборами из полосы усиления. Один платит в завернутой бассейн является сам шахтер, как описано ниже.
блок крышка Эластичная
Сердце внушения - вместо того, чтобы запрещать большие блоки, оштрафовать их. Шахтер большого блока должен заплатить штраф, который зависит от размера блока. Штраф будет вычтен из средств, он собирает в сделке поколения, и зачисляется в опрокидывании бассейн, который будет распространяться среди будущих шахтеров. Если штраф превышает доход шахтера ТХ сборов + чеканили монеты + его доля текущего пула опрокидывания, блок является недействительным.
Для этого необходимо выбрать функцию F, которая возвращает штраф для заданного размера блока. Существует большая гибкость и там мало что может пойти не так, если мы выбираем "неправильно" функция. Основные требования, что оно выпукло и имеет значительную кривизну вокруг размера мы думаем, блоки должны быть. Мое предложение: Выберите размер целевого блока T. Тогда для любого заданного размера блока х, множество Р (х) = Мах (х-Т, 0) ^ 2 / (Т * (2T-х)). (график)
Это будет означать, что нет никаких штрафов за блоки до размера T. По мере увеличения размера блока, есть штраф за каждую дополнительную сделку - ничтожно в первом, но в конечном итоге резко возрастает. Блоки больше, чем 2Т запрещены.
Анализ
Я предполагаю, что мы хотим дефицита в blockchain - это предотвращает бесполезные операции, которые раздувают blockchain и сделать его более трудным для запуска узлов и incentivizes пользователей финансировать инфраструктуру Bitcoin. Предельный размер блока создает дефицит - но только если когда-либо действительно бывают ситуации, когда мы достигаем предела. Но при существующем положении вещей, достигая предела создает технические неполадки.
Майк называет проблему "аварийная посадка", Но для меня это больше похоже на удары кирпичную стену. Спрос сделки бежит к пределу ничего не замедляя его, пока больно врезается в него. Одна минуты есть свободная комната в блоках, и нет оснований взимать плату ОЙ - и дальше, там нет места, и мы столкнулись с проблемами.
Если больше сделок войти в сеть, чем можно поместить в блоки, то очередь будет становиться все больше и может занять несколько часов, чтобы очистить, а это означает, что транзакции будут занять несколько часов, чтобы подтвердить. Шахтеры могут использовать сборы, чтобы сигнализировать на рынок, чтобы облегчить на новые сделки, но рынок будет слишком медленно реагировать. Во-первых, потому что программа не оптимизирована для получения этого сигнала; и второй, потому что спрос сделки является неэластичным в коротких временных масштабах. Если в течение длительных периодов времени, операционные издержки высоки, я прекращу искать места для оплаты с Bitcoin, я подписаться на услугу упрощения оплаты и т.д. Но короткий срок, если у меня есть сделка я установить на отправку прямо сейчас (например, вкладки ресторана), я буду готов заплатить очень высокую плату за это, если я должен. Так сборы не являются эффективными в борьбе с потопом сделок.
Введите эластичный колпачок. Когда ТЙ спрос превышает значение целевого блока, отставание не накапливается - шахтеры просто включить дополнительно в блоке. Они начнут требовать немного дополнительных сборов для компенсации штрафа, но все еще может очистить очередь на скорости его заполнения. Если входящий скорость ПЕР продолжает увеличиваться, маргинальные штрафные шахтеры должны платить за ТХ будет увеличиваться, поэтому плата будет выше - но, поскольку этот процесс более постепенным, клиенты будут в лучшем положении, чтобы понять, что плата, которую они должны платить для быстрого подтверждения. Процесс будет напоминать восхождение на холм, а не работает в кирпичной стене. Как мы раздвинуть пределы, возвращающая сила будет расти сильнее, пока не достигнет равновесия.
На более длительных временных масштабах, рынок будет иметь представление о типичных сборах, и принимать соответствующие решения. Он также может анализировать время дня / недели, когда плата ниже, и использовать их для каких-либо, не чувствительных ко времени операций.
С твердой крышкой, очередь сделок может ясно только с определенной скоростью. Ниже этой ставки нет платы за напряжение, а над ней есть нестабильность. С эластичной крышкой, а более длинные очереди сборов причиной транзакций, чтобы быть выше, поощрение шахтеров включать более в блоке, увеличивая скорость, при которой очередь очищает. Это устойчивое равновесие, что предотвращает очередь от выращивания неограниченно, в то время как всегда поддерживая некоторую плату напряжения.
Между прочим, в настоящее время система является частным случаем этого предложения, с F (X) = Если (X<Т, 0, бесконечность). Мы предполагаем, что недействительный блок эквивалентно бесконечной казни.
Путь вперед
Я считаю, что существует очень мало недостаток, если таковые имеются, к реализации этого метода. Это может оказаться полезным, даже если сценарий аварийной посадки не столь серьезным, как говорит Майк. И примитивы будут удобно для других возможных улучшений протокола. Я считаю, что это по сути простой и полностью конкретизирован-аут идея. Таким образом, я надеюсь, что это может быть принято без особых споров.
Это, однако, существенное изменение, которое может потребовать значительного кодирования. При обсуждении этой идеи с Гэвином, он объяснил, что он был бы в лучшем положении, чтобы оценить его, если данный рабочий, тестируемый код. Написание кода это не мое дело, хотя. Если кто-то заинтересован в осуществлении этого, я буду рад оказать поддержку.
Связанных с работой
Подобная система существует в CryptoNote, смотри, например, раздел 6.2.3 https://cryptonote.org/whitepaper.pdf.
Грег Максвелл предложил аналогичную систему с переменным усилием горнорудного вместо поощрений штрафа - смотрите, например, http://sourceforge.net/p/bitcoin/mailman/message/34100485/ для обсуждения.
Это предложение не имеет прямое отношение к методам плавающего предельного блока, где предельные параметры определяется автоматически на основе новейшей истории спроса сделки.