Содержание
- Понимание блокчейна
- Работа с двойными расходами
- Доказательство работы и «майнинг»
Одной из основных проблем любого разработчика криптовалюты является проблема двойных расходов. Это относится к частоте, когда человек тратит остаток этой криптовалюты более одного раза, эффективно создавая несоответствие между отчетом о расходах и объемом доступной этой криптовалюты, а также способом ее распределения.
Проблема двойных расходов - проблема, которой нет у наличных денег; если вы заплатите за бутерброд счетом в 10 долларов, передав этот счет изготовителю бутерброда, вы не сможете развернуться и потратить те же 10 долларов в другом месте. Однако транзакция с использованием цифровой валюты, такой как биткойн, происходит исключительно в цифровой форме. Это означает, что можно скопировать детали транзакции и ретранслировать ее так, чтобы один и тот же BTC мог быть потрачен несколько раз одним владельцем. Ниже мы рассмотрим, как разработчики криптовалюты застраховали, что двойные расходы невозможны.
Ключевые вынос
- Техническая проблема, возникающая в связи с понятием цифровой валюты, заключается в том, что кто-то может дублировать цифровые деньги и тратить их одновременно в двух или более местах. Эта проблема «двойных расходов» предотвращается в криптовалютах на основе блокчейна, таких как Биткойн, с помощью с использованием механизма консенсуса, известного как доказательство работы (PoW). Этот PoW выполняется децентрализованной сетью «майнеров», которые не только обеспечивают верность прошлых транзакций в бухгалтерской книге блокчейна, но также обнаруживают и предотвращают двойные расходы.,
Понимание блокчейна
Блокчейн, поддерживающий цифровую валюту, такую как биткойн, не способен сам по себе предотвратить двойные расходы. Скорее, все различные транзакции, включающие соответствующую криптовалюту, публикуются в блокчейне, где они отдельно проверяются и защищаются процессом подтверждения. В случае биткойнов и многих других криптовалют транзакции, которые были подтверждены таким образом, становятся необратимыми; они публикуются публично и сохраняются на постоянной основе.
Биткойн был первой крупной цифровой валютой, решившей проблему двойных расходов. Он сделал это, внедрив этот механизм подтверждения и поддерживая общую универсальную систему бухгалтерских книг. Таким образом, блокчейн биткойнов сохраняет записи транзакций с метками времени, восходящих к основанию криптовалюты в 2009 году.
С точки зрения биткойнов, «блок» - это файл постоянно записанных данных. Все недавние транзакции записываются в блоки, очень похоже на книгу операций на бирже. Информация из блоков добавляется в книгу каждые несколько минут; все узлы в сети поддерживают копию книги блокчейна. Пользователи могут перемещаться по блокчейну для биткойнов и просматривать транзакции только с точки зрения количества. Сведения о личности покупателя и продавца в любой транзакции защищены высокоуровневым шифрованием, которое также защищает бухгалтерскую книгу от вмешательства внешних источников. Когда книга блокчейна обновляется, то же самое происходит и со всеми биткойн-кошельками.
Работа с двойными расходами
Представьте, что у вас есть 1 BTC, и вы пытаетесь потратить его дважды на две отдельные транзакции. Вы можете попытаться сделать это, отправив один и тот же BTC на два отдельных адреса кошелька биткойн. Обе эти транзакции затем перейдут в пул неподтвержденных транзакций. Первая транзакция будет подтверждена с помощью механизма подтверждения, а затем проверена в последующем блоке. Однако вторая транзакция будет признана недействительной в процессе подтверждения и не будет проверена. Если обе транзакции извлекаются из пула для подтверждения одновременно, транзакция с наибольшим количеством подтверждений будет включена в цепочку блоков, а другая будет отброшена.
Хотя это эффективно решает проблему двойных расходов, не без проблем. Например, предполагаемый получатель второй (неудачной) транзакции не будет участвовать в самой неудачной транзакции, и все же этот человек не получит биткойн, который он или она ожидали. Многие продавцы ожидают как минимум 6 подтверждений транзакции (это означает, что 6 последующих блоков транзакций были добавлены в цепочку блоков после рассматриваемой транзакции). В этот момент продавец может смело предположить, что транзакция действительна.
В этой системе остаются и другие уязвимости, которые могут привести к двойным атакам. Например, если злоумышленник каким-то образом может контролировать как минимум 51% мощности сети, он или она может совершить двойные расходы. Если злоумышленник каким-то образом сможет получить контроль над этой вычислительной мощью, он или она сможет отменить транзакции и создать отдельный закрытый блокчейн. Тем не менее, быстрый рост биткойнов практически гарантировал, что этот тип атаки невозможен. (Подробнее см. Остерегайтесь этих пяти мошеннических биткойнов)
Доказательство работы и объяснение «майнинга»
Теперь давайте немного более технически. Пользователи могут обнаружить несанкционированный доступ, такой как попытка двойного расходования на практике, с помощью хешей, длинных цепочек чисел, которые служат доказательством работы (PoW). Поместите данный набор данных через хеш-функцию (биткойн использует SHA-256), и он будет генерировать только один хеш. Однако из-за «лавинообразного эффекта» даже незначительное изменение любой части исходных данных приведет к совершенно неузнаваемому хэшу. Каким бы ни был размер исходного набора данных, хэш, сгенерированный данной функцией, будет одинаковой длины. Хеш является односторонней функцией: ее нельзя использовать для получения исходных данных, только для проверки соответствия данных, сгенерировавших хеш, исходным данным.
Создание любого хэша для набора транзакций в биткойнах было бы тривиально для современного компьютера, поэтому, чтобы превратить процесс в «работу», сеть биткойнов устанавливает определенный уровень «сложности». Этот параметр настраивается таким образом, чтобы новый блок "добывался" - добавлялся в цепочку блоков путем создания действительного хэша - примерно каждые 10 минут. Задание сложности достигается путем установления «цели» для хэша: чем ниже цель, тем меньше набор допустимых хэшей и тем сложнее их сгенерировать. На практике это означает, что хеш начинается с длинной строки нулей: например, хеш для блока # 429818 равен 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Этот блок содержит 2 012 транзакций, включающих чуть более 1000 биткойнов, а также заголовок предыдущего блока. Если бы пользователь изменил одну сумму транзакции на 0, 0001 биткойн, результирующий хэш был бы неузнаваем, и сеть отклонила бы мошенничество.
Поскольку данный набор данных может генерировать только один хэш, как майнеры могут убедиться, что они генерируют хэш ниже цели? Они изменяют ввод, добавляя целое число, называемое nonce («число, использованное один раз»). Как только найден действительный хеш, он транслируется в сеть, и блок добавляется в цепочку блоков.
Майнинг - это соревновательный процесс, но это скорее лотерея, чем гонка. В среднем, кто-то генерирует приемлемое доказательство работы каждые десять минут, но кто это будет, никто не знает. Майнеры объединяются, чтобы увеличить свои шансы на майнинг-блоки, что генерирует комиссионные за транзакции и, в течение ограниченного времени, вознаграждение за вновь созданные биткойны.
Доказательство работы крайне затрудняет изменение любого аспекта блокчейна, поскольку такое изменение потребует повторного майнинга всех последующих блоков. Это также затрудняет монополизацию вычислительной мощности сети пользователем или пулом пользователей, поскольку оборудование и мощность, необходимые для выполнения хэш-функций, дороги.
