domingo, 28 de junho de 2015

Bitcoin Mining usando Raspberry Pi

A Bitcoin é uma moeda virtual criada em 2009. Esta moeda pode ser usada por exemplo como método de pagamento de serviços através da internet.

O seu funcionamento é independente de uma instituição financeira central e à prova de qualquer regulamentação governamental.

Há duas maneiras de obter Bitcoins:

    1. Comprando-as, através de uma troca, que é o processo de conversão de moeda local para Bitcoin.
    2. Mineração. A mineração é o processo de verificação de transacções no blockchain.

À medida que o conjunto do sistema Bitcoin é descentralizada, cada transacção é publicamente visível dentro do que é chamado de blockchain.

Este blockchain contém assim todas as bitcoin trocadas entre os utilizadores, como não há um servidor central, ele tem de ser  autor regulado.

Mineração usando o Raspberry PI

O que vai ser necessário: 

  • Raspberry PI + Cartão SD correndo Raspbian configurado para aceder a internet
  • Hub de alimentação para o dispositivo

clip_image001

O Raspberry PI

Essencialmente, é um computador constituído por uma única placa, desenvolvido com o intuito de promover o ensino de ciências da computação a um nível escolar. Assim sendo, é relativamente fácil de utilizar e tem uma infinidade de usos, nas mais diversas áreas.

Aqui vamos usar o modelo B que tem 512MB de RAM, duas portas USB e uma porta Ethernet.

Para instalar o sistema operativo consultar o site oficial do Raspberry Pi: http://www.raspberrypi.org/downloads e http://www.raspberrypi.org/wp-content/uploads/2012/04/quick-start-guide-v2_1.pdf .

A partir daqui assume-se que o RaspBerry PI está funcionar e totalmente configurado com internet.

Vamos aceder remotamente ao RaspBerry PI usando SSH através do PuTTY, para que isto seja possível, é necessário saber o respectivo endereço IP.

Podemos utilizar o Nmap, para fazer um scan de rede e obter os endereços IP dos dispositivos ligados ou verificar qual é o IP através do Router.

Usando o Nmap:

nmap -sP 192.168.1.0/24

Preparar o Raspberry Pi


O ‘miner’ a instalar vem como arquivos ‘source’, o que significa que o programa deve ser compilado para um binário antes de ser executado. Para fazer um programa, neste caso BFGMiner, são necessárias muitas dependências.


Dependências são softwares adicionais, ou bibliotecas que o programa necessita, a fim de compilar correctamente, uma vez que foi desenvolvido utilizando-os para tornar o software mais eficiente.


Depois de aceder ao RPi vamos teclar os comandos seguintes no terminal:


sudo apt-get update
sudo apt-get install autoconf autogen libtool uthash-dev libjansson-dev libcurl4-openssl-dev libusb-dev libncurses-dev git-core –y

Uma vez que todas as dependências foram instalados, agora vamos fazer o download e instalar o BFGMiner, então digite o seguinte no terminal:


git clone https://github.com/luke-jr/bfgminer.git
cd bfgminer
./autogen.sh
./configure
make

Obterá no ecrã algo parecido com o seguinte:

clip_image003

Começar Mining Bitcoin


Agora pode começar a mineração. Para fazer isso, depois de estar registado no Slush’s pool, vamos usar o comando seguinte:


./bfgminer -o stratum.bitcoin.cz:3333 -O username.worker:password -S all 

A secção username é composta de duas partes, o nome de utilizador que usa para aceder ao Slush’s pool, e o worker que é o nome que forneceu quando registou o worker. Finalmente, a password que foi definida quando criou o worker.



Se tudo funcionar, verá um ecrã que será semelhante a este:


clip_image005

BFGMiner como serviço


Agora vamos configurar o BFGMiner como um serviço Linux. Para fazer isso vamos criar um script de init:


sudo nano /etc/init.d/bfgminer

com o conteúdo seguinte:


#!/bin/sh
#/etc/init.d/bfgminer

case "$1" in
start)
echo "Starting bfgminer"
# run application you want to start
/home/pi/scripts/bfgminer.sh
echo "...started"
exit 1
;;
stop)
echo "Stopping bfgminer"
# kill application you want to stop
killall bfgminer
exit 1
;;
*)
echo "Usage: /etc/init.d/bfgminer {start|stop}"

O home/pi/scripts/bfgminer.sh é um script de uma linha que tem o meu comando BFGMiner que é algo como isto:


/home/pi/bfgminer-3.10.0/bfgminer -o http://stratum.bitcoin.cz:3333/ -u username.1 -p password -S all  -S antminer:all --set-device antminer:clock=x0981  --no-submit-stale  --api-listen >/dev/null &

Para que este serviço seja executado na inicialização digitamos:


update-rc.d bfgminer defaults 

Agora posso iniciar/parar (start/stop) BFGMiner como um serviço Linux com o comando seguinte:


sudo service bfgminer start  
sudo service bfgminer stop

Para obter mais informações, há uma série de sites e fóruns disponíveis, tais como https://bitcointalk.org/.



Referencias:



http://www.raspians.com/cpu-mining-on-the-pi-or-how-to-go-broke-mining/
http://computers.tutsplus.com/tutorials/how-to-create-a-raspberry-pi-bitcoin-miner--cms-20353
http://www.instructables.com/id/Bitcoin-Mining-using-Raspberry-Pi/?ALLSTEPS
http://blog.verticodelabs.com/raspberry-pi-bfgminer-service/

 
View My Stats