O Bitcoin é a primeira forma de dinheiro digital descentralizado a ganhar popularidade. Devido ao seu design inivador, 10 anos após a sua criação continua a ser a criptomoeda de maior expresão no mercado respondendo por cerca de 50% de todo o volume de transações do mercado de criptomoedas.
In [1]:
from bitcoin import *
Neste notebook vamos utilizar algumas ferramentas já disponíveis na linguagem Python para explorar o funcionamento da Bitcoin. Certifique-se de estar usando pelo menos a versão 3.5 do Python antes de começar. Os pacotes Python necessários estão listados no arquivo requirements.txt
na raiz deste repositório. Para instalá-los basta executar o seguinte comando:
pip3 install -r requirements.txt
vamos começar criando uma chave privada. Na bitcoin, a chave privada é apenas um número inteiro de 256 bits. Logo utilizaremos uma função Hash para gerar este número a partir de uma frase-senha. Mais adiante vamos explorar melhor as funções Hash, por ora basta saber que esta função mapeia qualquer input para um números de 256 bits. Logo, o tamanho do conjunto imagem é $2^{255}$.
In [2]:
priv = sha256('some big long brainwallet password')
priv
Out[2]:
A chave pública pode ser calculada a partir da chave privada, mas o contrário não é verdadeiro.
In [3]:
pub = privtopub(priv)
pub
Out[3]:
Vamos tentar entender como a chave pública é gerada a partir da chave privada.
In [4]:
privtopub??
cada par de chaves pública e privada correspondem a um endereço na blockchain da Bitcoin: Também chamado de uma carteira. O endereço é basicamente uma "abreviação" da chave pública, por meio da aplicação de uma segunda hash function, a RIPEMD-160 sobre a chave pública. Isto é feito para que o endereço seja mais "curto".
In [5]:
end = pubtoaddr(pub)
end
Out[5]:
vamos verificar o histórico de transações desta carteira
In [6]:
h = history(end)
h
Out[6]:
In [6]:
history??
In [ ]: