Суббота, 04.05.2024, 05:01
Приветствую Вас Гость | RSS

"POZDPAK.RU" Малая энергетика по региону Удмуртия (РФ)

Меню сайта
Поиск по сайту
Statistics

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Bitcoin

Bitcoin logo.svg

Bitcoin, Биткоин[1], часто Биткойн (от англ. bit — единица информации «бит», англ. coin — «монета») — пиринговая электронная платёжная система, использующая одноимённые единицы для учёта. На собственном сайте Bitcoin характеризуются как «цифровая валюта». В официальных отчётах Всемирного банка, ЕЦБ и ФБР — «виртуальная валюта»[2][3][4]. По классификации комиссии по финансовым преступлениям (англ. FinCEN) при министерстве финансов США Bitcoin относят к «децентрализованным виртуальным валютам»[5]. Часто bitcoin называют «криптовалютой»[4][6][7][8].

Сеть полностью децентрализована, не имеет центрального администратора или какого-либо его аналога.

Биткоины могут использоваться для электронной оплаты товаров/услуг у продавцов, готовых их принимать. Есть возможность обмена на обычные деньги через специализированные площадки для торгов или обменники.

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

Базовым элементом этой платёжной системы является программа-клиент с открытым исходным кодом. С помощью сетевого протокола прикладного уровня запущенные на множестве компьютеров клиенты соединяются между собой в одноранговую сеть.

Для обеспечения функционирования и защиты системы используются криптографические методы.

Содержание

История создания

Идеи криптовалюты «b-money» описал в 1998 году Вэй Дай (Wei Dai) в рассылке шифропанков[9]. Так же были предложения Ника Сабо (Nick Szabo) под названием «Bitgold».

В 2008 году человеком или группой лиц под псевдонимом[10] Сатоси Накамото (Satoshi Nakamoto) был опубликован файл «Bitcoin: Peer-To-Peer Electronic Cash System» с описанием протокола и принципа работы одноранговой сети. По словам Сатоси, разработка началась в 2007 году[11]. В 2009 году он закончил разработку протокола и опубликовал клиент, после чего сеть была запущена.

Дальнейшую разработку организовывает и координирует Гэвин Андресен (англ. Gavin Andresen).

Описание

Одно из главных отличий биткоинов от традиционных электронных денег и безналичных расчётов заключается в том, что биткоины не являются долговыми обязательствами эмитента. Биткоины нематериальны и являются всего лишь числом, связанным с набором условий. Воспользоваться данной суммой может тот, кто выполнит все условия.[12] Стандартным условием является использование bitcoin-адреса, но условия могут быть и другими. Биткоины могут быть использованы только для передачи внутри этой платёжной системы. Их стоимость не привязана к какой-либо валюте или другому активу. Курс обмена на разные валюты сейчас определяется исключительно балансом спроса и предложения.

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

Эмиссия и оборот биткоинов полностью децентрализованы, не зависят от какого-либо регулирующего органа, объём эмиссии известен заранее. Данные о перемещении и эмиссии биткоинов хранятся в распределённой базе данных. Биткоины могут быть отправлены любому другому пользователю системы. При этом можно использовать любые дробные суммы с точностью до восьмого знака после десятичной запятой[13]. Все транзакции находятся в открытом доступе, но без раскрытия информации о реальном владельце[3]. Каждый пользователь может создать себе неограниченное количество адресов. Секретные ключи асимметричных пар ключей хранятся в файле кошелька wallet.dat, а соответствующие им публичные ключи используются для формирования bitcoin-адресов[14]. Гипотетически есть ненулевая вероятность, что цепочка блоков будет аннулирована и в системе главной будет признана другая цепочка блоков. Вероятность такого события резко понижается с ростом длины цепочки. Но если контролировать более половины вычислительной мощности всей сети, то такая подмена возможна для любой цепочки, что гипотетически позволяет реализовать двойную трату одних и тех же биткоинов.[15].

Принцип одноранговой сети и отсутствие административного центра делает невозможным государственное или частное регулирование системы, а также манипуляции с изменением суммарного количества bitcoin.

Эмиссия осуществляется автоматически, новые биткоины получают относительно случайным образом те, кто использует вычислительные мощности своего оборудования для поддержания работы системы Bitcoin (для создания новых блоков базы). Объём эмиссии алгоритмически ограничен так, чтобы общее количество эмитированных биткоинов никогда не превысило верхний предел равный 21 миллиону[7] — сумме бесконечно убывающей геометрической прогрессии со знаменателем ½, количество эмитированных биткоинов приближается к этому значению асимптотически. Скорость эмиссии стабильна (равное суммарное количество биткоинов за примерно равные промежутки времени) и запрограммирована на уменьшение в 2 раза приблизительно раз в 4 года. Деятельность по созданию новых блоков с возможностью получить эмитированные биткоины и комиссионные сборы получила название «майнинг» (от англ. mining — добыча полезных ископаемых). В первых версиях клиента была кнопка «сгенерировать новые биткоины»[10], но после выхода софта для майнинга на видеокартах и FPGA используемый в клиенте майнинг при помощи центрального процессора оказался нерентабельным и кнопку убрали.

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

Майнингом можно заниматься как в одиночку (соло-майнинг), так и совместно, воспользовавшись услугами одного из специальных сервисов, которые называют «пулами». Пользователи предоставляют пулу свои вычислительные мощности. В свою очередь, пул, осуществляя соло-майнинг, распределяет полученные им биткоины между пользователями, в соответствии с установленными владельцем пула правилами. Основная причина объединения в пулы — уменьшение риска длительного неполучения награды. Вероятность получения награды соло-майнером в произвольный десятиминутный период приблизительно равна соотношению его вычислительной мощности к вычислительной мощности всей сети. И если это соотношение очень маленькое, то вероятность получения награды даже за длительный промежуток времени также будет низкой.

Величина награды равна сумме комиссионных сборов и эмиссии. 28 ноября 2012 года произошло первое уменьшение эмиссионной составляющей награды с 50 до 25 биткоинов.

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

Технические подробности

Хранение данных

БД публично хранит в незашифрованном виде информацию о всех транзакциях, подписываемых с помощью асимметричного шифрования. Для предотвращения многократной траты одной и той же суммы используются метки времени[18], реализованные путём разбиения БД на цепочку специальных блоков, каждый из которых в числе прочего содержит в себе хеш предыдущего блока и свой порядковый номер. Каждый новый блок осуществляет подтверждение транзакций, информацию о которых содержит и дополнительное подтверждение транзакций во всех предыдущих блоках цепочки. Для уменьшения размера БД используется древовидное хеширование[19].

Для более наглядного объяснения механизма работы платёжной системы, Cатоси ввёл понятие «цифровая монета»[20], определив данное понятие, как цепочку цифровых подписей. Исходя из данного определения, каждая монета имеет свой собственный номинал. А каждому bitcoin-адресу может сопоставляться любое количество монет. При помощи транзакций монеты можно делить и объединять, при этом их суммарный номинал за вычетом комиссии сохраняется.

Транзакции

Транзакции

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

Транзакции поддерживают множественные входы (результаты предыдущих транзакций) и выходы (указания о получателях). В общем случае транзакция может содержать произвольное количество выходов (возможны случаи, когда необходимо передать средства нескольким получателям с помощью одной транзакции, что позволит сэкономить на комиссионных сборах). Транзакция также может содержать множество входов, которые могут являться даже совпадающими bitcoin-адресами. Такое может иметь место, когда было несколько входящих транзакций на один адрес. Каждая первая и только первая транзакция в блоке не имеет входов и зачисляет вознаграждение за создание данного блока. Такая транзакция должна получить 120 подтверждений, чтобы полученные с помощью неё биткоины могли быть использованы. Значения со всех входов суммируются и сумма распределяется по выходам. Разница между суммой на входе и суммой на выходе считается комиссией за осуществление транзакции. Размер вознаграждения, зачисляемого первой транзакцией является суммой всех комиссий у транзакций включённых в блок и фиксированного значения изначально равного 50 и уменьшающегося вдвое каждые 210000 блоков.

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

Большинство транзакций, имеющих входы, имеют минимум два выхода: с указателем получателя монеты с номиналом, равным отправленной сумме, и указателя на отправителя для «сдачи» — монеты с номиналом, который остался от суммарного номинала на входе за вычетом комиссии. «Bitcoin-qt» отправляет каждую сдачу на новый bitcoin-адрес из резерва заранее созданных и скрытых от пользователя адресов. Информация о том, какая именно монета является сдачей отсутствует в БД.

