Майнинг биткойнов — это процесс, посредством которого информация о транзакциях биткойнов проверяется и сохраняется в блокчейне. Это также является стимулом для людей предоставлять свои вычислительные мощности для поддержки сети, тем самым обеспечивая правильное выполнение и безопасность транзакций.
Майнеры собирают транзакции в так называемые «блоки». Каждый блок содержит хеш предыдущего блока, таким образом, все блоки вместе образуют цепочку, отсюда и термин «блокчейн». Если вас интересует торговля биткоинами, вы также можете посетить сайт Bitcoin Revolution .
Биткойн-транзакция
Чтобы добавить еще одну транзакцию в цепочку блоков, вы должны «майнить» ее.
Майнинг — это не только добавление новых транзакций в блоки, но и уверенность в том, что все в вашей версии блокчейна является точным. В частности, это подтверждает, что ни одна из ваших транзакций не будет аннулирована последующими транзакциями, и поэтому все ваши сделки будут завершены, как и ожидалось.
Когда инициируется новая транзакция, она должна попасть в очередь на майнинг для включения в блок. Транзакции перечисляются в порядке их получения всеми участниками сети. У майнеров есть программное обеспечение, которое выбирает, какие транзакции будут следующими в очереди на их блок, поэтому нет гарантии, что какая-либо конкретная транзакция будет добавлена в следующий блок, но, как правило, только транзакции с высокой комиссией остаются жизнеспособными достаточно долго, чтобы гарантировать включение в несколько блоков.
Когда программное обеспечение для майнинга выбирает новый набор транзакций для работы каждые 10 минут или около того (текущее среднее значение), оно выбирает в соответствии с критериями, разработанными, чтобы дать «честным» майнерам преимущество перед «мошенниками», пытающимися делать такие вещи, как двойные траты.
Первый майнер, добавляющий заданный набор транзакций в блок, добавляет свой блок в конец цепочки блоков, а затем все остальные узлы в сети начинают работать над расширением этой цепочки (отсюда и «блокчейн»). Когда ваше программное обеспечение Биткойн подключается к одноранговой сети и начинает прослушивать новые транзакции, оно не может узнать, какие из них предназначены для вас, а какие могут быть направлены куда-то еще. Причина, по которой мы можем доверять нашему программному обеспечению Биткойн, заключается в том, что ему больше некому доверять; каждый узел, подключенный к сети Биткойн, проверяет каждую транзакцию, прежде чем принять ее как реальную. Если вы пытаетесь заполучить кого-то, кто вам совсем не доверяет (и, допустим, он способен управлять узлом в сети Биткойн), вы должны его одурачить.
Чтобы обмануть ноду, вы должны включить в свою транзакцию некоторые данные, которые сообщат их программному обеспечению, что она действительна, даже если это не так. Это называется «перенаправление». На практике это означает, что по крайней мере одна из других транзакций в вашем блоке будет аннулирована вашей, потому что вы тратите монеты из другой транзакции, которая произошла позже в хронологическом порядке, но была помещена кем-то раньше в список мемпула. Подумайте о получателе платежа, который пытается обмануть торговца, несколько раз отправляя копии одних и тех же денег; только один выиграет и станет действительным, в то время как все остальные потеряют свои средства из-за того, что заняли второе место. Способ, которым процесс майнинга определяет, какие транзакции являются недействительными, а какие действительными, зависит от того, имеют ли они «более высокий» или «низкий» хеш, чем текущий блок. На самом деле, если бы вы вообще изменили какой-либо аспект транзакции в своем новом блоке — например, увеличили комиссию, — это создало бы совершенно другое значение хеш-функции и, следовательно, другой результат. Процесс майнинга использует определенные данные из каждой транзакции для создания уникального идентификационного номера, который помогает отслеживать, какие транзакции входят в какие блоки. Этот идентификационный номер называется корнем Меркла.
Последовательность событий для майнинга блока
Процесс добычи блока в основном выглядит следующим образом:
1) Программное обеспечение для майнинга собирает новые транзакции из одноранговой сети и помещает их в мемпул (список транзакций, ожидающих майнинга в блок).
2) Программное обеспечение для майнинга выбирает транзакции из мемпула, которые платят достаточную комиссию для включения в новый блок.
3) Программное обеспечение для майнинга вычисляет соответствующий одноразовый номер (случайное число). 4) Программное обеспечение для майнинга использует одноразовый номер вместе с другими данными о текущем блоке для генерации другого числа: хэш блока.
5) Если этот хэш не соответствует определенным требованиям, он возвращается к шагу 3 для другого одноразового номера. Если да, то мы успешно добыли новый блок!
Все это делается с помощью «майнингового» оборудования — ASIC, специально разработанных для обработки SHA-256 с использованием эффективного сочетания аппаратного и программного обеспечения. Чтобы выиграть как можно больше биткойнов с помощью вашего оборудования для майнинга, вам нужно вычислять хэши как можно быстрее.
