вторник, 10 сентября 2013 г.

Немного о криптовалютах (Bitcoin и другие).

Наверное, все уже хотя бы вскользь, да слышали о такой штуке, как Bitcoin. Что это такое? Для чего это нужно? В общих словах, Bitcoin - это виртуальная валюта, виртуальные деньги, имеющие ряд интересных особеннсотей:
  • Bitcoin (и подобные ей валюты) не имеет единого центра управления, единого центра эмиссии валюты и обработки транзакций. Наверное, это основное отличие таких денег от каких-либо других, имевших хождение ранее. У "обычных" валют есть регулятор - Центральный Банк, Казначейство или какое-то подобное заведение, которое регулирует количество валюты в обращении, печатая новые деньги, когда посчитает это нужным. В случае с Bitcoin такого центра нет.
  • Эта валюта потенциально анонимна, кошелёк не привязывается ни к имени, ни к паспорту, ни  к каким-либо другим персональным данным владельца. Ближайшим аналогом являются наличные деньги: Вы можете потерять их, их могут украсть, но и контролировать их для третьих лиц сложнее, чем счёт в банке.
  • Общий объём денег, которые принципиально могут быть в обращении, заранее ограничен на отметке 21 млн единиц, что делает невозможным включение "печатного станка" и перераспределение ресурсов к тем, кто владеет этим станком.
  • В отличие от других валют, Bitcoin требует определённых вычислительных затрат для генерации новых денег (эмиссии), что делает его похожим на золото (которое требует усилий для поиска , и не может быть получено простым включением печатного станка).
Такой набор особенностей делает эту валюту как минимум, интересной для рассмотрения.

Децентрализация валюты обеспечивается тем, что клиенты в сети обмениваются между собой информацией о всех производимых транзакциях, т.е. если кто-то потратил деньги (переслал их на счёт продавца пиццы, например) - это видит вся сеть, и после этого, чтобы продавец смог потратить куда-либо эти биткоины, он должен воспользоваться своей парой "публичный ключ"-"открытый ключ", тем самым подтверждая, что именно ему были отосланы эти деньги. При отправке куда-либо продавец указывает нового получателя, и шифрует сообщение его открытым ключом, соответственно теперь потратить деньги может только новый получатель, обладающий соответствующим секретным ключом. Минус такой системы в том, что при утрате ключей воспользоваться деньгами невозможно. Транзакции в системе объединяются в блоки, каждый из которых содержит ссылку на предыдущий блок, что даёт возможность отследить весь путь денег от момента их появления до текущего момента. При этом в блоках есть bitcoin-адреса тех, через кого прошли деньги, но какой-либо другой информации о получателях-отправителях, как, например, фамилия-имя-отчество, номер кредитной карты и прочее, нет, т.е. сами по себе транзакции анонимны.

Пожалуй, одной из самых инетерсных особенностей такой валюты является процесс её "появления", эмиссии. Процесс этот называется mining(в переводе - добыча (полезных ископаемых)), название несёт в себе отсылку к процессу золотодобычи. Сходство, по задумке авторов системы, лежит в том, что для добычи Bitcoin'ов нужно подобрать "правильное" случаное число. Смысл поиска этого числа лежит в том, чтобы контролировать эмиссию чем-то, что не может быть скачкообразно увеличено желанием небольшой группы лиц (т.е. сделать так, чтобы нельзя было просто включить "печатный станок" и получить для себя побольше денег). Число должно быть такое, чтобы при добавлении его к хешу вновь создаваемого блока получался хеш, имеющий в начале некоторое количество нулей.  Это количество определяет сложность майнинга, и оно сегодня достаточно велико, что делает майнинг весьма затруднительной задачей. Сложность определяется сетью так, чтобы число эмиссируемых в единицу времени биткойнов было более-менее постоянным, что приводит к росту сложности с ростом количества майнеров, и наоборот. В данные создаваемого блока входит так же и хеш предыдущего блока, что обеспечивает неразрывность цепочки.

В системе Bitcoin использовается хеш-функция SHA-256 , в основе которой лежит большое количество битовых сдвигов, и число подбирается простым перебором вариантов.
Изначально, пока сложность была совсем небольшой - майнинг вёлся на центральных процессорах обычных компьютеров, но достаточно быстро процессоры уступили место GPGPU - они давали существенный прирост в скорости и энергоэффективности. Для увеличения скорости майнинга собирались системы, содержащие несколько GPU на одной плате, и таких плат было несколько (всё определялось бюджетом майнера).

Сравнение вычислительных скоростей разных устройств для майнинга можно посмотреть тут.

В таблице, приведённой по ссылке выше, кроме CPU и GPU устройств есть ещё ASIC и FPGA. Что это за штуки? Грубо говоря, это специализированные микросхемы, которые умеют только майнить bitcoin'ы, и ни на что больше не годятся. В основе Bitcoin-системы лежит алгоритм хеширования SHA-256, который предполагает большое количество битовых сдвигов и некоторое количество операций сложения. Для реализации этого алгоритма нужно совсем немного быстрой памяти и устройства сложения. Если сделать такой блок достаточно компактным, и разместить на кристалле большое число таких блоков - то в результате получим микросхему, которая способна выдавать фантастическую скорость хеширования при небольшой потребляемой мощности. Такие системы продаются под марками Avalon, Butterfly Labs, BitFury.

Появление на рынке таких специализированных устройств быстро сделало майнинг на GPGPU практически невыгодным - в результате чего появились альтернативные валюты, имеющие схожую идеологию, но другой механизм хеширования, который называется scrypt и требует большого количества обращений к оперативной памяти, что сильно затрудняет создание таких специализированных устройств (но не делает его принципиально невозможным).

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

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