Позволит ли перемещение транзакции из старого блока в новый сократить количество операций?

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

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

Идея загрузки всего блокчейна перед запуском режима обрезки заключается в том, что вы хотите убедиться, что то, с чего вы начинаете, действительно. Единственный известный способ сделать это - получить все это. Или это? Кажется, что вездесущность самого блокчейна соответствует вездесущности действительного набора UTXO, поэтому, если вы получаете действительный набор UTXO и он соответствует тому, что говорит любой другой узел, все готово. За исключением атак Сивиллы, верно? Позволит ли такая успешная атака Сивиллы подделать сам блокчейн?

Одна из трудностей с моим подходом к перемещению транзакции заключается в том, что когда новый узел загружает блокчейн (независимо от того, сколько его еще нужно), он захочет проверить каждый блок, и если блок X отсутствует, то все блоки, которые содержат входные данные, которые были созданы в блоке X, не могут быть проверены, если это означает проверку правильности транзакций в нем. Однако сам блокхедер все еще может быть проверен. Заголовок блока X не может быть проверен, поскольку его содержимое отсутствует. Но разве тот факт, что хэш из блока X требуется в блоке X+1, не достаточен, чтобы верить, что блок X был действительным, и, следовательно, блоки X+1, X+2, X+3 и т. д. , вплоть до любого проверяемого блока включительно, содержащего транзакцию, которая использует вывод (предположительно), созданный в блоке X?

Когда, наконец, появится транзакция, которая тратит неизрасходованные выходные данные перемещенной транзакции, ее невозможно будет проверить, поскольку блок X отсутствует. Однако, если индекс, который определяет, какой блок содержит транзакцию, был обновлен майнером, который перемещает транзакцию, то это легко решить.

Должно ли это обновление индекса также учитывать все непосредственные дочерние транзакции перемещенных транзакций, чтобы существующие, ранее действительные транзакции все еще можно было проверить, найдя исходную транзакцию во вновь добытом блоке? Я не думаю, что необходимо повторно проверять транзакции, которые находятся в блоках с проверенными заголовками, не так ли?

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

Ответы (2)

Это кажется большим усилием для абсолютно никакой выгоды.

В модели обрезки биткойнов вы в любом случае отбрасываете ВСЕ эти старые блоки и ПРОСТО сохраняете набор utxo. Неважно, находится ли utxo в старом или новом блоке, вы все равно сохраняете его в utxoset. Любые блоки, которые вы храните, предназначены только для удобства и для помощи другим узлам, которые запрашивают эти блоки.

Большая часть биткойнеров, которые будут вносить свой вклад в сеть, почти всегда будет намного больше, чем число тех, у кого есть все данные, необходимые для помощи новичкам. Эти новички сталкиваются со все большими загрузками, чтобы начать работу. Обрезка этого не исправит. Обрезка устранила только проблему с постоянным хранилищем, которая относительно незначительна по сравнению со стоимостью запуска. Моя цель — облегчить начало участия.
Гораздо более простое решение: зафиксировать доказательство utxoset в заголовке блока через каждые N блоков, и узлы сделают этот utxoset доступным для загрузки. Цепочка может быть проверена только по заголовкам блоков, а utxoset может быть проверен на основе фиксации в заголовке.
Если блок 414000 является первым с этим обязательством UTXO, то я предполагаю, что в блоке 414550 безопасно загружать меньше, чем весь блокчейн. Новичок определяет, является ли набор UTXO, который он загружает (из источника 1), правильным или нет, ожидая N блоков, чтобы убедиться, что следующее обязательство (которое он получает из источника 2) включает изменения, сделанные этими N блоками. Если эта проверка не проходит, они начинают все сначала, но не могут определить, какой из двух источников является проблемой. Я думаю, это легко исправить, используя несколько источников.
Таким образом, заголовки будут загружаться из нескольких источников для перекрестной проверки, и после N блоков новичок может убедиться, что транзакции в них создают правильное новое обязательство UTXO. Я пытаюсь найти способы использовать отсутствие проверки всех блоков до последних 550, потому что мне нравится эта идея, но я беспокоюсь, что она отказывается от слишком большого количества независимых проверок.

Простой ответ — ДА, но есть и лучшие решения. Хотя он позволяет представить все транзакции в более поздних блоках, наличие транзакции в очень старом блоке НЕ предотвращает сокращение, которое я предполагал. Чтобы сделать самые ранние блоки ненужными для проверки истории Биткойна, требуется только доказательство того, что какие-либо UTXO в них действительно существуют и что они еще не были потрачены. Текущий набор UTXO позволит это сделать, но это должно быть доказано. Йонас Шнелли предложил нечто очень похожее в феврале.