Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/debianlima/hack_miner_deroluna
O Hack Miner é uma modificação do Astrominer do MinerOS que permite monitorar o DeroLuna utilizando a API do MinerOS. Este script permite a coleta de estatísticas em tempo real sobre o desempenho dos minerador, facilitando a análise e otimização das operações de mineração.
https://github.com/debianlima/hack_miner_deroluna
criptomoedas linux mineracao
Last synced: 24 days ago
JSON representation
O Hack Miner é uma modificação do Astrominer do MinerOS que permite monitorar o DeroLuna utilizando a API do MinerOS. Este script permite a coleta de estatísticas em tempo real sobre o desempenho dos minerador, facilitando a análise e otimização das operações de mineração.
- Host: GitHub
- URL: https://github.com/debianlima/hack_miner_deroluna
- Owner: debianlima
- License: apache-2.0
- Created: 2024-10-27T20:46:49.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-10-27T21:51:27.000Z (2 months ago)
- Last Synced: 2024-11-05T13:35:46.450Z (2 months ago)
- Topics: criptomoedas, linux, mineracao
- Language: PHP
- Homepage: https://tilima.blogspot.com/
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Hack Miner - Modificação do MinerOS para Monitoramento do Deroluna
Visão Geral
O Hack Miner é uma modificação do Astrominer do MinerOS que permite monitorar o DeroLuna utilizando a API do MinerOS. Este script permite a coleta de estatísticas em tempo real sobre o desempenho dos minerador, facilitando a análise e otimização das operações de mineração.
Nesta caso, vamos habilitar o modo hack do MinerOS, ativando o parâmetro emSKIP_SYNC=true
no arquivonano /config/hack.txt
.
Assim, é necessário reiniciar o MinerOS para ativar o modo. Após reiniciar, execute a screenclient
; nela deverá conter a advertência:
Sync WARNING Synchronization disabled by hack.txt SKIP_SYNC=1que indica que o modo hack está ativo.
Agora, antes de instalar o Deroluna, precisamos desativar a função que substitui arquivos alterados no MinerOS. Apesar de o modo hack garantir que isso não aconteça, acaba ocorrendo.
Vamos comentar a função de substituiçãocompare()
nos dois arquivos abaixo:
/home/client/restore/sync.php
/home/client/modules/syncService.php
Para que fique no formato abaixo, comentando a comparação e substituição de diretórios de arquivos, para não apagar nosso Deroluna personalizado.
private function compare($serverFiles, $systemFiles, $folderType, $folderDestinationPath)
{
$hasChanges = false;
if (!is_array($serverFiles) || !is_array($systemFiles)) {
return false;
}
/*
foreach ($serverFiles as $filePath => $fileParams) {
Log::info("File: ".Log::wrap($filePath, "bold"));
if (isset($systemFiles[$filePath])) {
if ($fileParams['crc32'] != $systemFiles[$filePath]['crc32']) {
$hasChanges = true;
Log::error(Log::wrap(" Error ", "red.reverse")." ".Log::wrap("CRC does not match", "red"));
$this->statistics['changed_files_count'] += 1;
$result = $this->download($filePath, $fileParams, $folderType, $folderDestinationPath);
if($result) {
$this->statistics['downloaded_files_count'] += 1;
} else {
$this->statistics['downloading_errors_count'] += 1;
}
} else if ($fileParams['perm'] != $systemFiles[$filePath]['perm']) {
$hasChanges = true;
Log::error("Wrong permissions, doing chmod (".$folderDestinationPath.$filePath.")");
chmod($folderDestinationPath.$filePath, $fileParams['perm'] & 0xFFF);
} else {
Log::info(Log::wrap(" OK ", "green.reverse")." ".Log::wrap("Already the latest version", "dim"));
}
unset($systemFiles[$filePath]);
} else {
$hasChanges = true;
Log::error("Not found");
if ($fileParams['perm'] & 0x4000) {
Log::info("Creating dir ".$filePath);
mkdir($folderDestinationPath.$filePath, ($fileParams['perm'] & 0xFFF), 1);
} else {
$this->statistics['new_files_count'] += 1;
$this->download($filePath, $fileParams, $folderType, $folderDestinationPath);
}
}
}
// Removing files
foreach($systemFiles as $filePath => $fileParams) {
if ($fileParams['perm'] & 0x4000) {
continue;
}
Log::info("Removing old file: ".$filePath);
if (unlink($folderDestinationPath . '/' . $filePath)) {
$this->statistics['removed_files'] += 1;
}
unset($systemFiles[$filePath]);
}
// Removing dirs
$dirs = array_reverse($systemFiles);
foreach($dirs as $filePath => $fileParams) {
if ($fileParams['perm'] & 0x4000) {
Log::info("Removing old folder: ".$filePath);
if (rmdir($folderDestinationPath . '/' . $filePath)) {
$this->statistics['removed_dirs'] += 1;
};
}
unset($systemFiles[$filePath]);
}
*/
return $hasChanges;
}
Baixando e Instalando o Deroluna
Agora vamos baixar o Deroluna e descompactá-lo do diretório oficial.
# Baixar o arquivo
curl -L -o deroluna-miner-linux-amd64.tar.gz https://github.com/DeroLuna/dero-miner/releases/download/v1.13-beta/deroluna-miner-linux-amd64.tar.gz
# Descompactar o arquivo
tar -xzvf deroluna-miner-linux-amd64.tar.gz
Agora vamos substituir o arquivo do Astrominer pelo script abaixo. Este script captura as variáveis enviadas pela API do MinerOS, não precisando que você as configure, e personaliza para executar o Deroluna. Quando você configurar a versão e o minerador na API Web do MinerOS, esta versão que estamos substituindo utilizará a carteira e a pool especificadas lá.
#!/bin/bash
# Definir valores padrão
# POOL="community-pools.mysrv.cloud:10300"
# WALLET="dero1qy3wt54g5p2reegnjx4m9dy3y0dwwdxfhalegenws20r80r885chjqgucq3t2"
API_LISTEN="127.0.0.1:44001"
# Verificar e capturar parâmetros da linha de comando
if [[ $@ =~ -r[[:space:]]+([^[:space:]]+) ]]; then
POOL="${BASH_REMATCH[1]}"
fi
if [[ $@ =~ -w[[:space:]]+([^[:space:]]+) ]]; then
WALLET="${BASH_REMATCH[1]}"
fi
# Função para mostrar uso do script
usage() {
echo "Uso: $0 [-r POOL] [-w WALLET]"
echo " -r POOL Especifica o pool de mineração (padrão: $POOL)"
echo " -w WALLET Especifica o endereço da carteira (padrão: $WALLET)"
exit 1
}
# Montar a linha de comando final
cmd="./deroluna -w $WALLET -d $POOL --api-listen $API_LISTEN"
echo "Iniciando o deroluna com o seguinte comando:"
echo "$cmd"
# Executar o comando em um loop infinito
while :
do
$cmd
sleep 1
done
Após criar o script, copie o arquivo descompactado do Deroluna para /home/miners/astrominer/1.9.2.R5
. No diretório, terá o primeiro arquivo com o script Astromine para compatibilizar as variáveis da interface web e a execução automática do sistema e o segundo arquivo que é o minerador Deroluna.
Depois, vamos modificar o script astrominer.php
para conter nosso script de monitoramento, que é script astromine.php
. No diretório /home/client/mstat
, este script é que permite que o guarda da rig e o monitoramento da interface funcionem.
Funcionalidades
-
Coleta de Estatísticas em Tempo Real: O script coleta dados essenciais como hashrate, uptime, ações aceitas e rejeitadas. -
Formatação de Saída: Os dados são apresentados em um formato de array PHP, tornando mais fácil a leitura e análise. -
Exibição de Erros: Mensagens de erro são exibidas em cores diferentes no terminal para facilitar a identificação de problemas.
Estrutura do Script
O script realiza as seguintes etapas:
-
Inicialização da Sessão cURL:
O script inicia uma sessão cURL para se conectar ao endpoint da API do Deroluna e solicitar estatísticas.
$url = 'http://localhost:44001/stats';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
-
Execução da Requisição:
Os dados são recuperados através da execução da requisição cURL.
$stats_raw = curl_exec($ch);
-
Tratamento de Erros:
Se ocorrer um erro, o script exibe uma mensagem de erro apropriada.
if (curl_errno($ch) || empty($stats_raw)) {
echo "\033[33mFailed to read miner from $url\033[0m\n";
}
-
Processamento de Dados:
Os dados brutos são processados e convertidos em um array associativo, facilitando a análise.
$stats_array = explode(" ", trim($stats_raw));
-
Formato de Saída:
Os dados são formatados em um array PHP, apresentando as informações relevantes.
return [
'uptime' => (int)$uptime,
'speed' => [
'total' => (float)$hs,
],
'shares' => [
'total' => (int)$acc,
'reject' => (int)$rej,
'invalid' => 0,
],
];
Exemplo de Uso
Ao executar o script, o resultado será um array PHP formatado assim:
Array
(
[uptime] => 41
[speed] => Array
( [total] => 27124.40
)
[shares] => Array
( [total] => 827
[reject] => 51
[invalid] => 0
)
)
Contribuições
Sinta-se à vontade para contribuir com melhorias, correções ou novas funcionalidades. Para contribuir, faça um fork deste repositório, crie uma nova branch e envie um pull request.
Licença
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.