Vídeo: Você já se Perguntou Como o Bitcoin (e Outras Criptomoedas) Realmente Funcionam?

Grant Sanderson • 3Blue1Brown • Boclips

Você já se Perguntou Como o Bitcoin (e Outras Criptomoedas) Realmente Funcionam?

24:41

Transcrição do vídeo

O que significa ter um Bitcoin? Muitas pessoas já ouviram falar do Bitcoin, que é uma moeda totalmente digital sem governo para emiti-la e que nenhum banco precisa gerenciar contas e verificar transações. E também que ninguém realmente sabe quem a inventou. E, no entanto, muitas pessoas não sabem a resposta para essa pergunta, pelo menos não na íntegra. Para chegar lá e garantir que os detalhes técnicos subjacentes à resposta realmente se sintam motivados, o que faremos é seguir passo a passo como você poderia ter inventado sua própria versão do Bitcoin.

Começaremos com você acompanhando os pagamentos com seus amigos usando um razão comum. E então, quando você começa a confiar cada vez menos em seus amigos e no mundo ao seu redor, e se você for esperto o suficiente para trazer algumas ideias da criptografia para ajudar a contornar a necessidade de confiança, o que você acaba chamando é o que se chama uma criptomoeda. Veja bem, o Bitcoin é apenas o primeiro exemplo implementado de uma criptomoeda. E agora, existem milhares mais em trocas com moedas tradicionais. Seguir o caminho de inventar a sua própria pode ajudar a estabelecer as bases para entender alguns dos jogadores mais recentes do jogo e reconhecer quando e por que há espaço para diferentes opções de design.

De fato, uma das razões pelas quais escolhi esse tópico é que, no ano passado, houve uma enorme quantidade de atenção e investimento e, bem, um salto sincero direcionado a essas moedas. E não vou comentar ou especular sobre as taxas de câmbio atuais ou futuras. Mas acho que todos concordamos que quem quer comprar uma criptomoeda deve saber realmente o que é. E não quero dizer apenas em termos de analogias com vagas conexões com a mineração de ouro. Quero dizer uma descrição direta real do que os computadores estão fazendo quando enviamos, recebemos e criamos criptomoedas.

Uma coisa que vale a pena ressaltar, a propósito, é que, embora você e eu vamos investigar os detalhes aqui, e isso leva um tempo significativo, você não precisa conhecer esses detalhes se quiser usar a criptomoeda, assim como você não precisa saber os detalhes do que acontece quando passa o cartão de crédito. Como qualquer pagamento digital, há muitos aplicativos fáceis de usar que permitem enviar e receber as moedas sem pensar no que está acontecendo. A diferença é que o suporte principal subjacente a esta não é um banco que verifica transações. Em vez disso, é um sistema inteligente de verificação descentralizada e sem confiança, com base em algumas das matemáticas nascidas na criptografia.

Mas, para começar, quero que você deixe de lado o pensamento de criptomoedas e tudo isso, apenas por alguns minutos. Vamos começar a história com algo mais realista, livros e assinaturas digitais. Se você e seus amigos trocam dinheiro com bastante frequência, você sabe, pagando sua parte da conta do jantar e tal, pode ser inconveniente trocar dinheiro o tempo todo. Portanto, você pode manter um livro de registro comum que registra todos os pagamentos que pretende fazer algum ponto no futuro. Você sabe, Alice paga a Bob 20 dólares, Bob paga a Charlie 40 dólares, coisas assim.

Esse livro será algo público e acessível a todos, como um site, onde qualquer um pode ir e apenas adicionar novas linhas. E digamos que no final de cada mês, todos vocês se reúnem, olhem a lista de transações e se resolvem. Se você gastou mais do que recebeu, você colocou esse dinheiro no pote. E se você recebeu mais do que gastou, retira esse dinheiro. Portanto, o protocolo para fazer parte desse sistema muito simples pode ser assim. Qualquer pessoa pode adicionar linhas ao livro. E no final de cada mês, todos vocês se reúnem e se resolvem.

