- Saved searches
- Use saved searches to filter your results more quickly
- xtrinch/stratumv2-python-miner
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Свой майнер на python
- Майнер криптовалюты на Python
- Как создать майнер на Python
- Python Blockchain – Создание майнеров
- Функция дайджеста сообщения
- Функция майнинга
- Шаг 1
- Шаг 2
- Шаг 3
- Тестирование функции майнинга
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Stratum v2 bitcoin miner written in python
xtrinch/stratumv2-python-miner
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Simple python bitcoin miner with stratum2. It sure isn’t fast as it’s written in python, but this is just a proof of concept for stratum2 mining as there’s no other pythonic examples I could find on github.
It supports the following scenarios:
It includes a simulation of a pool and an actual miner client. Ideally, you run them both, you can also run the miner against a real stratum2 server (you can find some @ slushpool) but you may get banned for not producing any valid shares after a while.
- Create virtualenv with python3 -m venv env .
- Run source env/bin/activate .
- Run pip install -r requirements.txt .
Run pool with python3 simulate-pool.py and miner with python3 mine.py .
The protocol used is Stratum V2. The basis for this repository is https://github.com/braiins/braiins/tree/bos-devel/open/protocols/stratum/sim.
Свой майнер на python
Пошаговая инструкция как получить 1000 монет WAN и конвертировать их в 200 USDT на Binance
Майнер криптовалюты на Python
Вам понадобится использовать библиотеки Python для взаимодействия с сетью криптовалюты, а также для выполнения операций связанных с майнингом. Ниже приведены некоторые популярные библиотеки Python, которые могут быть полезны при создании майнера криптовалюты:
- pybitcointools: Это библиотека Python для работы с биткоином. Она предоставляет функции для генерации адресов, создания и проверки транзакций и других операций связанных с биткоином. Вы можете установить эту библиотеку с помощью pip:
- pycrypto: Эта библиотека предоставляет функции для шифрования и дешифрования данных, что может быть полезно для выполнения некоторых операций майнинга. Установите ее с помощью pip:
- hashlib: Эта библиотека предоставляет функции хеширования, которые могут быть полезны для подсчета хешей блоков или транзакций в криптовалюте. hashlib является встроенной библиотекой Python, поэтому установка не требуется.
- requests: Эта библиотека позволяет вам отправлять HTTP-запросы и получать ответы, что может быть полезно для взаимодействия с API криптовалюты или пулом майнинга. Установите ее с помощью pip:
- websocket-client: Если вы планируете использовать WebSocket для получения данных о блоках или транзакциях, вам может потребоваться эта библиотека. Установите ее с помощью pip:
codepip install websocket-client
Учитывайте, что разработка майнера криптовалюты требует значительных знаний в области блокчейна, криптографии и алгоритмов майнинга. Кроме того, учтите, что майнинг криптовалюты с использованием общедоступных языков программирования, таких как Python, может быть неэффективным, так как требуется большое количество вычислительной мощности для успешного майнинга.
Как создать майнер на Python
Создание полноценного майнера криптовалюты на Python — это достаточно сложная задача, требующая глубокого понимания принципов работы криптовалют и алгоритмов майнинга. Однако, я могу предоставить вам общий обзор шагов, которые обычно включаются в создание майнера на Python:
- Изучение алгоритма майнинга: Первым шагом является изучение алгоритма майнинга конкретной криптовалюты, в которую вы хотите вложиться. Каждая криптовалюта может использовать различные алгоритмы майнинга, такие как Proof-of-Work (PoW) или Proof-of-Stake (PoS). Изучите документацию и исходный код криптовалюты, чтобы понять, какие алгоритмы она использует.
- Взаимодействие с блокчейном: Вы должны научиться взаимодействовать с блокчейном криптовалюты для получения информации о блоках, транзакциях и других данных. Это может включать работу с API, отправку запросов и обработку ответов.
- Подготовка блока: Создание блока, который будет добавлен в цепочку блоков, требует генерации заголовка блока с правильным форматом и хешем, а также подготовки транзакций, которые будут включены в блок. Вы должны понимать структуру блока и формат транзакций для правильной их подготовки.
- Решение Proof-of-Work: Если используется алгоритм Proof-of-Work, вам потребуется реализовать логику решения математических задач, связанных с добычей блоков. Это может включать хеширование данных, проверку сложности и поиск подходящего nonce.
- Управление работой майнера: Ваш майнер должен быть способен управлять процессом майнинга, включая установку параметров, мониторинг производительности, обработку ошибок и управление подключением к пулу майнинга или сети.
- Обеспечение безопасности: Важно принимать меры безопасности при разработке майнера. Это может включать обработку ошибок, защиту от атак и обеспечение конфиденциальности данных.
Учтите, что создание полноценного майнера на Python — это сложная задача, требующая значительных знаний в области криптовалют, блокчейна и программирования. Если у вас нет достаточного опыта или знаний, рекомендуется начать с более простых проектов и постепенно расширять свои навыки.
Python Blockchain – Создание майнеров
Для включения майнинга нам нужно разработать функцию майнинга. Функциональность майнинга должна генерировать дайджест по заданной строке сообщения и предоставлять подтверждение работы. Давайте обсудим это в этой главе.
Функция дайджеста сообщения
Мы напишем служебную функцию sha256 для создания дайджеста по данному сообщению –
def sha256(message): return hashlib.sha256(message.encode('ascii')).hexdigest()
Функция sha256 принимает сообщение в качестве параметра, кодирует его в ASCII, генерирует шестнадцатеричный дайджест и возвращает значение вызывающей стороне.
Функция майнинга
Сейчас мы разрабатываем функцию шахты, которая реализует нашу собственную стратегию майнинга. В этом случае наша стратегия заключается в создании хэша для данного сообщения с префиксом с указанным числом 1. Заданное количество единиц указано в качестве параметра для моей функции, указанной в качестве уровня сложности.
Например, если вы укажете уровень сложности 2, сгенерированный хэш для данного сообщения должен начинаться с двух 1 – например, 11xxxxxxxx. Если уровень сложности равен 3, сгенерированный хэш должен начинаться с трех 1 – как 111xxxxxxxx. Учитывая эти требования, мы теперь разработаем функцию майнинга, как показано в шагах, приведенных ниже.
Шаг 1
Функция майнинга принимает два параметра – сообщение и уровень сложности.
def mine(message, difficulty=1):
Шаг 2
Уровень сложности должен быть больше или равен 1, мы обеспечиваем это следующим утверждением assert:
Шаг 3
Мы создаем префиксную переменную, используя заданный уровень сложности.
Обратите внимание, что если уровень сложности равен 2, префикс будет «11», а если уровень сложности равен 3, префикс будет «111» и т. Д. Мы проверим, существует ли этот префикс в сгенерированном дайджесте сообщения. Чтобы переварить само сообщение, мы используем следующие две строки кода:
for i in range(1000): digest = sha256(str(hash(message)) + str(i))
Мы продолжаем добавлять новый номер i в хэш сообщения в каждой итерации и генерируем новый дайджест по объединенному сообщению. Поскольку входные данные для функции sha256 меняются на каждой итерации, значение дайджеста также изменяется. Мы проверяем, имеет ли это значение дайджеста установленный префикс .
if digest.startswith(prefix):
Если условие выполнено, мы завершаем цикл for и возвращаем вызывающему значение дайджеста .
Весь мой код показан здесь –
def mine(message, difficulty=1): assert difficulty >= 1 prefix = '1' * difficulty for i in range(1000): digest = sha256(str(hash(message)) + str(i)) if digest.startswith(prefix): print ("after " + str(i) + " iterations found nonce: "+ digest) return digest
Для вашего понимания мы добавили оператор print, который печатает дайджест-значение и количество итераций, необходимых для выполнения условия перед возвратом из функции.
Тестирование функции майнинга
Чтобы проверить нашу функцию майнинга, просто выполните следующее утверждение –
Когда вы запустите приведенный выше код, вы увидите вывод, похожий на приведенный ниже –
after 138 iterations found nonce: 11008a740eb2fa6bf8d55baecda42a41993ca65ce66b2d3889477e6bfad1484c
Обратите внимание, что сгенерированный дайджест начинается с «11». Если вы измените уровень сложности на 3, сгенерированный дайджест начнется с «111», и, конечно, для этого потребуется больше итераций. Как видите, майнер с большей вычислительной мощностью сможет добывать данное сообщение раньше. Вот как шахтеры конкурируют друг с другом за получение своих доходов.
Теперь мы готовы добавить больше блоков в нашу цепочку блоков. Давайте узнаем это в нашей следующей главе.