You are on page 1of 22

Bitcoin

Introduo ao funcionamento do Bitcoin


Paulo Matias1
1 Departamento

de Fsica e Cincia Interdisciplinar


Instituto de Fsica de So Carlos
Universidade de So Paulo

17a Semcomp

Paulo Matias (IFSC-USP)

17a Semcomp

1 / 22

Bitcoin

Requisitos

Para criar uma moeda digital, necessrio:


**

**

Uma forma de somente o proprietrio de um certo valor autorizar


sua transferncia assinaturas digitais.
Uma forma de impedir que um certo valor seja gasto duas vezes.
***
***

Moedas de jogos autoridade central.


Bitcoin blockchain.

Paulo Matias (IFSC-USP)

17a Semcomp

2 / 22

Bitcoin

Assinatura digital curva elptica secp256k1


**
**
**

Blocos bsicos do Bitcoin

Equao: y2 = x3 + 7
Definida no corpo de Galois Z2256 232 29 28 27 26 24 1
Assustou? Segure-se na cadeira e voc poder
ganhar o equivalente a R$40 em bitcoins!

Blockchain
**

**
**

Funo de via nica (hash) SHA256 utilizada para


gerar uma prova de trabalho de
uma cadeia de registros de transaes.
Inovao do Bitcoin!
Essa parte um pouco mais simples de entender.

Paulo Matias (IFSC-USP)

17a Semcomp

3 / 22

Bitcoin

Viso geral de uma assinatura digital

Chave privada: s o proprietrio do dinheiro conhece.


Trata-se de um grande nmero inteiro dA
que deve ser mantido em sigilo.

Chave pblica: como o nome diz, pblica, todo mundo conhece.


Trata-se de um par de nmeros inteiros QA .

Assinatura: dado um conjunto de inteiros (r, s, e),


deve ser possvel verificar, conhecendo somente QA ,
que r e s foram calculados a partir do valor e por algum
que conhecia o valor de dA .

Como isso possvel?

Paulo Matias (IFSC-USP)

17a Semcomp

4 / 22

Bitcoin

Operao de soma em curvas elpticas

Propriedade: uma reta diagonal sempre corta 3 pontos da curva

Como 2 pontos definem uma reta, dados 2 pontos possvel


determinar um terceiro (que tambm corte a curva).

Chamaremos essa operao de soma


(apesar de no ser uma soma das coordenadas!)
curve : y
curve : y

P { 2.08707 , - 4.01136 }

= x

+ 0x + 7

Q { 0.0870688

P { - 1.71293 , 1.405 }
, - 2.64588 }

= x

+ 0x + 7

curve : y

Q { 1.48707 , - 3.20756 }

= x

P { 2.08707 , - 4.01136 }

P + Q { 2.30357 , 4.3845 }

+ 0x + 7

Q { 2.08707 , - 4.01136 }

P + Q { - 1.52108 , - 1.86567 }

P + Q { - 1.708 , 1.42031 }

P + Q
4

2
2

P + Q

2P

-2

-2

-2

Q
P

-4

-2

-4

P = Q

-4

-2

Paulo Matias (IFSC-USP)

-2

17a Semcomp

5 / 22

Bitcoin

Clculo algbrico da soma

Com um pouco de Geometria Analtica, possvel calcular essa


operao algebricamente:

 
 

rx
px
qx
R = P+Q
=
+
ry
py
qy
Se P , Q ento:
rx = s2 px qx

e ry = s (px rx ) py

onde

s=

py qy
px q x

Se P = Q (ou seja, R = 2P), ento:


rx = s2 2px

e ry = s (px rx ) py

Paulo Matias (IFSC-USP)

onde s =

3p2x + a
2py

17a Semcomp

6 / 22

Bitcoin

Corpo de Galois

E se em vez de fazer essas operaes em nmeros reais, fizermos


em inteiros?

E mais, e se limitarmos um valor mximo para esses inteiros


(tomando o resto da diviso com um
nmero primo aps cada operao)
**

**

Propriedade: o resto da diviso pode ser calculado a qualquer


momento e quantas vezes se queira, desde que o valor final da
operao fique abaixo do valor mximo.
Experimente:
***

***

(2 + 4 + 3 + 1) mod 5 = (2 + 4 + 3) mod 5 + 1 mod 5 =


= ((2 + 4) mod 5 + (3 + 1) mod 5) mod 5 = 0
(3 (4 + 3)) mod 5 = ((3 mod 5) ((4 + 3) mod 5)) mod 5 = 1

Paulo Matias (IFSC-USP)

17a Semcomp

7 / 22

Bitcoin