Agora, um problema com uma razão pública como essa é que qualquer pessoa pode adicionar uma linha. Então, o que impede que Bob escreva “Alice paga 100 dólares a Bob” sem a aprovação de Alice? Como devemos confiar que todas essas transações são o que o remetente queria que fossem? Bem, é aqui que entra o primeiro pedaço de criptografia, assinaturas digitais. Como assinaturas manuscritas, a ideia aqui é que Alice possa adicionar algo próximo à transação que comprove que a viu e que a aprovou. E deve ser inviável para qualquer outra pessoa forjar essa assinatura.

No início, pode parecer que uma assinatura digital não deveria ser possível. Quero dizer, quaisquer dados que compõem essa assinatura podem ser lidos e copiados por um computador. Então, como você evita falsificações? Bem, a maneira como isso funciona é que todos geram o que é chamado de par de chave pública/chave privada, cada um dos quais se parecem com uma sequência de bits. Às vezes, a chave privada também é chamada de chave secreta, para que possamos abreviá-la como SK, enquanto abreviamos a chave pública como PK. Agora, como o nome sugere, essa chave secreta, é algo que você deseja guardar para si mesmo.

No mundo real, sua assinatura manuscrita tem a mesma aparência, independentemente do documento que você está assinando. Mas uma assinatura digital é realmente muito mais forte porque muda para mensagens diferentes. Parece uma série de zeros e uns, geralmente algo como 256 bits. E alterar a mensagem, mesmo que ligeiramente, muda completamente a aparência da assinatura nessa mensagem. Falando um pouco mais formalmente, produzir uma assinatura envolve uma função que depende tanto da mensagem em si quanto da sua chave privada. A chave privada garante que somente você possa produzir essa assinatura. E o fato de depender da mensagem significa que ninguém pode apenas copiar uma de suas assinaturas e forjá-la em outra mensagem.

De mãos dadas com esta é uma segunda função usada para verificar se uma assinatura é válida. E é aí que a chave pública entra em jogo. Tudo o que faz é exibir verdadeiro ou falso para indicar se essa foi uma assinatura produzida pela chave privada associada à chave pública que você está usando para verificação. Não vou entrar em detalhes de como exatamente essas duas funções funcionam. Mas a ideia é que seja completamente inviável encontrar uma assinatura válida se você não souber a chave secreta. Especificamente, não há estratégia melhor do que apenas adivinhar e verificar assinaturas aleatórias, que você pode verificar usando a chave pública que todos conhecem. Agora pense em quantas assinaturas existem com um comprimento de 256 bits; são dois à potência de 256. Esse é um número estupidamente grande. Chamar isso de astronomicamente grande seria dar muito crédito à astronomia.

De fato, eu fiz um vídeo suplementar dedicado apenas para ilustrar que número é esse. Bem aqui, digamos que, quando você verifica se uma assinatura em uma determinada mensagem é válida, você pode se sentir extremamente confiante de que a única maneira de alguém ter produzido isso é se soubesse a chave secreta associada à chave pública usada para verificação.

Agora, garantir que as pessoas assinem transações no livro é muito bom, mas há uma pequena brecha. Se Alice assinar uma transação, como ela paga a Bob 100 dólares, mesmo que Bob não consiga falsificar a assinatura de Alice em uma nova mensagem, ele poderá copiar a mesma linha quantas vezes quiser. Quero dizer, essa combinação de assinatura de mensagem permanece válida. Para contornar isso, o que fazemos é fazer com que, quando você assine uma transação, a mensagem também inclua algum tipo de ID exclusivo associado a essa transação. Dessa forma, se Alice pagar a Bob 100 dólares várias vezes, cada uma dessas linhas no livro exigirá uma assinatura completamente nova.

Tudo bem, ótimo! As assinaturas digitais removem um enorme aspecto de confiança neste protocolo inicial. Mas mesmo assim, se você realmente fizesse isso, estaria dependendo de um tipo de sistema de honra. Nomeadamente, você está confiante de que todos realmente acompanharão e ganharão dinheiro no final de cada mês. E se, por exemplo, Charlie acumular milhares de dólares em dívidas e se recusar a aparecer. A única razão real para voltar ao dinheiro para se estabelecer é que algumas pessoas - eu estou olhando para você, Charlie - devem muito dinheiro. Então, talvez, você tenha a ideia inteligente de que nunca precisará pagar em dinheiro, desde que tenha alguma maneira de impedir que as pessoas gastem muito mais do que recebem. Talvez o que você faça seja começar por fazer com que todos paguem 100 dólares no pote. E então, leia as primeiras linhas do livro: Alice recebe 100 dólares, Bob recebe 100 dólares, Charlie recebe 100, etc.

Agora, não aceite transações em que alguém esteja gastando mais do que já gastou nesse livro. Por exemplo, se as duas primeiras transações forem Charlie paga 50 dólares a Alice e Charlie paga 50 dólares a Bob, se você tentar adicionar “Charlie paga 20 dólares”, isso seria inválido, tão inválido como se ele nunca tivesse assinado. Observe que isso significa que, para verificar uma transação, é necessário conhecer o histórico completo das transações até aquele momento. E isso é mais ou menos também verdadeiro em criptomoedas, embora haja pouco espaço para otimização.

O interessante aqui é que esta etapa remove a conexão entre a razão e o dólar US físico real. Em teoria, se todo mundo no mundo estivesse usando esse livro, você poderia viver a vida toda apenas enviando e recebendo dinheiro nesse livro sem precisar converter em dólares US reais. De fato, para enfatizar esse ponto, vamos começar a nos referir às quantidades na razão como dólares da razão, ou LD, abreviado. É claro que você é livre para trocar dólares contábeis por dólares US reais. Por exemplo, talvez Alice dê a Bob uma nota de 10 dólares no mundo real em troca de ele adicionar e assinar a transação “Bob paga a Alice 10 dólares no livro” nesse livro comunitário.

Mas trocas como essa não serão garantidas pelo protocolo. Agora é mais análogo a como você pode trocar dólares por euros ou qualquer outra moeda no mercado aberto. É apenas uma coisa independente. Esta é a primeira coisa importante a entender sobre Bitcoin ou qualquer outra criptomoeda. O que é, é um livro. O histórico de transações é a moeda. Obviamente, com o Bitcoin, o dinheiro não entra no livro com pessoas que compram usando dinheiro. Vamos entender como o novo dinheiro entra no livro em apenas alguns minutos. Mas antes disso, há realmente uma diferença ainda mais significativa entre o nosso sistema atual de dólares contábeis e como as criptomoedas funcionam.

Até agora, eu disse que esse livro está em algum lugar público, como um site, onde qualquer pessoa pode adicionar novas linhas. Mas isso exigiria confiar em um local central. Ou seja, quem hospeda o site? Quem controla as regras de adição de novas linhas? Para remover esse pouco de confiança, pediremos a todos que mantenham sua própria cópia do livro. Então, quando você deseja fazer uma transação, como Alice paga a Bob 100 dólares, o que você faz é transmitir isso ao mundo para as pessoas ouvirem e gravarem em seus próprios livros particulares.

Mas, a menos que você faça algo mais, esse sistema é absurdamente ruim. Como você conseguiu que todos concordassem com o que é o livro certo? Quando Bob recebe uma transação, como Alice paga a Bob 10 dólares, como ele pode ter certeza de que todos os outros receberam e acreditam nessa mesma transação, que ele poderá mais tarde ir para Charlie e usar esses mesmos 10 dólares para fazer uma transação? Realmente, imagine-se apenas ouvindo as transações sendo transmitidas. Como você pode ter certeza de que todos os outros estão gravando as mesmas transações e na mesma ordem? Este é realmente o cerne da questão. Este é um quebra-cabeça interessante. Você pode criar um protocolo sobre como aceitar ou rejeitar transações e em que ordem, para se sentir confiante de que qualquer outra pessoa no mundo que esteja seguindo esse mesmo protocolo tenha um livro pessoal que seja igual ao seu?

Este é o problema abordado no documento original do Bitcoin. Em um nível alto, a solução que o Bitcoin oferece é confiar em qualquer livro que tenha o maior trabalho computacional colocado nele. Levarei um momento para explicar exatamente o que isso significa. Envolve essa coisa chamada função jogo da velha criptográfica. A ideia geral a que nos baseamos é que, se você usar o trabalho computacional como base para confiar, poderá fazê-lo para que transações fraudulentas e livros conflitantes exijam uma quantidade inviável de computação para gerar. Mais uma vez, lembrarei que isso está ficando cada vez mais além do que alguém precisaria saber apenas para usar uma moeda como essa. Mas é uma ideia muito legal! E se você entende isso, entende o coração do Bitcoin e de outras criptomoedas.

