Vdvanr.ru

Проект Полиграфия

Bitcoin

Bitcoin
Тип

Электронные деньги

Разработчик

Сатоси Накамото (Satoshi Nakamoto), Гэвин Андрисен (Gavin Andresen)

Написана на

C++

Операционная система

Windows, Linux, Mac OS X

Первый выпуск

февраль 4, 2009 (2009-02-04)

Последняя версия

0.7.0 (17 сентября 2012)

Состояние

Beta

Лицензия

MIT License

Сайт

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 адреса.

  1. Открытый ключ последовательно хэшируется с помощью SHA-256 и RIPEMD-160.
  2. Перед результатом пункта 1 добавляется байт ID сети (0x00 - основная сеть).
  3. Применяется SHA-256 к результату пункта 2.
  4. Выбираются первые 32 бита от результата предыдущего шага и добавляются в конец результата пункта 2.
  5. Результат пункта 4 преобразуется в base58 строку при помощи Base58Check кодирования.

Адреса в текстовой форме представляют собой строки длиной до 34 символов, состоящие из букв латинского алфавита и цифр, например 13MBZ21g7KqpJWA9egnYwJuXef65ot5cT7. Существуют варианты представления адресов биткойн в виде QR-кодов и других двухмерных штрихкодов, пригодных для считывания мобильными устройствами.

Транзакции

Bitcoin определяет каждую монету цепочкой цифровых подписей. Когда один пользователь передает некую сумму другому пользователю, он создает новую транзакцию, которая содержит хэш предыдущей транзакции, подписанный им, и публичный ключ следующего владельца[4]. Затем эта информация широковещательным запросом отправляется в сеть биткойн. Остальные участники сети проверяют подписи, прежде чем принять транзакцию к обработке.

Возможны случаи, когда необходимо передать средства, полученные из разных транзакций нескольким различным пользователям. Для этих целей транзакции поддерживают множественные входы и выходы. Значения со всех входов суммируются, и сумма распределяется по выходам.

Для того чтобы проверить транзакцию применяются сценарии на Forth-подобном языке. В настоящее время в Bitcoin существует три различных сценария транзакции: перевод на IP-адрес, перевод на Bitcoin-адрес и генерация. Последний тип транзакций используется при генерации блоков для эмиссии новых монет.

Цепочка блоков

Основная последовательность блоков (чёрные) является самой длинной от начального (зелёный) до текущего. Побочные ветви (cерые) отсекаются.

Транзакции не подтверждаются, пока не будут коллективными усилиями сети упакованы в последовательность блоков. Подтверждение основывается на том, что проделанная работа по упаковке может быть быстро проверена, что исключает многократное расходование одних и тех же средств и подделку.

Блок представляет собой запись всех или некоторых из самых последних транзакций, которые еще не были записаны в предыдущие блоки. Он делится на заголовок и список транзакций. Заголовок блока включает в себя свой 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]:

  • Proportional — После нахождения пулом блока награда делится пропорционально вкладу каждого участника.
  • PPS — Оплачивается каждая присланная шара. Оценивается как текущее количество монет в блоке деленные на текущую сложность.
  • Score — Оценочная система оплаты шар, алгоритм определяется пулом. Как правило, системы похожи на Proportional, но помимо вклада каждого участника системы стремятся оценить и его актуальность.

У этих типов начисления есть следующие популярные варианты:

  • SMPPS — Аналогично PPS, но пул никогда не выплачивает пользователям больше, чем реально заработал сам. Разница между реальным заработком и стоимостью шар в PPS, если таковая есть, выплачивается постепенно.
  • ESMPPS — Аналогично SMPPS, но уравнивает приоритеты выплат постоянным и новым участникам пула.
  • RSMPPS — Аналогично SMPPS, но первыми в очереди на выплаты ставятся новые пользователи.
  • PPLNS — Аналогично Proportional, но деление награды осуществляется пропорционально вкладу в последние сложность/N присланных на пул шар, где N обычно равно 2.

