Vou tentar explicar como funciona o Bitcoin.

Desejem-me sorte.

Segue thread.
Primeiro, os bitcoins em si não existem, tens de deixar de pensar em notas e moedas, isso só complica.

O que existe sim é uma folha de cálculo com o registo de todas as passagens de bitcoins entre pessoas: A Ana passou 3 bitcoins ao Bruno, o Bruno passou 2 bitcoins à Carla, etc.
Quantos bitcoins tem o Bruno? Se recebeu 3 da Ana, e passou 2 à Carla, tem 1. Até aqui está fácil, não?

De onde vêm os bitcoins da Ana é algo que veremos mais à frente. Prossigamos.
Esta folha de cálculo é partilhada por centenas de milhares de pessoas, e tem quase 700.000 páginas. Cada página tem registado, por linha, uma transmissão de bitcoins de uma pessoa para outra.
Mas há um problema, o número de linhas não é infinito. Aliás, quem partilha o ficheiro tem por regra não aceitar páginas com mais de 1 MB (regra #1). Por isso, hoje, o ficheiro tem à volta de 310 GB (no início não havia muita gente e as páginas não estavam cheias).
Não sendo infinito, há então que decidir quais as transacções que devem ficar escritas na próxima página, pois pode não haver lugar para todas.

Mas num sistema que se quer descentralizado, quem é que toma decisões?
A solução é tirar à sorte, escolher um dos participantes e dar-lhe esse poder para a próxima página.

Mas agora temos outro problema, como tirar à sorte num grupo de desconhecidos que não confiam propriamente uns nos outros?
É aqui que entra o conceito do Proof of Work ("PoW"), que por acaso foi inventado antes do Bitcoin, com o objectivo de combater o spam.

A ideia é simples. Existe um algoritmo, chamado SHA256, que o que faz é, dado um número, sai do outro lado outro número, mas com 256 bits.
A questão é que este número que sai é extremamente imprevisível. Se eu quiser que saia o 42, eu não faço ideia que número é que eu tenho de meter. E esta imprevisibilidade é o que nos vai ajudar a tirar à sorte.
Imagina que eu pedia-te que me dissesses um número que, passado ao SHA256, o resultado terminasse em 5. Tu não sabias, mas ias experimentar números aleatórios, certo? Ao fim de meia-dúzia de tentativas descobrias um, e dizias-me.
Eu pegava no teu número, passava-o pelo SHA256 e comprovava que o resultado de facto terminava em 5. Bom trabalho.
Mas e se eu te pedisse um número cujo resultado terminasse em 5555? Muito mais difícil, pois claro, irias precisar, em média, de milhares de tentativas com números aleatórios até descobrir um que terminasse em 5555.

Provavelmente mandavas-me bugiar.
Mas e se eu te oferecesse 200.000 euros por esse número? Pois, começavas a correr para tentar descobrir o raio do número. Eu não te levo a mal, por 200.000 euros eu faria o mesmo.
A imprevisibilidade do SHA256 pode então ser usada como fonte de aleatoriedade para o nosso "tirar à sorte": Damos um problema mais ou menos complexo (número de 5s por exemplo) e o primeiro que responder, ganha. Encontrar o número é uma sorte, pode até ser à primeira tentativa.
Agora vamos usar esta nova ferramenta para tirar à sorte o nosso vencedor. Mais, vamos obrigar a usar o número da página anterior (que acaba por ser aleatório) na busca do novo número. Isto faz com que, quando se descobre uma nova página, todos tenham de começar de novo.
Isso faz também com que haja uma relação entre as várias páginas, a página actual está relacionada com o número da página anterior, (consecutivamente) criando assim uma cadeia (chain), que vai até à página inicial.
Adicionalmente, o número que resulta da "soma" de todas as linhas dessa página também tem que entrar. Assim, se alguém alterar alguma das linhas, os números mudam todos. Isto vai ser importante mais à frente quando estivermos a falar de segurança.

E de onde vêm os 200.000 euros?
É que esse é o prémio pago ao "felizardo" que ganhar a próxima página da nossa folha de cálculo, 6.25 bitcoins. A primeira linha de uma página é especial, pois diz que fulano é dono de 6.25 bitcoins que não vieram de ninguém. É assim que nascem os bitcoins.
Nem sempre foi 6.25, começou por ser 50, mas a cada 210.000 páginas é reduzido a meio, no que se chama de "halvening". Acontece, mais ou menos, de 4 em 4 anos. Há de haver uma altura em que não será possível dividir mais, lá para 2140.

A soma destes prémios todos dá 21 milhões.
Mas como assim, 210.000 páginas são 4 anos?

As páginas querem-se espaçadas no tempo por 10 minutos. Como isto depende da quantidade de pessoas que estão à procura do número terminado em 5s, o protocolo ajusta-se: mais gente, mais 5s, menos gente, menos 5s. Objectivo: 10 minutos.
Repara que, dada a imprevisibilidade do SHA256, um número pode ser descoberto segundos depois, ou demorar mais de meia-hora. É a média entre eles que se pretende que seja 10 minutos, não é possível tê-los todos de 10 em 10 minutos.
A cada 2016 páginas (+/- 2 semanas) o protocolo faz um ajustamento da dificuldade. Se as páginas demoraram menos de 10 minutos entre elas (em média), há que aumentar a dificuldade (aumentar o número de 5s) e vice-versa.
Sempre que alguém diz que descobriu um número (uma página nova), o resto da malta vai verificar: 1) se o número de facto cumpre todos os requisitos, e 2) que todas as transacções são válidas, por exemplo, se a Ana tinha de facto 3 bitcoins para dar ao Bruno (regra #2).
Para isso, a proveniência desses bitcoins tem de ser seguida (consultando as páginas anteriores) até se chegar à sua origem (a primeira linha de uma página algures no tempo).

Estando tudo válido, a malta aceita a página, e começa tudo de novo. O blockchain aceitou mais um bloco.
Uma página tem à volta de 3.000 linhas, ou como sabemos agora, transacções. Ora, 3.000 a dividir por 600 segundos dá 5 transacções por segundo, o que é uma miséria.
Uma solução é aumentar o tamanho máximo de cada página (ex: 32 MB). Mas isso trás um problema: A folha de cálculo vai ficar demasiado grande, o que irá impedir pessoas com menos largura de banda e capacidade de disco de participar.
E nós não queremos isso, queremos permitir que o maior número de pessoas possível participe nisto, pelo que aumentar o tamanho das páginas não é solução.

Como então atingir uma escala global?
Como um bolo de bolacha, às camadas.
Existem várias camadas que podemos colocar por cima, mas vou falar-vos apenas de uma, o Lightning Network. Estas soluções são chamadas de "Bitcoin layer 2 solutions" (para quem quiser ir ao Google saber mais sobre o assunto).
Funciona assim:

Imagina que eu e tu colocamos 1 bitcoin cada um num pote. Depois, trocamos papéis, assinados pelos dois, que dizem que, desse pote, somos donos de 1 bitcoin cada um. Nada de anormal aqui.
Agora, se me quiseres dar 0.1 bitcoins, podemos trocar novos papéis, que dizem que eu sou dono de 1.1 e tu de 0.9 dos bitcoins que estão no pote.
Podemos fazer isto as vezes que quisermos, o tempo que quisermos, pois sabemos que quando um de nós decidir acabar com o pote, os papéis que valem são os últimos.
Mais, se tu quiseres passar 0.2 bitcoins à Ana, mas não tens um pot partilhado com ela, podes passá-los por mim, pois eu até tenho.

Passas-me 0.2 (eu fico com mais 0.2 do nosso pote) e eu passo-os à Ana (eu fico com menos 0.2 do pote que tenho com a Ana). Eu fico na mesma.
Mas quem diz a Ana, diz a Zélia. Desde que haja gente com mais que um pote partilhado, é muito provável que haja um "caminho" até à Zélia. Ou seja, gente a trocar papéis de ti até à Zélia. De A a Z.
As únicas coisas que precisam de ficar registadas na folha de cálculo (blockchain) são as transacções que criam e destroem os potes (channels). Como os potes não têm data de validade, podem até nunca ser destruídos.
Desta forma, é possível ter milhares de transacções por segundo (a troca de papéis), pois é um sistema descentralizado, em que uma parte da rede até pode cair, mas há sempre outro caminho, um pouco como funciona a Internet. Tudo isto sem tocar na blockchain.
E porquê é que o Bitcoin gasta tanta energia?

Por segurança.

Para percebermos isto, comecemos por explicar o tipo de ataque possível ao Bitcoin, o chamado double spend.
Eu compro-te um livro, e para isso pago-te 0.0001 bitcoins. Tu só consideras que está pago no momento que vires essa transação numa página da folha de cálculo. Nessa altura, envias-me o livro.
Mas eu, malandro como sou, depois de receber o livro vou à folha de cálculo e removo a linha onde eu te passava os meus bitcoins. Pumba, fiquei com o livro e com os bitcoins, para poder gastá-los noutro sítio qualquer (double spend).
Mas espera, ainda te lembras que todas as linhas entravam para o cálculo do SHA256, certo? Ao eliminar uma linha, a minha página ficou inválida (o número deixou de terminar em não sei quantos 5s). Por isso, tenho de calcular isso tudo outra vez.
Mas tenho de me apressar, pois a malta já está à procura do número da próxima página. E eles são muitos. Tantos que a soma da energia despendida pelos seus computadores é equivalente à energia gasta pela Argentina (ou 2.5x da energia gasta por Portugal).
Pois, assim eu não vou lá. Quando eu descobrir um novo número que valide a página que eu alterei (para te roubar), já o resto da malta descobriu mais 100 ou 200 páginas à minha frente.
E há uma regra que diz que, se alguém apresentar uma folha de cálculo com mais "trabalho feito" (mais páginas válidas), então essa folha passa a ser considerada a folha de cálculo verdadeira (regra #3).
Assim sendo, eu nunca vou conseguir inserir a minha alteração na folha de cálculo, impendindo-me de te roubar e tornando o sistema seguro para todos.
Repara, a Argentina, se quisesse subverter o blockchain, teria de desligar tudo e canalizar toda essa energia para o Proof of Work. E mesmo assim não é seguro que conseguisse fazê-lo.

É isto que torna o Bitcoin censorship resistant.
Em resumo, o Bitcoin funciona com 3 regras:
1) blocos com menos de 1 MB, para que todos e qualquer um possam participar no processo de criação e validação de blocos;
2) apenas blocos válidos e com ligação ao bloco anterior são aceites;
3) a blockchain com mais PoW ganha.
Para alterar qualquer uma destas regras, e subverter o sistema, alguém teria de convencer 51% dos participantes a mudá-las. Mas com cada vez mais gente a minerar Bitcoin, é cada mais difícil, para não dizer impossível.
Ao longo desta thread deverás ter tido várias dúvidas do género: Como é que o Bruno não consegue colocar uma transacção falsa, assinada pela Ana, a dar-lhe todos os seus bitcoins? Ou, como impedir a falsificação dos papeis do lightning network?
Isso consegue-se via criptografia, um ramo da matemática que permite fazer coisas muito giras, como encriptação de dados, assinaturas digitais, smart contracts, etc.