Então, primeiro, o que é uma função jogo da velha? As entradas para uma dessas funções podem ser qualquer tipo de mensagem ou arquivo, isso realmente não importa. E a saída é uma sequência de bits com algum tipo de comprimento fixo, como 256 bits. Essa saída é chamada de jogo da velha ou digestão da mensagem. E a intenção é que pareça aleatório. Não é aleatório; sempre fornece a mesma saída para uma determinada entrada. Mas a ideia é que, se você alterar ligeiramente a entrada, talvez editando apenas um dos caracteres, o jogo da velha resultante será alterado completamente. De fato, para a função jogo da velha que estou mostrando aqui, chamada SHA256, a maneira como a saída muda à medida que você altera ligeiramente essa entrada é totalmente imprevisível.

Veja bem, essa não é apenas uma função jogo da velha. É uma função jogo da velha criptográfica. Isso significa que é inviável calcular na direção inversa. Se eu lhe mostrar uma série de zeros e uns e pedir para você encontrar uma entrada para que o jogo da velha SHA256 dessa entrada forneça essa sequência exata de bits, você não terá um método melhor do que apenas adivinhar e verificar. E, novamente, se você quiser saber quanto de computação seria necessário para passar de duas a 256 suposições, basta dar uma olhada no vídeo suplementar. Na verdade, eu me diverti muito escrevendo essa coisa.

Você pode pensar que, se realmente descobrir os detalhes de como exatamente essa função funciona, poderá fazer engenharia reversa da entrada apropriada sem precisar adivinhar e verificar. Mas ninguém jamais descobriu uma maneira de fazer isso. Curiosamente, não há provas rigorosas e duras de que seja difícil calcular na direção inversa. E, no entanto, uma enorme quantidade de segurança moderna depende das funções de jogo da velha criptográfico e da ideia de que elas possuem essa propriedade. Se você olhar para quais algoritmos estão subjacentes à conexão segura que seu navegador está fazendo com o YouTube no momento ou que ele faz com seu banco, você provavelmente verá o nome SHA256 aparecer lá. Por enquanto, nosso foco será apenas como essa função pode provar que uma lista específica de transações está associada a uma grande quantidade de esforço computacional.

Imagine que alguém lhe mostre uma lista de transações e diga: “Ei! Encontrei um número especial para que, quando você colocar esse número no final desta lista de transações e aplicar o SHA256 a toda a coisa, os primeiros 30 bits dessa saída sejam todos zeros!” Quão difícil você acha que foi para eles encontrar esse número? Bem, para uma mensagem aleatória, a probabilidade de um jogo da velha começar com 30 zeros sucessivos é de um em dois elevado a 30, o que equivale a um em um bilhão. E como o SHA256 é uma função de jogo da velha criptográfico, a única maneira de encontrar um número especial como esse é apenas adivinhar e verificar. Portanto, essa pessoa quase certamente teve que passar por um bilhão de números diferentes antes de encontrar esse número especial. E depois que você souber esse número, é muito rápido verificar. Você acabou de executar o jogo da velha e ver que existem 30 zeros.

Portanto, em outras palavras, você pode verificar se eles passaram por uma grande quantidade de trabalho, mas sem ter que fazer o mesmo esforço. Isso é chamado de prova de trabalho. E importante, todo esse trabalho está intrinsecamente vinculado à lista de transações. Se você alterar uma dessas transações, mesmo que ligeiramente, isso mudaria completamente o jogo da velha. Então, você precisa passar por mais um bilhão de palpites para encontrar uma nova prova de trabalho, um novo número que faça com que o jogo da velha da lista alterada junto com esse novo número comece com 30 zeros.

Agora, pense agora em nossa situação do livro distribuída. Todo mundo está lá transmitindo transações. E queremos que eles cheguem a um acordo sobre qual é o livro correto. Como eu disse, a principal ideia por trás do documento original do Bitcoin é fazer com que todos confiem em qualquer livro que tenha mais trabalho. A maneira como isso funciona é primeiro organizar um determinado livro em blocos, onde cada bloco consiste em uma lista de transações juntamente com uma prova de trabalho; isto é, um número especial para que o jogo da velha do bloco inteiro comece com um monte de zeros. Por enquanto, digamos que tenha que começar com 60 zeros. Mais tarde, voltaremos a uma maneira mais sistemática de escolher esse número.