Некоторые пулы позволяют использовать совмещенный майнинг нескольких криптовалют сразу[15], выводить средства не только в биткоинах, но и в других валютах, в том числе в рублях, долларах и евро, раздают комиссию с найденных пулом блоков пользователям[16].

Комиссионные сборы

В системе биткойн не предусмотрено обязательных комиссионных сборов. Пользователи могут добровольно включать в платёж произвольную сумму комиссионного сбора, что повышает приоритет обработки такой транзакции. Комиссионный сбор достаётся узлу, сгенерировавшему блок с такой транзакцией[3].

Программный интерфейс

Программное обеспечение сетевого узла биткойн существует в двух видах: приложение с графическим интерфейсом и фоновое приложение. В обоих случаях оно может управляться через программный интерфейс по протоколу JSON-RPC (RFC 4627)[17] Это позволяет достаточно просто решить такие задачи, как:

  • Подключить к одному узлу несколько программ-майнеров, создав собственный пул;
  • Интегрировать узел с веб-магазином, обменником или другой службой, связанной с оплатой[18];

Другие реализации

  • Майк Хёрн (Mike Hearn), сотрудник компании Google, в рамках программы «20 % рабочего времени сотрудника» реализовал программное обеспечение узла Bitcoin на языке Java — BitcoinJ[19]. Эта реализация ограничена лишь пользовательскими функциями[20] (такой узел не может проверять транзакции и блоки, создавать блоки, а может лишь создавать новые валидные транзакции, что, впрочем, достаточно для работы клиента), однако это является немалым шагом в сторону мобильных приложений, использующих Bitcoin.

Экономика

Несмотря на экспериментальный статус проекта, он стремительно набирает популярность. Биткойны принимаются в обмен на сетевые услуги и реальные товары[21]. Многие организации принимают пожертвования в этой валюте[22]. Трейдеры обменивают биткойн на различные валюты (доллары США, рубли, японские йены и другие) на онлайн-биржах[23][24].

Среди пользователей валюты принято условное обозначение BTC.

Отличия от других валют

Количество биткойнов с течением времени

В отличие от обычных, декретных валют, в системе биткойн нет контролирующих органов[25]. Это уменьшает нестабильность, создаваемую центральными банками и правительствами. Эмиссия ограничена, запрограммирована и её ход известен всем участникам рынка наперёд[2].

Платежи осуществляются напрямую, без посредничества каких-либо финансовых организаций. Отмена платежа невозможна. Информация о совершённом платеже распространяется плательщиком по всей сети и принимается всеми остальными участниками сети, если соответствует правилам. Неправильные платежи отвергаются. Платежи не облагаются обязательной комиссией, однако комиссия может быть уплачена добровольно для ускорения обработки платежа[2].

Общее количество денежных единиц не превысит 21 000 000 биткойн. Объём увеличивается в виде суммы убывающей геометрической прогрессии и приближается к максимальному значению асимптотически. В будущем ожидается дефляция, что не является проблемой, так как денежная единица делится до 8-го десятичного знака[3]. Эмиссия остановится, интерес поддержки узлов сети пользователями переключится на сбор комиссий.

Последствия

Возможные сценарии неудачи включают обесценивание, потерю интереса пользователей и глобальный сговор правительств по блокированию сети. Однако последнее маловероятно[26]. Сам проект Биткойн, вероятно, является реакцией на попытки, в частности, правительства США помешать деятельности компаний наподобие E-Gold и Liberty Dollar (англ.)русск.. Заложенные в нём принципы децентрализации и анонимности не оставляют звеньев, атака на которые приведёт к отказу всей системы[27]. Но имеющаяся децентрализация не может считаться полной, пока есть такие узкие места, как обменники, которые могут быть объявлены вне закона в любой момент.

Альтернативы

