Bitcoin | |
Дата создания |
2009 год |
---|---|
Компания |
Отсутствует |
Процессинг карт |
Отсутствует |
Платёжный шлюз |
Да |
Наличие API |
Да |
Сайт |
bitcoin.org/ru/ |
Тип | |
---|---|
Автор |
Сатоси Накамото |
Разработчик |
Сатоси Накамото (Satoshi Nakamoto), Гэвин Андрисен (Gavin Andresen) |
Написана на | |
Операционная система |
Windows, Linux, Mac OS X |
Первый выпуск |
4 февраль 2009 |
Последняя версия |
0.8.2 (29 мая 2013 года) |
Состояние |
Beta |
Лицензия | |
Сайт |
bitcoin.org |
Bitcoin-qt на Викискладе
|
Bitcoin, Биткойн, часто Биткоин (от англ. bit — единица информации «бит», англ. coin — «монета») — пиринговая электронная платёжная система, использующая одноимённую виртуальную валюту[1][2] [3]. Сеть полностью децентрализована, и не имеет центрального администратора или какого-либо его аналога.
Биткойны могут использоваться для передачи за товары/услуги или обменены на обычные деньги.
Одна из особенностей биткойнов — децентрализованная эмиссия новых биткойнов, которую может самостоятельно осуществить любой участника данной системы (майнинг), если получится выполнить оговоренные условия и сформировать новый блок внутренней базы данных. В то же время нет другого механизма эмиссии биткойнов.
Базовым элементом этой платёжной системы является программа-клиент с открытым исходным кодом. С помощью сетевого протокола прикладного уровня запущенные на множестве компьютеров клиенты соединяются между собой в одноранговую сеть и обмениваются информацией.
Для обеспечения функционирования и защиты системы используются криптографические методы.
Содержание |
Идеи криптовалюты «b-money» описал в 1998 году Вэй Дай (Wei Dai) в рассылке шифропанков[4]. Так же были предложения Ника Сабо (Nick Szabo) под названием «Bitgold».
В 2008 году некто под псевдонимомBitcoin: Peer-To-Peer Electronic Cash System» с описанием протокола и принципа работы одноранговой сети. По словам Сатоси, разработка началась в 2007 году[6]. В 2009 году он закончил разработку протокола и опубликовал клиент, после чего сеть была запущена.
Дальнейшую разработку организовывает и координирует Гэвин Андресен (англ. Gavin Andresen).
Одна из главных отличительных особенностей биткойнов от традиционных электронных денег и безналичных расчётов заключается в том, что биткойны не являются долговыми обязательствами эмитента. Биткойны нематериальны и являются всего лишь числом, привязанным к адресу[7]. Они могут быть использованы только для перевода на другой биткойн-адрес. Их стоимость не привязана к какой-либо другой валюте или активу. Обменный курс по отношению к другим валютам определяется исключительно балансом спроса и предложения. В октябре 2012 года Европейский центральный банк в своём исследовании рассматривал биткойны как виртуальную валюту[1]. В журнальных статьях Bitcoin часто характеризуется как «криптовалюта».
Эмиссия и оборот биткойнов полностью децентрализованы, не зависят от какого-либо регулирующего органа, объём эмиссии известен заранее.
Эмиссию осуществляют все желающие, кто готов использовать для этого вычислительные мощности своего оборудования. В первых версиях клиента была кнопка «сгенерировать новые биткойны»[5], но после выхода софта для майнинга на видеокартах и FPGA используемый в клиенте майнинг при помощи центрального процессора оказался неэффективным и кнопку убрали. Объём эмиссии алгоритмически ограничен так, чтобы общее количество эмитированных биткойнов никогда не превысило 21 миллион[8] — сумме бесконечно убывающей геометрической прогрессии со знаменателем ½, количество эмитированных биткойнов приближается к этому значению асимптотически. Скорость эмиссии стабильна (равное суммарное количество биткойнов за примерно равные промежутки времени) и запрограммирована уменьшения в 2 раза приблизительно раз в 4 года. Деятельность по эмиссии биткойнов с помощью вычислительных мощностей получила название «майнинг» (от англ. mining — добыча полезных ископаемых).
Производимые вычисления требуются для обеспечения защиты от повторного расходования одних и тех же биткойнов, а майнинг стимулирует людей предоставлять вычислительные мощности и поддерживать работу сети. Предполагается, что когда скорость эмиссии существенно сократится, основным источником стимулирования станут комиссионные сборы[9].
Майнингом можно заниматься как в одиночку (соло-майнинг), так и совместно, воспользовавшись услугами одного из специальных сервисов, которые называют «пулами». Пользователи предоставляют пулу свои вычислительные мощности. В свою очередь, пул действует как соло-майнер с очень большой производительностью. Полученные пулом биткойны распределяются между участниками в соответствии с установленными владельцем пула правилами. Основная причина объединения в пулы — уменьшение риска длительного неполучения награды.
Вероятность получения награды соло-майнером в произвольный десятиминутный период приблизительно равна соотношению его вычислительной мощности к вычислительной мощности всей сети. И если это соотношение очень маленькое, то вероятность получения награды даже за длительный промежуток времени также будет низкой.
Величина награды равна сумме комиссионных сборов и эмиссии. 28 ноября 2012 года произошло первое уменьшение эмиссионной составляющей награды с 50 до 25 биткойнов.
Передача биткойнов осуществляется напрямую, без посредничества каких-либо финансовых организаций. Отмена транзакций невозможна. Нет обязательной комиссии, однако комиссия может быть уплачена добровольно для ускорения обработки операций[10]. Для более рационального использования предусмотрена делимость биткойнов до 8-го десятичного знака[11]. При необходимости эта величина может быть уменьшена.
Данные о перемещении и эмиссии биткойнов хранятся в распределённой базе данных. Биткойны могут быть отправлены любому другому пользователю с использованием специального адреса. При этом можно использовать любые дробные суммы с точностью до восьмого знака после десятичной запятой. Все транзакции находятся в открытом доступе, но без раскрытия информации о реальном владельце адреса[2]. Каждый пользователь может создать себе неограниченное количество адресов. При этом невозможно распоряжаться чужими средствами без секретных ключей владельца, которые хранятся в файле кошелька wallet.dat. Почти невероятно потратить одни и те же средства дважды, не обладая вычислительной мощностью, которая превышает вычислительную мощность всей сети перед моментом атаки[12].
Принцип одноранговой сети и отсутствие административного центра делает невозможным государственное или частное регулирование системы, а так же манипуляции покупательной способностью путём изменения денежной массы.
БД публично хранит в незашифрованном виде информацию о всех транзакциях, подписываемых с помощью асимметричного шифрования. Для предотвращения многократной траты одной и той же суммы используются метки времени[13], реализованные путём разбиения БД на цепочку специальных блоков, каждый из которых в числе прочего содержит в себе хеш предыдущего блока и свой порядковый номер. Каждый новый блок осуществляет подтверждение транзакций, информацию о которых содержит и дополнительное подтверждение транзакций во всех предыдущих блоках цепочки. Для уменьшения размера БД используется древовидное хеширование[14].
Для более наглядного объяснения механизма работы платёжной системы, Cатоси ввёл понятие «цифровая монета»[15], определив данное понятие, как цепочку цифровых подписей. Исходя из данного определения, каждая монета имеет свой собственный номинал. А каждому адресу может соответствовать любое количество монет. При помощи транзакций монеты можно делить и объединять, при этом их суммарный номинал с учётом комиссии сохраняется.
Когда один пользователь передаёт некую сумму другому пользователю — он создаёт новую транзакцию, которая содержит хеш предыдущей транзакции, подписанный им, и публичный ключ следующего владельца[16]. Затем эта информация широковещательным запросом отправляется в сеть. Остальные узлы сети проверяют подписи, прежде чем принять транзакцию к обработке.
Транзакции поддерживают множественные входы (адреса для списания) и выходы (адреса для зачисления). Значения со всех входов суммируются и сумма распределяется по выходам. Разница между суммой на входе и суммой на выходе является комиссией.
Транзакция обязательно содержит адреса для зачисления. Но если транзакция осуществляет эмиссию новых биткойнов в качестве награды майнеру, то адреса для списания отсутствуют, в отличие от транзакций имеющих входы, при таких транзакциях полученными биткойнами можно будет воспользоваться только после того как такая транзакция получит 120 подтверждений.
Большинство транзакций, имеющих входы, имеют как минимум два выхода: адресом получателя для получения монеты с номиналом, указанным отправителем и другой адрес отправителя для «сдачи» — монеты с номиналом, который остался от суммарного номинала на входе за вычетом комиссии. «Bitcoin-qt» отправляет каждую сдачу на новый адрес из резерва заранее созданных и скрытых от пользователя адресов. В БД отсутствует информация о том, какая именно монета является сдачей.
В общем случае транзакция может содержать любое натуральное количество адресов на выходе, так как возможны случаи, когда необходимо передать средства на множество различных адресов с помощью одной транзакции. Например, это позволит сэкономить на комиссионных сборах.
Транзакция также может содержать множество совпадающих между собой адресов на входе: это происходит, когда в кошельке имеется много мелких монет, появившихся вследствие множества мелких входящих транзакций.
Каждый пользователь системы может генерировать неограниченное количество пар ключей, которые хранятся в специальном файле (кошельке). Для создания новых пар ключей использует алгоритм ECDSA с параметрами secp256k1. Размер закрытого ключа — 256 бит, а соответствующего ему открытого ключа — 512 бит. Создание новой пары ключей автономно и не требует соединения с сетью.
Передача биткойнов происходит между адресами. Адрес генерируется на основе преобразования публичного ключа пользователя. Секретные (приватные) ключи авторизуют владельца адреса. Адреса не содержат персональной информации о владельце[11]. Человек может иметь множество адресов, создавая их по собственной инициативе. Создание адреса лишь для одной транзакции или одного корреспондента помогает сохранить анонимность. Для создания адреса подключение к интернету не требуется.
Адрес в текстовой форме представляют собой строку длиной до 34 символов, состоящую из букв латинского алфавита и цифр, например 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W. Существуют варианты представления адресов в виде QR-кодов и других двухмерных штрихкодов, пригодных для считывания мобильными устройствами.
Любые транзакции не считаются легитимными (не считаются «подтверждёнными»), пока информация о них не будет сгруппирована в специальные структуры — блоки. Структура и информация в блоках подчиняется оговоренным правилам и её можно быстро проверить. Каждый блок всегда содержит информацию об одном предыдущем блоке. Это позволяет все существующие блоки выстроить в одну цепочку, которая представляет собой распределённую базу данных и содержит информацию о всех совершённых когда-либо операциях с биткойнами.
Таким образом цепочка блоков содержит историю владения, с которой можно ознакомиться.[17]. Если пользователь попытается использовать некогда потраченные биткойны снова, сеть не примет его транзакцию как действительную. Однако, при наличии у одного злоумышленника (или пула) контроля над достаточно большой долей суммарной мощности майнинга, существует ненулевая вероятность отмены даже подтвержденной несколькими блоками транзакции. Величина вероятность отмены транзакции уменьшается с каждым следующим блоком (подтверждением). При наличии в одних руках свыше 50 % суммарной мощности майнинга возможна отмена транзакции на любом уровне подтверждения и повторная трата переведенных средств (атака «Double Spending»)[18].
Блок делится на заголовок и список транзакций. Заголовок блока включает в себя свой хеш, хеш предыдущего блока, хеши транзакций и дополнительную служебную информацию. Первой транзакцией в блоке всегда записывается генерация новых биткойнов, которые в случае успешной генерации блока станут наградой пользователю за созданный блок. Далее идут все или некоторые из последних транзакций, которые ещё не были записаны в предыдущие блоки.
Созданный блок будет принят остальными пользователями, если числовое значение хеша заголовка равно или ниже определённой цели, величина которой периодически корректируется. Если блок не удовлетворяет цели, то изменяется блок служебной информации в заголовке и хеш пересчитывается. Обычно требуется большое количество попыток, так как результат хеширования (функции SHA-256) практически непредсказуем. Когда вариант найден, узел рассылает полученный блок другим подключенным узлам. Другие узлы проверяют блок. Если ошибок нет, то блок считается добавленным в цепочку и следующий блок должен включить в себя его хеш.
Величина целевого числа, с которым сравнивается хеш, корректируется через каждые 2016 блоков. Запланировано, что вся сеть будет тратить на генерацию одного блока примерно 10 минут, на 2016 блоков — около двух недель. Если 2016 блоков сгенерировано быстрее, то цель немного уменьшается и достичь её становится труднее, в противном случае цель увеличивается. В итоге система генерирует блоки почти с постоянной скоростью, не зависящей от мощности сети.
Система предусматривает только одну возможность для выпуска биткойнов в дополнение к существующим — новые биткойны начисляются в качестве вознаграждения тому, кто сгенерировал очередной блок, получивший 120 подтверждений. Вся совокупность биткойнов всегда распределена между отдельными адресами.
Первой транзакцией каждого блока-кандидата является начисление генерирующему узлу вознаграждения. Первоначально вознаграждение составляло 50 биткойнов. После создания каждых 210 000 блоков вознаграждение уменьшается в 2 раза[19] (интервал между такими событиями — примерно 4 года[20]). Первое уменьшение произошло 2012-11-28 15:24:38 UTC[21], теперь вознаграждение составляет 25 биткойнов. На апрель 2013 года в обращении находилось почти 11 миллионов биткойнов.[5] Из-за периодического уменьшения вознаграждения общее число биткойнов не превысит 21 000 000 (конечная сумма бесконечной убывающей геометрической прогрессии). Минимальный объём транзакции составляет 10−8 биткойнов.
Вероятность получения вознаграждения зависит от отношения вычислительной мощности узла к суммарной вычислительной мощности всех узлов сети[22]. Желающие получить возможно большее вознаграждение стремятся задействовать как можно большие вычислительные мощности для генерации: использование векторных графических процессоров (GPU)[23] (в сотни раз производительнее CPU[24]), платы с FPGA (производительность сравнима с видеокартами, но превосходят их по энергоэффективности).
Так как вычислительные мощности сети непостоянны, программное обеспечение узлов через каждые 2016 блоков, а это примерно каждые две недели, пересчитывает[25] требования к хешам блоков таким образом, чтобы поддерживать среднюю частоту генерации на уровне 6 блоков в час.
Для уменьшения влияния фактора удачи и более равномерного и предсказуемого получения биткойнов, пользователи объединяются в вычислительные пулы[26]. Вклад пользователя в пул оценивается в шарах (shares) (кандидат в подпись блока). В среднем нужно 232 операций хеширования для нахождения одной шары[27]. Для нахождения блока в среднем требуется количество шар, равное текущей сложности.
Существуют 3 основных типа начисления наград[28]:
У этих типов начисления есть следующие популярные варианты:
Обычно при получении биткойнов новый владелец не может сразу же передать их. Для уменьшения вероятности двойного использования, любая транзакция должна получить некоторое количество подтверждений. Одним подтверждением считается один новый блок, начиная с того, в котором упакована транзакция. Необходимое число подтверждений зависит от программы-клиента либо от указаний принимающей стороны.
Полученные за создание блока биткойны не используются, пока количество подтверждений не достигнет 120[29][30]. Полученные от других пользователей биткойны клиент «Bitcoin-qt» позволяет использовать после шести подтверждений. Магазины и биржи часто устанавливают свой порог подтверждений.
В системе Bitcoin не предусмотрено обязательных комиссионных сборов. Пользователи могут добровольно включать в платёж произвольную сумму комиссионного сбора, подавая на вход транзакции больше средств, чем на выход, что повышает приоритет обработки такой транзакции. Различные программы-клиенты имеют свои правила относительно размера и объекта комиссионных сборов.
Комиссионный сбор достаётся узлу, сгенерировавшему блок с такой транзакцией[11]. Генерирующий новый блок пользователь может по своему усмотрению добавлять в него транзакции из очереди. Например, он может отобрать только транзакции с комиссионным сбором.
В программах-клиентах была добавлена система, организующая записи транзакции таким образом, что пользователь может локально удалять данные из своей базы, которые ему точно не понадобятся. После того как все транзакции с какими-то средствами были упакованы в блоки и подтверждены, предыдущие транзакции с этими средствами можно отбросить для экономии места на диске. Для того, чтобы это можно было осуществить без изменения хеша блока, транзакции хешируются с помощью TTH и в заголовок блока помещается только результат данного хеширования.
Сейчас все пользователи официального клиентского ПО получают полную базу данных (блоки без индексации и оптимизации) после запуска программы в первый раз. По состоянию на март 2013 её размер составляет более 7 ГБ.
Заголовок блока имеет объём около 80 байт. Так как блоки генерируются примерно каждые 10 минут, то за год будет накапливаться около 4,2 Мб заголовков блоков.
Программное обеспечение сетевого узла существует в двух видах: приложение с графическим интерфейсом и фоновое приложение. В обоих случаях оно может управляться через программный интерфейс по протоколу [31] Это позволяет достаточно просто решить такие задачи, как:
Майк Хёрн (Mike Hearn), сотрудник компании Google, в рамках программы «20 % рабочего времени сотрудника» реализовал программное обеспечение узла Bitcoin на языке Java — BitcoinJ[33]. Эта реализация ограничена лишь пользовательскими функциями[34] (такой узел не может проверять транзакции и блоки, создавать блоки, а может лишь создавать новые транзакции). Это является шагом в сторону мобильных приложений, использующих биткойны.
На сегодня основной оборот биткойнов обеспечивают трейдеры, которые обменивают биткойны на различные валюты (доллары США, рубли, японские иены и другие) на онлайн-биржах[35]. По состоянию на апрель 2013 года, около 67 % всех транзакций с биткойнами происходит на бирже Mt.Gox.[36]
Биткойны также принимаются в обмен на сетевые услуги и реальные товары[37]. Многие организации в биткойнах принимают пожертвования[38][39][40][41][42].
Среди пользователей принято условное обозначение BTC.
Важные моменты в истории Bitcoin:
Mt.Gox («Mount Gox») — первая и наиболее популярная биржа купли-продажи биткойнов. Расположена в Японии. Торговля ведётся с использованием счёта трейдера в национальной валюте. Торговля напрямую между национальными валютами не поддерживается.
По состоянию на апрель 2013 года около 67 % всех транзакций с биткойнами делаются через эту площадку.[36]
Одна из крупнейших бирж, работающая с биткойном. Владельцы биржи находятся в Москве, а сама биржа зарегистрирована в офшорной зоне. Имеются торги за Доллары США, Российские рубли и Евро. Так же как и у Mt.Gox имеется торговый API. В отличие от Mt.Gox не требует идентификации личности.
16 мая 2013 года популярная платёжная система WebMoney объявила о вводе титульных знаков «WMX» обеспеченных биткойнами, находящимися на хранении у гаранта. 1 WMX эквивалентен 0,001 BTC [51] При передаче WMX внутри Webmoney транзакций в системе Bitcoin не проходит. Работа с WMX аналогично работе с другими титульными знаками WebMoney, и поэтому не требует ждать подтверждений (создания новых блоков) и позволяет возвращать ошибочные или мошеннические транзакции. В то же время WebMoney менее анонимна, чем Bitcoin. Возможен обмен WMX на другие титульные знаки, через внутренние сервисы Webmoney.
С другими биржами и обменными пунктами можно ознакомиться на Bitcoin Wiki.
В системе Bitcoin история всех сделок публично доступна. Можно проследить все операции с момента генерации до адреса текущего владельца.
В своей статье[10] Сатоси Накамото отмечает, что анонимно созданные адреса помогают сохранить конфиденциальность. Так же рекомендуется использовать новые адреса для каждой новой транзакции, чтобы избежать сопоставления их с одним владельцем.
В статье «An Analysis of Anonymity in the Bitcoin System» Фергал Рид и Мартин Харриган провели анализ степени анонимности в системе Bitcoin. Они показали, что с помощью общедоступной информации возможно связать многие открытые ключи как друг с другом, так и с какой-либо внешней идентифицирующей информацией. Также авторы статьи замечают, что биржи, магазины и хранилища кошельков способны выявлять и отслеживать значительную часть персональной активности, опираясь на e-mail, IP, номера кредитных карт и т. п.
Открытый исходный код Bitcoin был использован для создания других систем:
Правила эмиссии биткойнов дали больше преимуществ тем, кто занялся майнингом при небольшой совокупной мощности сети. Так, количество работы, необходимое для генерации блока, в настоящее время (2013 год) более чем в полмиллиона раз больше, чем в начале работы системы. При увеличении количества майнеров и запланированном уменьшении количества биткойнов в награде за майнинг, генерация становится более энерго- и аппаратнозатратной.
В середине 2011 года из-за спекулятивного спроса курс резко вырос до более чем тридцати долларов США, после чего упал примерно до двух долларов за биткойн. В течение 2012 года наблюдалась тенденция к росту, которая ускорилась в начале 2013 года. В апреле произошёл новый резкий подъём и последующий обвал. Значительные колебания курсов вызвали много обсуждений.
Так как эмиссия биткойнов ограничена (как по скорости, так и по общей сумме) и общее их количество никогда не превысит 21 млн, ряд авторов считают, что у людей есть стимул к спекулятивному накоплению биткойнов[52], исходя из предположения, что ограниченное предложение будет подталкивать курс к постоянному росту.
В отличие от товарных денег, биткойны (как и фидуциарные деньги) не имеют стоимости за рамками платёжной системы Bitcoin. В то же время, в отличие от фидуциарных денег, биткойны не имеют органа (центробанка или государства), который бы стремился обеспечить ликвидность на заданном уровне, обязался сам и/или обязывал других принимать оплату в биткойнах. Ряд авторов считают, что ограниченное количество биткойнов не является достаточным условием для гарантирования тенденции роста курса, так как ещё одним необходимым условием для этого является увеличение объёма предложения товаров и услуг за биткойны[53]. То есть неспекулятивная ценность биткойнов напрямую зависит от объёма только тех товаров и услуг, которые можно будет за них приобрести, а не общемировой товарной массы.
Возможность анонимности и неподконтрольность национальным органам власти привлекает к биткойнам теневой экономический оборот. Хотя наличные деньги тоже могут использоваться анонимно и сделки с ними также неконтролируемы, биткойны пригодны для быстрых удалённых платежей.
Так как в системе Bitcoin нет контролирующего центра, невозможно обжаловать и/или отменить несанкционированные транзакции. Если оплата произведена, но услуга или товар не получены, так же нет гарантий возврата платежа.
Опасным является кража файлов с ключами/адресами (wallet.dat). Злоумышленник может получить возможность перевода всех средств на свой адрес.
Уже были зафиксированы взломы биткойн-бирж и пулов совместной добычи[54][55][56][57]. На данный момент все крупные биржи значительно усилили меры безопасности и заявляют о невозможности повторения подобных краж.
Для генерации биткойнов возможно использование работниками корпоративных ресурсов.
В июне 2011 года Symantec заявила, что майнинг может быть запущен на ботнетах. В отчёте за второй квартал 2011 года Лаборатория Касперского сообщила о троянском модуле, который занимался скрытым майнингом[58]. В апреле 2013 была зафиксирована крупная эпидемия вирусного распространения через текстовые сообщения в Skype троянских программ, цель которых поиск и кража файлов wallet.dat и скрытый майнинг на CPU[59][60].
Из-за особенностей функционирования системы, объём информации, которую должен хранить и обрабатывать каждый пользователь стандартного клиента «Bitcoin-qt», постоянно растёт. По состоянию на конец апреля 2013 года необходимый объём превышает 8 ГБ. На загрузку и формирование базы данных с нуля может уходить более суток из-за огромного количества мелких дисковых операций. В случае роста популярности и увеличения числа транзакций до уровней, сравнимых с обычными платёжными системами проблема хранения и передачи данных может сделать невозможным использование bitcoin на большинстве обычных домашних компьютерах. По этой причине разработаны «тонкие клиенты», которые хранят на жестком диске лишь их заголовки, а содержимое блоков скачивают только по мере необходимости. С их помощью можно пользоваться платёжной системой, но при этом он не пойдёт для соло-майнинга или майнинга на пуле.
Биткойн.