Da mesma forma que uma transação é considerada válida apenas quando assinada pelo remetente, um bloco é considerado válido apenas se tiver uma prova de trabalho. Além disso, para garantir que haja um pedido padrão para esses blocos, faremos com que um bloco contenha o jogo da velha do bloco anterior em seu cabeçalho. Dessa forma, se você voltasse e alterasse qualquer um dos blocos ou trocasse a ordem de dois blocos, isso mudaria o bloco que vem depois, o que muda o jogo da velha do bloco, o que muda depois. e assim por diante. Isso exigiria refazer todo o trabalho, encontrando um novo número especial para cada um desses blocos que inicie seus jogos da velha com 60 zeros. Como os blocos são encadeados dessa maneira, em vez de chamá-lo de livro, é comum chamá-lo de cadeia de blocos.

Como parte do nosso protocolo atualizado, agora permitiremos que qualquer pessoa no mundo seja um criador de blocos. O que isso significa é que eles vão ouvir as transações sendo transmitidas, coletá-las em algum bloco e, em seguida, trabalhar bastante para encontrar um número especial que faça com que o jogo da velha desse bloco comece com 60 zeros. E uma vez que o encontram, transmitem o bloco que encontraram. Para recompensar um criador de blocos por todo esse trabalho, quando ele montar um bloco, permitiremos que ele inclua uma transação muito especial na parte superior, na qual ele obtém, digamos, 10 dólares de contabilidade do nada. Isso é chamado de recompensa em bloco. E é uma exceção às nossas regras usuais sobre aceitar ou não transações. Não é de ninguém, portanto não precisa ser assinado. E isso também significa que o número total de dólares em nossa economia aumenta a cada novo bloco.

A criação de blocos costuma ser chamada de mineração, pois exige muito trabalho. E introduz novos pedaços de moeda na economia. Mas quando você ouvir ou ler sobre os mineradores, lembre-se de que eles realmente estão ouvindo transações, criando blocos, transmitindo esses blocos e sendo recompensados ​​com dinheiro novo por isso. Da perspectiva do mineiro, cada bloco é como uma loteria em miniatura, onde todos estão adivinhando números o mais rápido possível até que um indivíduo sortudo encontre um número especial que faça com que o jogo da velha do bloco comece com muitos zeros. E eles recebem a recompensa.

Para quem quer apenas usar o sistema para efetuar pagamentos, em vez de ouvir transações, todos começam a ouvir apenas blocos sendo transmitidos por mineradoras e atualizando suas próprias cópias pessoais da cadeia de blocos. Agora, a principal adição ao nosso protocolo é que, se você ouvir duas cadeias de blocos distintas com históricos de transações conflitantes, adiará para a mais longa, aquela com mais trabalho. Se houver um empate, aguarde até ouvir um bloqueio adicional que torne um deles mais longo. Portanto, mesmo que não haja uma autoridade central e todos estejam mantendo sua própria cópia da cadeia de blocos, se todos concordarem em dar preferência a qualquer cadeia de blocos com mais trabalho, temos uma maneira de chegar a um consenso descentralizado.

Para entender por que isso cria um sistema confiável e entender em que ponto você deve confiar que um pagamento é legítimo, é realmente muito útil analisar exatamente o que seria necessário para enganar alguém que usa esse sistema. Talvez Alice esteja tentando enganar Bob com um bloqueio fraudulento. Nomeadamente, ela tenta enviar a ele um que inclui o pagamento de 100 dólares, mas sem transmitir esse bloco para o resto da rede. Dessa forma, todo mundo ainda pensa que ela tem esses 100 dólares. Para fazer isso, ela precisaria encontrar uma prova válida de trabalho antes de todos os outros mineiros, cada um trabalhando em seu próprio bloco. E isso definitivamente poderia acontecer!

Talvez por acaso Alice ganhe essa loteria em miniatura antes de todos os outros. Mas Bob ainda vai ouvir as transmissões feitas por outros mineiros. Então, para mantê-lo acreditando nesse bloco fraudulento, Alice teria que fazer todo o trabalho para continuar adicionando blocos nesse garfo especial na cadeia de blocos de Bob. É diferente do que ele está ouvindo do resto dos mineiros. Lembre-se, de acordo com o protocolo, Bob sempre confia na cadeia mais longa que ele conhece.

