Loading

Module 1: Bitcoin Blockchain

Nota de Estudos
Study Reminders
Support
Text Version

Mecanismo De Consenso

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Introdução à Tecnologia de Blockchain e Aplicações Prof. Sandeep Shukla Department of Computer Science and Engineering Indian Institute of Technology-Kanpur  
Palestra No. 05 Blockchain Technology and Applications  
(Consulte O Tempo De Deslizamento: 00 :14)  
Bem-vindo de volta. Então, agora como eu disse antes disso estaremos discutindo mecanismo de consenso em  
blockchain do Bitcoin.  
(Consulte O Tempo De Deslizamento: 00 :22)  
O principal desafio técnico, assim, o dinheiro digital foi pensado e muitas propostas têm  
foram feitos por cientistas da computação por quase 20 anos antes da década de 1089, quando o Bitcoin  
O blockchain foi introduzido, e essa foi a primeira criptomoeda que vimos. Então sempre lá  
era essa questão do consenso que incomodava as pessoas. Agora por que é importante porque quando  
você cria novo dinheiro, ou quando você cria uma nova transação?  
Alguém tem que validar que esta é a transação válida. Alguém também tem que verificar se você  
não são gastos duplos para que você tenha adquirido algum dinheiro. Por isso, digamos 25 bitcoins, e você paga  
Alguém 25 bitcoins e novamente, você paga os mesmos 25 bitcoins para outra pessoa que deveria ser  
despermitido. Agora, com uma autoridade central que é muito fácil de verificar, mas com um   descentralizado  
sistema, ele é muito mais difícil.  
Porque se um nó aqui diz que o que você está fazendo não é aceitável, outros nós podem dizer  
que o que você está fazendo é aceitável. Por isso, portanto, um tem que decidir que o que deve ser o  
veredicto de toda a rede. Porque alguém pode estar maliciosamente dizendo que o que você é  
fazer não é aceitável quando você realmente fez algo perfeitamente correto. Em outra possibilidade está  
que somos nós os alguns dos bons participantes se enganaram?  
Porque você fez algo errado, mas na verdade engana-los ou pode ser que o número de  
Os caras maliciosos estão indo tentar dizer alguma transação ruim é uma boa transação como você tem  
fez o dobro de gastos e então você disse aos seus amigos que você vota em mim e diz que  
esta é uma boa transação que a transação entra no blockchain e ela se torna permanente e  
isso não é bom.  
Assim, portanto, esse consenso é um mecanismo pelo qual você diz que nós ou todos nós concordamos em concordar com  
algo ou que algo é aceitável. Por isso, em uma configuração distribuída, o consenso sempre  
foi um problema. E esse problema foi analisado quase por 40 anos.  
(Consulte O Tempo De Deslizamento: 02 :57)  
Então, vamos ver quais são as coisas que acontecem; agora consenso como eu disse a não ser em caso de  
blockchain como surgiu o problema de consenso no no na computação distribuída  
comunidade. Por isso, em um sistema de computação distribuída você distribuiu conjunto de nós e este conjunto  
de nós têm que computar algo. Então, digamos que eles têm que computar alguma função ou eles  
pode ter que computar que você sabe, alguma tabela de roteamento ou eles podem ter que computar, eles  
podem ter que juntos manter a integridade da informação e da informação.  
Estes são o tipo de coisas que a comunidade de computação distribuída se preocupa com o agora para em ordem  
para ter um mundo sistema distribuído, muitas vezes as pessoas fazem o que é chamado de eleição líder. Então você  
tem n número de nós, e então você executa um protocolo que todo mundo engaja e eventualmente  
digamos, aqui está o nó que será o líder. Então uma vez que eu tenha feito a eleição líder, eu vou ouvir  
para o líder em todo o computamento. 
Assim, aquele líder pode então dar a você trabalho que você faz essa quantidade de trabalho você faz essa quantidade de  
trabalhe, e juntos você realiza algo. Então isso é basicamente chamado de eleição líder  
protocolo. Então, de forma semelhante, seja às vezes o sistema distribuído tem que fazer alguma votação. Por exemplo,  
para eleição de líder também, você pode ter uma eleição líder com base na votação. Mas às vezes você tem que  
vote em um pedaço de dados. E, portanto, você pode ter que fazer algo chamado de consenso.  
Então, esse problema incomodou as pessoas de computação distribuída por mais de 40 anos agora. E  
alguns dos aplicativos que eles tinham pensado mesmo antes do blockchain é que eu posso ter que  
crie uma tabela hash, mas eu não queria ser procurado para ser mantido por apenas uma única autoridade. I  
deseja esta tabela de hash mantida por todo mundo. Assim, todo mundo terá uma cópia da tabela hash.  
E esta cópia da tabela hash deve ser a mesma.  
Se você tiver isso, então você pode ter um serviço de nome de domínio distribuído. Mais cedo eu disse que o  
O serviço de nome de domínio distribuído agora mesmo é meio centralizado. Mas se você tiver um   distribuído  
DNS, então você sabe, você está livre da dependência em um diretório de chave pública de partido confiável.  
Então, quando você tem chave pública lembra como ontem, discutimos que se você tem chave pública,  
você sabe, dizendo a todo mundo que é isso a sua chave pública.  
E também convencê-los de que é a sua chave pública solicita certificados digitais. Digital  
O certificado é basicamente quando um terceiro confiável diz aos outros que realmente ele é sua chave pública.  
Agora, você pode realmente manter um diretório de chave pública distribuidamente em uma moda descentralizada  
através de uma tabela de hash distribuída se você puder resolver esse problema. E então outros lugares como estoque  
comércios e assim por diante. Portanto, lá isso tem sido um problema de computação distribuída de problemas por um longo  
horário.  
(Consulte O Tempo De Deslizamento: 06 :06)  
Então, como definimos o que o problema de consenso distribuído de forma formal, então o que dizemos é  
aquele consenso distribuído é um protocolo que finaliza e, em seguida, todos nós que não são maliciosos  
decidir sobre o mesmo valor e este valor deve ser proposto por pelo menos um nó correto. Então, deixe-nos  
digamos que você tem n nós, nós significa que estes são nós de computação e eles são conectados por alguns  
topologia aqui. E eles vão decidir sobre algum valor.  
Então, todo mundo propõe um valor por exemplo, se é um consenso binário, então todo mundo propõe  
ou 1 ou 0. Então, todo mundo propõe alguma coisa. E então você executa o protocolo no final do  
protocolo, todo mundo deveria ter, digamos que entre estes, esses 2 são fatores ruins. E eles são  
bom, eles estão propondo 0. Todo mundo está propondo 1. Agora, durante o exercício do protocolo,  
esses caras também não irão ouvir para seguir as regras do protocolo.  
Então eles tentarão enviar mensagens, eles podem tentar confundir os outros. Mas se o distribuído  
O protocolo de consenso é robusto o suficiente, ou seja, com a existência desse caras maliciosos fazendo  
coisas maliciosas. Eventualmente, todos os mocinhos decidirão sobre um porque um era algo  
que foi proposta por um deles realmente, neste caso, no meu exemplo, todos eles, mas talvez  
esse cara pode ter feito algo mais.  
Mas o que eles concordam é de 1, então sabemos que chegamos a um consenso. Agora desde uma das  
os mocinhos também fizeram 0. Neste caso, se todo mundo eventualmente concordar com 0 que seria também um  
resultado correto, pois o que ele diz é que o protocolo finaliza e todos os nós corretos decidem  
sobre o mesmo valor e esse valor deve ter sido proposto por algum nó correto. Agora, a única  
complicação aqui é aquele design de protocolo e não sabe quantas vão ser maliciosas  
nó aqui.  
A segunda coisa que ele não sabe é quem são os maliciosos acertados. Portanto, portanto, o protocolo  
tem que ser projetado de tal forma para que o não importa quem são os nós maliciosos, este  
O consenso acabará sendo encerrado e um consenso será cumprido e o valor consentido pelo  
bons nós. Os nós não maliciosos devem ser escolhidos a partir dos valores que foram dados por satisfeitos  
um deles. Então qualquer coisa que os caras maliciosos propuseram como o valor que deveria ser escolhido.  
Se nenhum dos outros bons caras propôs esse valor, então isso nunca deve ser o resultado final  
do consenso. Então, essa é a ideia. Agora, verifica-se que dependendo de que tipo de  
maliciedade que você vai ver, nestes nós, os problemas ficam diferentes. Então por exemplo,  
no início, as pessoas começaram a dizer que, bem, se o enquanto o protocolo está em execução, se um  
dos nós crashes, de modo que não é realmente malicioso, o nó pode travar por outras razões.  
Mesmo então o problema de consenso se torna realmente difícil. Portanto, é assim se o um dos nós crashes,  
então também o problema de consenso se torna difícil. Então isso é chamado de falha de queda. Então, se nós temos um  
protocolo que funciona, apesar da queda de alguns nós, então dizemos que é um crash tolerante ou crash  
protocolo tolerante a falhas, mas no caso de ser protocolo falha que é falha ao finalizar ou ele finaliza  
mas dá consequências incorretas então dizemos que o protocolo não é tolerante para travar falha.  
Agora, a falha do crash é o tipo de falha mais benigna porque o nó que tem isso com defeito não é  
fazendo qualquer coisa maliciosa, acabou de cair, que agora, o único problema em tudo isso no   descentralizado  
configuração é que outros nós não podem dizer se o nó caiu ou ele está maliciosamente mantendo silêncio  
para criar confusão. Então, por isso, temos que assumir que a falha do acidente pode ser um comportamento de  
um nó malicioso ou ele poderia ser realmente travado.  
Uma falha de queda é a mais fácil da maliciosidade. O pior tipo de maliciosidade é chamado de  
Falha bizantina. Portanto, a culpa bizantina basicamente significa que os nós que são maliciosos eles não são  
só indo propor valores errados no início, eles também vão não seguir as regras  
do protocolo. E, portanto, eles estarão fazendo coisas que não fazem parte do protocolo  
protocolos. O que é um protocolo é um programa para cada nó.  
E o, o que eles e cada programa aqui poderiam realmente fazer algum computamento e  
comunique-o com os outros nós. E então novamente, faça algum cálculo comunicando com  
outros nós. É assim que um protocolo se parece, certo? Então um protocolo, então obviamente tem um conjunto de  
regras ou a forma como o programa deve ser executado. Os nós maliciosos podem realmente executar um  
programa diferente.  
Talvez seja porque eles foram infectados por um malware que tem um programa diferente, ou ele  
Pode realmente fazer várias coisas como trocar mensagens entre os outros nós maliciosos e  
nem nunca se comunica com os outros. Pode fazer todos os tipos de coisas. Por isso, a questão é o que fazemos, nós  
desejar em caso de um caso Bitcoin para amostra também temos que nos preocupar com nós que funcionarão  
maliciosamente.  
Por exemplo, eles validarão transações que não devem ser válidas ou podem  
realmente não válidas boas transações, ou elas podem realmente criar blocos e que esses blocos  
pode estar tendo transação inválida neles e transmitir esse bloco por dizer que este é o próximo  
bloco. Assim, eles podem fazer todos os tipos de coisas. De modo que nesse caso também qual bloco tem que ser  
eventualmente adicionado à rede.  
Ao lado do blockchain próximo é um problema de consenso. E o protocolo deve ser robusto o suficiente  
que mesmo que alguns dos nós ajam assim, temos a capacidade de eventualmente ter um bloco correto  
adicionado ao para o blockchain.  
(Consulte O Tempo De Deslizamento: 12 :57)  
Então, como o sistema peer to peer funciona em blockchain em Bitcoin é que sempre que você quer pagar  
para o seu amigo Ravi, algum Bitcoin, você transmitia a transação para cada nó da rede,  
dizendo que este vai ser o endereço de Ravi ’, que é um hash da chave pública de Ravi, e você tem  
para assiná-lo. E você tem que contar a sua chave pública também. E então você a transmitia para a   inteira  
rede. Agora, como a rede transemissora para alcançar todos os cantos, é uma questão do protocolo que  
está embaixo do protocolo Bitcoin.  
Poderia ser um protocolo de fofoca. Pode ser outras formas de divulgá-lo quando ele pode ser um multicast  
e coisas assim. Então agora, uma coisa que eu quero dizer é que enquanto você está pagando Ravi, ele não é um  
lançamento e captura sincronizados. Ravi pode não estar conectado naquele momento mais adiante. Assim, todos os outros  
nós verificaremos se sua assinatura é válida. E também ele verificará se você tem em suficiente  
saldo para pagar Ravi.  
Certo a quantidade que você está dizendo que você vai pagar, todos os outros nós verificarão isso e  
eles validarão a transação. E então eventualmente alguns nós criarão um bloco no qual  
esta transação será colocada em. E então eventualmente, este bloco será, esperemos que faça parte do  
blockchain. Mais tarde em Ravi, quando ele se conectar, ele verá que há uma transação que deu  
him money.  
E então depois de um tempo, falaremos sobre isso, como quanto tempo depois de Ravi supor que ele pode  
até gastam esse dinheiro. Então, essa é a maneira como esse sistema peer to peer está trabalhando.