Предположим, что биткойн-узлы вообще не имеют целевой сложности, а вместо этого просто принимают блок с наибольшим PoW каждые 10 минут. Игнорирование увеличенной пропускной способности (поскольку узлы будут транслировать несколько кандидатов в блоки), сработает ли это? Или есть какая-то техническая необходимость в регулируемой сложности цели?
Редактировать: чтобы уточнить, я имел в виду, что каждый блок принимается, но только цепочка с наибольшей накопленной работой считается канонической. То есть, если несколько дней назад был слабый блок, и вы майните блок с более высоким баллом, этот слабый блок не станет недействительным. Вам нужно заменить каждый блок сверху, если вы хотите переписать историю так далеко. То есть это то же самое, что и Биткойн, без целевой сложности. Узлы просто принимают все блоки и вычисляют лучший блок, суммируя накопленную работу каждого подсказки-кандидата.
Нетривиально а) согласовать время в распределенной системе, особенно сколько времени прошло между двумя событиями, б) установить, когда именно был найден кандидат в блоки. Кроме того, когда узел догоняет цепочку после отключения от сети, у него нет никаких средств, чтобы определить, действительно ли блок был найден в течение выделенного периода времени.
Итак, теперь вместо того, чтобы кто-то находил блокировку и объявлял о ней, нам нужно разослать гораздо больше данных, а затем запустить какой-то алгоритм консенсуса, чтобы согласовать, были ли/какие кандидаты представлены вовремя.
Но, к сожалению, я до сих пор не понимаю, как для консенсуса требуется целевая сложность.
Без труда становится субъективным, если был найден следующий блок, потому что критерии больше не являются бинарными. Если любая сложность приемлема, мы будем находить миллиарды блоков каждый момент. Допустим, все эти объявления о блокировках каскадно распространяются по сети. Каждый узел теперь получает несколько объявлений и выполняет ненужную проверку блоков, даже если они пересылают только лучший блок, который они видели до сих пор на заданной высоте. Как горняки узнают, когда им следует перейти на следующую высоту? Как они узнают, что уже видели лучший блок на высоте? Реорги происходили постоянно. Если майнеры постоянно переключают предыдущий блок своих шаблонов блоков для обновления до последнего состояния, они будут почти полностью добывать блоки-кандидаты, которые не будут совместимы с окончательной лучшей цепочкой. Большая часть доказательства работы будет полностью потрачена впустую и никак не повлияет на безопасность сети. Кроме того, нагрузка на полосу пропускания в сети резко возрастет, чтобы сплетничать обо всех блоках.
В частности, майнеры с большей долей хеш-мощности теперь имеют всевозможные дополнительные возможности для атаки на предыдущий блок, а не для продвижения вперед, например, эгоистичный майнинг и атаки Финни становятся проще. Избавление от трудности затормозит продвижение блокчейна и сделает ненадежными даже множественные подтверждения.
genesis_time + 10 mins * block_count
. Узлы просто транслируют блоки, как обычно, и выбирают цепочку с наибольшей работой.Ключевым моментом дизайна Биткойн является создание системы, которая обеспечивает надежную запись транзакций без какой-либо центральной координации или арбитра . Вместо этого Биткойн представляет собой распределенную систему, в которой консенсус достигается с использованием «алгоритма консенсуса», который может неоднократно оцениваться каждым узлом в сети.
Поскольку Биткойн работает сегодня, цель «периода блокировки» четко определена и согласована всеми узлами. Узел может проверить, является ли определенный блок допустимым решением, используя только знания из цепочки (т. е. целевую сложность), не полагаясь на какие-либо часы.
В системе, которую вы предлагаете, вы не можете решить, видели ли вы «лучший блок 10-минутного промежутка времени», просто взглянув на блок. Это означает, что вы не знаете, является ли этот блок действительным блоком, не зная всех других кандидатов. Следствием этого является то, что блок, который вы считали действительным, может стать недействительным, когда появится блок с более низким хэшем. Это то, что не может произойти по действующей схеме, и имеет драматические последствия. Сегодня блок, который считается действительным, можно безопасно майнить, поскольку ожидается, что работа, необходимая для опережения действительного блока, будет примерно такой же, как и для продолжения этого блока. В вашей схеме нужно просто найти лучший блок, чтобы сделать ранее принятое решение недействительным , и вы уничтожаете работу, основанную на этом теперь недействительном блоке».
Поэтому, когда вы начинаете майнить блок, вы должны быть уверены, что знаете действительное решение, и что это решение останется действительным . Обычный подход к вызову — это центральный арбитр, который собирает кандидатов и решает, какой блок выбрать, и закрепляет это решение навсегда. Как я уже говорил во введении, все, что зависит от центральной надежной службы, не соответствует основной цели Биткойн.
Две потенциальные проблемы с этой идеей, несколько связанные.
Стимулы майнинга будут колебаться в течение 10-минутного периода в зависимости от сложности текущего блока «кандидат». Если он выше ожидаемого, майнеры будут мотивированы прекратить добычу до начала следующего периода. В крайнем случае может случиться так, что все майнеры прекратят добычу до конца периода, потому что вероятность майнинга канонического блока делает его невыгодным для всех майнеров.
В начале каждого 10-минутного периода ретрансляционная сеть будет заполнена блоками «кандидатов». Поскольку текущий лучший блок для нового периода, скорее всего, будет иметь относительно низкую сложность хеширования, многие новые лучшие блоки генерируются в быстрой последовательности, и это может перегрузить узлы ретрансляции. Это может повлиять как на пропускную способность сети (прием блоков), так и на ЦП (проверка блоков по мере их поступления).
Существующая схема сложности майнинга биткойнов не страдает от этих проблем, потому что ожидаемая скорость генерации новых блоков постоянна.
Сложность была разработана Сатоши, чтобы сбалансировать сеть и гарантировать равный доступ для новых пиров, не позволяя злоумышленникам контролировать сеть, фильтровать транзакции и слишком легко получать сгенерированные монеты.
PoW — это математическое доказательство того, что кто-то потратил ресурсы для получения сгенерированных монет. Если бы не PoW, организованная организация с большим количеством ресурсов, например, ботнет или интернет-провайдер, рассылала бы по сети спам транзакциями, которые вызывают у них интерес.
В частности, для более крупных транзакций (1) нам нужно быть особо уверенными в том, что Алиса (злонамеренный транжира) не выдает транзакцию Бобу, который продает товары, а затем спамит сеть транзакцией торговцу Чарли или себе мошеннику Бобу. .
Учтите, что Биткойн полностью децентрализован, а распределенные системы страдают от концепции времени, которая не является абсолютной. Если у вас есть вопросы по этому поводу, вы должны опубликовать их в SW Engineering. Я просто скажу: «без центра сертификации вы можете хранить сообщение вечно». А Биткойн отказывается от центров сертификации, которые могут быть взломаны/подкуплены/вынуждены правительством и т. д.
Сатоши нужно было спроектировать систему, чтобы последовательные транзакции нельзя было (так легко) переписать (2).
Предположим, что узлы Биткойн только что приняли блок с наибольшим PoW каждые 10 минут.
Сама проблема: смотреть на это не с точки зрения всей системы. Посмотрите на это с точки зрения моего клиента Bitcoin-qt, загружающегося прямо сейчас из пустоты.
Как мой клиент может быть уверен, что никто не сохраняет блоки ? Как мой клиент может быть уверен в размере сети, судя по вводу других вредоносных пиров?
Сатоши ожидал, что сеть будет расти, а вместе с ней и вычислительная мощность. С большим количеством узлов майнинга большее количество блоков достигнет порога сложности менее чем за 10 минут.
С точки зрения одинокого узла , который является самой концепцией одноранговых сетей, цель состоит не в том, чтобы идентифицировать блок с наибольшей сложностью, что было бы трудно, если бы одноранговые узлы пытались скрыть информацию, а в том, чтобы искать самый длинный блок . цепь
Принцип самой длинной цепочки не мешает Алисе полностью переписать транзакцию. Это делает его настолько дорогим, что, по крайней мере, для продуктовых покупок, лучше следовать правилам, чем обманывать.
И это та самая причина, по которой пиры требуют 3 или более подтверждений, чтобы считать транзакцию окончательной .
(1) Биткойн был разработан как для покупки продуктов, так и для покупки недвижимости. Конечно, это не такая потеря, как двойная трата в бакалейной лавке.
(2) Перезапись транзакции в рамках блокчейна означает, что если транзакция произошла в блоке 100
, замена каждого блока с на 100
на 1 на 1current
100
current
Майя Виктор
Кайус Джард
Майя Виктор
1 / block_hash
, которая является оценкой того, сколько одноразовых номеров было предпринято для создания этого блока. Затем сумма всех хэшей блоков до корня является оценкой этой конкретной цепочки. Узлы просто получают блоки и выбирают цепочку с наибольшим количеством очков.Кайус Джард
Майя Виктор
Кайус Джард
Майя Виктор
Майкл Керчер
Майя Виктор
Марч