Тип | |
---|---|
Разработчик |
Сатоси Накамото (Satoshi Nakamoto), Гэвин Андрисен (Gavin Andresen) |
Написана на | |
Операционная система |
Windows, Linux, Mac OS X |
Первый выпуск |
февраль 4, 2009 |
Последняя версия |
0.7.0 (17 сентября 2012) |
Состояние |
Beta |
Лицензия | |
Сайт |
bitcoin.org |
Bitcoin, Биткоин (англ. bit — единица информации «бит», англ. coin — «монета») — электронная пиринговая валютная система, созданная в 2009 году Сатоcи Накамото[1], реальная личность которого (или группы лиц) остаётся неизвестной.
Это название также относится к программному обеспечению с открытым исходным кодом, созданному им, и одноранговой сети, образованной этой программой. Хранилищем средств является файл кошелька, хранящийся на компьютере. Биткойн может быть отправлен любому пользователю в сети с использованием адреса Bitcoin.
В отличие от других валют, Биткойн не зависит от какого-либо центра, занимающегося выпуском валюты. Данные о перемещении денежных средств хранятся в распределённой БД. Невозможно распоряжаться чужими денежными средствами и потратить одни и те же средства дважды: для обеспечения безопасности используются криптографические методы.
Принцип одноранговой сети и отсутствие административного центра делает невозможным государственное регулирование и манипуляции курсом путём изменения денежной массы. Эмиссия биткойна алгоритмически ограничена. Биткойн предполагает анонимное владение и перевод денежных средств.
Биткойн — одна из первых реализаций криптовалюты, описанной в 1998 году Вэй Дай (Wei Dai) в рассылке шифропанков.
Содержание |
Биткойн основан на записи перемещений денежных средств с использованием асимметричного шифрования. Все транзакции публичны и хранятся в распределённой БД. Для предотвращения многократной траты одной и той же суммы сеть реализует нечто подобное распределённому серверу времени, используя идею цепочки хэшей, каждый из которых вычисляется на базе предыдущего. Для уменьшения размера БД используется древовидное хэширование.
Биткойн — реализация предложений Вэй Дай под названием b-money и Ника Сабо (Nick Szabo) под названием Bitgold. Принципы работы системы изложены в работе[2] Сатоси Накамото в 2008 году.
Bitcoin адрес является результатом преобразования открытого ключа пользователя. Публичные ключи, или адреса биткойн выполняют функцию конечных точек при отправке и приёме денежных средств. Соответствующие им приватные ключи авторизуют отправителя. Адреса не содержат никакой информации об их владельце и в общем случае являются анонимными[3]. Каждый участник сети биткойн имеет так называемый кошелёк, содержащий произвольное количество пар ключей. Bitcoin использует алгоритм ECDSA с параметрами secp256k1 для создания новых пар ключей. Размер закрытого ключа - 256 бит, а соответствующего ему открытого ключа - 512 бит. Пользователь биткойн может иметь множество адресов, создавая их по собственной инициативе. Создание нового адреса представляет собой создание новой пары ключей и не требует даже соединения с сетью. Создание адреса лишь для одной транзакции или одного корреспондента помогает сохранить анонимность.
Алгоритм создания Bitcoin адреса.
Адреса в текстовой форме представляют собой строки длиной до 34 символов, состоящие из букв латинского алфавита и цифр, например 13MBZ21g7KqpJWA9egnYwJuXef65ot5cT7
. Существуют варианты представления адресов биткойн в виде QR-кодов и других двухмерных штрихкодов, пригодных для считывания мобильными устройствами.
Bitcoin определяет каждую монету цепочкой цифровых подписей. Когда один пользователь передает некую сумму другому пользователю, он создает новую транзакцию, которая содержит хэш предыдущей транзакции, подписанный им, и публичный ключ следующего владельца[4]. Затем эта информация широковещательным запросом отправляется в сеть биткойн. Остальные участники сети проверяют подписи, прежде чем принять транзакцию к обработке.
Возможны случаи, когда необходимо передать средства, полученные из разных транзакций нескольким различным пользователям. Для этих целей транзакции поддерживают множественные входы и выходы. Значения со всех входов суммируются, и сумма распределяется по выходам.
Для того чтобы проверить транзакцию применяются сценарии на Forth-подобном языке. В настоящее время в Bitcoin существует три различных сценария транзакции: перевод на IP-адрес, перевод на Bitcoin-адрес и генерация. Последний тип транзакций используется при генерации блоков для эмиссии новых монет.
Транзакции не подтверждаются, пока не будут коллективными усилиями сети упакованы в последовательность блоков. Подтверждение основывается на том, что проделанная работа по упаковке может быть быстро проверена, что исключает многократное расходование одних и тех же средств и подделку.
Блок представляет собой запись всех или некоторых из самых последних транзакций, которые еще не были записаны в предыдущие блоки. Он делится на заголовок и список транзакций. Заголовок блока включает в себя свой SHA-256 хэш, версию блока(сейчас используется только данная версия блока - 1), SHA-256 хэш предыдущего блока из цепочки, список хэшей транзакций, время создания блока, параметры bits и nounce, количество транзакций в блоке и размер блока в байтах. В начало списка транзакций добавляется транзакция генерации, которая в случае успешной генерации блока передает пользователю награду за созданный блок.
Созданный блок будет принят остальными пользователя только в том случае, если SHA-256 хэш заголовка равен или ниже определенной цели, которая вычисляется из параметра bits. Например, если значение bits 0x1a0115cb
, то целью является 0x0115cb * 2**(8*(0x1a - 3)) = 0x0000000000000115cb0000000000000000000000000000000000000000000000
. Максимально возможная цель (т.е. минимальная сложность) определяется значением bits 0x1d00ffff
.
Если блок не удовлетворяет цели, то параметр nounce изменяется и хэш пересчитывается. Этот процесс требует множества циклов проб и ошибок, так как результат функции хэширования (SHA-256) практически непредсказуем. Когда задача решена, узел рассылает полученный блок всем подключенным узлам. Другие узлы проверяют блок, и, если он верен, принимают его в качестве следующего действительного, то есть добавляют в цепочку.
Цель корректируется каждые 2016 блоков, в зависимости от того, сколько времени понадобилось на их создание. В идеале вся сеть будет генерировать один блок каждые 10 минут, т.е. на генерацию 2016 блоков должно уйти две недели. Если 2016 блоков было сгенерировано больше чем за две недели, то цель увеличивается, в противном случае уменьшается. Таким образом, система будет генерировать блоки с постоянной скоростью, не зависящей от мощности сети.
Таким образом цепочка блоков содержит криптографическую историю владения определённой порцией биткойн[5]. Если пользователь попытается использовать некогда полученные биткойны снова, сеть не примет его транзакцию как действительную.
Первой транзакцией каждого блока-кандидата является начисление генерирующему узлу вознаграждения в 50 биткойн. После создания каждых 210 000 блоков[6] вознаграждение будет уменьшаться в 2 раза[7]. Таким образом, общее число биткойнов не превысит 21 000 000. В случае выхода части этих средств из оборота, данное ограничение не будет проблемой, так как минимальный объём транзакции составляет 10−8 биткойн.
Вероятность получения вознаграждения зависит от отношения вычислительной мощности узла к суммарной вычислительной мощности всех узлов сети[8]. Желающие получить возможно большее вознаграждение стремятся задействовать как можно большие вычислительные мощности для генерации: использование векторных графических процессоров (GPU)[9] (в сотни раз эффективнее CPU[10]). Этот вид деятельности получил название «майнинг» (англ. mining — добыча ископаемых, шахтная разработка), вероятно, из-за сходства с золотодобычей. По мере падения объёма вознаграждения мотивация пользователей, вероятно, сместится на сбор комиссий.
Так как вычислительные мощности сети непостоянны, программное обеспечение узлов через каждые 2016 блоков, а это примерно каждые две недели, пересчитывает[11] требования к хэшам блоков таким образом, чтобы поддерживать среднюю частоту генерации на уровне 6 блоков в час. Таким образом скорость эмиссии жестко задана самим алгоритмом и не может быть изменена сторонними факторами.
В Bitcoin была добавлена система, организующая записи транзакции таким образом, что пользователь может локально удалять данные из своей базы, которые ему точно не понадобятся. После того как все транзакции с какими-то средствами были упакованы в блоки, предыдущие транзакции с этими средствами можно отбросить для экономии места на диске. Для того, чтобы это можно было осуществить без изменения хэша блока, транзакции хэшируются с помощью TTH и в заголовок блока помещается только результат данного хэширования.
Сейчас все пользователи Bitcoin получают полную базу данных(блоки без индексации и оптимизации) после запуска программы в первый раз. По состоянию на август 2012 ее размер составляет чуть больше 2 ГБ. Заголовок блока без транзакций имеет объем около 80 байт. Так как блоки генерируются примерно каждые 10 минут, то за год будет накапливаться 4.2 МБ блоков.
Для уменьшения влияния фактора удачи и более равномерного и предсказуемого заработка, пользователи могут объединяться в вычислительные пулы[12]. Вклад пользователя в пул оценивается в шарах (shares). Шара — это кандидат в подпись блока, в среднем нужно 232 операций хэширования для нахождения одной шары[13]. Для нахождения блока в среднем требуется количество шар, равное текущей сложности. Существуют 3 основных типа начисления наград[14]:
У этих типов начисления есть следующие популярные варианты:
Некоторые пулы позволяют использовать совмещенный майнинг нескольких криптовалют сразу[15], выводить средства не только в биткоинах, но и в других валютах, в том числе в рублях, долларах и евро, раздают комиссию с найденных пулом блоков пользователям[16].
В системе биткойн не предусмотрено обязательных комиссионных сборов. Пользователи могут добровольно включать в платёж произвольную сумму комиссионного сбора, что повышает приоритет обработки такой транзакции. Комиссионный сбор достаётся узлу, сгенерировавшему блок с такой транзакцией[3].
Программное обеспечение сетевого узла биткойн существует в двух видах: приложение с графическим интерфейсом и фоновое приложение. В обоих случаях оно может управляться через программный интерфейс по протоколу JSON-RPC (RFC 4627)[17] Это позволяет достаточно просто решить такие задачи, как:
Несмотря на экспериментальный статус проекта, он стремительно набирает популярность. Биткойны принимаются в обмен на сетевые услуги и реальные товары[21]. Многие организации принимают пожертвования в этой валюте[22]. Трейдеры обменивают биткойн на различные валюты (доллары США, рубли, японские йены и другие) на онлайн-биржах[23][24].
Среди пользователей валюты принято условное обозначение BTC.
В отличие от обычных, декретных валют, в системе биткойн нет контролирующих органов[25]. Это уменьшает нестабильность, создаваемую центральными банками и правительствами. Эмиссия ограничена, запрограммирована и её ход известен всем участникам рынка наперёд[2].
Платежи осуществляются напрямую, без посредничества каких-либо финансовых организаций. Отмена платежа невозможна. Информация о совершённом платеже распространяется плательщиком по всей сети и принимается всеми остальными участниками сети, если соответствует правилам. Неправильные платежи отвергаются. Платежи не облагаются обязательной комиссией, однако комиссия может быть уплачена добровольно для ускорения обработки платежа[2].
Общее количество денежных единиц не превысит 21 000 000 биткойн. Объём увеличивается в виде суммы убывающей геометрической прогрессии и приближается к максимальному значению асимптотически. В будущем ожидается дефляция, что не является проблемой, так как денежная единица делится до 8-го десятичного знака[3]. Эмиссия остановится, интерес поддержки узлов сети пользователями переключится на сбор комиссий.
Возможные сценарии неудачи включают обесценивание, потерю интереса пользователей и глобальный сговор правительств по блокированию сети. Однако последнее маловероятно[26]. Сам проект Биткойн, вероятно, является реакцией на попытки, в частности, правительства США помешать деятельности компаний наподобие E-Gold и Liberty Dollar (англ.)русск.. Заложенные в нём принципы децентрализации и анонимности не оставляют звеньев, атака на которые приведёт к отказу всей системы[27]. Но имеющаяся децентрализация не может считаться полной, пока есть такие узкие места, как обменники, которые могут быть объявлены вне закона в любой момент.
Благодаря открытости оригинальный код Bitcoin был использован для создания множества короткоживущих альтернативных криптовалют. Альтернативные валюты, как правило, возможно поменять на Bitcoin на бирже. СравнениеBitcoin Pie показывает, что Bitcoin имеет доминирующую долю рынка.
рыночной капитализации Bitcoin и других альтернатив наОригинальный код был использован для создания сети Namecoin — системы альтернативных корневых DNS-серверов.
Также существует похожий на Bitcoin проект Litecoin.
Архитектура bitcoin даёт больше преимуществ тем майнерам, которые начали добычу раньше. Так, количество работы, необходимое для генерации блока, в настоящее время более чем в полмиллиона раз больше, чем в начале работы системы. При увеличении количества участников и автоматическом уменьшении количества монет в награде за майнинг, генерация монет становится более энерго- и аппаратнозатратнее. Когда сложность генерации стала достаточно высокой, майнеры из стран, в которых электроэнергия относительно дорогая, оказались в неравных условиях с майнерами из стран, в которых электроэнергия относительно дешёвая.
Так как эмиссия ограничена и запрограммирована, а общее количество никогда не превысит 21 000 000 БТК, в будущем вполне вероятна дефляция биткоина[28]. Из-за чего у игроков рынка может иметься стимул к накоплению монет с целью спекуляции[29][30], если они посчитают, что курс будет непрерывно расти. При этом следует учитывать, что на долгосрочное укрепление биткоина напрямую будет влиять рост количества только тех товаров и услуг, которые можно будет за них приобрести, а не товаров и услуг в целом, поэтому из ограниченного количества биткоинов вовсе не следует неизбежный рост их курса[31]. Например, в середине 2011 года из-за спекулятивного спроса курс резко вырос до более, чем тридцати долларов США за биткоин, после чего упал примерно до двух.
По причине анонимности и неконтролируемости, биткоин идеально подходит для теневой экономики, что может послужить формальным поводом юридической атаки на биткоин со стороны тех, кому он экономически не выгоден. Хотя наличные деньги не менее анонимны, а сделки по ним также неконтролируемы, они менее удобны для удалённых платежей.
Так как у Bitcoin нет контролирующего центра, возможно их воровство без возможности отмены несанкционированных транзакций. Также возможны взломы биткоин-бирж и пулов совместной добычи, имевшие место на практике[32][33][34][35].
В июне 2011 года Symantec заявила, что майнинг может быть запущен на ботнетах. Таким образом, сотни и тысячи компьютеров начнут работать над генерацией криптовалюты без ведома их владельцев. Также возможно использование работниками корпоративных ресурсов для генерации биткойнов.
Из-за особенностей функционирования системы, объём информации, которую должен хранить и обрабатывать каждый участник обмена постоянно растёт. Уже сейчас (при примерно 190 000 выпущенных в обращение блоках и примерно 5000 транзакциях в сутки) объём базы данных хранимой каждым участником обмена превышает 3000 Мб, а её первоначальные загрузка/создание/проверка (после первой установки программы-клиента) занимают около суток работы среднего компьютера и огромный объём дисковых операций (более 700 Гб). В случае роста популярности увеличение объёма транзакций до уровней сравнимых с обычными платёжными системами (от 100 000 транзакций в сутки и более) сделает невозможным использование bitcoin на обычных персональных компьютерах без существенных изменений в принципах работы системы. По этой причине активно идет разработка альтернативных клиентов, реализованных в соответствии с идеологией «тонкого клиента», то есть не хранящих на жестком диске содержимое блоков, а вместо этого хранящих лишь их заголовки.
По словам Сатоси, разработка биткоина началась в 2007 году[36].
Bitcoin.