Цель этой статьи – объяснить, как работает Биткоин под капотом, чтобы дать более четкое представление о том, что на самом деле означает получить, отправить или «майнить» биткойны. Если вы впервые знакомитесь с Биткоином и являетесь новичком в сфере криптовалют, рекомендуем ознакомиться с нашим словарем терминов и статье о том, что такое биткоин простыми словами + инфографика:
Что такое биткоин на высоком уровне?
По сути, Bitcoin – это просто цифровой файл, в котором перечислены счета и деньги. Этот файл можно сравнить с бухгалтерской книгой – Гроссбух (журнал учета). Только в отличие от обычного журнала, который доступен определенному кругу лиц, копия цифрового файла поддерживается на каждом компьютере участника в сети Bitcoin и любой может просмотреть записи. Тут стоит уточнить, для того чтобы пользоваться биткоином и получить возможность отправки и получения денег вам необязательно хранить и вести этот цифровой журнал у себя на компьютере, это для людей, которые хотят помочь поддерживать систему.
Эти цифры и счета не представляют ничего в физическом мире, они имеют ценность только потому, что люди готовы торговать реальными товарами и услугами для большего числа в своих счетах и считают, что другие будут делать то же самое. Цифры имеют ценность только потому, что мы считаем, что они имеют ценность, как и любая другая фиатная (fiat) валюта.
Чтобы отправить деньги, вы сообщаете сети, что баланс в вашей учетной записи должен опуститься на определенную сумму, а на счету получателя увеличится на эту сумму. Узлы или компьютеры в сети Bitcoin копируют эту транзакцию к своей копии журнала, а затем передают транзакцию другим узлам, прибавьте к этому цифровую защиту на основе криптографии и это все, что есть – система, которая позволяет группе компьютеров поддерживать единый реестр (журнал).
Как видно на рисунке, Анна хочет отправить биткоины Егору, она транслирует сообщение в сеть, в котором говорит, что количество биткоинов в её учетной записи должно снизиться на 5 BTC, а баланс счета Егора должен увеличиться на то же количество.
Хотя это может звучать подобно тому, как банк ведет регистр, тот факт, что регистр ведется группой, а не одной организацией, вносит ряд важных различий. Во-первых, в отличие от банка, где вы знаете только о своих собственных транзакциях, в Биткойне все знают о транзакциях всех остальных.
Кроме того, хотя вы можете доверять своему банку или, по крайней мере, можете подать в суд на него, если что-то пойдет не так, в Биткойне вы имеете дело с анонимными незнакомцами, поэтому Вы не должны доверять никому. Система Bitcoin удивительно разработана так, что никакого доверия не требуется – специальные математические функции защищают каждый аспект системы.
В остальной части этой статьи подробно объясняется, как Биткоин позволяет такой группе незнакомцев управлять финансовыми транзакциями друг друга.
Как отправляются деньги в Биткоин?
Вернемся к примеру выше, на базовом уровне Анна, посылая деньги Егору, транслирует сообщение в системе со счетами и суммой: “Отправить 5.0 BTC от Анны к Егору”.
Каждый узел, который получает сообщение, обновляет свою копию журнала, а затем передает сообщение о транзакции дальше. Но как узлы могут убедиться, что запрос является подлинным, что только законный владелец отправил сообщение?
Правила Биткойна требуют своеобразный пароль для разблокировки и расходования средств, и этот пароль называется «цифровой подписью». Как настоящая рукописная подпись, цифровая доказывает подлинность сообщения, но делает это с помощью математического алгоритма, который предотвращает копирование или подделку в цифровом пространстве.
В отличие от простого статичного пароля, для каждой транзакции требуется совершенно новая уникальная цифровая подпись. Имейте в виду, что в Биткойне вы имеете дело с совершенно незнакомыми людьми, поэтому никогда не следует раскрывать пароль, который можно было бы скопировать и использовать другим.
Цифровая подпись работает, используя два разных (но связанных между собой) ключа, «закрытый ключ» (private key) для создания подписи и «открытый ключ» (public key), который могут использовать для проверки другие участники системы.
Представьте, что закрытый ключ это истинный пароль, а подпись в качестве посредника, которая доказывает, что у вас есть пароль, не требуя от вас его раскрытия.
Публичный ключ на самом деле служит адресом для получения биткойнов, поэтому, отправляя кому-то деньги, вы в действительности отправляете их на публичный ключ.
Что бы потратить деньги нужно доказать, что вы являетесь истинным владельцем адреса публичного ключа, по которому были отправлены биткоины. Вы подтверждаете это путем создания цифровой подписи в сообщении о транзакции и вашего приватного ключа. Другие узлы в сети могут использовать эту подпись с другой целью, а именно – убедиться, что она соответствует вашему публичному ключу. С помощью математического алгоритма цифровой подписи, другие участники в состоянии подтвердить, что отправитель владеет приватным ключом, при этом, не видя сам приватный ключ.
Важно отметить, поскольку подпись зависит от сообщения, она будет различной для каждой отдельно взятой транзакции, и поэтому не может быть использована повторно кем-либо для любой другой сделки. Эта зависимость от сообщения так же означает, что никто не может модифицировать сообщение при его прохождении по сети, так как любые изменения в сообщении сделают эту подпись недействительной.
Сам алгоритм вычислений довольно сложный и объяснение займет много времени, но данные темы легко гуглятся по запросам:
- Алгоритм цифровой подписи на эллиптической кривой или ECDSA
- Односторонняя функция с потайным входом
Так же рекомендуем отличную статью на хабре: Доступно о криптографии на эллиптических кривых
Детально о биткоин транзакциях
Мы уже выяснили, что с помощью цифровых подписей подтверждается подлинность транзакций отправителя, но я чрезмерно упростил, как узлы в сети отслеживают балансы на счетах. На самом деле баланс никто не ведет. Если не вести учет денег на счетах, тогда как знать, что у отправителя достаточно биткоинов, чтобы совершить транзакцию? Вместо счетов и балансов, система Биткоин использует ссылки на предыдущие транзакции. Рассмотрим это на примере:
Что бы отправить Егору 5 биткоинов, Анна должна сослаться на предыдущие транзакции, где она получила 5 или более биткоинов. Эти ссылки на транзакции называются входами (inputs). При проверке транзакций, другие узлы сети проверяют вхождение сумм, чтобы убедиться, что получателем была именно Анна и сумма входов равна 5 или более Bitcoin.
Рассмотрим реальную структуру запроса транзакций, чтобы увидеть, как это функционирует на практике. Ниже на рисунке, транзакция ссылается на 4 входа на общую сумму 21.9917 биткоинов. Обратите внимание на две строки в таблице “Выходы”. Первая строка выхода, на самом деле возвращается отправителю, как сдача с транзакции. Простое правило гласит, что (вход) при транзакции должен быть использован полностью, поэтому, если вы пытаетесь отправить сумму, которая точно не соответствует одному из ваших входов, вам нужно отправить любую оставшуюся сумму обратно себе. Вы так же можете детально просмотреть разные сделки в сети Биткоин на сайте blockexplorer.
Благодаря системе ссылок на входы, владение биткойнами передается в виде своеобразной цепочки, где действительность каждой транзакции зависит от предыдущих транзакций.
Можно ли доверять предыдущим транзакциям? Нельзя, вы должны проверять их входы. Фактически, когда вы впервые устанавливаете официальное программное обеспечение Биткойн-кошелька, оно загружает каждую транзакцию, когда-либо сделанную, и проверяет действительность каждой из них вплоть до самой первой транзакции. Повторюсь, что вы имеете дело с совершенно незнакомыми людьми, поэтому важно проверить каждую транзакцию самостоятельно. Этот процесс может занять более 24 часов, но это нужно сделать лишь один раз.
Как только транзакция была использована один раз, она считается израсходованной и не может быть использована снова. В противном случае кто-то может дважды потратить вход, сославшись на него в нескольких транзакциях, результатом чего станут многократные транзакции.
При подтверждении правильности транзакций, в дополнение к другим способам проверки, узлы так же проверяют, что входная сумма не является уже потраченной. Уточним, что по каждому входу, узлы проверяют все когда-либо проведенные транзакции, чтобы убедиться, что входящая сумма еще не использовалась. Хотя это может показаться трудоемким, так как в настоящее время существует более 20 миллионов транзакций, это делается быстро с помощью индексирования неизрасходованных транзакций.
Таким образом, вместо реестра балансов, Биткойн-узлы отслеживают гигантский список транзакций. Владение криптовалютой биткоин означает, что в этом списке есть транзакции, которые указывают на ваше имя и не были потрачены, или, другими словами, не использованы в качестве входных данных в других транзакциях.
Как следствие этой структуры владения, чтобы узнать свой баланс нужно просмотреть все транзакции в истории и сложить все свои неизрасходованные входы. Ещё одно интересное свойство транзакций в том, что система поддерживает более сложные их виды, чем просто пересылка денег между счетами.
На самом деле выходы больше похожи на требующие решения головоломки, а не на простые “адреса”. В отличие от денег, отправка биткойнов больше похожа на то, чтобы положить их в общественный шкафчик и прикрепить математическую головоломку, которая должна быть решена, чтобы открыть ее.
Головоломка определяется с помощью специального скриптового языка сценариев (scripting language), и хотя она обычно разработана таким образом, что решить ее может только один владелец публичного ключа, возможны и более сложные условия. Например, для escrow транзакций может потребоваться две из трех возможных подписей. Другой пример, это самая первая Bitcoin транзакция в истории, которую мог решить любой.
В то время как большая часть программ и кошельков Bitcoin скрывает от вас этот слой скриптов, вы можете написать свое собственное программное обеспечение со своими условиями, но это может оказаться рискованным. Более 2600 биткоинов было утеряно в одной связке транзакций из-за неправильного адреса. Это подчеркивает важное свойство Биткойна. Поскольку нет банка или кредитной компании, к которой вы можете обратиться, любые ошибки “ошибки пользователя” могут привести к безвозвратной потере биткойнов, причём не только с вашего собственного счета, но и из экономики Биткоин в целом. Если вы потеряете свой секретный ключ, все деньги на соответствующем публичном ключе пропадут навсегда. Поскольку люди, скорее всего, будут терять личные ключи из-за сбоев жесткого диска или недостаточного резервного копирования, криптовалюта Биткоин в конечном итоге будет дефляционной.
Анонимность в Биткойне
Прежде чем объяснить заключительную часть, в которой раскрывается защита Биткоина, а именно майнинг и работа блокчейна, поговорим немного об анонимности в Биткойне.
Если Вы получаете доступ к Биткойну через сеть TOR, которая скрывает Ваш IP-адрес, Вы можете использовать Биткойн, не раскрывая ничего, кроме вашего публичного ключа. И чтобы избежать опасности, что кто-то может связать все ваши транзакции воедино (помните, что они все публично хранятся на каждом компьютере участников), вы можете генерировать новый публичный ключ для каждой входящей транзакции. Впрочем, есть шанс неумышленно связать эти публичные ключи вместе.
В транзакции, показанной ранее, в качестве источников использовались 4 ”входных” транзакций, и, несмотря на то, что все эти входные данные были отправлены на разные адреса, все они стали связаны в этой транзакции. Отправитель доказал, что он владел всеми адресами, поставив цифровую подпись, чтобы разблокировать каждый из них.
Исследователи использовали эти ссылки для изучения поведения пользователей Bitcoin. Смотрите “Количественный Анализ полного графа биткоин-транзакций” от Dorit Ron и Adi Shamir.
Вы можете подумать, что создание публичного ключа “принимающий адрес” потенциально может создать ссылку на вашу истинную личность, но даже этот шаг является анонимным, и удивительно, это можно сделать без подключения к сети. Вы просто нажимаете кнопку в программном обеспечении Вашего кошелька, и он случайным образом сгенерирует новую пару из приватного и публичного ключа.
Поскольку существует так много разных возможных адресов, нет причин даже проверять, есть ли у кого-то еще этот ключ (сравните это с созданием адреса электронной почты, где почти все варианты, что вы можете придумать, были заняты). На самом деле, если вы действительно угадали чей-то ключ, у вас будет доступ ко всем деньгам этого пользователя!
Это общее количество возможных Биткоин адресов:
1461501637330902918203684832716283019655932542976 (1.46 x 10^48 или 2^160)
Эти большие числа защищают систему Bitcoin несколькими способами, поэтому полезно попытаться оценить, насколько они велики. По некоторым оценкам, количества песчинок во всем мире составляет около 7,5 x 10^18, или 7,500,000,000,000,000,000. Теперь представьте, что каждая песчинка представляла собой целую другую землю с тем же количеством песчинок, и это все еще намного меньше, чем возможное количество Биткойн-адресов.
Двойные расходы в Биткойне (Double-spending)
Подведем итоги, что мы знаем о безопасности Биткоина:
- Проверяя цифровую подпись, мы знаем, что только истинный владелец мог создать сообщение транзакции.
- Чтобы убедиться, что у отправителя действительно есть деньги, чтобы потратить, мы также проверяем каждый указанный вход, убедившись, что он неизрасходованный.
Но есть еще одна большая дыра в безопасности системы, которая может сделать ненадежной проверку “неизрасходованных средств”, и это связано с порядком транзакций. Учитывая, что транзакции передаются по сети от узла к узлу, нет никакой гарантии, что порядок, в котором вы их получаете, представляет порядок, в котором они были созданы. И Вы не должны доверять метке времени, потому что можно легко лгать о времени создания транзакции. Сравните это с централизованной системой, такой как paypal, где Центральный компьютер легко отслеживает порядок транзакций.
Таким образом, у вас нет возможности сказать, была ли одна транзакция раньше другой, и это открывает потенциал для мошенничества. Злоумышленник, Анна может провести транзакцию отправки денег Егору за товар, дождаться, когда Егор отправит товар, а затем, ссылаясь на те же “входы” провести еще одну транзакцию и затребовать ту же входящую сумму себе обратно.
Из-за различий во времени распространения, некоторые узлы в сети получат вторую транзакцию с “Двойной тратой” перед транзакцией Егору. И когда поступит информация о транзакции Егору, она будет признана недействительной, потому что она пытается повторно использовать входные данные. Вследствие чего, Егор потеряет и товар, и деньги.
При этом возникнут сетевые разногласия, кому из участников конфликта принадлежали деньги, потому что не существует способа, чтобы доказать, какая транзакция была проведена первой. В связи с этим, необходимо, чтобы вся сеть могла согласовать порядок операций, что является весьма сложной задачей в децентрализованной системе. Решение Bitcoin – это продуманный способ как определить, так и защитить порядок с помощью своего рода математическую гонку.
Блокчейн: упорядочивание транзакций
Биткойн-система определяет порядок транзакции, размещая их в группы, называемые блоками, и связывая эти блоки вместе в цепочку блоков называемой Blockchain. Обратите внимание, что она отличается от цепочки транзакций, о которой мы говорили ранее. Блокчейн используется для упорядочивания операций, в то время как цепочка транзакций отслеживает изменение собственности.
Каждый блок имеет ссылку на предыдущий блок, и это то, что определяет следование одного блока за другим по времени. Вы можете проследить по ссылкам вплоть до самой первой группы транзакции в истории системы. Транзакции в одном блоке считаются совершенными одновременно, а транзакции, еще не вошедшие в блок, называются неподтвержденными (unconfirmed transaction) или неупорядоченными.
Любой сетевой узел может собрать группу неподтвержденных транзакций в блок и транслировать его в сеть как кандидата для создания следующего блока в цепочке. Поскольку несколько людей могут создать блоки в одно и то же время, то одновременно возникает несколько вариантов на выбор. Так как же в сети решается вопрос очередности?
Мы не можем полагаться на порядок, в котором поступают блоки, потому что, как объяснено с транзакциями выше, они могут поступать в различной очередности и в разных узлах сети. Частью решения Биткоина состоит в том, что каждый готовый блок должен содержать ответ на особую математическую задачу. Компьютеры пропускают весь текст из блока и дополнительную случайную догадку, через так называемый криптографический хеш, до тех пор, пока значение выхода не становится меньше определенного значения. Хэш-функция создает краткую сводку из произвольной длины текста, в нашем случае результатом является 32 байтовое число. На рисунке ниже, некоторые примеры использования в Bitcoin хэш-функции SHA256:
Обратите внимание на то, как сильно изменяется результат записи выхода, из-за замены восклицательного знака на точку в третьей строчке. Запись выхода полностью непредсказуема, поэтому единственный способ найти конкретное выходное значение, генерирование случайных догадок. Это очень похоже на угадывание комбинации с замком. Вам может повезти с первой догадкой, но в среднем это занимает много догадок.
На самом деле, обычному компьютеру потребуется несколько лет угадывания, чтобы решить блок. Но когда в разгадывании числа участвуют все компьютеры в сети Биткоин, решение занимает в среднем около 10 минут. Первый участник, разгадавший математическую задачу, транслирует блок и получает право, чтобы эта группа транзакций была принята в качестве следующего блока в цепочке. Случайность в математической задаче, по сути создает разброс в скорости нахождения решения, что делает маловероятным, что два человека решат ее одновременно.
Однако иногда решения для двух или более блоков могут быть найдены одновременно, и это приводит к образованию нескольких ветвей. В этом случае цепь продолжается поверх первого полученного блока. Другие, возможно, получили блоки в другом порядке, и будут надстраивать на другой блок, который они получили первым. Ничья исчезает, когда кто-то находит решение для следующего блока. Общее правило заключается в том, что все моментально переходят на самую длинную из существующих веток.
Благодаря математическим задачам, вероятность одновременно найти решение для блока является редкостью, и еще реже это случается несколько раз подряд. Конечным результатом является то, что блокчейн быстро стабилизируется, а это означает, что все согласны с порядком блоков на небольшом отрезке в конце цепи.
Двойное расходование в Блокчейн
Тот факт, что существует некоторая неопределенность в конце цепочки, имеет некоторые важные последствия для безопасности транзакций. Например, если ваша транзакция окажется в одной из более коротких ветвей, она потеряет свое место в строке в цепочке блоков. Как правило, это означает, что она просто вернется в пул неподтвержденных транзакций и будет включена в более поздний блок.
К сожалению, из-за возможного смещения транзакций возникает угроза двойной траты, для борьбы с которой, изначально и задумывалась цепь блоков. Рассмотрим, как двойная атака будет работать в описанной выше системе.
Мошенница, Анна, посылает деньги Егору. Затем Егор дожидается осуществление транзакции, чтобы получить подтверждение в цепочке блоков, а затем отправляет продукт. Помните, что сетевые узлы постоянно переключаются на более длинные ветки. Если Анна сможет сгенерировать более длинную ветвь, которая заменяет транзакцию Егора на какую-либо другую, его деньги будут уничтожены. Транзакция Егора вернется в массив неподтвержденных транзакций. Так как Анна подменила ее другой транзакцией, использующую те же входы, сетевые узлы будут рассматривать транзакцию Егора недействительной, поскольку обнаружат, что входная сумма уже потрачена.
Так как же цепочная система заказов мешает Анне обмануть Егора? Вы можете подумать, что Алиса может предварительно вычислить цепочку блоков, чтобы появиться в сети в нужное время, но математические головоломки в каждом блоке на самом деле предотвращают это. Нам нужно заглянуть немного глубже в объясненный ранее криптографический хэш, чтобы полностью понять, почему.
Защита от двойной траты в Биткоине
Как упоминалось ранее, решение блока включает в себя попытку получить криптографический хэш блока ниже определенного значения, и вы делаете это, пытаясь отгадать различные случайные числа в конце блока. После решения, хэш-выход преобразовывается в своего рода “маркер”, который однозначно идентифицирует этот блок. Если даже один символ в блоке будет изменен, хэш блока будет совершенно другим, как мы описывали выше, когда изменили последний знак в строчке.
Хэш-выход, или “маркер”, на самом деле используется в качестве ссылки на предыдущий блок. Одним из результатов этого является то, что нет способа переключить блок в середине цепочки, потому что хэш-значение для нового блока будет отличаться, а ссылка на следующий блок больше не будет указывать на него. В результате, что еще более важно, блоки нельзя решать заранее, пока не решен предыдущий блок. Предыдущая ссылка на блок является частью текста, проходящего через хэш-функцию, поэтому любые изменения в ней потребуют повторного решения.
Возвращаясь к Анне, по описанной выше причине, она не может предварительно вычислить ветку, а может только приступить к решению блоков, когда уже решен тот блок, с которого она планирует начать, и его хэш-значение известно. Поэтому, пока Егор не отгрузил товар, она является равноправным участником в вычислительной гонке с остальной сетью, то есть до тех пор, пока она вынуждена симулировать более длинную ветку. И она будет вынуждена работать наедине, так как, если Егор узнает о ее блоке с двойной тратой, очевидно, что он не отправит товар.
Последний вопрос заключается в том, сможет ли Анна опередить всех, если бы у нее был чрезвычайно быстрый компьютер или полный зал компьютеров? Даже с тысячами компьютеров её шансы выиграть гонку по решению блока крайне малы, ведь она соревнуется ни с одним компьютером, а всей сетью.
Представьте себе, что это такая лотерея. Она может управлять тысячами компьютеров или, эквивалентно, покупать тысячи лотерейных билетов, но даже тогда гораздо более вероятно, что кто-то другой останется в выйгрыше. Ей потребуется контроль половины общей вычислительной мощности во всей сети, чтобы получить 50% – ный шанс решить блок перед кем-то другим. И гораздо больше, чтобы иметь высокую вероятность первым решить нескольких блоков подряд.
Таким образом, транзакции в Блокчейн защищены математической гонкой, которая ставит злоумышленника против мощности всей остальной сети. Поскольку блоки строятся один поверх другого, транзакции в середине и начале цепи являются более безопасными. Злоумышленник, должен будет опережать всю остальную сеть в течение более длительного времени, чтобы выполнить атаку с двойной тратой и заменить несколько блоков. Таким образом, система уязвима для атаки с двойными расходами только в конце цепочки, поэтому рекомендуется подождать несколько блоков, прежде чем, считать перевод денег совершившимся.
И последние комментарии о блокчейне перед тем, как мы перейдем к последним элементам системы Биткоин. Удивительно, но ничего из вышеописанного до сих пор, не требует ни капли доверия. Когда вы получаете информацию от незнакомых людей в сети Bitcoin, можно самому проверить и убедиться, что решения блоков является правильными. И поскольку математические задачи настолько сложны, вы знаете, что нет никакого способа, с помощью которого, любой злоумышленник мог бы сгенерировать их самостоятельно. Решения являются доказательством того, что для их вычисления, потребовалась работа вычислительной мощности всей сети. Такой принцип защиты сетевых систем, так же называют доказательством выполнения работы (Proof of Work).
Майнинг и пулы майнинга
Теперь, когда мы обсудили, каким образом передаются деньги с помощью цифровой подписи и цепочки транзакций, и как порядок этих транзакций защищен в блокчейн, разберем последний вопрос: откуда берутся биткойны?
Чтобы отправлять деньги, вы должны ссылаться на предыдущую транзакцию, где вы были получателем, но как монеты попадают в сетевую собственность? Для того чтобы медленно и случайным образом генерировать и распространять монеты, награда в виде биткойнов раздается тем, кто решает блоки. Вот почему решение блоков называется майнингом, хотя его реальная цель – проверка транзакций и защита Блокчейна.
Каждые четыре года размер награды за решение блока уменьшается вдвое, поэтому в конечном итоге, выпуск биткоинов прекратится. Всего будет создано около 21 миллиона монет. Имейте в виду, что Вы можете отправить до 1/100 миллионной биткойна (.00000001), поэтому общее количество монет находящихся в обращении, вряд ли ограничит удобство использования валюты. По ссылке вы можете ознакомиться с графиком эмиссии Биткоина.
Когда вознаграждение за решение блока прекратится, перестанут ли обрабатывать транзакции заинтересованные в поощрениях майнеры? В дополнение к вознаграждению за блок, майнеры также получают любые имеющиеся комиссии за транзакции, которые могут быть по желанию отправителя включены в транзакции.
На данный момент, майнеры включают транзакции в блоки с минимальной комиссией, потому что их главный стимул – это награда за блок, но в будущем, наверняка транзакции будут обрабатываться в соответствие с размером прилагаемых комиссионных. И те транзакции, в которых не включена комиссия, вероятно, будут проигнорированы. Таким образом, отправка денег в Биткойне уже не будет бесплатной, но, скорей всего, все равно будет дешевле, чем текущие комиссии при переводах, с помощью кредитных карт.
Майнинг пулы
Как мы выяснили, решение блока займет в среднем несколько лет работы обычного компьютера, поэтому вероятность того, что один человек сможет решить задачу раньше остальной сети, а на это обычно уходит 10 минут, очень низка.
Для получения более стабильного потока доходов, многие люди присоединяются к группам, называемым майнинг пулы, которые коллективно работают над решением блоков и распределяют вознаграждения в соответствии проделанной работе. Это похоже на коллективную лотерею среди сотрудников, за исключением того, что некоторые из этих пулов довольно большие и составляют более 20% всех компьютеров в сети.
Тот факт, что некоторые из этих пулов настолько огромны, имеет несколько серьезных последствий для безопасности. Как уже упоминалось ранее, маловероятно, что злоумышленник может решить несколько блоков подряд быстрее, чем остальная сеть, но это возможно, и вероятность возрастает по мере увеличения вычислительной мощности злоумышленника пропорционально остальной сети. И на самом деле, один из майнинг пулов, BTC Guild, самостоятельно решил шесть блоков подряд и затем добровольно ограничил членство, чтобы предотвратить недоверие ко всей сети биткойна.
Даже при значительной вычислительной мощности, чем глубже в цепочке блоков происходит транзакция, тем сложнее будет изменить ее злоумышленнику, поскольку он должен опережать остальную сеть на отрезке времени между отправкой транзакции и когда будет отгружен товар.
Текущая рекомендация заключается в том, чтобы подождать, пока транзакция не будет включена хотя бы в один пройденный блок, или получить одно подтверждение, прежде чем считать ее окончательной. А для более крупных сделок, подождать не менее 6 блоков, учитывая, что существуют крупные майнинг пулы.
Время подтверждения
По задумке на решение каждого блока занимает примерно 10 минут, поэтому ожидание решения шести блоков займут около часа. По сравнению с несколькими секундами на ожидание операций по кредитной карте, длительное ожидание подтверждений транзакций может показаться очень долгим. Но имейте ввиду, владелец кредитной карты может заявить о краже карты спустя несколько месяцев и продавцы компенсируют расходы, это называется возврат платежа. Таким образом, Bitcoin на самом деле гораздо быстрее с точки зрения продавца.
Почему 10 минут на блок? Конкретный выбор 10 минут был несколько произвольным. Чрезвычайно короткое время могло привести к нестабильности, а более длинные периоды задерживали бы подтверждения. С ростом количества компьютеров присоединяющихся к сети и появлением оборудования предназначенного специально для майнинга (ASIC майнеры), время решения блока будет сокращаться. Чтобы компенсировать это, раз в каждые две недели, все программное обеспечение Bitcoin перекалибрует сложность математической задачи, чтобы ее решение занимало 10 минут. Для сравнения, аналогичная криптовалюта под названием Litecoin может работать в рамках 2-2,5 минут на решение блока.
Заключение и выводы о том, как работает Биткоин
Биткоин – это математически защищенная цифровая валюта, которая поддерживается одноранговой сетью. Цифровые подписи авторизуют отдельные транзакции, право собственности передается через цепочки транзакций, а порядок этих транзакций защищен Блокчейном. Поскольку для каждого блока нужно решить сложную математическую задачу, потенциальные мошенники вынуждены соревноваться с всей остальной сетью в вычислительной гонке, которую им вряд ли выиграть.
Биткойн преподносит много интересных идей, таких как изоляция от вмешательства правительства, анонимность и потенциально более низкие комиссии за транзакции.
Система имеет так же много сложностей, в настоящее время очень нелегко обменять биткойны на фиатные валюты, а волатильность курса валюты создает неудобство использования Биткоина в качестве регулярных платежей. Так же сеть называют идеальной средой для незаконных операций и уклонение от налогов, поэтому официальные власти могут пытаться запрещать или регулировать Биткоин и другие криптовалюты. Кроме того, вычислительная гонка, которая защищает блокчейн, требует огромные затраты электричества.
Мы следим и публикуем самые известные события из истории Биткоина. В нашей интерактивной шкале времени. Передвигаясь по датам, вы узнаете, как развивался Bitcoin по сегодняшний день, и как он повлиял на мир.
Источник: imponderablethings.com
Комментарии