РЕДАКТИРОВАТЬ В вопросах по ссылке есть более четкое описание некоторых частей проблемы.
Если стоимость транзакции намного превышает плату за добычу 10 новых блоков, как можно доверять этой транзакции?
Чтобы подробнее. Если я плохой мальчик и плачу криптовалютой с доказательством работы крупную сумму. Большой означает, что значение намного выше, чем плата за добычу 10 новых блоков. После этого я выжидаю некоторое время — например, столько, чтобы в промежутке было добыто 10 новых блоков — чтобы все думали, что транзакция верна. Затем я даю майнерам половину стоимости моей транзакции, чтобы они создали новую цепочку без моей транзакции. Поскольку половина стоимости моей транзакции — это очень много, а майнеры эгоистичны, они создадут новую цепочку, чтобы таким образом получить больше оплаты.
Есть ли какое-то решение для таких атак при построении любой криптовалюты, работающей с доказательством работы?
Единственное решение, которое я вижу, заключается в том, что мы доверяем только тем значениям транзакций, которые сопоставимы с затратами на майнинг. Но тогда криптовалюта очень неэффективна.
Я думаю, что вы описываете атаку 51%, но с третьей стороной, которая не является майнером, что стимулирует «плохое поведение» майнера. Даже при взятке вне блокчейна вам потребуется 51%+ майнеров, чтобы эта атака сработала (иначе «исходная цепочка» всегда будет опережать «подкупленную цепочку»).
Итак, если бы «эгоистичный» майнер захотел провести эту атаку, я думаю, для него было бы более разумно сделать это для своей собственной транзакции, а не для кого-то другого. Проведение этой атаки с участием третьей стороны только увеличивает риск для майнера (а вдруг третья сторона не даст взятку? и т.д.). Я думаю, что майнеру логичнее просто провести атаку самостоятельно: отправить 1000 btc на биржу, конвертировать в альткоин, вывести, а затем откатить цепочку btc, чтобы удалить транзакцию, отправившую монеты на биржу.
Есть причина, по которой такого рода атак не было: майнеры считают их менее прибыльными в долгосрочной перспективе.
Давайте разыграем это, предположив, что вознаграждение за блок плюс комиссия составляют в среднем 15 биткойнов. Таким образом, 10 блоков будут стоить около 150 биткойнов.
Атака №1 — поощрение одной транзакцией:
Итог: этот метод атаки не сработает, так как форк будет заброшен.
Атака № 2 — поощрение за несколько транзакций:
Итог: На бумаге этот метод атаки выгоден майнерам и Алисе. Однако на практике эта атака по-прежнему не работает по нескольким причинам:
Таким образом, участие в такой атаке не отвечает долгосрочным интересам майнеров.
Это сработает только в том случае, если большинство майнеров захотят, чтобы биткойн потерпел неудачу, а в этом случае у биткойна гораздо большие проблемы.
Атака № 3 — взятка без комиссии за транзакцию:
Технически это дешевле, чем атака № 2, но требует участия более 50% майнеров в мире, поэтому усилия по координации огромны. Это связано с тем, что все участвующие майнеры должны координировать свое программное обеспечение для майнинга, чтобы иметь возможность играть по этим правилам. Кроме того, в зависимости от количества майнеров/майнинговых пулов, которые не участвуют, это увеличит количество блоков, которые Алисе нужно будет разместить. Например, если 30% майнеров не участвуют, к тому времени, когда 10-й блок в разветвленной цепочке развернется, в исходной цепочке будет около 13 блоков.
Это снова будет иметь тот же сценарий, когда станет общеизвестно, что майнеры переписали историю и подорвали (без каламбура) блокчейн. Даже если транзакция Алисы была вне цепочки, она все равно нарушит основной принцип безопасности транзакций глубиной 6 блоков и, таким образом, обесценит биткойн.
Опять же, это могло бы сработать только в том случае, если бы большинство майнеров хотели, чтобы биткойн потерпел неудачу.
Я думаю, у вас есть веская точка зрения. Допустим, я контролирую 50% добычи. Сколько я бы согласился, чтобы начать новый форк с 10 блоков назад?
При 50% добычи я получу примерно половину блоков или 5 из 10 только что добытых блоков. Попросить меня раскошелиться на 10 блоков назад означало бы, что я отказался бы от оплаты этих 5 блоков.
Тогда вопрос в том, сколько времени мне потребуется, чтобы догнать реальную цепочку блоков с отставанием в 10 блоков. При 50% майнинга я бы подбрасывал монету, пытаясь получить на 10 больше орла, чем решки. В среднем это занимает некоторое количество бросков, скажем, N. Таким образом, мне пришлось бы в среднем добывать N дополнительных блоков, чтобы догнать текущую цепочку.
Итак, если вы заплатите мне больше, чем N+5 блоков, то в среднем мне будет выгоднее запустить цепочку для вас, чем продолжать текущую цепочку.
Однако это среднее значение, а распределение имеет длинный хвост, то есть могут потребоваться сотни блоков, пока новая цепочка не станет длиннее текущей. Есть несколько способов справиться с этим риском:
1) Я беру с вас плату за каждый блок, а вы платите мне столько, сколько хотите, чтобы я майнил для вас. Нет никаких обещаний, что я когда-нибудь догоню текущую цепочку, но я буду продолжать попытки, пока вы будете платить больше, чем я зарабатывал бы на законном майнинге.
2) Я беру с вас предоплату и беру на себя риск. В этом случае я на крючке, чтобы поймать вас в существующей цепочке. Я бы, вероятно, взимал большую премию, основываясь на возможности отвлечь мои ресурсы для майнинга на долгое время. Кроме того, возможно, я никогда не наверстаю упущенное, поэтому я бы, вероятно, добавил пункт о возмещении, чтобы сократить свои потери, если это выглядит безнадежно.
Идея о том, что я буду майнить на законных основаниях, потому что хочу, чтобы Биткойн преуспел, имеет некоторую долю правды, потому что майнинг требует определенных затрат на установку, и я хочу вернуть эти инвестиции, но за правильную цену я, вероятно, рискнул бы убить Биткойн. . Этот риск отражен в надбавке, которую я взимаю с вас сверх моего обычного дохода от майнинга.
Подставив некоторые цифры, я буду использовать предположение Briguy37 о 15 BTC за добытый блок, и давайте предположим, что N равно 20, а моя премия составляет 100%. Затем я бы взял 25 * 15 * 2 = 750 BTC, чтобы сделать этот форк.
Мы можем спорить о точных цифрах, но главное, похоже, заключается в том, о чем вы говорили, а именно о том, что крупные транзакции не так надежны, как более мелкие.
Я бы сделал еще один шаг вперед и сказал бы, что некоторые более мелкие транзакции также могут быть ненадежными. Предположим, я согласен заплатить 100 людям по 10 BTC каждому. Это 1000 BTC от меня, но каждая транзакция стоит всего 10 BTC, насколько известно получателям. если я рассчитываю их все одинаково, стоимость их отмены будет такой же, как если бы они были одной транзакцией.
крораф
пользователь65934
крораф
пользователь65934
крораф
пользователь65934
крораф
Питер Уилле
пользователь65934