Curva discreta

O que era uma curva torna-se uma nuvem de pontos.

Paulo Matias (IFSC-USP)

17a Semcomp

8 / 22

Bitcoin

Propriedades interessantes

A multiplicao de um nmero dA por um ponto G


(somar G consigo mesmo dA vezes: G + G + + G)
rpida de calcular em um computador.
**

Usando a decomposio de dA em potncias de 2.


Se dA = 11, ento decompomos dA = 1 + 2 + 8,
ento dA G = G + 2G + 23 G,
onde 2i G calculado dobrando G consecutivamente.

A diviso de um ponto QA = dA G pelo ponto G


(para recuperar o valor de dA ) extremamente lenta.

Chave pblica: QA . Chave privada: dA .


Sendo que G um valor pblico, conhecido e
fixo para um certo algoritmo de assinatura.

Paulo Matias (IFSC-USP)

17a Semcomp

9 / 22

Bitcoin

Mltiplos de G em uma curva elptica

Mltiplos consecutivos de G geram pontos bastante espalhados pelo


plano. Para um certo G, rpido calcular o nmero de pontos n
diferentes que podem ser gerados a partir de mltiplos de G.
Escolhe-se um G tal que n seja grande (prximo de 2256 ).

Paulo Matias (IFSC-USP)

17a Semcomp

10 / 22

Bitcoin

Clculo e verificao de assinaturas

Assinatura: Escolhe-se um nmero k aleatrio entre 0 e n. Esse k


mantido em segredo. Calcula-se R = k G. A partir da coordenada rx
do ponto R, calcula-se:
s=

e + dA rx
k

mod n

Onde e o nmero a ser assinado. Lembrando que dA a chave


privada, e que n um nmero fixo para o algoritmo.
Envia-se rx e s juntamente com e para o destinatrio.
Verificao: No necessrio dA para validar a assinatura, apenas a
chave pblica QA . Calcula-se:
P = e s1 G + rx s1 QA
A assinatura vlida se a coordenada px de P for igual a rx , pois,
lembrando que QA = dA G:
P=s


(e + rx dA ) G =

e + dA rx
k

Paulo Matias (IFSC-USP)


(e + rx dA ) G = k G = R
17a Semcomp

11 / 22

Bitcoin

Finalizando esse assunto

Fixe o conceito de chave pblica e chave privada. Uma assinatura


pode ser gerada com uma chave privada e apenas a chave pblica
necessria para valid-la.

Anote este link e separe algumas horas, algum dia,


para ler uma explicao mais detalhada:
http://www.johannes-bauer.com/compsci/ecc/

Contextualizando: um endereo Bitcoin o identificador (hash)


de uma chave pblica. Ele proprietrio de uma certa
quantidade de bitcoins. Para transferi-las, ele utiliza sua chave
privada para assinar uma transao.

Paulo Matias (IFSC-USP)

17a Semcomp

12 / 22

Bitcoin

O que um hash?

Antes de prosseguir para a explicao sobre transaes, precisamos


responder pergunta: o que um hash?

Paulo Matias (IFSC-USP)

17a Semcomp

13 / 22

Bitcoin

Similar a um dgito verificador

Propsito similar ao dgito verificador nos nmeros de CPF. Porm


nmeros de CPF so lineares!
CPF (A + B) = CPF (A) + CPF (B)
123.123.123-87
+ 321.321.321-78
---------------444.444.444-44

712.836.511-73
+ 221.152.476-12
---------------933.988.987-85

297.173.619-91
+ 768.172.923-28
---------------944.235.431-09

onde:
(8 + 7) mod 11 = 4
(7 + 8) mod 11 = 4

onde:
(7 + 1) mod 11 = 8
(3 + 2) mod 11 = 5

onde:
(9 + 2) mod 11 = 10
(1 + 8) mod 11 = 9

Uma funo hash H segura jamais poderia ter essa propriedade. Uma
pequena mudana na entrada deve corresponder a uma grande
mudana na sada. A sada deve parecer aleatria caso a entrada no
seja conhecida. Mais que isso obviamente existem hashs repetidos
para certos pares de entradas M1 , M2 , pois a entrada tem geralmente
muito mais bits que a sada, mas nenhum destes pares deve ser
conhecido, ou seja, H(M1 ) , H(M2 ) para M1 , M2 para todo hash j
calculado no mundo.
Paulo Matias (IFSC-USP)

17a Semcomp

14 / 22

Bitcoin

*
*

Transaes

Um bitcoin no existe como uma entidade isolada. Uma transao


