Что такое биткойн и как он работает
Биткоин «на пальцах»
Очень простое и доступное объяснение, что такое Биткоин и как он работает
Ранее я публиковал цикл статей для «чайников», в которых затрагивал технологические основы Биткоина и рассказывал, как он устроен изнутри и как работает.
Эта же статья предназначена для лиц, которые только начинают знакомство с первой криптовалютой и хотят, чтобы им объяснили просто и доступно для понимания, буквально «на пальцах», что же такое этот биткоин и чем он отличается от обыкновенных денег.
Сначала небольшой экскурс в мир денег и их оборота…
У большинства деньги ассоциируются с выпускаемыми государством банкнотами — бумажными денежными купюрами или мелкими долями — металлическими монетами.
Это очень понятно для обывателя: есть банкноты — есть деньги и наоборот. При этом безналичные деньги, хранящиеся на вкладах или текущих счетах в банках с точки зрения того же обывателя — это просто те же банкноты, но только их хранит банк и может их выдать по требованию вкладчика или клиента. Даже деньги на пластиковой банковской карте — это тоже в конечном счете банкноты, но они передаются каким-то электронным путем.
Но, банкноты и монеты — это лишь вещественное отражение такой сущности, как деньги. На самом деле, деньги — это информация.
Информация о том, каким эквивалентом суммарной стоимости обладает субъект (индивидуум или организация). Если у вас в кошельке имеется, к примеру, три банкноты по 100 денежных единиц (гривен, рублей или долларов), то это означает, что вы обладаете суммарным эквивалентом стоимости в 300 денежных единиц. На них вы можете приобрести товары и услуги, эквивалент стоимости (цена) которых менее или равна этим 300 денежным единицам.
При операции покупки/продажи происходит передача от покупателя к продавцу некоего эквивалента стоимости товара в денежном выражении. Эта операция называется транзакцией. При этом банковский счет или кошелек продавца пополняется, а покупателя уменьшается на сумму транзакции.
Если эта операция осуществляется наличными деньгами (банкнотами), то участие третьей стороны (помимо покупателя и продавца) не требуется. Покупатель просто передает продавцу из рук в руки некоторое количество банкнот. А взамен получает товар. Всё! Транзакция прошла и сделка совершена.
Если же покупка осуществляется дистанционно (на расстоянии) или посредством банковской карты, то в сделке принимает участие третья доверенная сторона — банк. При этом со счета покупателя в банке снимается некая сумма денег (эквивалент стоимости товара) и зачисляется на счет продавца. Это и есть транзакция, которую в данном случае проводит банк.
То же самое происходит, если вы переводите деньги другому лицу при помощи банковского перевода. Как правило, банки берут за такие услуги комиссионное вознаграждение.
Любая денежная транзакция — это информация о том, кто и кому, когда и сколько передал денежных единиц. Банки ведут учет всех транзакций в больших бухгалтерских книгах, которые еще называются регистрами ( ledger).
При этом, после каждой транзакции балансы (суммы денежных средств на счетах) покупателя и продавца изменяются соответственно передаваемой сумме денег (эквивалента стоимости товара) с учетом комиссионных вознаграждений банка — у покупателя баланс уменьшается, а у продавца увеличивается.
Ведение учета транзакций и балансов клиентских счетов позволяет банкам избежать ситуации, которая получила название «проблема двойных трат» или «двойного расходования» — когда одни и те же деньги на банковском счете участвуют в нескольких транзакциях.
Подсуммирую вышесказанное. Любая денежно-финансовая система основывается на таких основных составляющих:
Все эти составляющие регулируются государством при помощи законодательных актов.
Но, вернемся к наличному расчету, при котором, в отличие от безналичного, покупатель просто передает продавцу деньги без участия третьей стороны — банка.
Длительное время люди пытались найти способ передачи денег на расстоянии без участия третьей доверенной стороны — банка. Ведь это было бы очень удобно, — как в наличных расчетах. И дешево, — не пришлось бы платить банку комиссионные вознаграждения. А также надежно, — не было бы риска потерять свои деньги, хранящиеся в банке, в случае его банкротства.
Было сделано много попыток создать т.н. электронные деньги, которые бы обходились без посредников, но все они были неудачными или несовершенными.
Но, наконец-то, 31 октября 2008 года некий Сатоши Накамото опубликовал концепцию новой электронной денежной системы, названной им « Биткоином», в которой операции (транзакции) производятся непосредственно между участниками без привлечения третьей доверенной стороны.
А 3 января 2009 года эта система была запущена и начала работу. С тех пор наличные расчеты стали доступными всем в электронном виде.
По замыслу создателя, Биткоин должен был стать альтернативой нашей нынешней финансовой системе, в которой господствуют банки, выступающие посредниками в денежных переводах и платежах между двумя субъектами.
В основе этой инновационной денежной системы была технология публичного блокчейна. Что же это такое?
Собственно, сам блокчейн — это база данных, состоящая из последовательных блоков информации, которые связаны между собой таким образом, что изменив информацию в одном блоке, она изменится во всех последующих. Попросту, блокчейн — это очень защищенная база данных на основе криптографии — шифрования.
В блокчейн Биткоина записываются все транзакции. Таким образом, этот блокчейн представляет собой гигантскую бухгалтерскую книгу — регистр, наподобие тех, что ведут банки, для записи транзакций своих клиентов.
Условно можно представить, что каждый отдельный лист этой книги — это блок информации с записью транзакций. Примерно каждые 10 минут к этой книге добавляется новый лист (блок) с новыми транзакциями. При этом, у каждого листа кроме транзакций есть служебная информация, в которой записана некая «контрольная сумма», называемая хэшем, предыдущего листа (блока).
Если кто-либо попробует изменить хоть один символ в любом листе (блоке) этой книги, то «контрольная сумма» этого листа также изменится и не будет соответствовать той, что записана в служебное поле на следующем листе, что повлечет изменение и его «контрольной сумме» и т.д. по всем последующим листам книги вплоть до последнего.
Таким образом обеспечивается защита информации в блокчейне от изменений. Записанную в блокчейн информацию изменить невозможно. Это очень важный момент!
Но, где хранится эта база данных — блокчейн? Как обеспечить её безопасное хранение?
Она хранится на множестве компьютеров, подключенных к сети Биткоина! Поэтому блокчейн Биткоина называется публичным — любой человек может подключиться к этой сети и скачать на свой компьютер блокчейн — полную бухгалтерскую книгу Биткоина.
Эта сеть является распределенной и одноранговой ( peer-to-peer). Последнее означает, что в этой сети все узлы (компьютеры, серверы) равны и нет центральных управляющих серверов.
Таким образом, регистр Биткоина, он же блокчейн, одновременно хранится в одноранговой сети на тысячах компьютерах (серверах) во всем мире — от США до Японии и Астралии. Тысячи синхронизированных сетью одинаковых баз данных!
Этим обеспечивается его полная безопасность от внешнего воздействия. В отличие от банковских серверов, на которых хранятся транзакции клиентов банка, блокчейн Биткоина неуязвим, он не имеет единого центра управления и отказа.
Именно поэтому блокчейн еще называют финансовым интернетом — сетью неуязвимой от внешних атак.
Как же работает эта сеть? Любой, кто хочет к ней подключиться, получает т.н. биткоин-адрес — это своеобразный аналог банковского счета. Одновременно с адресом клиент получает привязанный к этому адресу секретный приватный ключ — набор данных, при помощи которых система идентифицирует владельца биткоин-адреса и позволяет ему совершать транзакции (денежные переводы). Подобрать к биткоин-адресу приватный ключ практически невозможно. Поэтому доступ к каждому биткоин-адресу защищен на уровне приватного ключа.
После получения биткоин-адреса его владелец может сообщить этот адрес любому пользователю сети Биткоин с тем, чтобы получить от него биткоин-перевод — платеж в биткоинах — внутренней расчетной единице (криптовалюте) сети Биткоин.
Это аналогично тому, как клиент банка получает платеж на свой банковский счет, сообщив его номер другому клиенту банка.
Чтобы совершить перевод со своего биткоин-адреса на любой другой, владелец отправляет в сеть Биткоина распоряжение с указанием суммы первода и биткоин-адреса получателя подписанное с использованием своего приватного ключа.
Все поступившие в сеть Биткоина распоряжения о переводах программно проверяются серверами в сети, которые называются «майнеры». В ходе проверки каждым майнером проверяется наличие достаточной для проведения перевода суммы денег на биткоин-адресе отправителя и формируется транзакция — запись о переводе.
Из множества транзакций формируется блок информации для добавления в блокчейн.
Но, поскольку майнеров много, кто из них будет записывать блок в блокчейн? Для этого Сатоши Накамото придумал хитроумный алгоритм — блок запишет тот майнер, который первым решит сложную криптографическую задачу в ходе решения которой ищется некоторое число, которое особым образом связано с «контрольной суммой» сформированного майнером блока. Этот процесс называется «майнинг».
Несмотря на то, что задача трудная, проверка правильности её решения выполняется быстро. Что и делают остальные майнеры.
Поскольку майнеры несут затраты на оборудование и электроэнергию, протоколом (правилами) Биткоина предусмотрено вознаграждение в виде новых единиц (монет), поступающих в сеть в ходе эмиссии. Это вознаграждение получает только тот майнер, который записал блок в блокчейн, т.е. первым решил криптографическую задачу.
Майнинг — это необходимый и важный процесс в сети Биткоина, в результате которого решаются задачи:
Но, как расчетная единица Биткоина, называемая также биткоин (с маленькой буквы) имеющая биржевый тикер BTC, становится деньгами, средством, передающим стоимость?
Мы привыкли, что деньги выпускает государство. Именно ему принадлежит монополия на печать банкнот и чеканку монет. Но, по сути, деньги — это товар, только обладающий некоторыми уникальными свойствами:
Биткоин обладает всеми вышеперчисленными свойствами:
Кроме того, Биткоин:
Мы видим, что биткоин, как валюта, обладает лучшими свойствами денег, чем все существующие фиатные валюты, выпускаемые государствами.
Именно поэтому он стал востребован и его рыночная цена стала расти.
Биткоин: Что, Как и Зачем
Если поинтересоваться у людей вокруг, слышали ли они что-нибудь о Биткоине, то наверняка каждый ответит: «о да, конечно». Уже несколько лет криптовалюты подгоняются под религиозные нормы, кто-то зарабатывает на них огромные деньги, а целые государства не знают, как относиться к новым технологиям.
Тем не менее что это, как это работает, и зачем оно всё нужно? Чем это лучше существующих платежных систем и причем тут видеокарты? Об этом и не только будет идти речь в данной статье.
Оглавление
Основная идея
Представим себе двух партнеров: Васю и Колю. Коля очень любит вести учет всех своих сделок и для этих целей заводит себе дневник. Дневник представляет собой набор последовательных записей:
Взял 50 денег у Саши
Занял 8 денег Пете
Занял 100 денег Васе
Отдал 130 денег Маше
Занял 36 денег Роме
В какой-то момент хитрый Вася пробирается в дневник Коли и заменяет запись «Занял 100 денег Васе» на «Купил гречки на 100 денег». И однажды Коля лезет в дневник, чтобы показать Васе запись о его долге, но с удивлением не находит соответствующей строчки. Дневник взломан. Коле своих денег не видать.
Чтобы такого больше не повторялось, Коля усложняет запись. Он открывает компьютер и находит в нем программу md5sum, которая превращает любой текст в набор символов фиксированной длины. Причем делает это максимально неочевидно: если поменять хотя бы одну букву в шифрованном тексте, то выходной набор символов будет полностью отличаться. Примерно так:
Чтобы уж наверняка, Коля решает: «Я подкину работу злоумышленникам: буду хэшировать и текст новой записи, и хэш предыдущей.» То есть каждый новый хэш теперь связан с предшествующей записью! И куда без начального хэша (любой последовательности символов, например da7c8) для первой строки. Теперь таблица займов выглядит так:
Взял 50 денег у Саши 69ab8
Занял 8 денег Пете 27825
Занял 100 денег Васе e709a
Отдал 130 денег Маше fdb876
Занял 36 денег Роме bd3d7
И так далее аналогично.
Взял 50 денег у Саши (210) 69a00
Занял 8 денег Пете (172) ff800
Занял 100 денег Васе (654) e7f00
Отдал 130 денег Маше (323) a6c00
Занял 36 денег Роме (901) bd300
Несколько технических уточнений
В действительности все несколько сложнее. Все транзакции в блоке представлены как строки в шестнадцатеричном формате, которые хешируются для идентификации транзакции.
Структура блока Биткоина
Биткоины могут быть переданы любому, кто сообщит корректный биткойн-адрес или открытый ключ. Для передачи Биткоинов текущий владелец создаёт новую транзакцию, которая, помимо указаний о количестве передаваемых Биткоинов, содержит подписанный инициатором хеш предыдущей транзакции, по которой биткойны были получены. Предыдущая транзакция становится «входом» текущей транзакции. Также указывается публичный ключ или биткойн-адрес нового получателя. Узлы сети, прежде чем принять транзакцию к обработке, проверяют подписи. Правильность подписи свидетельствует, что инициатор действительно является владельцем секретного ключа для адреса «выхода».
Однако есть проблема. Цепочка блоков в сети имеет очень большой размер (в сентябре 2020 превысил 300 Гб), и далеко не все узлы могут её выкачать. Например, телефоны или кассовые аппараты. Тем не менее им нужно знать о факте включения той или иной транзакции в блок. Для этого был придуман протокол SPV — Simplified Payment Verification.
Дерево хешей с тремя вершинами
Построение дерева происходит следующим образом:
Вычисляются хеши транзакций, размещенных в блоке: hash(L1), hash(L2), hash(L3) и так далее.
Вычисляются хеши от суммы хешей транзакций, например hash(hash(L1) + hash(L2)). Так как дерево Меркла является бинарным, то число элементов на каждой итерации должно быть четным. Поэтому если блок содержит нечетное количество транзакций, то последняя дублируется и складывается сама с собой: hash (hash(L3) + hash(L3)).
Далее, вновь вычисляются хеши от суммы хешей. Процесс повторяется, пока не будет получен единый хеш — корень дерева Меркла (merkle root). Он является криптографическим доказательством целостности блока (то есть того, что все транзакции находятся в заявленном порядке). Значение корня фиксируется в заголовке блока.
Имея дерево Меркла можно построить доказательство включения транзакции в блок как путь от хеша транзакции до корня. Этот механизм используется в SPV. Клиент выкачивает только заголовок блока с его хешем. Имея интересующую транзакцию, он запрашивает доказательство у узла содержащего всю цепочку.
Клиенты использующие легкую верификацию транзакций не пересчитывают все хеши, а запрашивают только доказательство Меркла. Это позволяет не использовать весь объем информации о транзакциях, а обращаться к конкретной транзакции.
SVP позволяет существенно снизить нагрузку на сеть и ускорить процесс проведения. Например, 5 переводов максимального размера в сумме весят около 500 килобайт, при этом дерево Меркла при таких же условиях будет иметь размер не более 140 килобайт.
Преимущества
Децентрализация
Важной особенностью Биткоина, которая привела к его популярности, является децентрализованная природа этой платежной системы. Иначе говоря, Биткоин не находится под контролем государства, организации или конкретного человека. Программный код является полностью открытым, а участники системы разбросаны по всему миру. Всякий, кто захочет присоединиться, сможет сделать это без препятствий.Истории транзакций и балансы кошельков фиатных валют хранятся на специальных серверах, которые принадлежат финансовым организациям. Такие хранилища нередко взламываются, что довольно неприятно для простых пользователей. В Биткоин-системе нет ничего, что могло бы контролировать данные. Более того, все данные в этой сети доступны публично. И, как мы убедились выше, изменить их практически невозможно.
Анонимность
Стабильность
Нельзя изменить какой-то блок в блокчейне. Это практически невозможно. В противном случае пришлось бы одновременно изменить огромное количество записей на миллионах компьютеров по всему миру. Поэтому никакую транзакцию нельзя отменить или подменить на другую.
Ограниченная эмиссия
Традиционные фиатные деньги имеют неограниченную эмиссию, так как центробанки всегда могут напечатать столько денег, сколько им нужно. Вспомним аналогию с золотом. Чем сложнее добывается золото и чем меньше его запасов, тем оно больше ценится. Это механизм контроля инфляции. В Биткоине реализован схожий механизм: система постепенно уменьшает количество суммарно добываемых в единицу времени биткоинов. Это выглядит как функция обратной пропорциональности. И да, когда-то настанет момент, после которого количество биткоинов в мире станет постоянной величиной. Прямо как объем запасов золота на Земле.
Зависимость количества биткоинов в сети от времени
А если по-человечески, то вот цитата Медузы о том, чем блокчейн лучше существующих платежных систем:
Прозрачностью, скоростью, стоимостью, простотой. Если вы отправили криптовалюту или информацию по блокчейну, свидетельство такой отправки невозможно изменить или подделать, поскольку она подтверждается сотнями тысяч компьютеров по всему миру. На этих же компьютерах хранится множество копий этой информации — и она доступна для просмотра любому пользователю в любой момент времени. Весь процесс перевода занимает считанные минуты и стоит в десятки раз дешевле банковского. Если вы храните деньги и информацию в блокчейне, записи никогда не будут утеряны или подделаны, любой участник рынка может в любой момент удостовериться в вашей финансовой состоятельности. Никаких третьих сторон и посредников, только полная прозрачность и математическая гарантия точности расчетов.
А насколько это безопасно?
Если говорить о безопасности сферической в вакууме платежной системы, то Биткоин очень надежен. За все время существования с 2009 года был зафиксирован лишь один случай, в котором неисправность кода привела к ошибке.
А что там случилось?
15 августа 2010 года, ещё до широкого распространения системы, было создано 184 млрд биткойнов. Программый код не предусматривал сумм выше определенного значения, и в результате значение суммы переполнилось. Сделку быстро заметили, и в течение нескольких часов была выпущена версия программы 0.3.1, заменяющая старую цепочку на новую, не содержащую «грязных» ошибочных блоков. В результате такого хардфорка какое-то время даже существовали две версии биткоина, одна из которых содержала ошибочные блоки и вводила пользователей в заблуждение. Однако, новая версия стала доминирующей уже через 19 часов. Эта версия используется по сей день.
Потенциальные угрозы все-таки существуют. Например, взлом приватных ключей и так называемая «Атака 51%».
Взлом приватных ключей
В целях защиты от мошенничества все транзакции передаются по сети вместе с цифровой подписью. Она позволяет гарантировать, что сообщение успешно доставлено выбранному адресу и что это сообщение не было изменено.
Цифровая подпись создается с помощью хэширующего алгоритма и асимметричного шифрования (подробнее о шифровании можно почитать тут).
Принцип ассиметричного шифрования можно объяснить так:
Приватные ключи связаны с биткоин-адресами функцией хеширования SHA-256. Она выдает шифр в виде последовательности 256 битов. То есть возможно 2^256 = 10^77 вариантов хеша. В настоящее время вычислительных мощностей всех компьютеров всего мира не хватило бы, чтобы перебрать все варианты за приемлемое время.
Угроза становится реальной ввиду развития квантовых компьютеров. Пока эта угроза далека (здесь есть подтверждение), но всё-таки она существует.
Атака 51%
Принцип данной атаки в следующем: пока в распоряжении атакующего находится больше мощности, чем у всей остальной сети, он может не подтверждать чужие блоки, подтверждая только свои, а значит может получать 100 % всех новых биткоинов и блокировать по своему усмотрению любые транзакции.
На ранних этапах развития криптовалюты такая угроза очень значима. На данный момент для осуществления такой атаки в сети Bitcoin требуется вычислительная мощность, во много раз превышающая мощность всех суперкомпьютеров из рейтинга TOP-500 (500 самых мощных в мире суперкомпьтеров). После массового перехода майнеров с видеокарт на специально разработанные для добычи биткоинов интегральные схемы, защита от такой атаки стала ещё сильнее. Кроме того, у злоумышленников при таком вломе нет возможности проводить любые транзакции по своему усмотрению, поскольку у них нет чужих приватных ключей, необходимых для подписи транзакций.
Существует схожая «Атака Сивиллы», в которой злоумышленники могут избегать настоящих узлов в сети, если они создают достаточное количество поддельных или идентичных (Sybil идентификаторов). Затем они могут отказаться от приема или передачи блоков, эффективно блокируя других пользователей в сети. С такой угрозой неплохо справляются «алгоритмы конценсуса», такие как «доказательство работы» (Proof-of-Work) и «доказательство доли», (Proof-of-Stake)
Подробнее об алгоритмах консенсуса
Proof-of-Work
Proof-of-Stake
В 2011 году в качестве альтернативы PoW был разработан алгоритм консенсуса PoS, призванный исправить основные недостатки предшественника.В нескольких словах, алгоритм консенсуса Proof of Stake заменяет технологию майнинга PoW механизмом, в котором блоки проверяются в соответствии с долей участников. Валидатор каждого блока определяется вложенной криптовалютой, а не количеством выделенной вычислительной мощности. Каждая система PoS может реализовать алгоритм по-разному, но в общем случае блокчейн обеспечивается псевдослучайным процессом выборов, который учитывает богатство узла и возраст монеты (как долго монеты заблокированы или находятся в доле), а также фактор рандомизации.
Безопасность платежной системы не означает полную безопасность ее использования. Существует огромное количество примеров успешных атак на криптобиржи с использованием Биткоина и аналогичных криптовалют.
— известная биржа, работающая не только с Bitcoin, но и другими менее популярными криптовалютами. В 2014 году биржа лишилась 13 000 BTC и 300000 Litecoin в результате атаки.
В январе 2015 года стало известно о взломе крупной европейской биткоин-биржи Bitstamp. Тогда хакеры сумели похитить 18,977 BTC.
19 июля 2017 года Parity подвергся хакерской атаке, в ходе которой злоумышленникам удалось украсть 153,037 ETH.
В 2016 у биржи Bitfinex неизвестные похитили с платформы 119 756 BTC.
Как это возможно, если алгоритм работы Биткоина настолько надежен? Все просто, практически все совершенные атаки, взломы и кражи в сфере криптовалют так или иначе связаны с уязвимостью инфраструктуры: криптовалютных бирж, кошельков и сторонних хранилищ приватных ключей. Никто не отменяет человеческий фактор: некоторым злоумышленникам достаточно обладать даром убеждения.
Поэтому стоит помнить, что если вор похитил из вашего кармана ключи, то это не значит, что он обязательно взломает ваш замок. Но с другой стороны, какой бы крутой у тебя ни был замок, будет плохо, если ты потеряешь к нему ключ.
Законодательное регулирование
Правовой режим биткоина значительно различается в разных странах. В одних странах биткоины признаются в качестве расчётной денежной единицы (например, в Германии),, в других (например, в Японии) Bitcoin является законным платёжным средством с налогом на покупку. В некоторых странах (например, в Китае) операции с биткойнами запрещены для банков, но разрешены для физических лиц (но при этом страна лидирует в области майнинга из-за наличия крупнейших производственных мощностей). В Швейцарии на криптовалюты распространяются такие же правила, как и на иностранные валюты, и эта страна является одной из самых благоприятных юрисдикцией для Bitcoin-стартапов.
В Российской Федерации к Биткоину достаточно интересное отношение. Летом 2020 года был принят отдельный федеральный закон о цифровых финансовых активах и цифровой валюте, который по сути признает криптовалюту, в том числе Биткоин, платежным средством, но запрещает расплачиваться им. Да, цифровую валюту вынесли в отдельную категорию, однако запретили использовать для оплаты товаров, работы или услуг и даже сообщать о том, что криптовалюта может использоваться в качестве платежного средства. Выпуск и обращение криптовалюты в России остаются недоступными. Купить цифровую валюту можно на зарубежных площадках, но ее придется декларировать как имущество в российских налоговых органах.