Neste post vamos falar de Cotação de Bitcoins com Raspberry Pi. Muito tem se falado sobre Bitcoins ultimamente, principalmente com a rápida ascensão da sua cotação. No momento da criação desse post, por exemplo, B$ 1 (um Bitcoin) equivale a R$23.310. Isso mesmo, são 23 mil trezentos e dez reais! Mas nem todo mundo conhece como funciona o Bitcoin, muito embora a maioria já deva ter ouvido falar bastante, talvez até se arrependendo de não ter comprado algumas dezenas de Bitcoins em sua criação.
Explicando Bitcoins
Bitcoin é uma moeda virtual que não pode ser armazenada fisicamente, diferente do real ou do dólar. Isso por si só já garante bastante segurança, impedindo que seja roubada como as moedas físicas. Existem outras moedas virtuais (ou criptomoedas) em circulação, como a Ethereum e a Litecoin, mas focaremos apenas no Bitcoin por enquanto. Ela é muito utilizada em transações eletrônicas, e até mesmo em alguns estabelecimentos físicos como pontos de venda isolados pelo mundo, sendo o Japão o principal adotante na utilização em diversos locais.
A moeda foi criada em 2009 por Satoshi Nakamoto (não se sabe se é apenas uma pessoa, ou um grupo de desenvolvedores sob este pseudônimo), e custava menos de um dólar. Com o passar dos anos, e a adoção da moeda por várias entidades, seu preço vem aumentando. Recentemente, um ransomware (vírus de computador que “sequestra” seus arquivos e exige resgate) chamado Wanna Cry, causou muitos problemas pelo mundo. O resgate exigido era em Bitcoins. Isso fez com que a moeda tivesse uma valorização enorme, chegando em R$ 12.000 no início do ano.
Obtenção
O Bitcoin não é controlado por nenhuma unidade central, diferente do Real que é regulado pelo Banco Central. Milhares de computadores conectados à uma rede específica são os responsáveis por manter os dados de transações e de “mineração”, sendo esta rede conhecida como Blockchain. Cada computador integrante recebe a tarefa de resolver alguns problemas matemáticos ao mesmo tempo, e o primeiro a resolvê-lo é recompensado com um valor de Bitcoin, processo este chamado de mineração. Como este processo gerou bastante lucro para os primeiros “mineiros”, muitas pessoas gastaram dinheiro em computadores cada vez mais poderosos, e inclusive supercomputadores, para fazer o processo de mineração continuamente. E por se tratar de cálculos matemáticos, percebeu-se também que era mais vantajoso investir em placas de vídeo (GPUs) para aumentar a velocidade de mineração. A mineração era um grande negócio, chegando a gerar alguns milionários pelo mundo.
Mas à medida que a moeda foi se popularizando, o valor de recompensa pela mineração vem decrescendo. Os custos com computadores/energia gasta não estão valendo a pena em relação ao que se recebe por esse processo. Além disso, os Bitcoins serão limitados, inicialmente, à uma quantidade de 21 milhões, previsão até 2140. Outra desvantagem é que a moeda é bastante volátil. Desde que comecei a escrever este post, o valor do Bitcoin subiu para R$24.300, ou seja, R$ 1.000 de aumento em apenas 20 minutos! Pode parecer uma coisa boa, mas do mesmo jeito que ela sobe rapidamente, também cai numa velocidade incrível.
Preparação
Agora que sabemos como funciona o Bitcoin, algumas pessoas devem estar interessadas em investir, ou apenas comprar e guardar. Existem diversas corretoras que vocês podem procurar para poder realizar a compra. A Mercado Bitcoin oferece também o serviço de API, ou seja, um serviço para que desenvolvedores possam utilizar a cotação em suas aplicações e verificar outros dados. Para pessoas que desejem ver algo mais avançado, a documentação da API é bem completa.
Para nosso exemplo onde vamos mostrar a cotação de bitcoins em um display, precisaremos de um RaspberryPi e um Display LCD 16×2 I2C Backlight Azul. Antes de tudo, é preciso que o RaspberryPi tenha instalado a distribuição Linux Raspbian com conexão à rede, pois precisaremos do compilador de linguagem Python para executar o código e consultar as informações de Bitcoin. Já fizemos anteriormente um tutorial para instalação do Raspbian no cartão de MicroSD.
Retornando a cotação de bitcoins
Instalado o Raspbian, devemos fazer a conexão com o Display LCD seguindo este tutorial de instalação. Devo lembrar-lhes que, para editar os arquivos, é recomendado o uso do editor Nano, embutido no Raspbian Lite. Caso esteja com a versão com interface gráfica, a edição pode ser feita normalmente.
Para acessar a cotação atual do Bitcoin, vamos utilizar a seguinte URL: https://www.mercadobitcoin.net/api/BTC/ticker/ . Se chegar a acessar a URL diretamente no browser, você vai ver informações similares à apresentada abaixo
{ "ticker":{ "high":"25500.00000000", "low":"23082.93897000", "vol":"692.65568776", "last":"23927.01000000", "buy":"23927.01000000", "sell":"24140.00000000", "date":1510081440 } }
Este trecho de código está disposto em formato JSON (JavaScript Object Notation, um formato muito popular para tráfego de dados pela web), e retorna as informações que precisamos. Para um ser humano, sua leitura não fica muito clara, mas para o computador, é um padrão plenamente entendível. Destaque para a propriedade “last“, que nos diz exatamente qual a cotação do Bitcoin em Reais.
Dando segmento, é necessário criar um arquivo chamado Bitcoin.py, que será o código fonte do nosso programa. Lembre-se de criá-lo na mesma pasta que o arquivo de driver do Display LCD I2C. Podemos criá-lo com o Nano, ou com o editor gráfico do Raspbian
sudo nano Bitcoin.py
# Programa : Obtendo a cotação de Bitcoins # Autor : MakerHero import threading import time import I2C_LCD_driver import json from urllib import urlopen from datetime import datetime mylcd = I2C_LCD_driver.lcd() def retornaCotacao(): url = urlopen('https://www.mercadobitcoin.net/api/BTC/ticker/').read() p = lambda:None p.__dict__ = json.loads(url) return float(p.ticker['last']) while True: cotacao = retornaCotacao() mylcd.lcd_clear() mylcd.lcd_display_string("R$ {0:.2f}".format(cotacao), 1) mylcd.lcd_display_string(datetime.now().strftime('%d/%m/%Y %H:%M:%S'), 2) time.sleep(60)
Explicação do programa cotação de bitcoins
Nas primeiras 9 linhas, fazemos a importação das bibliotecas que iremos utilizar para efetuar o retorno dos dados. Já na linha 11 é criada a instância de objeto que vai controlar o display. Entre as linhas 13 e 19 é criado um método chamado retornaCotacao, que faz exatamente o que o nome diz. Ele acessa a URL passada anteriormente e baixa os dados em formato JSON. Dentro dele é feita a comunicação para que o Python entenda o que está se passando, e retorne enfim, na linha 19, a propriedade ‘last’, a última cotação registrada.
É feito então um loop infinito na linha 21, que vai rodar eternamente, a menos que o programa seja fechado. Esse loop retorna a cotação e escreve no display (linhas 24 a 26), formatando para duas casas decimais e exibindo também a hora em que foi consultado. A última linha fala para o programa “dormir” durante 60 segundos, permitindo que o valor seja buscado a cada minuto.
Agora fica mais fácil controlar o valor de seus investimentos em Bitcoins!
Gostou do post Cotação de Bitcoins com Raspberry Pi? Deixe seu comentário logo abaixo.
Onde podemos gastar os Bitcoins? Ou trocar por moeda física?
Olá Everton,
Já possível usar Bitcoins em comércios eletrônicos e físicos. Também é possível trocar por moeda física sim.
Abraço!
Rosana – Equipe MakerHero
Parabéns Alliston, muito legal. Estou um pouco defasado em programação, mas aos poucos eu chego lá.
Olá,
É muito bom saber que gostou do post 😀
Abraço!
Rosana – Equipe MakerHero
Olá Aliston, Muito obrigado por compartilhar, Parabéns.
Fiz aqui e deu certinho, inclusive peguei outros api’s de outras Exchanges como a Foxbit e a Bitfinex com outras moedas e deu certo também, eu não sei programar e muito menos Phyton ou qualquer outra linguagem, então fui por tentativa e erro, inclusive peguei parte do tutorial de como instalar o lcd no pi que mostra um texto na tela e coloquei para mostrar o nome da Exchange e moeda antes de aparecer a cotação, e você vai rir mas eu coloquei em sequencia este seu código copiando e colando e somente trocando o link das api’s então ia mostrando na tela o nome da exchanges e depois a cotação e em seguida passava para a outra exchange e outra moeda e cotação, só que eu não sei como fazer para voltar a repetição e ficar em loop, para as cotações alternarem enão ficar em loop eu troquei o while por if e funcionou , só deixei o while na ultima parte pois parava e não atualizava mais, eu não sei como fazer repetir todo este processo de novo, estou tentando procurar informações de como resolver isso. haahaha
Obrigado!
Fala Lucas, bom dia! Pra alguém que não é programador, isso tá muito bom, parabéns!
Pra resolver seu problema, basta que você coloque tudo abaixo do “while True:”. Repete o código do LCD pra cada cotação, ficando atendo ao time.sleep(60). Isso significa que o sistema vai ficar parado por 60 segundos. Basta que você pare o sistema a cada leitura de cotação, que dai ele vai repetir e voltar no começo.
Boa sorte, qualquer coisa posta aqui pra gente!
Alliston! Bom Dia! Muito Obrigado pela sua sua ajuda, consegui! coloque como você disse, depois de algumas tentativas deu certo! Agora consigo por quantas moedas e cotações que eu quiser e deixar em loop! \o/ ;D
Obrigado e Grande Abraço!
Aí sim!
Fico feliz de ter ajudado, qualquer coisa é só falar.
Grande abraço!
você aceito pagamentos em bitcoin na sua loja, se sim como é feita?
Poxa que legal! Muito mais simples do que eu imaginava!
Talvez seja pedir muito, mas tem como ampliar essa leitura para acompanhar as altcoins também?
Agradeço desde já, belo tutorial 🙂
Valeu Kadin!
Sobre altcoins, a API da MercadoBitcoin fornece o acesso à outras duas, Litecoin e BitcoinCash. Pra isso, no endereço https://www.mercadobitcoin.net/api/BTC/ticker/, você troca o BTC por LTC (Litecoin) ou BCH (Bitcoin Cash), ficando, por exemplo, https://www.mercadobitcoin.net/api/LTC/ticker/
Sobre as outras moedas, como Ethereum, aí depende de encontrar uma API que me provê esses dados, pois só estou utilizando serviço disponibilizado pela corretora. Vou procurar aqui e respondo caso eu encontre algo.
Grande abraço!
Parabéns Alliston, muito legal o post!
Valeu pelo apoio Filipe!