Loading

Module 1: Propriedades do Blockchain

Nota de Estudos
Study Reminders
Support
Text Version

Implementação da Plataforma blockchain

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. 03 Blockchain Technology and Applications  
Bem-vindo à palestra número 3 para a tecnologia blockchain e aplicativos. Então, o que nós vamos  
fazer hoje é anunciado uma lição de casa, ele não será gradativo mas é algo que você poderia fazer  
yourself para que você possa realmente se familiarizar com uma série de conceitos que são muito  
importante em blockchain. Assim, você estará projetando a sua própria plataforma blockchain  
implementação. Isso vai ser um pouco você sabe, simples aplicativo blockchain.  
Então, não é realmente como o bitcoin ou ethereum ou outros blockchains funcionam, mas ele terá que  
venham conceitos que permitirão entender melhor os outros blockchains. Agora, se você fez  
não saber C + +, então essa lição de casa pode não ser algo que você poderia fazer, a menos que você realmente  
aprendeu a programar em C++ pelo menos os conceitos mínimos e as estruturas de dados. Mas mesmo que  
você mesmo que você não sabia C + +, os conceitos ainda são bem gerais e você deve ser capaz de  
entenda aqueles.  
(Consulte O Tempo De Deslizamento: 01 :36)  
Então, o material para esta palestra e o exercício foi criado pelo meu colega, Professor Pramod  
Subramanyan do IIT Kanpur. Por isso, devemos reconhecer sua ajuda na criação deste exercício.  
(Consulte O Tempo De Deslizamento: 01 :48)  
Então, a questão é como criar o seu próprio blockchain.  
(Consulte O Tempo De Deslizamento: 01 :53)  
Então, o que faremos nesta palestra é construiremos um ledger de transações e uma vez que você construa um  
ledger de transações, você tem que se certificar, que eu posso ou qualquer um pode verificar se ele é um válido, o  
As transações são válidas e, portanto, o blockchain tem tudo válido. E também o como  
tornar essa coisa permanente. É assim que se garante que ninguém pode adulterar dados uma vez que ele é colocado  
no blockchain. E então vamos explicar o primeiro exercício de programação é para o seu self- 
aprendizado para que não os gramos.  
Se você não sabia que C++ você pode não ser capaz de fazer isso no entanto, os conceitos são muito  
importante. Então você deve prestar atenção ao que estamos fazendo talvez você tenha um pouco  
dificuldade de compreensão, como estamos usando ponteiros e vários tipos de estruturas de dados. Mas você  
provavelmente pode, você sabe, adivinhar o que estamos fazendo, e isso será o suficiente para entender.  
(Consulte O Tempo De Deslizamento: 03 :02)  
Então a questão é o que é um livro-razão? Assim, um livro-reportagem pode ser muitas coisas. Mas olhemos para isso. Então  
Vamos dizer que este é um balanço do banco. E aqui nós temos 4 titulares de contas, e eles têm o seu  
saldos. A questão é: essa mesa é equilibrada? Um livro-razão? A resposta não é realmente, porque ela é  
uma tabela equilibrada. Por isso, não se lembra das transações. Ele só se lembra depois de uma transação,  
quais os novos saldos para cada um dos usuários que fazem parte dessa transação.  
Mas queremos lembrar todas as transações e queremos ter certeza de que todas as transações são feitas por  
pessoas legítimas. E queremos também ter certeza de que a transação realmente é uma   válida  
transação.  
(Consulte O Tempo De Deslizamento: 03 :54)  
Então, agora se nós em vez disso mantemos um registro de transações, então você deve aqui que temos um registro de  
transações. Então, quando Alice abre sua conta, ela faz um depósito inicial da quantia 100, Bob  
faz um depósito inicial de 200, Carol faz um depósito inicial de 300, e Dan faz inicial  
depósito de 400. Então, depósito inicial é uma das transações. Então, ele tem que ser colocado no ledger.  
(Consulte O Tempo De Deslizamento: 04 :24)  
Suponha que agora as transações reais começam a acontecer. Por isso, digamos Bob agora, por alguma razão, talvez  
Alice vendeu algo para Bob e Bob faz uma transação talvez pela internet ou por cheque,  
e Bob dá a Alice 100 quantia e quando isso acontece, então mais cedo Alice costumava ter 200  
agora, a conta de Alice deve ser debitada para se tornar 200, porque Bob agora está dando dinheiro para  
Alice.  
(Consulte O Tempo De Deslizamento: 04 :55)  
Então, a essa altura, Alice também agora dá uns para a Carol, e na quantia de 125. Então temos 2  
novas transações onde após as transações de depósito inicial de transações iniciais, isto é quando Bob  
dá a Alice 100 deixe-nos um bitcoins, e Alice dá a Carol 125 bit transações.  
(Consulte O Tempo De Deslizamento: 05 :19)  
E assim por diante, à medida que as transações entram, queremos adicioná-las ao ledger. E o ledger é  
sempre em cima e não fez nada. Você não a gente não queria normalmente, nós não voltámos a  
transações anteriores e fazer qualquer alteração a elas. Por isso, é um anexado apenas ledger, certo. E  
queremos garantir que esta anexação apenas propriedade seja imposta e ninguém possa ir e alterar o  
transações anteriores uma vez que elas foram cometidas.  
(Consulte O Tempo De Deslizamento: 05 :54)  
E então eu posso construir os saldos da conta passando pela transação tão anterior nós  
foram iniciados com uma tabela de saldo de contas. Mas o que estamos fazendo aqui é que se você manter  
faixa de todas as transações, isso é suficiente, porque em qualquer ponto do tempo, você pode realmente  
reconstrua essa tabela de saldos de contas. Então, eu posso realmente ver que Alice inicialmente depositou  
100, então ela recebeu de Bob outros 100, então ela deu 125 para a Carol.  
Então seu saldo final no final desta transação vai ser de 75. Enquanto que aqui, se você ver Bob,  
ele deu 100 para Alice. E inicialmente ele tinha 200. Então agora ele tem 100. Carol realmente conseguiu  
dinheiro primeiro ao depositar inicialmente a si mesma 300 + 125 anos então ela tem agora 425 e Dan não  
obter qualquer dinheiro ou dar qualquer dinheiro para qualquer pessoa. Por isso, ele está equilibrado fora que 400 so, este saldo  
tabela sempre pode ser reconstruída a partir do ledger de transações.  
Tão ledger de transações é muito, você sabe fundamental. Considerando que a partir do balancete tabela você  
não é possível reconstruir as transações. Por isso, é melhor manter as transações no ledger, depois o  
saldo de contas, porque o saldo da conta vai perder informações.  
(Consulte O Tempo De Deslizamento: 07 :23)  
Agora, quando tento fazer uma transação, por isso, falamos sobre isso nas palestras anteriores, que nem todas  
As transações são válidas. Por exemplo, suponhamos neste ponto, Bob quer dar Dan 200 mas Bob  
tem uma quantia de 100 após todas as transações que ele fez anteriormente. Então se ele tentar dar 200 para  
alguém como o Dan, então essa transação não será válida porque ele não tem 200 bits neste  
ponto. Portanto, portanto, esta transação será rejeitada ou deverá ser rejeitada.  
Pelo, quem estiver mantendo a faixa de validade das transações. Assim, em caso de um banco, o banco mantém  
faixa da validade da transação. Mas em um blockchain vai ver que tal tentativa de fazer  
As transações inválidas serão checadas por todo mundo que faz parte do blockchain ou quem for um  
parte do blockchain e está interessado em validar transação e por que eu estaria interessado em  
validando a transação de outras pessoas porque eu quero fazer parte do sistema de mineração.  
E assim, se eu validar transações e depois de alguma forma depois de validar transações, se a minha validação  
resultados são realmente mantidos no blockchain, e muitos outros estão validando transações, e os deles  
também está tentando estar no blockchain e se o meu passar como parte do blockchain, então eu  
obter recompensas. Eu receito que haja tantos bitcoins ou qualquer que seja a moeda, e portanto, eu tenho um  
incentivo para fazer a validação. É assim que um tipo descentralizado de validação de crowdsource de todos  
As transações podem ser atendidas sem uma autoridade central como o banco para fazer essa validação.  
(Consulte O Tempo De Deslizamento: 09 :20)  
Então, definição de validade da transação é agora então se o saldo do remetente for maior que igual a  
a quantia que o remetente está tentando enviar, então dizemos que a transação é válida, caso contrário  
a transação é inválida. E chamamos de versão de validade de transação versão uma, porque como  
você verá, isto não é isso é necessário, mas isto não é suficiente para declarar uma transação a ser  
válido. Por isso, vamos voltar e redefinir ou adicionar mais nesta definição e obter a versão 2 do  
validade da transação.  
(Consulte O Tempo De Deslizamento: 09 :56)  
E a validade ledger é que se todas as transações que forem registradas no ledger. Se eles forem todos  
transações válidas, então dizemos que o ledger é válido. E isso também é versão 1, porque ela é  
realmente baseado na versão uma de validade de transação. Portanto, essa é uma definição de ledger válida. Assim em  
outras palavras, cada remetente tem um saldo apropriado para realizar cada transação. Então que é C,  
e eles foram registrados, e isso é um ledger válido.  
(Consulte O Tempo De Deslizamento: 10 :27)  
Agora, o que acontece em um blockchain é que há alguma otimização adicional. Portanto, se você iniciar  
mantendo toda transação, você sabe como uma entidade separada no ledger, então e há muitas,  
muitas transações, então o ledger cresce muito, rápido. E lembre-se, o ledger é tem que se tornar um  
lista vinculada. Assim você terá nós muitos nós na lista vinculada. Então o que as pessoas fazem é que elas  
aguarde por algum tempo e empacotem todas as transações que acontecem dentro desse tempo verificam seus  
validade e fazer um bloco.  
Então, e então esses blocos são conectados como nós em uma lista vinculada. Por isso, portanto, agora como você pode  
decida como você quer fazer isso você sabe quanto de janela de tempo você tem que esperar até  
coloque as transações em um bloco. Então, pode ser em uma base diária pode estar em um em cada 1 hora ela  
poderia ser a cada 10 minutes minutos, pode ser alguns outros critérios pelos quais você decide quando é hora de  
coloque todas as transações que você viu em um bloco.  
Agora, parte interessante aqui para entender é que se o banco está fazendo isso, então ele tem uma regra fixa que eu  
só esperará por 1 hora e a cada hora, quaisquer que sejam as transações aconteceram. Vou colocá-los em  
um bloco eu vou validá-los e então coloco naquele bloco na lista vinculada, mas se ele está sendo feito  
por todo mundo de forma independente, então, há deixa-nos dizer 10.000 pessoas, cada uma delas olhando para  
transações e essas transações à medida que elas vêm em algum momento elas têm que decidir.  
Agora é hora de criar um bloco com as transações que eu vi depois de validá-las.  
Agora, lembre-se de que esses usuários ou este nó que os participantes do blockchain são distribuídos  
geograficamente, talvez alguns nos EUA ou na Índia, alguns estão na China, alguns na África. Então,  
Portanto, sua noção de tempo será muito porque a sincronização do relógio não está sendo aplicada  
aqui. Por isso, portanto, o que é quando penso que é uma hora o outro participante de outro  
lugar pode não achar que é 1 hora talvez alguns minutos aqui.  
E lá também, o outro problema é que se eu fizer uma transação na Índia através da rede para  
atingir para receber essa transação acontecendo pode levar mais tempo para o usuário dos EUA e uma transação  
acontecendo nos EUA, o observador indiano pode realmente vê-los depois. Então, o que pode acontecer é  
que mesmo que você tenha uma noção padrão de 1 hora, mas as transações que você viu neste ponto  
isto por observadores em EUA e observador na Índia seria pouco diferente.  
Ao alcance das informações da transação pela internet pode ser um pouco atrasado baseado em  
a proximidade da transação acontecendo e o observador. Portanto, todo mundo quando  
começar a criar blocos, que blocos irão diferir. Também, seja usuário pode dizer, eu não gostei deste particular  
transação. Por isso, posso não incluí-lo no bloco direito. Por isso, cada usuário diz 10.000 usuários  
estão todos tentando fazer esses blocos válidos de transações.  
A razão pela qual eles estão fazendo isso é porque eles receberão alguma recompensa, mas eles os blocos que eles criam  
podem diferir um do outro. Então, então a questão é: como você decide como o sistema decide  
cujo bloco será o próximo bloco na lista vinculada. E é aí que todo o processo de mineração  
ou a última vez que falamos sobre os quebra-cabeças de hash. A solução de quebra-cabeça de hash, ou processo de mineração  
ocorre. E é assim que uma competição começa entre todos os usuários.  
E esta competição é vencida resolvendo primeiro o quebra-cabeça de hash e quando o quebra-cabeça é resolvido  
por alguém, então a pessoa pode afirmar que meu bloco é o vencedor e este bloco vai para o  
link menos. Agora, o que isso significa é que dependendo de quem ganha B, quais transações entram em um  
bloco será diferente. No entanto, nesta configuração em nosso exercício de programação particular, nós  
não teria esse tipo de incerteza, porque nós estaremos fazendo isso em de um lugar. Por quê?  
Porque ele é apenas um exemplo ilustrativo.  
Não é assim que o blockchain funciona em termos de criação de blocos de transação e validar  
blocos de produção, ou adicioná-los à lista. O que estamos fazendo aqui é apenas para obter o conceito  
de blocos e conceito de ligá-los juntos, em vez de mimicar completamente o que acontece  
em um blockchain realista. Portanto, para nós, quais transações entram em um bloco seria muito  
mais fácil de decidir.  
E haverá apenas um bloco criado porque apenas uma entidade em que caso seu programa  
estará criando os blocos e adicionando-os ao blockchain. Mas eu só quero garantir que você  
entenda que a diferença entre o que estamos fazendo neste programa e o que realmente  
acontece no blockchain real. Então, o conceito de mineração está ausente neste exercício ou neste  
exemplo, apenas o conceito de criação de blocos, validando os blocos.  
E validar as transações e colocá-las em uma lista é o que nós vamos fazer aqui, que  
é suficiente para entender alguns dos conceitos, mas não todos os conceitos. Também, como você irá  
lembre-se, quando eu estou fazendo isso a partir de um programa e nenhum outro participante, eu posso criar um real  
O direito de lista vinculada em C++. Então, falamos sobre isso nas aulas anteriores que em lista ligada C++, a  
link entre de um bloco para o outro é, na verdade, um ponteiro, que é um endereço de memória.  
Mas também dissemos nas palestras anteriores que em caso de um blockchain distribuído e replicado,  
esse conceito de endereço de memória não é aplicável. E aí nós fazemos ponteiros de hash aqui também nós vamos  
faça alguma forma de ponteiro de hash. Mas isso também é diferente de como os ponteiros de hash são usados em  
o blockchain real. Então essas são as diferenças. Assim, nós vamos neste caso, nós realmente criaremos um  
Lista vinculada real C++ ou lista vinculada C apenas ilustram o conceito de uma lista vinculada de blocos válidos.  
E essa vinculação é feita através de endereços de memória. Mas com um pouco de mais ideia lançada em  
ela que também teremos o hash do bloco anterior armazenado no bloco atual e, portanto,  
torna-se espécie de ponteiro de hash.