Loading

Module 1: Mecânica de Bloco

Nota de Estudos
Study Reminders
Support
Text Version

Transações De Bitcoin

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

    +

Agora na realidade, assim, damos a você os esquemas do que as transações se parecem quando em  
realidade isto é o que acontece esta é a estrutura de uma transação e se você realmente entrar  
como você conhece algum navegador real este bitcoin dot info por exemplo, e então você pode navegar  
transações e você verá coisas como esta. Então, qual a transação na transação  
estruturar o que temos são os seguintes.  
Então, temos metadados. Então, este é o metadados este são os dados sobre a transação, isto é  
estes são os insumos. Então você vê que a entrada é uma matriz, portanto, essa matriz é denotada por isso e  
terminado por esta e então a saída também é uma matriz neste caso, I this in this particulares  
transação, há apenas 1 de saída e vejo que há 2 entradas. Assim nos dados da Meta, o que nós  
ter é o hash da transação.  
E então temos a versão. Esta é a versão do Bitcoin. Isto diz quantas entradas são  
lá. Portanto, este é o tamanho de entrada, este é o tamanho da saída. Portanto, isto é 2 e 1, há algo  
ligou o tempo de bloqueio e discutiremos muito em breve. O que o tempo de bloqueio significa então para agora, podemos  
ignore-o aceitar o fato de que lock time zero significa que esta transação pode ser feita imediatamente.  
Então é isso que bloquear o tempo zero significa, o tamanho da transação.  
E, em seguida, na entrada, temos o hash da transação que é a entrada. E em um zero aqui  
significa que esta é a, zeroeth output da transação. E então há uma assinatura. Agora,  
como essa assinatura é feita. Vamos defasar essa discussão para mais tarde um pouco mais tarde, mas  
isto é meio que uma assinatura que você pode primeiro agora assumir, de forma semelhante a segunda saída também tem  
o hash da transação para a segunda transação anterior.  
E então esta é a, zeroeth output da transação e aqui é uma espécie de assinatura no  
saída, você diz, qual é o valor do valor que você está enviando. E isto basicamente diz  
o endereço da pessoa cuja conta está recebendo o financiamento da obtenção do dinheiro. Agora,  
aqui, você vê que há muitas coisas, não só o número da conta, o número da conta é  
basicamente em algum lugar aqui.  
Mas o resto disso parece, você sabe, meio que como um programa de montagem. E vamos ver  
o que isso está em um pouco. Então, é assim que a estrutura da transação se parece. Então você recebe alguns  
ideia sobre o que isso se parece.  
(Consulte O Tempo De Deslizamento: 17 :46)  
Agora, olhemos para esses metadados e outras entradas e saídas em um pequeno detalhe. Assim, como eu  
disse que a parte de metadados tem hash da transação, o número da versão, o tamanho do  
matriz de entrada, o tamanho da matriz de saída, o tempo de bloqueio zero significa que ele é um   imediato  
transação e o tamanho da transação e lá podem existir alguns outros dados que podem ser  
lá. Então isso é um dado da Meta. Por isso, todos os que sabem Meta data significa que é um dado sobre o  
dados.  
Então, são estes os dados sobre a transação. Então é isso que tipo de diz uma empregada doméstica  
informações. E este é o hash da transação. E o tempo de bloqueio dá-lhe quando a transação  
torna-se válido, zero significa que ele se torna válido imediatamente.  
(Consulte O Tempo De Deslizamento: 18 :38)  
A entrada se parece com isso. Assim você tem o hash de transações de saída anterior aqui. Então e então  
este é o índice da saída da transação. E aqui está a assinatura. E nós vamos  
vai ver o que isso significa. Esta é, na verdade, uma chave pública. E esta é uma, você sabe, script que nós  
vai entender em um pouco.  
(Consulte O Tempo De Deslizamento: 19 :05)  
Assim, a saída também tem o valor da saída, o quanto quantas moedas estão indo e, aqui  
diz que quem vai ser criado para essa quantia. E agora, como dissemos que esse tipo de looks  
estranho, mas vai muito em breve entender o que significa. E esta parte disso é na verdade um hash  
valor é o número da conta, mas vamos entender muito em breve.  
(Consulte O Tempo De Deslizamento: 19 :34)  
Então roteiros de bitcoin é o que essas coisas são para que aquelas fossem coisas misteriosas que você viu, como  
o que roteirizando e em nosso na saída ele diz script de script de script, e na entrada, diz, cripta  
SIG. Estes são na verdade o que chamamos de roteiros de bitcoins. Assim, o script bitcoin é realmente meio como  
um programa de montagem, exceto que os programas de montagem são feitos para máquinas de Hardware reais,  
mas neste caso esta linguagem de script realmente tem uma máquina idealizada sobre a qual ela é suposta  
para supostamente ser executado. E esta é uma máquina baseada em pilha sobre a qual isso é executado.  
Então, vamos ver como isso funciona.  
(Consulte O Tempo De Deslizamento: 20 :16)  
Então, antes de mais nada, como qualquer código de montagem, ele tem códigos de topo. Por isso, ele surgiu por exemplo, é  
não é um opcode que diz a duplicata algo que está em cima de uma pilha, então nós temos um  
Modelo de cálculo baseado em pilha. Assim, dados permanecem dados são empurrados para dentro da pilha. E então em  
esse ponto, se obtemos essa instrução em cima, então criamos uma duplicação da parte superior da pilha  
em cima. Portanto, se houver x na parte superior da pilha na hora.  
Encontrei esta instrução, então escrevo outro X em cima dele de hash basicamente  
hashes, o que quer que seja na parte superior da pilha, então, ele basicamente faz uma hashing de camada de 2 bits primeiro ele faz  
SHA256 e então ele faz um hash de 160 bit a saída é um hash de 160 bit. E aqui estão alguns dados.  
Nós vimos neste caso, dissemos que este era realmente um valor de hash, mas poderia ser qualquer dado. E  
então isto diz, op igual verificar objeto SIG.  
Então, op igual verificar um bit verifica se as 2 principais entradas na pilha são iguais. E então objeto  
O SIG basicamente verifica se a assinatura verifica. Portanto, se você tiver a assinatura, e se  
você tem a chave pública, então se você aplicar o objeto SIG, então ele verificará se a assinatura é  
de acordo com o é decifrável com a chave pública que significa que ele é ele foi criado pelo  
chave privada tem a chave pública correspondente.  
Assim, estes são chamados de off opcodes of the language. Então, o que estamos vendo aqui é que há um  
linguagem e esta linguagem é chamada de linguagem de script Bitcoin e esta linguagem é muito  
simples e tem a semântica desta linguagem é pilha baseada o que significa que nós iremos  
suponha que modo os programas escritos neste idioma sejam executados é lendo um  
instrução e, em seguida, se a instrução for dados, então empurre-a sobre a pilha.  
Se for um opcode de instrução real então nós tiramos as coisas em cima da pilha, talvez o  
apenas a entrada superior ou superior 2 entrada ou superior 3 entrada dependendo da instrução e depois nós  
executar sobre esses dados que instrução e então nós o que quer que seja o resultado removemos o  
entradas que sobre as quais você aplica a instrução aplicam a instrução e então você empurra o resultado em cima  
da pilha se houver um resultado. Então, é assim que a semântica dessa linguagem funciona.  
(Consulte O Tempo De Deslizamento: 23 :05)  
Então, acontece que quando dizemos scripts rig que na verdade é um script. Assim, pensaríamos que em  
a transação de entrada, portanto, quando eu uso uma transação como minha entrada, então o que eu estou fazendo é que eu sou  
olhando para uma transação anterior na qual eu estava dando algum dinheiro. E eu vou assinar  
que a coisa que eu estou agora assinando para usar esse dinheiro, então ele é chamado de redeeming the input  
transação, a saída da transação anterior.  
Então, para resgatar, eu preciso dar uma assinatura mas em vez de uma assinatura simples, eu dou um script.  
Da mesma forma, na saída, eu vi que eu deveria apenas dizer, cuja conta que deve ir  
to, mas em vez de dar apenas o número da conta como um hash de uma chave pública, eu tenho que escrever um  
script e que é chamado de chave pub Script. Então vamos ver como isso, essa coisa funciona. E, então  
quem for validar a transação tem que colocar script em cima deste script.  
Então script é basicamente um conjunto de instruções e valores de dados. E este é também um conjunto de instruções  
e valor de dados. Então eu os concateno. Então eu tenho primeiras essas instruções, e então eu tenho isso  
instruções, obtenho um script mais longo. E então eu tenho que executar esse roteiro. E em uma pilha baseada  
sistema, e quando eu executo, se a execução vai para bem, então está tudo bem. A transação  
valida se a execução lança um erro que significa que algo não deu certo. Isso significa  
ou este script tem uma informação errada ou este script tem as informações erradas, e  
portanto, a transação é invalidada. Então, essa é a ideia deste scripts.  
(Consulte O Tempo De Deslizamento: 24 :52)  
Então o objetivo da linguagem de script bitcoin é, na verdade, ter uma maneira simples e compacta de  
validando as transações e queremos manter o maquinário para validar as transações.  
Muito, muito simples. É por isso que a linguagem também é muito, muito simples. Ele tem instruções para  
criptografias de suporte. Por isso, tem instrução única para computar um hash, ele tem instrução única  
para validar uma assinatura. Então, isso na verdade é nesse sentido, as instruções são bem poderosas,  
mas ele é baseado em tag.  
E, portanto, uma cada instrução é executada em apenas uma vez. E, portanto, o tempo e  
a memória é basicamente linear no tamanho deste script. E, portanto, é bem limitado. Porque  
nós não queríamos ver os scripts são escritos por outra pessoa, porque quando eu estiver  
validando uma transação, o script de transação SIG, ou chave pub script, é escrito pela pessoa  
quem realmente colocou a transação no agora é o usuário mal-intencionado.  
E ele teve uma instrução de consumo de tempo lá, então você todos os validadores realmente serão  
entrando em um enorme tempo consumindo computação e eles vão atrasar ou validar todos os outros  
transações. Então, nós queremos a linguagem tal que não é possível entrar em um loop infinito  
ou muito, computaria cara. Então, essa linguagem não tem loops no em sua estrutura e  
portanto, ele não está se turing completo.  
Então, Turing completa idiomas como todas as linguagens de programação que normalmente utilizamos são  
chamado de turing idiomas completos. Então, se você fez um curso em teoria da computação,  
você provavelmente sabe o que isso significa, mas turing idiomas completos podem projetar ou podem expressar  
funções muito, complexas, enquanto que, este tipo de uma linguagem muito, simples, Sem looping  
não pode expressar quaisquer funções arbitrárias e, portanto, e que seja por design.  
Para que a validação da transação não possa ser atacada por um usuário mal-intencionado, colocando em um  
transação em que ele coloca um script que vai para um loop infinito e coisas do tipo. E ele  
é inspirado por linguagem anteriormente disponível chamada adiante. Nós não precisávamos nos preocupar com isso  
linguagem, mas temos que entender os próprios fundamentos dessa linguagem. Agora, por que estamos  
falando sobre essa linguagem que vem quando a gente volta? Falaremos sobre isso.  
E nós estaremos realmente discutindo o conceito de contratos inteligentes neste contexto e depois você  
vai entender por que mesmo que não estamos interessados em moeda criptográfica, estamos falando  
sobre scripts de bitcoin. Então, nós vamos voltar.