Python - Usando o Pyminer
Python - Usando o Pyminer | ||
Canal Qb |
O cgminer não é uma biblioteca nativa do Python, mas existem algumas opções de bibliotecas Python que permitem se comunicar com o cgminer através de uma API, como por exemplo:
pyminer: Uma biblioteca Python que fornece uma interface simples para controlar o cgminer através da sua API. Você pode instalá-la usando o pip:
pip install pyminer
Em seguida, você pode usar a biblioteca no seu script Python:
import pyminerminer = pyminer.Miner('127.0.0.1', 4028) # endereço IP e porta do cgminerprint(miner.summary()) # exibe um resumo das informações do minerador
cgminer-api: Outra biblioteca Python que oferece uma interface para a API do cgminer. Para instalá-la, você pode usar o pip:
pip install cgminer-api
Você pode usar a biblioteca no seu script Python:
from cgminer_api import CgminerAPIminer = CgminerAPI('127.0.0.1', 4028) # endereço IP e porta do cgminerprint(miner.summary()) # exibe um resumo das informações do minerador
Tenha em mente que é necessário ter o cgminer rodando e configurado com a API habilitada para poder usar essas bibliotecas.
--*-- Um Script de exemplo de mineração em Python --**--
Para criar um script em Python que execute o minerador com os parâmetros "-a scrypt -o stratum+tcp://pool.knolix.com:3433 -u 63dc459 -p x", você precisará dos seguintes módulos:
requests: para fazer solicitações HTTP à API do pool de mineração.
time: para adicionar atrasos entre as solicitações de mineração.
Você pode instalar esses módulos usando o pip:
pip install requests
Aqui está um exemplo de script Python que usa esses módulos para executar o minerador:
import requestsimport timeurl = 'stratum+tcp://pool.knolix.com:3433' # endereço do pool de mineraçãousuario = '63dc459' # usuário de mineraçãosenha = 'x' # senha de mineraçãoalgoritmo = 'scrypt' # algoritmo de mineraçãowhile True:# faz uma solicitação HTTP GET para a API do pool de mineração com os parâmetros de mineraçãoresposta = requests.get(f'{url}/mine?algo={algoritmo}&user={usuario}&pass={senha}')# exibe a resposta do pool de mineraçãoprint(resposta.text)# adiciona um atraso de 10 segundos antes de fazer a próxima solicitação de mineraçãotime.sleep(10)
Esse script fará solicitações ao pool de mineração a cada 10 segundos e exibirá a resposta do pool. Lembre-se de substituir o usuário e a senha pelos seus próprios dados de mineração e o endereço do pool pelo endereço do pool que você está usando.
--**-- Possiveis Erros -- ** --
O erro "InvalidSchema: No connection adapters were found for 'stratum+tcp://pool.knolix.com:3433/mine?algo=scrypt&user=63dc459&pass=x'" indica que o URL fornecido não pode ser usado com o pacote "requests" do Python, pois o esquema "stratum+tcp" não é suportado.
Para corrigir esse erro, você pode tentar usar um pacote Python específico para comunicação com pools de mineração, como o "pystratum", que suporta o esquema "stratum+tcp". Para instalar o "pystratum", basta usar o comando:
pip install pystratum
Em seguida, você pode usar o seguinte código para se conectar ao pool de mineração:
from pystratum import StratumClienturl = "stratum+tcp://pool.knolix.com:3433"user = "63dc459"password = "x"algo = "scrypt"client = StratumClient(url, user, password, algo)client.connect()# Envie comandos para o pool de mineração aquiclient.disconnect()
Este código usa o "pystratum" para se conectar ao pool de mineração com o URL "stratum+tcp://pool.knolix.com:3433", o usuário "63dc459", a senha "x" e o algoritmo "scrypt". Depois que a conexão é estabelecida, você pode enviar comandos para o pool de mineração. Lembre-se de desconectar do pool após terminar de enviar comandos.
-- ** --
O erro "ERROR: Could not find a version that satisfies the requirement pystratum (from versions: none) ERROR: No matching distribution found for pystratum" significa que o pacote "pystratum" não está disponível no índice de pacotes padrão do pip.
Isso pode acontecer por algumas razões, por exemplo, o pacote pode não existir mais ou ainda não ter sido adicionado ao índice do pip. Uma solução alternativa é instalar o "pystratum" manualmente.
Para instalar o "pystratum" manualmente, siga estas etapas:
Baixe o pacote "pystratum" do GitHub em https://github.com/costasd/PyStratum-Mining
Extraia o conteúdo do arquivo ZIP baixado em uma pasta do seu computador.
Abra o terminal ou prompt de comando e navegue até a pasta em que o pacote "pystratum" foi extraído.
Execute o comando "python setup.py install" para instalar o pacote "pystratum".
Com isso, você deve conseguir instalar o "pystratum" manualmente e utilizá-lo para se conectar ao pool de mineração.
--**--
Se você não conseguiu instalar o "pystratum", você pode tentar usar outra biblioteca Python para se conectar a pools de mineração, como o "stratum" ou "miningcore-client". Ambas são bibliotecas Python que suportam conexões com pools de mineração usando o protocolo Stratum.
Para instalar o "stratum", você pode usar o seguinte comando:
pip install stratum
Em seguida, você pode usar o seguinte código para se conectar ao pool de mineração:
import stratumurl = "stratum+tcp://pool.knolix.com:3433"user = "63dc459"password = "x"algo = "scrypt"client = stratum.Client(url, username=user, password=password, service=algo)client.authorize()# Envie comandos para o pool de mineração aquiclient.close()
Este código usa o "stratum" para se conectar ao pool de mineração com o URL "stratum+tcp://pool.knolix.com:3433", o usuário "63dc459de87f9", a senha "x" e o algoritmo "scrypt". Depois que a conexão é estabelecida, você pode enviar comandos para o pool de mineração. Lembre-se de fechar a conexão após terminar de enviar comandos.
Para instalar o "miningcore-client", você pode usar o seguinte comando:
pip install miningcore-client
Em seguida, você pode usar o seguinte código para se conectar ao pool de mineração:
from miningcore.miningcore import Miningcoreurl = "stratum+tcp://pool.knolix.com:3433"user = "63dc459"password = "x"algo = "scrypt"client = Miningcore(url, user, password, algo)client.connect()# Envie comandos para o pool de mineração aquiclient.disconnect()
Este código usa o "miningcore-client" para se conectar ao pool de mineração com o URL "stratum+tcp://pool.knolix.com:3433", o usuário "63dc459", a senha "x" e o algoritmo "scrypt". Depois que a conexão é estabelecida, você pode enviar comandos para o pool de mineração. Lembre-se de desconectar do pool após terminar de enviar comandos.
-- ** -- Possiveis erros -- ** --
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ERROR: Could not find a version that satisfies the requirement miningcore-client (from versions: none)ERROR: No matching distribution found for miningcore-client
O erro que você está enfrentando indica que o pip não conseguiu encontrar uma versão disponível da biblioteca "miningcore-client". Isso pode ocorrer se a biblioteca não estiver mais disponível no repositório de pacotes padrão do Python ou se a biblioteca não estiver mais sendo mantida.
Se você não conseguiu instalar o "miningcore-client", você pode tentar usar outra biblioteca Python para se conectar a pools de mineração, como o "stratum". O "stratum" é uma biblioteca Python que suporta conexões com pools de mineração usando o protocolo Stratum.
Para instalar o "stratum", você pode usar o seguinte comando:
pip install stratum
Em seguida, você pode usar o seguinte código para se conectar ao pool de mineração:
import stratumurl = "stratum+tcp://pool.knolix.com:3433"user = "63dc459"password = "x"algo = "scrypt"client = stratum.Client(url, username=user, password=password, service=algo)client.authorize()# Envie comandos para o pool de mineração aquiclient.close()
Este código usa o "stratum" para se conectar ao pool de mineração com o URL "stratum+tcp://pool.knolix.com:3433", o usuário "63dc459", a senha "x" e o algoritmo "scrypt". Depois que a conexão é estabelecida, você pode enviar comandos para o pool de mineração. Lembre-se de fechar a conexão após terminar de enviar comandos.
--*--
Para mineração com algoritmo Scrypt, alguns módulos Python que você pode usar incluem:
- pycryptodomex
- scrypt
- pycryptodome
- pycryptosat
Tenha em mente que estes módulos podem ter diferentes níveis de suporte e documentação, portanto, certifique-se de ler a documentação antes de utilizá-los. Além disso, esses módulos podem não ter uma integração direta com o tipo de pool de mineração que você deseja usar, então você precisará implementar essa parte do código por conta própria ou procurar por outros módulos que atendam às suas necessidades.
--**--
10 módulos para mineração por script com CPU de 1 cabeça:
- pycryptodomex: Uma biblioteca de criptografia que pode ser usada para hash e assinatura digital. É útil para mineração de criptomoedas que usam algoritmos de hash, como o Bitcoin.
- solo: Uma biblioteca para mineração solo, ou seja, sem se conectar a um pool de mineração.
- pyminer: Um minerador Python para mineração de Bitcoin usando CPU.
- yacminer: Um minerador para mineração de criptomoedas que usa CPU e GPU.
- xmr-stak-cpu: Um minerador de CPU para a criptomoeda Monero.
- cpuminer: Um minerador de CPU para várias criptomoedas.
- cgminer: Um minerador de criptomoedas que pode ser usado com CPU e GPU.
- cpuminer-opt: Uma versão otimizada do cpuminer com suporte a vários algoritmos de mineração.
- xmrig: Um minerador de criptomoedas que pode ser usado com CPU e GPU.
- ccminer: Um minerador de criptomoedas para GPUs NVIDIA, mas também suporta mineração com CPU.
Lembre-se de verificar se os módulos são adequados para o tipo de criptomoeda que você está tentando minerar e se são compatíveis com o sistema operacional que você está usando. Além disso, observe que a mineração com CPU é geralmente menos eficiente do que a mineração com GPU ou ASIC, então não espere grandes retornos.
Segue abaixo um exemplo de script em Python utilizando a biblioteca pycryptodomex para mineração com a criptografia scrypt, com as informações fornecidas:
import hashlibimport socketfrom pycryptodomex.scrypt import hash as scrypt_hash# informações da pool de mineraçãohost = "pool.knolix.com"port = 3433user = "63dc459de87f9"password = "x"# conexão com a pool de mineraçãosock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect((host, port))# envio da mensagem de autenticaçãoauth_msg = f"{user}\x00{password}\x00{int(socket.gettime() * 1000)}".encode("utf-8")auth_hash = hashlib.sha256(hashlib.sha256(auth_msg).digest()).digest()sock.sendall(auth_hash)# recebimento da resposta de autenticaçãoresponse = sock.recv(1024)if response != b"\x00":raise Exception("Falha na autenticação")# loop de mineraçãowhile True:job = sock.recv(1024)header_hash = scrypt_hash(job)# envio do resultado da mineraçãosock.sendall(header_hash)
Lembrando que este é apenas um exemplo básico de script de mineração e que é necessário realizar ajustes de acordo com as suas necessidades e configurações específicas. Além disso, é importante verificar as políticas da pool de mineração em relação ao uso de scripts automatizados para mineração.
scrypt: stratum+tcp://pool.knolix.com:3433
Periodic Report 5m19s 25m40s
Share rate 0.00/min 0.08/min
Hash rate 0.00h/s 10.89kh/s (6761.53h/s)
Submitted 0 2
Accepted 0 2 100.0%
Stratum resets 1
Hi/Lo Share Diff 0.020365 / 0.010142
Esse é um relatório gerado a cada 5 minutos e 19 segundos pelo minerador de criptomoedas que está usando o algoritmo scrypt e conectado ao pool de mineração através do protocolo stratum na porta 3433 do endereço pool.knolix.com. O relatório apresenta informações sobre a taxa de compartilhamento (share rate), a taxa de hash (hash rate), o número de soluções submetidas e aceitas pelo pool, a porcentagem de aceitação, além de informações sobre a dificuldade do compartilhamento (share diff).
Nenhum comentário
Comente só assim vamos crescer juntos!
Observação: somente um membro deste blog pode postar um comentário.