Благодаря открытости оригинальный код Bitcoin был использован для создания множества короткоживущих альтернативных криптовалют. Альтернативные валюты, как правило, возможно поменять на Bitcoin на бирже. Сравнение[источник не указан 204 дня] рыночной капитализации Bitcoin и других альтернатив на Bitcoin Pie показывает, что 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].

См. также

Примечания

  1. Satoshi Nakamoto в Bitcoin Wiki
  2. ↑ Bitcoin: A Peer-to-Peer Electronic Cash System (1 августа 2011).
  3. ↑ Bitcoin: Virtual money created by CPU cycles, LWN.net (10 ноября 2010).
  4. Transactions — Bitcoin
  5. Bitcoin Block Explorer - сайт, позволяющий просматривать цепочку блоков. Архивировано из первоисточника 15 июля 2012.
  6. На момент 2011-02-14 их количество приблизительно равно 108 100
  7. Описание контролируемой инфляции
  8. The FED’s Real Monetary Problem (23 июля 2010). Проверено 12 октября 2010.
  9. http://www.theregister.co.uk/2011/08/16/gpu_bitcoin_brute_forcing/ «the idea of GPGPU extremely attractive for the purpose of bitcoin mining»
  10. http://arstechnica.com/tech-policy/news/2011/08/symantec-spots-malware-that-uses-your-gpu-to-mine-bitcoins.ars «estimates that GPUs can compute hashes up to 750 times as quickly as a typical CPU.»
  11. История изменения сложности сети Bitcoin
  12. Pooled Mining //Bitcoin wiki
  13. Reward systems //Bitcoin wiki
  14. Mining pool reward FAQ //Bitcoin wiki
  15. Merged mining
  16. Comparison of mining pools //Bitcoin wiki
  17. Спецификация API
  18. Библиотека классов для PHP5
  19. BitcoinJ на Google Code
  20. Google releases open source Bitcoin client — open source, money, Google, Gavin Andresen, Economics, e-commerce, Bitcoin — Java — Development — Techworld
  21. Bitcoin Trade. Bitcoin.org. Проверено 16 мая 2011.
  22. Donate to ReactOS — ReactOS Website
  23. Bitcoin Charts
  24. Could the Wikileaks Scandal Lead to New Virtual Currency? (10 октября 2010). Проверено 10 октября 2010.
  25. Bitcoin FAQ
  26. Imagine your computer as a wallet full of Bitcoins (26 November 2010). Проверено 19 декабря 2010.
  27. 2011 Observations on the Digital Currency Industry. SSRN (Article for DGC magazine Jan2011) (6 December 2010). Архивировано из первоисточника 15 июля 2012. Проверено 19 декабря 2010.
  28. http://btcsec.com/chto-takoe-bitcoin/
  29. http://blogs.computerra.ru/8356 " дефляционная спираль может привести к коллапсу сети. В тот момент, когда цена продукта возрастает, люди начинают его копить, "
  30. Technical Analysis in the Virtual World. Philip Daniel «As bitcoins deflate and gain value relative to other currencies, those holding bitcoins become more wealthy. As deflation happens the incentive to hold bitcoins and not spend them increases. This could hurt the bitcoin economy»
  31. Онлайн-конференция «Биткойн: переходим на электронные деньги»
  32. BTC-E | News
  33. Хакерская атака на Mt Gox
  34. Взломаны cервера на Linode, украдено около 50K BTC ($250K) / Хабрахабр
  35. Кража 24,000 BTC у Bitfloor
  36. Questions about Bitcoin

Ссылки

  • Официальный сайт
  • https://ru.bitcoin.it/wiki/FAQ
  • Русскоязычный информационный ресурс о сети Bitcoin
  • Онлайн-конференция «Биткойн: переходим на электронные деньги»
  • Курс bitcoin на биржах
  • Сравнение оборудования пригодного для генерации bitcoin
  • Евгений Золотов BitCoin как убежище: стоит ли вложиться в криптовалюту?

Bitcoin.

© 2012–2023 vdvanr.ru, Россия, Ангарск, ул. Попова 64, +7 (3951) 07-85-92