Домой Статьи Майнинг Bitcoin на Python

Майнинг Bitcoin на Python

830
0
André François McKenzie
André François McKenzie

С точки зрения дилетантов, биткойн — это бухгалтерская книга. Гроссбух — это набор транзакций. Давайте разберемся в этом на примере.

Предположим, ты пойдешь в продуктовый магазин. Покупаете овощи за 15 долларов. Вход в бухгалтерскую книгу будет — Вы платите владельцу овощей 15 долларов.

Потом, скажем, парень с овощами идет к врачу и платит 10 долларов за медицинский осмотр. Запись в бухгалтерской книге будет — владелец овощей платит врачу 10 долларов.

Все это рассматривается как набор операций. Это похоже на то, что мы видим в выписках с банковских счетов. Бухгалтерская книга — это набор транзакций, и в конце вы получаете остаток на вашем счете. Вот что такое биткойн в двух словах.

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

Blockchain and Transactions

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

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

Скажем, есть цепочка из пяти блоков — Блок1, Блок2, Блок3, Блок4 и Блок5. Тогда Блок1 будет указывать на Блок2, Блок2 будет указывать на Блок3 и так далее.

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

Биткойн Криптография и Майнинг

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

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

На Python мы можем сгенерировать это хэш-значение с помощью приведенного ниже кода:

from hashlib import sha256
text = "XYZ"
print(sha256(text.encode('ascii')).hexdigest)

В bitcoin блок состоит не только из набора транзакций. В нём есть как предыдущий хэш, так и nonce (число один раз).

Я объясню, что такое «нонс», но сначала пойми это. Мы преобразовываем все в блоке в строку и генерируем хэш для этого блока. В любой момент времени есть особое требование, чтобы сгенерированный хэш имел в начале x число нулей.

Допустим, хэш, генерируемый блоком, равен 03a5x4bh34bh2jkiig243gh. Согласно требованию, нам нужны первые четыре цифры как ноль. Вот тут и появляется nonce. Количество нулей, которое нам нужно в нашем хэше, известно как сложность.

Добыча биткойна — это процесс угадывания nonce, который генерирует хэш с первым числом X нулей. Он состоит из сложных вычислений, в которых мы пытаемся найти требуемое значение нонсе.

В чем польза от добычи биткойна?

Майнеры получают биткойны для добычи блока. В 2009 году за добычу одного блока ты получишь 50 BTC. В 2012 году он был сокращен до 25 BTC.

Каждые четыре года награда уменьшается вдвое за добычу одного блока. В 2020 году награда была снижена до 6,25 BTC. Но за последние несколько лет bitcoin оценили очень высоко. Даже 6,25 BTC за блок означает 280 000 долларов (на момент публикации). Это довольно много денег за такую работу.

Многие люди по всему миру занимаются добычей биткойн. Это не очень сложно, но это трудоёмкая задача. Нужно много вычислительной мощности, чтобы получить правильную стоимость. Если 10 человек занимаются угадыванием, то тот, кто получит результат первым, выиграет награду.

Поэтому, чтобы выиграть награду в добыче биткойн, требуется и время, и удача.

Давайте займёмся добычей биткойн с Python.

Понятия, которые мы обсуждали до сих пор, были важны для понимания реальной работы по добыче bitcoin. Давайте перейдём к коду, который помогает нам добывать биткойны:

from hashlib import sha256
MAX_NONCE_VALUE = 100000000000
def SHA256(text):
    return sha256(text.encode("asci")).hexdigest()def mine(block_number, transactions, previous_hash, prefix_zeros):
    prefix_str = '0'*prefix_zeros
    for nonce in range(MAX_NONCE_VALUE):
     text = str(block_number)+transactions+previous_hash+str(nonce)
     new_hash = SHA256(text)
     if new_hash.startswith(prefix_str):
           print("Bitcoin mined for nonce value of {nonce}")
           return new_hash

Вот так. Мы можем добыть биткойн с этими 12 строками кода в python.

Просмотр кода

Строка 1: Импорт библиотеки sha256 в наш проект.

Строка 2: Объявите переменную с максимальным значением nonce, до которого вы хотите угадать. Она может быть увеличена или уменьшена в зависимости от вычислительной мощности вашей системы.

Строка 3-4: Определяем функцию SHA256 для генерации хэш-значения.

Строка 5: Определите другую функцию для майнинга, в которой мы берем входные параметры номера блока, транзакции, предыдущее значение хэша и сложность (количество нулей должно быть добавлено в качестве префикса в генерируемом хэше).

Строка 6: После добавления требуемого префикса мы создаем еще одну переменную prefix_str для хранения значения Hexa. В дальнейшем эта строка будет использоваться для сравнения с сгенерированным хэшем.

Строка 7-9: A for цикла итерируется для nonce значений для генерации нового хэша с помощью вызова функции SHA256, которую мы сгенерировали на строке 3.

Строка 10-12: Сравниваем только что сгенерированный префикс хэш-значения с нужным. Если он совпадает, то мы распечатываем значение nonce, для которого добывается биткойн, и возвращаем этот сгенерированный хэш.

Заключение

Я взял сложность восьми для тестирования. Приложению пришлось выполнить итерацию около 1,2 миллиона раз, прежде чем оно угадало правильный нон-це.

В настоящее время уровень сложности блоков составляет 20. Это означает, что вы должны угадать нонсе, который генерирует хэш с префиксом 20 нулей. На обычных системах этот тип вычислений может занять до года.

Добыча биткойнов требует специального оборудования. Одними из популярных являются DragonMint T1, Antminer T9+, Antminer R4, Avalon6 и Antminer S9.

Это сайт, на котором вы можете получить информацию по блокам для майнинга. Если вы действительно хотите это сделать, то я предложу немного вложить в оборудование, чтобы увеличить шансы на добычу bitcoin.

Оригинал

Предыдущая статьяКак использовать React Hooks (Хуки), правильно
Следующая статьяНачало работы с Go для frontend разработчиков