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