Введение в Биткойн
Биткойн – это одноранговая децентрализованная электронная валюта. По своей сути, она сходна с банковским счетом в том, что ваши деньги хранятся в виде чисел в базе данных и в ходе операции система перемещает эти числа с одного счета на другой. Однако поскольку система децентрализована, база данных хранится одновременно на каждом компьютере-участнике.
Bitcoin – первая рассредоточенная таким образом валютная система, и вследствие этой структуры система не имеет посредников, взимающих комиссию с каждой вашей сделки, и не контролируется никакой организацией или правительством.
Электронная почта позволяет отправлять сообщения бесплатно в любую точку мира. Тем же отличаются телефонные разговоры по Скайпу. А теперь есть Bitcoin, дающий возможность пересылать деньги из любой точки мира в другую, забыв о каких-либо ограничениях или государственных границах, за менее чем один процент платы за сделку.
Система была впервые описана в 2008 году Сатоши Накамото в его документе, разъясняющем технологию Биткойна, который был разослан через криптографический список адресов электронной почты; а сам оригинальный проект с открытым исходным кодом был пущен в ход 3 января 2009 года. В течение первых двух лет он постепенно расширял свою пользовательскую базу, пока в конце 2010 года упоминание о нём в статье на Slashdot не стимулировало внезапный приток в проект новых пользователей и внимание к нему СМИ, а также стремительный рост цен, поскольку Bitcoin впервые по-настоящему предстал перед реальным миром. С момента своего создания, система выросла до размера более миллиона пользователей и 8500000 существующих сейчас узлов обладают общей стоимостью в десятки миллионов долларов.
Децентрализованная база данных Биткойна обеспечивает переводы между счетами (или, в терминологии Биткойна, адресами) с использованием математического алгоритма, известного как цифровая подпись. Проблема так называемых двойных расходов – отправки тех же биткойнов двум разным людям – предотвращается путём трансляции всех транзакций в сеть, которая отслеживает, какие биткойны были потрачены и в какое время, и синхронизирует эту информацию для всех участвующих машин.
Поскольку операции транслируются по всей сети, они в самой своей основе публичны. Обычная банковская система обеспечивает финансовую безопасность клиента тем, что держит в тайне записи о его операциях. В отличие от этого, Биткойн сохраняет нераскрытыми данные обладателей адресов, и тем достигается анонимность самих операций.
Когда активно участвующий в сети компьютер, который называется “майнером”, получает информацию о новой сделке, если он удовлетворен проверкой её допустимости, он добавляет эту сделку со штампом времени в конец коллективно поддерживаемого списка всех известных операций, тем самым её «подтверждая». Этот общий список называется «блокчейн» («цепь блоков»). Любая попытка послать те же биткойны снова будет отклонена, так как блокчейн обеспечивает четкое доказательство того, что монеты уже были потрачены.
Процесс добавления блока к цепи (блокчейну) был сознательно разработан как сложный, требующий времени и вычислительной мощности для выполнения. Поэтому практически невозможно создать поддельный блокчейн без наличия большей вычислительной мощности, чем в целом во всей остальной сети Биткойн. Каждый блок имеет значение, называемое хэш. Это число, математически генерируемое из данных блока с использованием функции, которая специально разработана, чтобы быть настолько запутанной, что её результат по своей природе случаен, и невозможно заранее предсказать, каким будет вывод из данного ввода. Сложность создания блока выходит из факта, что хэш действительного блока должен быть ниже некоего очень низкого “целевого показателя”. Майнеры, таким образом, вынуждены продолжать видоизменять блок, подставляя различные значения фиктивной переменной, называемой “Нонс” до тех пор, когда одному из них повезет и он заметит, что хэш одной из его версий блока падает ниже целевого показателя. В этот момент блок добавляется и процесс начинается заново. Целевой показатель автоматически регулируется так, что новый блок появляется примерно каждые 10 минут.
Каков же стимул, побуждающий майнера тратить усилия на попытки создания блоков, если на это уходит так много вычислительного времени и энергии? Ответ заключается в том, что человек, которому удаётся создать блок, получает вознаграждение. Это вознаграждение состоит из двух частей. Во-первых, производитель блока получает премию, состоящую из некоторого числа биткойнов. Размер данной премии согласован участниками сети. В настоящее время он составляет 50 биткойнов, но это значение снизится вдвое в декабре 2012 года и впредь будет ополовиниваться примерно раз в четыре года, так чтобы общее число премиальных приближалось к, но никогда не превышало 21 млн. биткойнов. Во-вторых, производитель блока вправе претендовать на любые биткойны, поступившие в оплату операций, включенных в блок. Правила сети таковы, что постоянство примерного времени производства одного блока (10 минут) поддерживается добавляемой сложностью. Таким образом, чем больше майнеров вовлечено в вычисления, тем труднее для каждого отдельного майнера создать блок.
Помимо его важности для поддержания базы данных транзакций, Добыча биткойнов также, и в первую очередь, является единственным механизмом, посредством которого Биткойны создаются и распространяются среди людей в Биткойн-экономике.
Добыча биткойнов используя центральный и графический процессор
На заре существования Биткойна каждый мог с лёгкостью находить новые блоки с использованием стандартных центральных процессоров. По мере того, как в майнинг включалось все больше и больше людей, трудность нахождения новых блоков значительно возросла, до того, что теперь среднее время, необходимое ЦП для нахождения единственного блока, мерится годами. Единственным экономически эффективным способом добычи стало использование высококачественных графических карт со специальным программным обеспечением и / или вход в майнинговый бассейн.
Некоторые пользователи Биткойна могут задаться вопросом, почему существует огромный разрыв между майнинговой эффективностью ЦП по сравнению с ГП. Ответ на этот вопрос кроется в принципиальных различиях в функционировании этих двух типов процессного оборудования и в цели их создания. ЦП спроектирован в первую очередь как гибкий исполнитель, принимающий решения в соответствии с указаниями программы. ЦП очень эффективен в следовании инструкциям типа “если – то, в противном случае – что-то иное”. С другой стороны, ГП были разработаны таким образом, что они очень хороши для видеообработки и менее ценны в отношении гибкости. Обработка видео являет собой большое количество монотонной работы, так как постоянно выполняются те же команды в отношении больших групп пикселей на экране. Для обеспечения эффективности этой функции, видеопроцессоры разработаны с упором на способность совершать повторяющуюся работу, а не на способность быстро переключаться между задачами. ГП снабжены большим количеством АЛУ (арифметико-логических устройств), в отличие от ЦП. В результате, они могут производить в большом количестве громоздкие математические вычисления, в гораздо большем количестве, чем ЦП.
Для наглядности можно представить себе ЦП в виде маленькой группы очень умных людей, которые могут быстро выполнить любое данное им задание. ГП же представляет собой большую группу относительно недалёких людей, каждый из которых сам по себе не слишком хорошо и быстро соображает, но которые могут быть обучены выполнять повторяющиеся задания, и в совокупности могут быть более продуктивны только за счёт своего количества. Повторяющаяся проверка версий хэша – процесс, лежащий в основе добычи биткойнов, – очень монотонное задание, подходящее для ГП, поскольку с каждой попыткой оно варьируется лишь изменением одного номера (так называемого «Нонса») в данных хэша.
Вот почему, в двух словах, графические процессоры способны добывать биткойны намного быстрее, чем центральные. Добыча биткойнов не требует принятия решений – для компьютера это повторяющиеся математические вычисления. Единственное решение, которое должно быть принято в процессе добычи биткойнов, это “является ли мой блок действующим” или “он таким не является”. Это отличное задание для загрузки им графического процессора.
перевод на русский язык Богданы Некрасовой