Obviamente não vou falar sobre isso aqui, pois esta thread já vai longa.

Espero ter ajudado.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with João Bordalo

João Bordalo Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @bordalix

1 Sep 20
Vou tentar explicar como funciona a app stayawaycovid da forma mais simples possível. Os mais técnicos que me perdoem alguma falta de rigor, mas é para um bem maior.
Quando instalas a app, esta gera um número único aleatório, que passa a ser o teu identificador. Imagina que és o 42.

A app passa então, de 5 em 5 minutos, a dar um berro e gritar o teu número. Não é som, não te assustes, é via Bluetooth e portanto silencioso.
Este som é audível a 15 a 20 metros, mas depende se estás dentro de um quarto ou ao ar livre, dos materiais que constituem as paredes, enfim, tal como um berro.
Read 9 tweets
30 May 20
While you were sleeping, a thread.

1. Minneapolis: Police arrests CNN crew. They were released one hour later and the Minnesota governor apologised



2. LA: officer getting beat by a crowd after attempting to detain someone



1/4
3. Washington, D.C: rioters breach treasury department



4. Atalanta: police car on fire



5. Dallas: widespread looting beginning



6. White House: protesters trying to storm it



2/4
7. Brooklyn: pepper spray, batons, and several arrests



8. Louisville: police opening fire on the free press



9. Cincinnati: looters having free rein



3/4
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!