Ключи

Каждый пользователь системы может генерировать неограниченное количество пар ключей, которые хранятся в специальном файле (кошельке). Для создания новых пар ключей использует алгоритм ECDSA с параметрами secp256k1. Размер закрытого ключа — 256 бит, а соответствующего ему открытого ключа — 512 бит. Создание новой пары ключей автономно и не требует соединения с сетью.

Адресация

Передача биткоинов происходит с выставлением условий для получателя. Воспользоваться суммой сможет тот, кто сможет выполнить все условия.[12] Стандартным условием является использование bitcoin-адреса. Но условия могут быть и другими, например, последовательное использование нескольких bitcoin-адресов и/или привязка к определённому IP-адресу. Bitcoin-адрес генерируется на основе преобразования публичного ключа пользователя. Секретные (приватные) ключи авторизуют владельца. Bitcoin-адреса не содержат персональной информации о владельце[13]. Человек может иметь множество адресов, создавая их по собственной инициативе, для чего даже не требуется подключение к интернету. Создание адреса лишь для одной транзакции или одного корреспондента помогает сохранить анонимность.

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

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

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

Любые транзакции не считаются легитимными (не считаются «подтверждёнными»), пока информация о них не будет сгруппирована в специальные структуры — блоки. Структура и информация в блоках подчиняется заданным правилам и её можно быстро проверить. Каждый блок всегда содержит информацию об одном предыдущем блоке. Это позволяет все существующие блоки выстроить в одну цепочку, которая представляет собой распределённую базу данных и содержит информацию о всех совершённых когда-либо операциях с биткоинами.

Блоки одновременно создаёт множество майнеров. Регулярно возникают ситуации, когда один и тот же блок является предыдущим для двух новых блоков. В каждом из новых блоков могут встречаться как одинаковые транзакции, так и разные, то есть вошедщие только в один из них. Через некоторое время появляются очередные блоки, цепочка может раздвоиться. Каждая из ветвей равноправна до тех пор, пока одна из них не получит более длинное продолжение. Обычно, при равенстве длины предпочтение отдаётся той цепочке, конечный блок которой появился раньше. Система автоматически легитимной считает более длинную цепочку, не обращая внимание на время создания последнего блока. Транзакции, вошедшие исключительно в менее длинную ветку (в том числе по выплате вознаграждения), теряют статус подтверждённых. Если это транзакция по передаче биткоинов, то она может быть включена в очередной блок. Транзакции получения вознаграждения за создания отсечённых блоков не дублируются в другой ветке, то есть «лишние» биткоины за отсечённые блоки не получают дальнейших подтверждений и «утрачиваются».

Таким образом цепочка блоков содержит историю владения, с которой можно ознакомиться, например, на специализированных сайтах[22].

Атака «Double Spending»

Если пользователь попытается использовать ранее потраченные биткоины снова, сеть не примет его транзакцию как действительную. Но в параллельных ветках блоков могут находиться транзакции, которые по разному расходуют одни и те же начальные средства. Вероятность существования параллельных цепочек блоков крайне мала и экспоненциально уменьшается с ростом длины цепочки и количества независимых майнеров. Таким образом, чем больше подтверждений имеет транзакция, тем менее вероятна отмена транзакции из-за отмирания содержащей её цепочки блоков. Однако, при наличии у злоумышленника контроля над достаточно большой долей суммарной мощности майнинга, существует ненулевая вероятность «тайного» выстраивания длинных параллельных цепочек блоков. После их публикации в сети главной будет признана более длинная цепочка. Отмена цепочки блоков может приводить к признанию недействительными транзакций даже подтвержденных несколькими блоками и последующей повторной трате средств.

При наличии в одних руках свыше 50 % суммарной мощности майнинга такая ситуация возможна на любом уровне подтверждения (атака «Double Spending» или «атака 51 %»)[23]. Если подконтрольная мощность меньше 50 %, то вероятность успеха экспоненциально снижается с каждым подтверждением.


Проведение успешной атаки не позволяет:

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


В середине мая 2013 года мощность сети превысила 1 эксафлопс, превысив в 6,35 раза суммарную мощность всех суперкомпьютеров из рейтинга TOP500[24]. В средине июля 2013 года мощность сети превысила 210,46 THash/s, что эквивалентно 2,68 эксафлопсам . Производительность сети Bitcoin к 6 октября 2013 года достигла 17 эксафлопс[25].

Структура блока

Блок делится на заголовок и список транзакций. Заголовок блока включает в себя свой хеш, хеш предыдущего блока, хеши транзакций и дополнительную служебную информацию. Первой транзакцией в блоке всегда записывается генерация новых биткоинов, которые в случае успешной генерации блока станут наградой пользователю за созданный блок. Далее идут все или некоторые из последних транзакций, которые ещё не были записаны в предыдущие блоки.

Созданный блок будет принят остальными пользователями, если числовое значение хеша заголовка равно или ниже определённой цели, величина которой периодически корректируется. Если блок не удовлетворяет цели, то изменяется блок служебной информации в заголовке и хеш пересчитывается. Обычно требуется большое количество попыток, так как результат хеширования (функции SHA-256) практически непредсказуем. Когда вариант найден, узел рассылает полученный блок другим подключенным узлам. Другие узлы проверяют блок. Если ошибок нет, то блок считается добавленным в цепочку и следующий блок должен включить в себя его хеш.

Величина целевого числа, с которым сравнивается хеш, корректируется через каждые 2016 блоков. Запланировано, что вся сеть будет тратить на генерацию одного блока примерно 10 минут, на 2016 блоков — около двух недель. Если 2016 блоков сгенерировано быстрее, то цель немного уменьшается и достичь её становится труднее, в противном случае цель увеличивается. Изменение сложности вычислений не влияет на надёжность сети Bitcoin и требуется лишь для того, чтобы система генерировала блоки почти с постоянной скоростью, не зависящей от мощности сети.

Эмиссия

Bitcoin предусматривает только одну возможность для дополнительной эмиссии — новые биткоины начисляются в качестве вознаграждения тому, кто сгенерировал очередной блок, получивший 120 подтверждений.

Первоначально эмиссия составляла 50 биткоинов в каждом блоке. После 2012-11-28 15:24:38 UTC[26] значение уменьшилось до 25 биткоинов, в соответствии с алгоритмом. На апрель 2013 года в обращении находилось почти 11 миллионов биткоинов[10], что составляет более половины их максимально возможного предельного количества в 21 миллион.

Желающие получить возможно большее вознаграждение стремятся задействовать как можно большие вычислительные мощности: использование векторных графических процессоров (GPU)[27] (в сотни раз производительнее CPU[28]), платы с FPGA (производительность сравнима с видеокартами, но превосходят их по энергоэффективности).

Сложность

За требование к хешам блоков отвечает специальный параметр называемый «сложность». Так как вычислительные мощности сети непостоянны, этот параметр пересчитывается клиентами сети через каждые 2016 блоков таким образом, чтобы поддерживать среднюю скорость формирования распределённой БД на уровне 2016 блоков в две недели. Таким образом 1 блок должен создаваться примерно раз в десять минут. После создания 210 000 блоков (на что требуется примерно 4 года) вдвое уменьшается размер эмиссионного вознаграждения майнеров (снижается скорость эмиссии)[29]. На практике, когда вычислительная мощность сети растёт — соответствующие временные промежутки короче, а когда снижается — длиннее[30]. Перерасчёт сложности с привязкой ко времени возможен благодаря наличию в заголовках блоков времени их создания. Оно записано в Unix-формате и взято по системным часам автора блока (если блок создан в пуле, то из системных часов сервера этого пула)[31].

Пулы

Для уменьшения влияния фактора удачи и более равномерного и предсказуемого получения биткоинов, майнеры используют пулы[32]. Часто выплаты майнеру рассчитываются исходя из отправленных им пулу шар (shares) (блоков с хешем, который подошёл бы при сложности равной единицы). В среднем нужно 232 операций хеширования для нахождения одной шары[33]. Для нахождения блока в среднем требуется количество шар, равное текущей сложности.

Существуют 3 основных типа начисления наград[34]:

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

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

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