sempre se refere a uma transao anterior.
A sada (quantidade de bitcoins recebida) de uma transao pode
ser usada como entrada (bitcoins a serem transferidos) em outra
transao.
Transaction

Transaction

Owner 1's
Public key

Transaction

Owner 2's
Public key

Hash

Owner 3's
Public key

Hash

Ver
i

fy

Owner 0's
Signature

Hash

Ver
i

fy

Owner 1's
Signature

gn

gn

Si
Owner 1's
Private Key

Paulo Matias (IFSC-USP)

Owner 2's
Signature

Si
Owner 2's
Private Key

Owner 3's
Private Key

17a Semcomp

15 / 22

Bitcoin

Transaes

Uma transao composta basicamente de:


*

Lista de entradas:
**
**
**

Identificador (hash SHA256 duplo) de uma transao preexistente.


Nmero da sada dessa transao que deve ser utilizada.
Assinatura provando que o usurio dono do dinheiro contido
naquela sada (scriptSig).

Lista de sadas:
**
**

Valor da sada em satoshis (108 bitcoins).


Identificador da chave pblica que passa a ser dona desta sada
(scriptPubKey).

O valor de e utilizado no algoritmo de curva elptica para cada


assinatura corresponde ao hash de uma verso incompleta da
transao, que ainda no contm assinaturas em suas entradas.

Paulo Matias (IFSC-USP)

17a Semcomp

16 / 22

Bitcoin

Transaes

OK, mas de onde surgiram as primeiras transaes, se os bitcoins


no existem como entidade isolada?

E se um usurio gastar os mesmos bitcoins duas vezes, ou seja,


usar a mesma sada como entrada em duas transaes diferentes?
Qual dessas duas transaes vlida? Quem se torna o dono dos
bitcoins?

Paulo Matias (IFSC-USP)

17a Semcomp

17 / 22

Bitcoin

Blockchain

Bloco: um conjunto de transaes.


**

Precisa de muito trabalho computacional para ser gerado 10 min


de processamento de toda a rede Bitcoin no mundo.

Cadeia de blocos (blockchain): conjunto de todo o histrico da


rede, onde um bloco sempre contm o hash do anterior.

O software aceita como vlida a cadeia na qual tenha sido


depreendido o maior esforo computacional.
Portanto, quanto mais antiga uma transao, mais difcil de
retir-la do histrico.

Paulo Matias (IFSC-USP)

17a Semcomp

18 / 22

Bitcoin

A ideia do blockchain imitar o livro de registros de transferncia


de imveis em um cartrio. O registro pblico, assim como o
livro de um cartrio.
**
**

Blockchain

O Bitcoin est longe de ser annimo como alguns dizem.


Pesquisas recentes pretendem resolver este problema: Zerocoin.

Uma vez no blockchain depois de gerados 6 blocos, o receptor do


dinheiro pode se sentir seguro de que ele no ser gasto
novamente pelo dono original.
**

Metade da rede teria que conspirar conjuntamente,


ao longo de 1 hora, para mudar o histrico.

Paulo Matias (IFSC-USP)

17a Semcomp

19 / 22

Bitcoin

*
*

Prova de trabalho (minerao)

Para ser vlido, o valor numrico do hash do bloco deve ser menor
que um limiar de esforo ajustado a cada 2016 blocos ( 14 dias).
Existe um campo livre no bloco (nonce) que pode ser
modificado para alterar o hash final.

As mquinas participantes da rede Bitcoin esto continuamente


tentando gerar blocos com um hash considerado vlido
minerao.
A primeira mquina a conseguir gerar um bloco vlido pode
definir o destinatrio de uma transao de prmio
(atualmente 25 BTC, reduzido pela metade a cada 4 anos).
Paulo Matias (IFSC-USP)

17a Semcomp

20 / 22

Bitcoin

Lio de casa

O blockchain garante que o receptor de uma quantia no v mais


perd-la depois de consolidados alguns blocos, porm
Lio de casa: o que acontece se ainda assim forem geradas mltiplas
transaes que utilizem como entrada uma mesma sada?

Paulo Matias (IFSC-USP)

17a Semcomp

21 / 22

Bitcoin

Concluso

Anote a seguinte chave privada, proprietria


do equivalente a R$40 em bitcoins:
"5KAh7DRoZAc6RL8huL5dLthmkBPEx4CEV2gUUK3WF3MP5CArGEm"

Instale o Electrum. V no menu WalletPrivate keysImport.

No esquea de transferir imediatamente esse valor para outro


endereo Bitcoin em sua posse. (Por que?)

Paulo Matias (IFSC-USP)

17a Semcomp

22 / 22

You might also like