Что такое «подтверждения» биткойнов?

Когда я получаю биткойны, я вижу определенное количество «подтверждений» в клиенте. Что это значит? Почему большинство сайтов заставляют меня ждать 6 «подтверждений», прежде чем покупка будет совершена?

Ответы (2)

Биткойн-подтверждения представляют собой количество блоков в цепочке блоков, которые были приняты сетью с момента блока, включающего транзакцию.

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

При нулевом или даже одном подтверждении очень возможна двойная трата, поскольку следующий решенный блок может подтвердить другой блок, а не тот, в котором есть транзакция. Этот другой блок показывает, что монеты тратятся в другом месте. Вероятность того, что произошла двойная трата, экспоненциально уменьшается с каждым подтверждением.

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

Для большинства транзакций общепринято, что 6 подтверждений представляют собой достаточную безопасность, чтобы убедиться, что переход действителен.

Возможно, вам следует различать «вероятность 50/50, что возможны двойные траты» и «вероятность 50/50, что двойные траты произошли», поскольку многие люди могут принять первое за последнее.
Этот ответ можно было бы улучшить, указав, что вероятность двойной траты не 50/50. Он основан на проценте вычислительной мощности злоумышленника (при условии, что он меньше 50%). Таким образом, если у злоумышленника есть 10% вычислительной мощности, у него есть 10%-й шанс реверсировать один блок. Примерно 0,1 ^ 2 = 1% вероятность реверсирования двух блоков и т. д. Если у злоумышленника есть 51% вычислительной мощности, то это неприменимо, поскольку требуется бесконечное количество блоков, чтобы гарантировать, что транзакция не может быть реверсирована и таким образом, необходимы альтернативные средства для защиты цепочки блоков.
Большая часть этого поста лаконично отвечает на главный вопрос, но раздел 50/50 совершенно неверен. Было бы здорово, если бы это можно было улучшить.
@Murch комментарий 50/50 намеренно не учитывает скорость хеширования, потому что это неизвестная переменная. Вы НЕ ЗНАЕТЕ скорость хеширования, которую *возможный* злоумышленник *может* использовать при рассмотрении подтверждений, но я согласен, что это не ясно объяснено, поэтому я уточню ответ. Это не "совершенно ложно", просто неясно.
@JoshuaKolden Извините, «совершенно ложно» было действительно неправильным выражением. Я имел в виду следующее: возможно, выражение «50/50» используется по-разному в разговорной речи, но чтение «около 50/50 шансов» для меня подразумевало бы равные шансы (50%/50% из 100%) для каждого случая. Кто-то на стадии знания спрашивает: «Что такое подтверждение?» это могло бы звучать так, как будто двойные траты происходят часто, а также гораздо более вероятно, что они преуспеют, чем на самом деле, и что всегда следует ждать шести подтверждений, чтобы безопасно получать платежи. Параграфы предполагают большую точность, чем позволяет описанный сценарий.

Если вы не понимаете основной концепции, представьте на секунду, что сбой в сети разделил сеть Биткойн пополам. Я мог бы отправить одну транзакцию, дающую 30 биткойнов Абелю, одной половине, и одну транзакцию, дающую те же 30 биткойнов Фреду, другой половине. Каждая половина примет эту транзакцию, и пока две половины не соединятся снова, вы не будете знать, какая транзакция будет выполнена завтра.

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

Сеть всегда пытается удлинить самую длинную цепочку, и в конечном итоге какая-то цепочка победит. Чем глубже транзакция находится в цепочке, тем выше шанс ее победы, потому что сеть очень старается не дублировать усилия. (Поскольку майнеры хотят, чтобы их транзакции coinbase выиграли, все они очень стараются расширить цепочку, которая, скорее всего, выиграет, что гарантирует, что она действительно выиграет.)

По сути, чем больше подтверждений, тем выше вероятность того, что транзакция навсегда останется в общедоступной хеш-цепочке, а не конфликтующая транзакция, если таковая была. При 6 подтверждениях, возможно, одно из миллиарда, что транзакция не будет постоянной — и это если отправитель пытается провести атаку двойной траты.

Мне нравится этот пример, спасибо :)
поэтому, если для добычи нового блока требуется около 10 минут, то 6 подтверждений означают 60 минут.