Alice pode manter isso por alguns quarteirões se, por acaso, encontrar blocos mais rapidamente do que o resto dos mineiros da rede, todos combinados. Mas, a menos que ela tenha cerca de 50% dos recursos de computação entre todos os mineradores, a probabilidade se torna avassaladora de que a cadeia de blocos em que todos os outros mineradores estão trabalhando cresce mais rapidamente do que a cadeia de blocos fraudulenta que Alice está alimentando Bob. Então, depois de um tempo, Bob apenas rejeitará o que está ouvindo de Alice em favor da cadeia mais longa em que todo mundo está trabalhando.

Observe que isso significa que você não deve necessariamente confiar em um novo bloco que ouvirá imediatamente. Em vez disso, você deve esperar vários novos blocos serem adicionados sobre ele. Se você ainda não ouviu mais nenhuma cadeia de blocos, pode confiar que esse bloco faz parte da mesma cadeia que todo mundo está usando. E com isso, atingimos todas as ideias principais. Este sistema de livro distribuído com base em uma prova de trabalho é mais ou menos como o protocolo Bitcoin funciona e quantas outras criptomoedas funcionam. Existem apenas alguns detalhes para esclarecer.

Anteriormente, eu disse que a prova do trabalho pode ser encontrar um número especial para que o jogo da velha do bloco comece com 60 zeros. Bem, a maneira como o protocolo Bitcoin funciona é mudar periodicamente esse número de zeros para que demore em média 10 minutos para encontrar um novo bloco. Portanto, à medida que mais e mais mineradores são adicionados à rede, o desafio fica cada vez mais difícil, de modo que esta loteria em miniatura tenha apenas um vencedor a cada 10 minutos.

Muitas criptomoedas mais recentes têm tempos de bloqueio muito mais curtos que isso. E todo o dinheiro do Bitcoin vem de alguma recompensa em bloco. No começo, essas recompensas eram 50 bitcoin por bloco. Na verdade, você pode acessar um ótimo site chamado Block Explorer, que facilita a pesquisa na cadeia de blocos do Bitcoin. E se você observar os primeiros blocos da cadeia, eles não contêm transações além da recompensa de 50 bitcoin para o minerador. Mas a cada 210000 blocos, ou seja, a cada quatro anos, essa recompensa é reduzida pela metade. Então, agora, a recompensa é de 12.5 bitcoins por bloco. E porque essa recompensa diminui geometricamente ao longo do tempo, significa que nunca haverá mais de 21000000 bitcoin em existência.

No entanto, isso não significa que os mineradores parem de ganhar dinheiro. Além da recompensa em bloco, os mineradores também podem receber taxas de transação. A maneira como isso funciona é que, sempre que você faz um pagamento, pode opcionalmente incluir uma pequena taxa de transação que vai para o mineiro de qualquer bloco que inclua esse pagamento. A razão pela qual você pode fazer isso é incentivar as mineradoras a realmente incluir a transação que você transmite no próximo bloco. Você vê, no Bitcoin, cada bloco é limitado a cerca de 2400 transações, o que muitos críticos argumentam ser desnecessariamente restritivo.

Para comparação, a VISA processa uma média de cerca de 1700 transações por segundo. E eles são capazes de lidar com mais de 24000 por segundo. Esse processamento comparativamente lento no Bitcoin gera taxas de transação mais altas, pois é isso que determina quais transações os mineradores optam por incluir em um novo bloco.

Tudo isso está longe de ser uma cobertura abrangente de criptomoedas. Ainda existem muitas nuances e opções alternativas de design que eu nem toquei. Mas minha esperança é que isso possa fornecer um estilo de espera estável, para quem procura acrescentar mais alguns ramos com mais leitura. Como eu disse no início, um dos motivos por trás disso é que muito dinheiro começou a fluir em direção às criptomoedas. E mesmo que eu não queira reivindicar se esse é um investimento bom ou ruim, eu realmente acho que é saudável que as pessoas que entram no jogo conheçam pelo menos os fundamentos da tecnologia.

A Nagwa usa cookies para garantir que você tenha a melhor experiência em nosso site. Saiba mais sobre nossa Política de privacidade.