Transcrições
1. Apresentação: Bem-vindo ao curso definitivo do
Solidity Smart Contra para iniciantes Neste curso, vou guiá-lo passo
para levá-lo do
zero para dar o pontapé inicial em sua carreira
como desenvolvedor de solidez Então, isso é mergulho. Começaremos com
os fundamentos da solidez, como
variáveis, funções
e matrizes, e depois
criaremos
um pequeno projeto,
como uma calculadora, para um pequeno projeto,
como uma calculadora você
possa praticar o que Em seguida, mergulharemos tópicos
intermediários, como
mapeamento, cinta, loops
e modificadores, e
depois usaremos todos eles em uma cabine de aula de
projetos com letras complexas Classifique o contraste inteligente e implante
tudo isso no SupoyatSNT. Em seguida, abordaremos
os tópicos avançados, como
declaração de requisitos e eventos. Assim, você aprenderá como aplicativos descentralizados
como o Opens conversam com
o blockchain e
obtêm as atualizações e
as palavras em tempo real
usando eventos de solidez Também exploraremos
a herança e
como contratar e conversar juntos usando algo
chamado interface No final das forças,
apresentarei um desafio de exercícios para que você
possa aplicar tudo o
que aprendeu neste curso. Ok, está mergulhado no
mundo do bloqueio do desenvolvimento, CEO e das primeiras lições
2. Entendendo a solidez: o que é e o que você pode construir: T. Solidity é uma linguagem de
programação que cria uma polêmica louca e os instrui a se
comportar É isso mesmo. E o ciclo
de vida do contrato SMAT, primeiro, criamos um código usando solidity, um código normal e o
compilamos no código P
01 e depois o executamos na máquina virtual EVM
Etherium Está bem? É basicamente
um servidor que cria seu código e executa seu código. Então, o que você pode
construir usando solidez? Na verdade, coisas incríveis. Primeiro, pinceladas. Então, o que é deps. Para entender melhor os dabs, apresento uma visão geral do que são
aplicativos tradicionais Nos aplicativos tradicionais,
confie em
uma única entidade ou organização para sua
funcionalidade e armazenamento de dados. E isso é criar o que é
chamado de matrizes de centralização, que significa que, se o
servidor cair, os dados serão perdidos e
o aplicativo falhará Ou se um invasor
hackear o servidor
, ele terá acesso direto à rede e
bloqueará os dados É por isso que o transferimos para as guias, aplicativos descentralizados Portanto, os
aplicativos descentralizados armazenam os dados em vários nós no
blockchain em todo o mundo, que significa que seus dados estão seguros
e, se algumas anotações caírem, os dados estarão seguros porque vários Nuts têm os mesmos E um invasor não pode
obter acesso total à rede
a menos que consiga
abraçar todos os porcos da rede, e isso é quase Outra coisa é a mídia social
descentralizada. Basicamente, é uma mídia social como o Facebook, mas descentralizada Outra coisa é DoS, organizações automação
descentralizada No Taos, basicamente, são aplicativos gerenciados
por contrato SMAT, não por autoridade central, o
que significa que as pessoas, os membros, criam
a proposta Por exemplo, diga: Ei, adicione esse
recurso ao aplicativo. E essa proposta é votada
pelos titulares e, se
a proposta for aprovada, os detentores criam um contrato SMAT e o adicionam
às inscrições contrário dos aplicativos
tradicionais quando o CEO ou a organização decidem tudo e controlam todas as decisões
dos aplicativos. Outra coisa sobre sarampo. Esse é o maior dos tokens
NFT, não fungíveis. Os NFTs são um ativo digital. Crie a propriedade de itens
específicos. É isso mesmo. E o maior caso dos NTs
são as artes digitais também em jogos Portanto, nos jogos, o NFT
ou o blockchain oferecem aos jogadores
a possibilidade negociar ou vender seus itens Claro, você pode
criar sua Crypto, como theror bet coin, dash coin, etc. E o bom aqui é que, se você tem, por exemplo, uma plataforma ou decks
, pode criar sua própria
criptografia em sua própria plataforma Isso é incrível. Na verdade,
nas próximas aulas, criaremos
nossa própria moeda estável. Ok, o salário. O desenvolvedor de bloqueio recebe
cerca de 110 mil a 250 mil por ano. E o desenvolvedor do Solidity
obtém de 120 K a 200 K. Então, vamos nos aprofundar na diferença
entre
a Web 2 e a Web 3 OK. Web três. Então, antes de nós três, usuário usa o aplicativo, os aplicativos como face e o aplicativo
armazenam os dados em um servidor e em
algum lugar na nuvem, ou
seja, no banco de dados. Mas um único servidor, o que significa que outro servidor
não tem os mesmos dados. Mas na web gratuita, usuário usa uma carteira criptográfica, na
qual a carteira contém
sua chave privada E a carteira usa DAPs, aplicativos
descentralizados. Em seguida, o aplicativo que armazena os dados
em vários servidores na cadeia de blocos em
todo o mundo, que significa que seus dados são
armazenados em vários
servidores ao redor do mundo,
e você é armazenados em vários
servidores ao redor do mundo, quem controla esses dados. Então, vamos criar nosso
primeiro contato SMAT.
3. Prático: criando seu primeiro contrato inteligente de Solidity: Então, vamos ao Remix, o ID on-line para
criar um contato inteligente Ok, RMXRMx Aqui está. Ok, aqui está o ID online do
remix. Ele nos deu uma bela interface para interagir com
o contrato da SMAT Essa é a funcionalidade,
e até mesmo implante-a na planilha de blocos. Ok, há uma pasta aqui Eu fui criado. Portanto, é um tutorial de solidez. Ok, vamos
criar outro arquivo, chamá-lo, por exemplo, de arquivo. Este ícone para diretório. Esses quatro arquivos, ok? Vamos dizer olá. Ok, ponto SOT. Dot SOT é para dizer ao ID, este é um arquivo de solidez Ok. Começamos com um comando chamado PDX, Speed x, License. Unifique a parte superior. Está bem? T. Basicamente, isso é para especificar
a licença, ok? Digamos que TI, o que
significa código aberto, para que qualquer pessoa possa
cloná-la e usá-la Você pode usar outro tipo,
como licença ou algo assim, então a palavra-chave contrato
no dact é hello Olá, contrato, ok? Ok. Força. Força.
Digamos que a cabeça seja igual? Ok, alta solidez. Crianças com cabelo, não é? Sim, ele diz que a Sears fine não especifica a versão necessária do
compilador. Considere adicionar solidez pragmática. Sim. Isso me disse que você precisa
especificar o compilador de versão
necessária Portanto, no arquivo de solidez, você precisa informar ao ID
qual versão do solidity deseja compilar seu contrato.
Está bem? Para fazer isso, escrevemos
Pagan Solnit para dizer. Então
está tudo bem, Tata Então, depois disso,
especificamos, então, o ID. Ei, nosso contrato, por favor,
cumpra com zero ponto na versão 26 de solidez E isso e este, nesta versão,
0820 diz acima Essa acima. Então, por exemplo, zero ponto oito ponto 29, por exemplo, sim,
podemos compará-lo a ele. E esse ícone precisa
compilar o compilador de solidez. Ok, eu comercializo automóveis, então vamos desativar esse recurso. Nós podemos compilá-lo,
compilar com sucesso. Ok, olhe aqui. Esta é a versão que
especificamos para compilar
nosso contato, ok? E mais aqui, isso e acima. E esse ícone precisa implantar
e executar transações. Então, para implantar nosso contrato. Ok, aqui está a máquina
virtual RMx. Ok, para testes, uma cadeia de
blocos para testar para implantar seus dados,
apenas para testar. Aqui está uma conta com um éter
falso para provar também. E sim, aqui
escolhemos qual contrato
queremos implantar. É um alô porque, claro, somos apenas um. E clique na parte inferior, implante
a transação e conclua. E aqui na parte inferior, temos nosso contrato. Digamos que temos que
comercializar esse público. Obanoc e o ponto. Não, você tem que compará-lo e excluir
este e este. Ok, aqui está nossa variável. Olá. Alta solidez interna Então, parabéns. Você cria seu
primeiro contrato SMAT. Ok. Não se preocupe Se você não entende o que é
essa string, pública? Olá. O que está
acontecendo aqui? Não se preocupe Vamos passo a passo até que
você crie seus melhores, não apenas um
contrato simples como esse Ok, vamos voltar para
a apresentação.
4. Fundamentos ( variáveis e funções e matrizes ): Então, variáveis. Variável basicamente é um espaço em
que você pode colocar seu valor. Por exemplo, isso
é espaço, ok, na memória, e o café
é o valor. É isso mesmo. Espaço para armazenar seu valor. Ok, existem tipos diferentes. Ok, há um endereço,
força, intimidação,
e você ensina Esse é o maior, ok? Ok, endereço, começamos
com a palavra-chave address, o nome do endereço, e o endereço representa
um endereço eim Existem dois tipos de
endereço: endereço externo ativo, que significa o endereço da
carteira, a honra, a pessoa. E o endereço do contrato inteligente. E por que precisamos
do endereço. Está bem? O endereço é muito importante
no Eastern Blockchain
para obter os fundos, obter os dados e
se inscrever nos aplicativos. Muitas coisas que você pode fazer
usando os endereços. E a corda. Começamos com a string da
palavra-chave, o
nome da string e a entrada. Então, basicamente, é
só uma corda. Sim, só uma corda. E o Bola, basicamente, é verdadeiro ou falso. Você começa com a bola
e o nome de Bola, verdadeiro ou falso. Ok, inteiro, o maior. Variáveis inteiras U. Então inteiro, há dois
tipos inteiro e U inteiro. O número inteiro aceita
números negativos e números positivos. E o número inteiro aceita
apenas o positivo. É isso mesmo. Como declarar, basicamente, palavra-chave
win e a máxima igualdade
de fornecimento O nome das
variáveis e o valor. E aqui estão oito, e
aqui está outro. Você ganha 256. Esse é
o número de di byte. Então, o tamanho e a memória Ok, se o número for pequeno, esse número ocupará um tamanho
pequeno na memória. Se for grande e não
soubermos como isso vai
ocupar a memória, escolhemos um tamanho grande para. Por exemplo, oito,
basicamente são oito bytes. E 256 bytes. Tipo, o que você
acha que um dia é? Nós não sabemos. Talvez 1.000, talvez 2.000 segundos, é claro. É por isso que escolhemos
o maior,
que é 256, para
armazenar esse número. Porque se escolhermos,
por exemplo, oito, talvez um byte a mais
do que isso,
do que o intervalo de
você foi oito Então, há um
problema. Ok, aqui, com o tempo, o dia é 86400 De segundo. É por isso que
começamos neste. Você foi 256. Aqui está uma tabela
dessas porque sou eu, não apenas oito ou 256. Ok, você usou 88 bytes. O intervalo é de 0 a 255, o que significa que, mais do que isso, você precisa usar
outro, mais byte E você foi, por exemplo,
16, seis bytes, 026 5535 Você foi 1802802,
blá, blá, blá. Você foi 250 602,
o maior deles. Bilhão ou trilhão
ou o que é? Ok, é isso mesmo.
E às vezes você
descobre que está apenas molhado
sem dvte específico Então, neste caso, por padrão
é o maior, seja
, você foi 256. E isso é tudo nas vitórias. Espero que isso faça
sentido. Isso não acontece. Veremos mais exemplos
no projeto da calculadora, bem
como no projeto da
sala de aula. Ok, por favor, sempre, sempre, se você não souber como será
o número. Por exemplo, um dia, um ano, uma semana. Você não sabe quanto é o segundo
em uma semana, por exemplo. Então, sempre, sempre escolha
o maior tamanho para ele. Porque se você não fizer isso,
você escolhe, por exemplo, um pequeno, como se tivesse
ido oito. Você fez 16 anos. Vamos considerar isso, vamos pegar o máximo disso, por exemplo, você ganha 8255 e o
resto desaparecerá Isso é um problema,
um grande problema. E muitos desenvolvedores
cometem esse erro. Então, o que é uma função? Basicamente, funções
são tarefas repetíveis, o que significa, por exemplo, queremos incrementar um número. Então, criamos uma lógica de sanções. E toda vez que
quisermos aumentar, basta chamar essas sanções Está bem? Isso é o que é uma tarefa
repetível. É isso mesmo. Então, vamos passar para a estrutura das funções.
Ok, basicamente. Então, se você tem
experiência em Java, crie Python, qualquer linguagem de
programação Ok, é o mesmo. Mas se
você não tem, não é nada. Ok, está tudo bem. Nós explicamos tudo. Está bem? Primeiro, começamos com
as palavras-chave da função. Em seguida, o nome das funções, depois especificamos o tipo, a visibilidade e o
tipo das funções. E por último, especificamos
o tipo de roteador. Então, a visibilidade, a
visibilidade,
basicamente, decidimos
que essas facções são
públicas, o que significa visíveis para todos. Todos
podem ligar para isso. Contrato em si, contrato
externo, outra carteira, qualquer pessoa pode chamar essas funções ou privadas, queremos fazer com que essas funções sejam
chamadas dentro do contrato ou internas,
existe uma mútua. Então, primeiro, como eu disse, pode ser público, pode ser usado
interna e externamente Então, por exemplo
, em funções. Podemos chamá-lo internamente
de funções, contrato e externo Portanto, qualquer contrato pode
chamar essas funções, qualquer
pessoa, qualquer carteira, pode
chamar essas funções. Ou o privado privado basicamente pode ser usado dentro do contato. Portanto, se houver uma variável, privada ou funções,
isso significa
que essa variável ou funções estão visíveis
apenas dentro
das funções. Desculpe, dentro do contato. Portanto, o próprio contato pode chamar essa variável
ou essa função. Interno. Ok, basicamente, o interno pode ser usado dentro
do contrato, ok, como contratos privados e outros contratos de
herança, que significa que dentro do contrato, isso é claro, mas
outra herança,
não outro contrato, não outro contrato Não. Contrato de herança.
Existe, por exemplo, essa calculadora
básica Ok, essas
funções de adição são internas e a calculadora avançada
herda as funções Basicamente, tudo bem. Explique o que é
inerente aos camulões. Só aqui, veja a calculadora
avançada, herde toda a lógica
da calculadora básica E sim, então há uma função
aqui e subtraia. Por quê? Porque é interno. E o externo
só pode ser acessado a partir de
um contrato ou conta externa. Basicamente, é o
oposto de privado. Portanto, a função de anúncio, por exemplo, é externa, o que
significa que não podemos chamá-la
dentro do contrato. Apenas
carteira externa ou outra conduta. E é isso. Portanto, view
and per functions, view functions são funções para ler o estado
no blockchain, não para atualizar o estado. Só para lê-los. Por
exemplo, as funções do Git são apenas para o
valor do resultado E o resultado é armazenado
na blockchain. E ao chamar essas funções, nós apenas exibimos o valor
do resultado. É isso mesmo. E por funções
e por funções. As funções não são para
leitura e nem para atualização de dstcs, nem para uplton
dstate, não É apenas para alguma lógica, independente do
blockchain, como,
por exemplo, em funções Basicamente, obtenha duas variáveis
A e B e o roteador. Eles são adicionais.
A mais B. É isso. Portanto, A não é armazenado
até a explosão. Não, é local, não
global. É isso mesmo. E essas funções são gratuitas. O Bloching, mas
atualizando o estado, por exemplo, adiciona alguma
variável ao resultado E isso atualiza o
estado do Bloching. Nesse caso, você tem que
pagar alguma taxa. É isso mesmo. Ok, matriz. Então, digamos o que é uma matriz. Array, basicamente, é uma
lista de seis. É isso mesmo. Como, por exemplo,
uma lista de caixas. Cada caixa tem um dado e
tem um índice, o número. Ok, por exemplo, caixa um, dois, três, quatro e assim por diante. E há uma
variedade, por exemplo,
NAS, Victoria, Dan
e Harry Potter O cabelo mais importante é o índice aqui, ok? O índice. Esse índice é útil
se você quiser
acessar alguns dados em uma matriz. E o Adix sempre
começa com zero, como qualquer linguagem de programação Comece com zero, não um, zero. Portanto, zero é NAS. Uma delas é Victoria,
então , como criar uma
matriz no contato SMAT Há várias maneiras de
declarar uma matriz
em um contato SMAT Primeiro, começamos com o tipo. Em seguida, ele diz
endereço de string, bytes e assim por diante. Então, neste caso, é um colchete
úmido, é a visibilidade pública
e, claro, o joelho Existe outra maneira se você
quiser inicializar essa matriz com alguns dados, digamos, calibrações Uma, duas, três, lista de coisas. Nesse caso, lista de números. E, claro, você
pode fixar o tamanho. O que significa, digamos,
Ei, eu quero isso Eu quero
armazenar nesta matriz, 1010 elementos no máximo. É isso mesmo. Então, na memória, você cria uma matriz com dez com dez elementos,
composta por zero Diga que todos os elementos foram inicializados em zero e defina cinco publicamente Portanto, essa matriz aceita cinco nomes. E pegou o elemento, uma matriz, você diz, há uma
matriz, os valores. E aqui, cada
valor tem um índice. Então, basicamente, coloque o
índice do valor na matriz e você obterá o
valor dentro desse índice. Mas sim, função, obtenha UN, I Public VU retorna Ns retorna, matriz, I R. E se você
quiser se desculpar Basicamente, em troca, você
precisa de uma calibragem específica, o que significa que eu quero obter a matriz
completa e retornar
o N. Isso é Caso contrário, se você quiser
adicionar alguns elementos na matriz. Por exemplo, exemplos de matriz, essa é uma matriz dinâmica. Ele pode ser dimensionado, o que significa que, se você
não especificar o tamanho, ele aumentará toda
vez que você adicionar um elemento Por exemplo, primeiro, está vazio,
então um, um elemento,
acidualmente Adicione dois elementos, de modo que
o tamanho seja dois, três e assim um. Isso é o oposto
se você fixar o tamanho. Por exemplo, nesse caso, essa é uma matriz de tamanho fixo. Você ganha cinco,
público, tamanho fixo. Ele não pode ser redimensionado, o que significa que se essa matriz
estiver suja, por exemplo, há cinco elementos, você não pode adicionar outro Isso é o oposto se você
declarar uma matriz dinâmica. E experimente um elemento. Basicamente, o nome
e o valor do dot push. Adicione um novo elemento
ao final da matriz. Então, por exemplo,
é como puxar. Há um corpo. Empurre
outro. Ok, adicione outro. D tack, tack, tack e assim por diante. Portanto, você não pode adicioná-lo
no centro ou na parte inferior. E se você quiser a função, obtenha o comprimento da matriz dinâmica, o tamanho, você
deseja obter o tamanho. Basicamente, o nome
comprimento do ponto na perna. Isso é útil para matrizes
dinâmicas, é claro, porque a matriz fixa que é
fixa sempre obtém cinco.
5. Projeto simples (calculadora) + Implantação (Sepoliatestnet): Ok, vamos voltar ao remix ou criar
o contato inteligente
da calculadora e praticar todos os fundamentos
das variáveis e funções de solidez contato inteligente
da calculadora e
praticar todos os fundamentos
das variáveis e funções de solidez.
Sim, é isso mesmo. Então, vamos criar uma pasta,
nomeá-la. Fundamentos Dentro disso, criamos um
arquivo chamado calculadora, Cal That's it. E vamos ao
repositório Tab para este curso. Ok, e use seu nome
Hussein page 2001, o contrato inteligente de solidez
definitiva do repositório. Curso. E aqui. Ok. Ele é o exercício,
a solução, o ritmo. Ok, eu
recomendo criar isso para ferver esse
cálculo antes de nós Está bem? Onde está. Ele é. Aqui estão o exercício e
a solução. Exercício. Ok, vamos copiar isso Ok. É isso mesmo. Ok, faça uma calculadora contra
Colt, é verdade Crie uma
variável de resultado de resultados para armazenar o resultado. Também é. É público e crie uma
função para adicionar, ok? Crie funções de adição. Vamos criar essa função. Adicione sua dobradiça 566 e, em
seguida, quando for externa Ok, vamos torná-lo privado. Privado e resultado
são iguais a resultado mais nove. Perfeito. Aqui estão as
primeiras funções. Você pode criar essa linha, alterá-la dessa forma sem repetir a variável de resultado Basta fazer isso mais igual. É isso mesmo. Como Python e C
plus plus também. Ok. E aqui está o compilador. Ok, é compilador automático. Vamos compilar
também e implantá-lo. Ok, aqui está a máquina
virtual, a conta, nosso
contrato, implante. Ok, no parâmetro
aqui, está nosso contrato SMAT Mas basta exibir o
resultado e não o acréscimo. Por quê? Como o resultado é
público e o anúncio é privado, o que significa que podemos adicionar funções,
elas podem ser usadas apenas
dentro do contrato, o que significa que podemos
chamá-las externamente E, a propósito, a variável pública tem Git por padrão,
função Git por Ok, e deveria ser zero. Por padrão, é zero. Ok, vamos mudar
esse para público ou externo. É claro que, se também for
interno, não
podemos chamá-lo externamente Então, vamos comercializar produtos externos, copiar
e reimplantar. Primeiro, excluímos este,
removemos a lista e implantamos. As transações são concluídas. Ok, aqui está. Ok, verifique primeiro
o resultado. Mãe, ele. Por padrão, é zero.
Vamos às cinco. As transações são concluídas. Esperava cinco. Sim, são cinco. Parabéns. Ok,
vamos adicionar as funções. Subtraia e multiplique. Função, palavras-chave. S. Subtract obteve 206 pontuações externas, resultados menos iguais Outro é multiplicar. Palavras-chave tóxicas, Milt,
você escolheu 206 nomes, eterno e os resultados se multiplicam por igual A última função é criar
uma função para obter o resultado. Mas como o resultado é público, não
precisamos dele
porque, por padrão, essa variável tem uma função get. Mas às vezes
queremos alguma variável, queremos que seja privada,
como senha, nome de usuário, proprietário. É por isso que mudamos
este para privado privado. E neste caso, precisamos desse Git sem
nenhum parâmetro, externo Externo. Sim. Está bem? Nós
especificamos os tipos de devolução. B, temos que
devolver esse número. Ok, volte. Devoluções,
não apenas devoluções. Retorna win en
porque são os resultados. E prêmio de devolução. Ret Adicione resultados. É isso mesmo. Há um
aviso. O que é isso? Nesse estado de função, Vutabilidade pode ser
restrita à visualização É isso mesmo. Como essas
funções basicamente servem apenas para ler alguns dados na planilha de blocos e
não para atualizar os dados, então temos que ver o mercado E isso não custa nenhum gás. É grátis. Lendo e
bloqueando? É grátis. Pelo menos implante este. A transação é concluída. Ok. Aqui está. Nossa função. Primeiro é às cinco. É isso mesmo. Suas
ações continuam. Cinco. Vamos multiplicar por dois Esperávamos dez. Git. Isso é dez menos três Esperávamos sete. Parabéns.
Sete. Agora, vamos implantar isso no SepulaTNT Primeiro, pré-requisito. Você precisa instalar
a mettarefa e colocar a
extensão na tripulação Além disso, você precisa criar
sua conta e obter dinheiro
SuplaFacet. Para fazer isso. Ok, não vou falar sobre como
criar sua conta
e como se manter. Ok, há um monte
de RetrisePlain How. Está bem? E Sepolia SepoliaFaucet Para morder algum dinheiro falso. Ok, então ok, aqui está basicamente uma cópia do
seu endereço, e você obtém zero. 05 Sepolieter. E uma vez que você
o tenha, vamos comer manteiga. Ok, Batful, este
está no éter minuto. Você precisa ativar
essa rede de teste de programas e escolher SePolia Ok, aqui está. Ok, vamos voltar ao remix. Vamos implantar isso em um cadeado real. Confira, Mamask. Ok, aqui está Pola, aqui está a rede, e
lá estão minhas outras. Veja zero X, três, quatro, quatro. Olha. O mesmo aqui. Está conectado. Talvez eu peça que você se conecte, apenas confirme as conexões
e você entenderá. Ok, vamos implantar
este. Implante-o. Temos que pagar uma taxa
pela implantação de um pouco de gasolina, 0,00 17, oito e assim por diante Vamos confirmar isso. Calculadora de
caneta de transação pendente. Ok, isso leva algum tempo
para confirmar a transação. Ok 22. Como você sabe, o bloqueio não
é rápido. Ok, a transação
está confirmada. Vamos ver no Poli scan. Aqui está esse PolaCangT
e evite-o. Ok, aqui está nosso contrato. Ok, isso é só código. Mas você digita o código porque
ele ainda não foi verificado. Vamos verificar essas
funções. Contador inteligente. Ok, claro, é apenas
uma versão única. Ok, nossa versão pode ser essa 1826 plus, o que
significa mais do que isso Nossa licença aberta usa a Cisco lá Verificado e notável. Neste momento. Ok, verifique e publique. É isso mesmo. Está tudo bem.
Vamos dar uma olhada. Ok, a marca de verificação. Ok, está. São as
mesmas funções de esforço. Eu sou ABI. Ok, a facção vermelha Ok, as funções do portão direito, o
que significa
as atualizações do estado
nas funções de bloqueio, multiplicação e
sutra, subtração, subtração Ok, vamos voltar a este. Ok. Vamos adicionar um número quatro. Ok, nosso resultado, o que é? Um zero. Ok, eu tenho que confirmar as transações porque qualquer coisa que você queira
fazer no blockchain, você tem que pagar uma
taxa por isso. Isso não é rápido. A transação foi confirmada. Ok. E nós temos quatro. Quando clicamos no Gt,
não precisamos pagar nenhuma taxa. Audite isso. Sim, porque eu clico duas vezes
nos avanços E é
isso por enquanto. Grazia.
6. Intermediário (mapeamentos e estrutura): Outro tópico são os mapeamentos. Então, mapear são coisas incríveis em solidez, e é legal Eu adoro isso pessoalmente. Então, nosso trabalho basicamente,
ok, apontava para o valor. É isso mesmo. Depois de obter o valor, deve ter o K. Chame o K, obtenha o valor como o estudante IA O nome de cada aluno
tem identificação, zero, obtenha NAs. Ligue para o mapeador, leve Bonny até Larissa E as coisas legais
aqui decaem
não é algo, por
exemplo, aqui 013 O seguinte não
precisa ser três, por exemplo. Não, talvez quatro em meu nome. Vendo, por exemplo, talvez
seja dez para
Victoria, por exemplo. Isso é diferente entre
os mapeamentos e as matrizes. Por exemplo, nesses endereços. Então, isso é diferente
entre isso. Está bem? O endereço
apontava para o nome. Você tem o endereço,
você tem o nome. Então, para criar um mapeamento
no contrato SMAT, usamos as
palavras-chave de mapeamento e o tipo específico da chave e , em seguida, o tipo do
valor e a visibilidade Então, aqui, por padrão, é privado. Mas você pode comercializar, por exemplo, serviços públicos
ou externos. Então, estudantes, o nome. Então, se você quiser
adicionar um elemento, basicamente o aluno
especifica a chave e bloqueia o valor, pronto. Você quer obter algum valor, basicamente o
endereço do estudante, especificamente o K. Então você tem o valor Ok, outra coisa é estrutura. Strack, basicamente,
é útil se você quiser descrever algo Por exemplo, custe uma quantia. Portanto, modelos para que qualquer cartão
tenha a cor do ano do modelo. Nesse caso, o modelo é Y, anos são 2023, a cor, desculpe. Você morreu. Ok, Struct. Strat
é muito útil se você quiser descrever algo.
Por exemplo, um carro. Cada carro tem um
modelo, herdeiro e cor. Neste caso, por exemplo, Y, 2050 hoje e azul E, a propósito, isso
é muito útil. Então, por exemplo, se você
quiser adicionar um aluno, ok, vemos isso
na sala de aula profissional. Então, um aluno tem ID e
nome, por exemplo, resultado e outras
coisas presentes ou não, ok, tudo o que você pode
editar e adicionar os dados, como adicionar dados. Neste folheto e em outras
coisas úteis neste folheto, você tem o grupo de variáveis
com tipos diferentes. Por exemplo, string, você se
tornou booleano e assim por diante. Ok, aqui está uma estrutura de lei de Tis. Começamos com este modelo de cordas
Tisla do trato, você escolheu 256,
cor da corda e assim por diante E aqui está uma matriz de estruturas. Então, para adicionar atract Tis la, então o nome da
estrutura, memória, nós armazenamos isso na memória, não no armazenamento
porque é muito espaço, então isso custa muito gás E o novo Tis la, isso é local, então
dentro das funções,
igual a Tisla e os modelos Então, decadência, o valor são modelos. Nós o obtemos no
parâmetro, ano, ano, cor, cor e assim por diante. Em seguida, empurramos o novo Tisla
para a matriz Tis Ls.
7. Projeto intermediário (Sala de aula): Acesse o
repositório Github deste curso. GitHub.com,
vimos pH e 202 001. E depois, no repositório, e o curso definitivo sobre contratos
inteligentes sólidos E depois copiamos isso. Vá e crie um arquivo, uma pasta. Digamos que a solidez do mate. Curso de solidez. Não, não. Vamos abrir a base, então copie isso e pegue Loon. Então temos Feche isso, vá para o Remix. Remix. Ok, crie um novo espaço de trabalho. Adicione um novo espaço de trabalho. Digamos, uma solidez. Curso. Curso. Crie um contato com o nome da pasta. Em seguida, faça o upload de uma pasta. Faça upload de uma pasta, não de um arquivo. Onde está a solidez? O Solid, é claro, ok? Essa. Mas enredo, ok? É. Tão exercícios quanto soluções. Ok, primeiro, faça exercícios. Então, é uma calculadora que fizemos isso. E crie um contrato para estudantes
. Defina o setor estudantil com ID, nomeie o resultado, crie um
mapeamento, crie uma matriz. Então, vamos criar uma estrutura. Agir. Diga um nome. O que? Estudante? Sim, estudante. Estudante estudante e fazendo 26 anos, ID, isso, depois a sequência do nome. Nome. O resultado é oito. São oito. Porque o resultado é 0-20. E sucesso ou não? Oh, é um sim. Sucesso. Advertência. Por que, por que, por quê. Esses são dados, o nome. Está bem? Você disse que
tinha o mesmo nome OK. Agora, o aviso é bom. OK. Vamos adicionar um
MPI Mapping QR, A chave: o que é? A chave basicamente é a identificação
do tipo de ID de estudante. O aluno é estruturado. Ok, UT six, ID de chamada. T. Não, desculpe. Para estudantes. Estudantes. E sejamos públicos ou não. Ok, digamos que seja
público neste momento. Ok, não, identifique dois. Estudantes. É isso mesmo. Ok, vamos adicionar uma matriz. Variedade de estudantes. Então, matriz dessa estrutura. É estudante. OK. Estudantes. Suporte quadrado, tamanho dinâmico. Não fixamos o tamanho. Porque não sabemos
quantos alunos estarão nesta turma. Digamos que seja público e estudantes
digamos que estudantes sejam bons. Ok, isso é tudo
para este exercício. O segundo exercício, o que é? OK. A segunda cabeça
é uma construtora Defina o proprietário. Quem?
Quem implanta isso? E as honras são privadas. Então, o exercício adiciona o
toque à matriz. Eles atingiram a matriz. Ok,
a função adicionar aluno. Ok, vamos adicionar funções, funções
do aluno. Adicione aluno a Marpin. Crie uma função para os alunos. Basicamente, crie uma função. Defina ou avalie Students
Ads Okay,
ID, nomeie os resultados Primeiro, digamos, ID. Você 286 IE. Próxima sequência de caracteres. Na memória. Sydney iniciando a memória. OK. É int, int, ok? Em. Você sabe por que comercializamos
o int porque a memória o resultado podem ser negativos Felizmente, podem ser
negativos. Ok, o resultado. Então, resultado. E, sucesso. Então, Bull Success. Ok, externo, claro, nenhum. E externo, tão
pouco, não, medo, não. OK. Mamãe, hmm. Estudantes. A turma fez a memória. Definir o uso de estudantes é igual a quê? Estudantes. Tipo, desculpe, T e isso. Então ID ID, então é ID. O valor do nome do kit nk As a name E a música SotArsultr. E então Bola, sucesso. Desculpe. Isso não é. Eu gostaria
disso. Primeiro, sim. Basicamente, é só “Vamos lá”. Perfeito. O que? Diga, não foi encontrado ou não está bem. Não apague fogo. Não é divertido. Muito amassado. Então, a culpa é minha. Sim, quero dizer. Veja, nós empurramos esse bacalhau para Estudante. Tudo bem.
Vamos ter certeza. Ok, e adapte-se
também na memória. Desculpe, no mapeamento. Ok, assim. ID, específico
para carteira de identidade e novo aluno. É isso mesmo. É isso mesmo? Caperton árido e biglmt, estudantes ou estudantes. O que é isso? Estudantes, sim. Ok, é isso mesmo. Ok, é criar uma
função de estudante. Estudantes Git. Perímetros externos, é claro, e é uma visão porque
queremos ler dados na ferramenta de cadeia de blocos para visitar
os alunos Estudantes. Claro, é memória,
começando na memória. Basicamente, na memória,
cadeias na memória, estruturas na memória,
matrizes Números? Não, você não vai. Nesse caso, você
tem duas opções. Você pode usar a
matriz do aluno ou o mapeamento. Vamos usar o mapeamento. Ok, eu tenho dois alunos, colchetes e
especificamente I.
Tt. Vamos compilar este Ok, você pode fazer
essa compilação automática. Então, ele será compilado no momento. Está implantado e veja
se isso é um pino. A transação é concluída. O parceiro, há um soco. OK. Digamos que eu seja o número um. Meu nome é RusinaRsult,
claro, 20. O sucesso é verdadeiro. E ele faz transações. É isso mesmo. Ok, vamos adicionar
outro usuário. Está bem? É ID dez. É Bob, por exemplo, e depois. Ok, dois. Sim.
E outro é, digamos, com ID cinco. Digamos que Alice. Desculpe, Alice. 24. Adicione a transação.
Ok, minha identidade é uma. É Cob? Sim, é isso mesmo. Ok, um, ratos, dois e três. Vamos morder Ale. Para talvez? Não, cinco. Ok, cinco, Axe, dois e quatro.
Isso é ótimo. Ok, no mapeamento, por exemplo, digamos Bob. Dez talvez. Hein? Dez?
Sim, é Bob. Ok, é Bob e coloque o índice de estudantes
aqui no índice. Então Bob Dex, o que é? Meu índice é zero. O índice Bob é um, push e o índice Alex é dois. Então, meu índice é zero S zero. Ok, cara. Eles
diriam que dois é Alice Esperávamos Alice. É isso mesmo. Alice. Ele é Alice Ok, parabéns.
8. Loops: Laços. Loops e a programação. Então, há um quatro. Paramos com a
inicialização, atualizações do
condon, a condição
inicial, as atualizações e assim por diante Primeiro, ganhamos, eu sou igual a zero. Em seguida, garantimos que a
condição tenha terminado. Então, eu menos de cinco, e incrementamos essa variável Nesse caso,
incrementamos em um, você pode escolher um básico em cinco, I mais cinco mais
dez, conforme desejar E a lógica, nós
executamos essa lógica. Por exemplo, então eu sou igual a zero. Primeiro, a condição acabou, execute essa lógica aqui. Em seguida, atualize o
Excremento de ID em um. Duas condições são verdadeiras. Lógica. Equipamento, lógica
tripla. Elemento Quatro. Quatro é menor que
cinco. É isso mesmo. Então, execute essa lógica. E então incremente 425. A lógica não é verdadeira. Não é menor que cinco é
igual a cinco, então pronto. E sua herança no evento. Por exemplo, função,
contagem regressiva, peso, limite, público por
retornos, evento. Então você fez soma igual a zero, ou vento igual a um. A condição é de um, dois, três, conforme você quiser. E a condição, isso
deve ser menos do que limitado. Limite, nós o temos
no parâmetro. Menos ou igual, e
aumentamos em um. Então, alguns adicionamos
esse e à soma. Até terminar até que
a condição seja falsa, depois retorne para su. Opa
9. Exercício de loops: Retorna ao nosso contrato de sala de aula. OK. E neste exercício, acrescente uma função ao sucesso. Ok, adoramos verificar se o
aluno é bem-sucedido ou não. Está bem? Então, funcione. OK. Doente, diz estudante. Então, parâmetros externos. Sim, externo. É uma visualização e retorna Rs. Uma matriz de estrutura. Desculpe. Estudante. Estudante. Uma matriz. E eu, desculpe. Eu, Murray Sim. Então, primeiro, paramos o comprimento
da matriz do aluno. Então, quantos estudantes temos? Ok, 200. OK. O comprimento é igual ao comprimento do StudentTT
. É isso mesmo. E então criamos primeiro. OK. Vamos criar a
matriz de estudantes. Outra matriz para armazenar apenas
o aluno bem-sucedido e depois devolvê-lo. Está bem? É estudante. F são estudantes, e é uma matriz. Memória. E digamos que sucesso, sucesso, é igual a novo. Ok, a instância
do estudante Ray. Então, desculpe, o aluno estrutura o aluno
calibra, e pronto Isso é um erro. Está bem? Argumento errado, conte para o argumento zero dado
, mas esperado. Está bem? Isso porque é assim que começamos na
memória, não no armazenamento. Então, quando você classifica uma
matriz, na memória, você precisa especificar o site, especialmente se for uma estratégia Se for uma matriz inicial, você precisará especificar o tamanho Então, qual o tamanho, neste caso é o número do aluno
bem-sucedido. Não temos quantos sucessos. Então, criamos um loop para
contar esses alunos. Portanto, 4156 igual a zero deve ser menor que o
comprimento da matriz dos alunos Eu digo, menos do que o comprimento. E então aumentamos em um. Então, criamos uma conta, contador, desculpe, contador. Então, no estudante de sucesso, o sucesso sempre termina. Tudo bem. Adicione a declaração if
se os alunos indexarem. Digamos que estudantes
zero índice zero,
estudantes somam sucesso, a variável da estrela
sucessequal, o que é igual Então, esse aluno é um sucesso. Lance para que possamos incrementar a
contagem mais mais mais. Então, quando os
loops terminam, que significa que o I é
igual ao comprimento Por que não fazemos isso da mesma forma? Porque isso eu,
sim, é igual a zero. Inicializamos por zero. Digamos que o comprimento seja, por exemplo, cinco,
temos cinco alunos. O I é zero é um é dois, é três é quatro. Ok, quatro é menos de cinco, mas há cinco estudantes. É por isso que não somos iguais a
listas nem iguais. É isso mesmo. Então, quando a conta estiver concluída, teremos o número
do aluno bem-sucedido. Então, fixamos o tamanho da matriz
de tratos por desconto. É isso mesmo. E então criamos
o mesmo loop, o mesmo Mas desta vez, adicionamos esse aluno. Nós o levamos à matriz de sucesso. Ok, assim. Então, seis. Seis para empurrar Aluno: Olá. Não é verbal. Instrui os alunos. Fora do armazenamento. Sim. OK. Não
criamos um impulso. Temos que criar assim. Igualmente, dizem os estudantes. E, finalmente, esse sucesso. Ok, vamos compilar. OK. Por padrão, é autocompilador, então é
compilado com sucesso Então, vamos implantar esse contrato
e dizer: o que aconteceu? Ok, estudante. Vamos adicionar um aluno como um. É Bob. Bob é o primeiro a
ter 1510 filhos. Desculpe. Verdadeiro. Então, há um dez,
a menos que sejamos gêmeos. Está na hora. É verdade, claro. Outro. Cinco. Digamos, Victoria, Victoria. E digamos que sejam apenas quatro. Desculpe. Então, quatro, são
quatro. É isso mesmo. Agora vamos
pegar seis como pessoas. OK. Ok, aqui está. Há um, Bob, de 15 anos, até o fim. Dez, Alice, 20,
até o fim. É isso mesmo. OK. Criaremos
essas funções. Parabéns. Está bem?
Esse é o exercício. Vamos passar para a próxima etapa.
10. Modificadores e requisitos: Essa é a coisa mais legal. Outra coisa legal, e
a solidez são os modificadores. Os modificadores
são basicamente um trecho de código. Dentro das facções. Então, por exemplo, você
tem um trecho de código. Você precisa criar esse código toda vez
em todas as facções. E isso é gás Cosa, tempo e assim por diante Então, o que você precisa fazer é criar um modificador e toda vez que
quiser executar essa lógica, basta chamar esse
modificador. É isso mesmo. Ok, digamos que o modificador seja uma função. Você pode ver isso. Ok, modificador. Certifique-se de que somente o proprietário possa alterar o
código das funções do proprietário. Portanto, há uma
função de alteração de proprietário para alterar o proprietário. Então, o dono, quem é o
dono? Existe um construtor que significa a função que você chama ao implantar
o contrato. Então, depois de implantar o
contrato, o remetente da mensagem. Então, quem implantou esse contra? Eu, por exemplo. Então, eu
implanto esse contrato. Então, eu sou o remetente das mensagens. Esse remetente armazena
na variável honra. Então, eu sou o proprietário
desse contrato SMRT. É isso mesmo. Mas existe uma
função para mudar o proprietário. Mude o proprietário. Então, se alguém ver essa função,
Oh, mude o proprietário. Talvez possa chamar essa
função com seu endereço, e ele construirá o proprietário, o administrador do contrato. E esse é o risco. Então, o que
fizemos, o que precisamos fazer é garantir que essas funções sejam
chamadas apenas pelo proprietário. É por isso que adicionamos esse
modificador, na honra. Portanto, aqui exija que a mensagem
envie com igual honra. Se a mensagem for remetente,
quem chamou essa função? Aqui está um modificador da honra. Isso é executar, depois
a carta explícita da corrida. Então, só honra, eu
chamo as funções. Eu não sou o dono. Eu
chamei as funções. Em seguida, a mensagem é enviada. Então, mensageiros são iguais a honra,
não, eu não sou a honra. Então inverta, e a
honra estará segura. Caso contrário, se o proprietário
chamou essas funções, atribui uma nova honra, então ele chamou essas funções, esse é Sander, que é o proprietário que chamou
essas funções Ele ligou para o
dono, é verdade, então mude a honra
para a nova honra. E aqui está esse ícone aqui, esse é o código do pulso, ok? Execute isso primeiro e
depois o código do pulso. Espero que isso faça sentido. Caso contrário,
explicamos isso passo a
passo no projeto da sala de aula. Fazemos muitos desses exercícios com isso. O que você pode exigir? Vimos isso nos
modificadores, explicamos agora. O modificador
é basicamente uma condição. Se estiver localizado, como se fosse um segmento. Certifique-se de que a condição esteja concluída. Se a condição estiver
concluída, continue. Caso contrário, reverta. É isso mesmo. Então você cria essa condição. E o resto do SMAT
conta, o resto continua ou reverte com base
nas condições Por exemplo, nessas funções, há uma permissão MAX de
três funções que significam que você ganha 256 quantias
públicas. Ok, obrigatório. O valor é menor ou
igual à licença MAX. Se sim, se essa
condição for verdadeira. Então continue, o que significa que você pode
ajustar o resto da lógica. O que significa que significava esse valor. Se não reverter e mostrar isso, não
mais do que o permitido Por exemplo,
ligo para as facções e disse a quantidade dois, então dois é menor que três Ok, quero dizer essa quantia. Eu, por exemplo, ligo novamente com o FOB para obter uma permissão máxima menor
ou igual. Não. São mais do que três. Então, o fígado da transação
e mostre este. Não mais do que três, permita. Essa não é
apenas uma opção para saber qual é
o problema no código Mostre isso no conceito.
11. Modificadores e requisitos (exercícios): Vamos adicionar um modificador ao nosso contrato inteligente de
sala de aula. Ok, primeiro exercício, crie uma função para excluir o aluno, crie apenas o modificador do proprietário, implemente o modificador para permitir que somente o proprietário
chame os fatos Primeiro, vamos criar
os modificadores. Comece com a palavra-chave modificadora. E o nome está ligado. Desculpe. Ana. No Onur.This e aqui adicionamos as declarações require require e entramos escutando, ok E faça assim. É isso mesmo. Esse cabelo de ícone é basicamente o resto da lógica e da facção. Ok, aqui está uma lógica do
código do modificador aqui. E então isso
dirá ao compilador, ok, execute este primeiro e depois vá para o
código restante da função Você não pode fazer
isso. Diga, OK, execute o código primeiro
das funções, depois execute esta. Então, isso
é basicamente a lógica da função. OK. Crie uma
função para excluir essa função inferior. Está bem? O atraso
na identificação, é
claro, externo, então fazemos o mesmo neste. Comparamos o ID porque
queremos excluí-lo no grau de adivinhação, queremos excluir esse aluno na matriz e no mapeamento. Primeiro, vamos excluir
esse na matriz. Para excluir algum elemento na matriz. Basicamente, mova isso para o último elemento e dimensione a matriz. Então, estudantes. Estudantes. Mas
não sabemos a identidade. Não sabemos essa aluna
temos que criar um look. OK. Primeiro,
iniciei a variável de tamanho em
comprimento igual ao comprimento do cadeado do aluno, depois 44206 igual, desculpe, é igual a dez, menor
que o comprimento Desculpe,
eu mais mais mais eu Se. Agora, se os alunos, A, adicionarem ID igual a ID igual, ID
igual dez alunos. O
último que dura é o comprimento, o último índice menos um é igual Estudantes. Estudantes. Começamos isso. Movemos esse aluno para o
último elemento da matriz. E então, basicamente, nós,
estudantes de pop , pontilhamos Pop Pop
nos últimos elementos. E remova-o no mapeamento. Usamos a última palavra T. OK. I D para mapear e
especificar o ID. E é isso. Portanto, essa
função é um risco. Então, se não
implementarmos o modificador, qualquer pessoa poderá excluir
qualquer aluno, qualquer pessoa É por isso que temos que
implementar o modificador somente o proprietário pode chamar
as funções Então, no exercício
obrigatório, adicionamos essa linha, ok? Então, vamos passar para os exers
necessários. O exercício necessário. Ah, disse que implemente uma
verificação obrigatória para verificar se o usuário está bem com o
chamador ou o usuário Ele é o dono do contrato. Basicamente, o único dono. Exigimos
que o remetente chame essas funções seja igual ao proprietário ou implante
este contrato ou não Se sim, siga em frente. Não em reverter transações
e registrar esta. Somente o proprietário pode chamar esse método. E observe. E é isso. Ok, isso é antes
de implantá-lo. Em seguida, pegamos o último e partimos. Está bem? Passe por aqui aquele. Ok, digamos que em
say quan Kemi Digamos que zero. OK. Outro, dez, S, Bob, 20 e três. E queremos deletar
alguém. Mas tenha certeza. Essa conta, quem
implantou esse contrato? Então essa conta, esse cara
aqui é o dono disso. Então, o remetente da mensagem, o proprietário, é esse Primeiro, vamos chamar essa
função com outras. Como é o proprietário, o aluno
excluirá, digamos, um. As transações são concluídas,
pegue a carteira de estudante. Não, é zero,
zero falhas, o que
significa na tupla Primeiro, eu tenho o
ID zero por nome, você vê,
e por meio de resultados. Mas tudo bem, vamos
esclarecer o Ok, aqui. Mas delete após chamar isso de
delete e chamar essa função, obtemos zero e vazio, e no resultado zero e
false, o que significa zero. Digamos que, ok, temos outro. É BG the Bobo, dez, Bob, 20 até.
É deletar esse carro. Mas não é o proprietário
que exclui este. Não, outro. Diga essa. Tente deletar Bob.
Isso é possível? Digamos que esperávamos uma
reversão. Então é Big. Excluir. Ok, é inverso. Por quê? Veja por que é inverso. Basicamente, essa
ação, basicamente, ok, veja só o proprietário
pode chamar esse método.
12. Eventos: É basicamente uma notificação do bloqueio. E
isso é muito útil. Muito, muito, muito útil. É um registro do bloqueio. Ok, há uma função.
Há uma lógica, no final das contas, há um
evento do blockchain Então, isso pode ser
executado com sucesso, então o bloqueio informa e
notifica essa função, ela é chamada e
executada com sucesso Aqui está um exemplo claro, contrato
inteligente. Ok, há uma aba
aqui, uma de funções, chamada contrato inteligente,
e há um evento Então, chamamos de disfunções, e essas funções têm um evento Então, eventos são os blockchains. E este aplicativo está listando ouvintes
de eventos no blockchain Se houver alguma coisa,
atualize o blockchain. Portanto, a cadeia de blocos
notificará o aplicativo sobre esse evento. Por exemplo,
há uma função para adicionar uma
função de estudante no aplicativo. Função para adicionar
o aluno. Ok. Esta função tem um estudante de eventos
e banimento do evento com carteira de estudante e o
nome do aluno. É isso mesmo. E no dia seguinte, alguém que algum estudante
chama essas funções. Com suas informações, em seguida,
adicionadas ao queixo do bloco. Então, a cadeia de blocos, ao
receber esse aluno, ele notifica os aplicativos, dizendo: Ei, há um novo aluno
adicionado à sua tag de aplicativo. Aqui está sua identidade e seu nome. É isso mesmo. Então, eventos, crie
eventos e eventos. Então, no contrato inteligente, criamos um evento como esse
com a palavra-chave events, o nome dos eventos. E desse lado, os dados, quero fazer login, ok? Você foi para 256 indexar os dados
um e os dados da string dois. Portanto, esse índice é
útil se você quiser filtrar os dados. Para acelerar e fazer com mais facilidade. Não. Portanto, isso é muito útil se você quiser
testar suas funções. Vemos isso na estrutura de
fundição. Curso de fundição, desculpe. Então, funções,
funções , algumas
funções. Ok, público. Explore a lógica e, em seguida,
emita esse evento com os dados 1 e os dados
para emitir a lógica do nome, o nome dos
eventos e os
13. Exercício de eventos: Vamos passar para o contrato. Como eventos de exercícios. Ok, eventos, crie um
evento com quatro argumentos. ID, nomeie o resultado bem-sucedido
chamado aluno adicionado
e, em seguida, emita esse evento
na função adicionar aluno Crie um evento com
dois argumentos, ID, nome chamado, aluno excluído e emita este em funções
atrasadas do aluno Ok, primeiro vamos deletar essa palavra-chave c. Event. O nome estudante. Está bem? Estudantes. Não. Então, esse. Ok. E depois, primeiro, o ID. O ID está na vitória 66. IDENTIFICAÇÃO. Sem força. Nome. O resultado termina, não termina. Então, o resultado Sixspola. Ok. Queremos filtrar o aluno, por ID e N, o que significa que esses são os dados
mais importantes. Então, nós o tornamos esse único índice. E, claro, o nome, é
claro, é índice. O outro não é justo. E ele disse, crie
outro chamado Student Delay. Está bem? Como sempre, até mesmo
as palavras do céu que Student excluiu. O ID 256 indexado e o ID. Em seguida, o índice da string de nome, é
isso e o nome. Então, vamos emitir esses eventos. Primeiro, emita esse evento
e adicione facções. Então emita d, e o nome de um aluno a primeira parte é ID, então identifique e nomeie Kate Nims, um cara resulta em resultados Então o sucesso do Bola. Sucesso do Sirk. A função do anúncio é que este
evento é muito ruim. Então, nesta sala de aula inteligente, ele ouve a
lista de bloqueios deste evento. Se alguém ligasse para
esse estudante publicitário. Então, o Bloco
diz: Ei, sala de aula, há outro
aluno em sua carteira de identidade, seu nome, seu resultado e sucesso ou não Ok, esse é o
propósito dos eventos. E, claro, nós
encarceramos este em That's it. Obrigada. O nome desse.
Começaremos o nome aqui. Está bem? Primeiro, salve o
nome para acioná-lo aqui. E é isso. Isso é b, na verdade.
Não desse jeito. É assim.
Essa é a filial. Guarde este e o último. Não. O último na atual. Ok, vamos fazer uma torta. Há um erro. O que? Problema adicionado. Eventos. Recebi o esperado. Ah, eu te ouço. Esse semicícone? É isso mesmo. Foi
compilado com sucesso. É implantar e ver os eventos. Alto ou não? É um... ok. Vamos adicionar alguém. Cinco. Meu amigo Bob Ten e por meio de
Transações. É mostrar a ela ou não? Ok. Aqui está. Aqui está no registro. Aqui está o nosso cara. Lá dentro, é claro. Sim, Heats. Até
estudantes aditivos discutem O índice é verdadeiro. Então, um. Mas qual é o
nome? Sim, Herits. Ok. O ID é cinco acima
e dez e completo.
14. Herança e interações (interfaces): Herança. Então, herança,
aqui está um exemplo, aqui está um carro e um caminhão azuis Portanto, o carro azul tem
algumas funcionalidades. Dirija, reverta e pare. Então, este é um carro geral. Mas o carro verde tem algumas
funcionalidades adicionais porque, na maioria das vezes, ele pode ser rebocado e sair da estrada Então, mas ao mesmo tempo, essas funcionalidades são
acionadas, revertidas e paradas. Então, esse carro verde basicamente herda a funcionalidade do carro normal e adiciona
algumas funcionalidades próprias É isso mesmo. Então, vamos dizer como isso pode acontecer
no contato do SMAT contrato herdado e inteligente usa a palavra-chave
is para herdar
algum contato Por exemplo, há um contato pai int que tem esses
dados pais variáveis. É público. O contrato infantil é
herdado dos pais. Portanto, o filho de contato é pai, que significa herdar
o conteúdo
dos pais e ter dados
variáveis do filho Então, o construtor
e o construtor da criança definem
os dados da criança E a herança no
mundo real é um contrato real. O contato da Azuki
herda o honorável ERC
721 A e o cartão retrinc das importações. Ok, existe uma biblioteca
Zeppln aberta. Então, honorável, isso é
herdar todo o conteúdo, as variáveis e as
funções com visibilidade interna, interna e pública O privado não pode ser herdado. Então, vamos ver como contratar pode conversar entre si e interagir. Interações contratuais. Então, aqui está o usuário
contratado e G. Então, esses dois contatos na verdade, têm muitas
interações porque a chave, os usuários que jogam o G.
Então, nos usuários contratados, essas funções, criam usuário, o usuário atrasado, aumentam de nível. E no contrato do jogo é
começar o jogo e jogar como homossexual. Basicamente, as
interações talvez possam acontecer, chamadas de jogo de estrutura estrutural, cria imediatamente um usuário, que significa destruir um
contrato chamado usuário de criação
ou fim de jogo,
por exemplo, usuário atrasado ou usuário aumentado Então, este contrato, fale com
esse contrato de um usuário. Ok, em
contratos inteligentes, por exemplo, é o contrato A com os
dados e os dados definidos. E aqui está um contrato, contrato B, a interface, vemos o que é camada de interface. Portanto, essa interface tem
as mesmas funções, dados de
conjunto e
dados variáveis. Também é uma função. Então, no contrato B, há um construtor na interface
ao lado do endereço do contrato
A e aqui, e é assim
que as conexões
realmente são criadas É assim que se criam
as conexões entre o contrato A e o contrato B. E, basicamente, quando essa
conexão é feita, você pode chamar os dados definidos e definir a variável de dados como quiser no
Contrato D, assim. Ok, essa função
configura dados no Contato A, você espera até 8.256 dados externos Ok, contrate um conjunto de dados de pontos, chame essas funções no
parâmetro coloque esses dados. Então, essa mudança é por isso. Então, onde está a interface? A interface
é basicamente um pai azul. Ok, há uma sala múltipla. É como jogar como funções. Está bem? Então, no mundo real, no contrato inteligente, aqui está um contrato A, ganhe 256
dados públicos e de conjuntos de funções de dados à medida que vendemos e na interface, sua função, veja
os dados na interface, você tem que declarar uma
função sem definições O k, o parâmetro, deles. O mesmo k deve corresponder ao nome das
funções no contrato A. E essa é uma variável aqui. Por que criamos nossas funções. Basicamente, porque as funções
são como as funções do Git. E a variável pública tem, por padrão,
funções Gitter, aqui está OK. E isso é útil
quando há uma função, por exemplo, há um contrato
com muitas funções. Por exemplo, é usuário de dados do usuário, mudança
de arquivo, proprietário e assim por diante E no seu contrato, você cria um contrato. Você quer, você não quer
herdar todas essas facções. Só você quer alguns deles. Está bem? É uma mudança de
proprietário e sitauser É isso mesmo. Portanto, você
precisa criar uma interface com a mesma declaração
sem definição. E no construtor, você
declara essa interface
e, em seguida, coloca
essa interface no endereço desse contato OK. É isso mesmo. Então, vemos isso nos exercícios. No remix, aqui estão os
tokens ARC RC 20, tem algumas funções. Esses símbolos, símbolo,
nome e assinatura, fornecedor
total e
saldo e transferem, aprovam e muitas funções E eu quero criar um contrato. OK. Contrate o
teste Lexi. Apenas teste. Mamãe. Ok, Biggs. Le assina as duas fritadeiras. Mãe, hmm. E no meu contrato de sabor, eu quero usar essas facções de
hortelã,
talvez, ou nomear facções Então, o que
vou fazer é não querer usar todas as funções do ART. Eu quero apenas nome e hortelã. Então, o que eu vou fazer é criar
uma interface e uma interface Ok. Interface.
Interface, limite ARC a T. E você vai para o nome
desse nome, nomeie frações Copiaremos a assinatura
dessas frações. Copie este. Público anterior, então
torça para o externo. Como eu disse, toda a função na interface
é externa. Há visão e sem
definições. É isso mesmo. E as funções que eu não vou
usar são, digamos,
digamos que mint Mint W é mint. Sim, isso é o interno externo do
Mint. Faça internamente. Mude para externo,
como eu disse. Externo. E sim. E eu vou declarar este. CC 20. É público e construtor de RC para o endereço do Digamos que ARC dois seja igual a ARC e altere esse
endereço para ARC. E é assim que se
criam as conexões. Agora, meu Airc é o mesmo endereço do ARC com o qual
eu quero interagir Basicamente, digamos que funções. Nome. Digamos que memória de string. Iniciando a memória. Bem, digamos nome. Ok, é público cauteloso e ARC 20 pontos N. Não, sem
parâmetro. Está bem? E só volte então. Retorno. RTs. O que? Tensão.
E o submarino de memória retorna Ko. É isso aí. É mac para você. E é isso. Eu devolvo o nome do ARC. Não, não, não, virtual. Doente para você. Ok, e
o MintiaFaction Fiction Mint. O mesmo aqui Adessen Okay, ARC 20 Mint count Um não. É isso mesmo. É
assim que se contrata interage
usando a interface.
15. Projeto de sala de aula (adicione herança e interface): Reservar agora é um contrato
principal de nível. Criou o
contato do aluno Herit de Astral, Q. Vamos fazer isso. A para herdar
e estudantes. Só isso. E ele disse, crie uma função para verificar se o
aluno é bem-sucedido ou não. OK. Agora, o pai tem todas as funcionalidades
do aluno. Além disso, ele tem
outra função chamada verifica os pais, ele quer verificar se o
aluno teve sucesso ou não. Digamos que função. Está bem? Verifique o sucesso, é só que se chama
sucesso, ok? Sucesso, você compra ID. Ok, seis policiais ou
público, alguma coisa? E Richards. O que é o quê? Bula.
Verdadeiro ou falso. Então, só Bolt. Por meio de ferramentas, vendemos e são facções puras porque queremos
verificar se é verdade ou f. Ok, em estudantes de TI,
TI S diz igual a verdade verdadeira Caso contrário. Desculpe. Como. Retorne FOS. Sim. Ok, basicamente, você pode, você
pode simplesmente fazer assim, ok. Desculpe a devolução. Devolva a TI aos alunos.
ID Thought Success. É isso mesmo. E esse
retorno é verdadeiro ou falso. Isso lidera as vendas. Isso só para Não, isso é uma garota Sem saber apenas três ou quatro. Não, para verificar se
há sucesso ou não. Talvez você possa adicionar alguma
lógica aqui, ok? O bônus ou pode
fazer qualquer coisa aqui. Mas se eu voltar, não, talvez seja isso. OK. Eu acho que é muito bom. Mas você tem a escolha. Ok, vamos implantar esse bate-papo C. Sem excluir este. B. Você não come
esse. Os pais. Sim, os pais. Vamos implantar o pai. Ok, agora criamos um contrato de pais e
herdamos os alunos, depois adicionamos funções adicionais que são um sucesso bem-sucedido Ok, o pai agora tem
a identidade de seus alunos. Portanto, verifique se é verdadeiro ou falso. Então, quando implantarmos este, podemos pará-lo e reimplantá-lo Nossa, temos todas as funcionalidades
do contrato estudantil Além disso,
verificamos com sucesso. Vamos adicionar cinco cutucas. Sempre meu amigo Bob. E depois dez. Através. Esse cara é bom.
Sempre terminado. Em seguida, verificamos cinco Oh,
até. É isso mesmo. Adicione outro.
Paredes. OK. São dois a menos Desculpe, Alice, novamente. Cinco. E falso descanso, verifique se os pais de Alice estão com os Ok, exercício desta
interface, TT T T. Ok, você não precisa
deles Na verdade, nós não precisamos deles. Envie-lhe uma memória. Você tem que pegar esse. OK. Porque a interface que existe
em B, o aluno cria duas
funções no aluno de anúncio Então, vamos até o
estudante de publicidade. Ele é estudante. Ok, vamos copiar este. E por que precisamos desse
só para esse tipo? É porque eu tenho esse
cabelo e sou estudante. Então, neste contrato ainda não
está definido, então é por isso que eu
copio e colo a estrutura do aluno no contato
do aluno Ok, aqui está a função. Ok, vamos deletar
essa linha por linha. Entenda como isso está acontecendo. OK. Primeiro, ele disse, adicione funções estudantis. Então, adicionamos a assinatura da
função. Vamos até o estudante estudante. Ele está em eventos. Ok, vamos copiar isso. Aqui, F. E é isso
sem definição E aluno G, vamos pegar a assinatura do
aluno G. Somente assinatura. Ou aqui está uma assinatura. É isso mesmo. Eu fiz. Então, agora
temos duas funções. Aluno chefe, pegue o aluno. E criamos, eu disse, Ok, vamos fazer todas essas coisas para
responder essa linha por linha. OK. Ok, crie
um contato com o professor. Aqui está. Crie um construtor para assinar o contrato estudantil,
ignorando-o como parâmetro Ok, estudantes do mundo. Eu disse que é público
e compacto para estudantes. E construtor
construtor, passando o endereço do contrato estudantil
e um contrato estudantil
igual a I estudante igual a I Converta isso em interface, pegue o aluno. É isso mesmo. Agora, criamos a
conexão entre o contrato do professor
e o contrato do aluno. Agora temos a possibilidade de chamar a função
de adição do aluno. Então, criamos uma função.
Vamos chamá-lo de sentar meu aluno ou adicionar meu
aluno como quiser, com o mesmo parâmetro. OK. Você pode adicionar as
funções que quiser. E chame essa função de contato do
aluno primeiro. Mas, mas o que? Aqui
está a possibilidade de adicionar funções e dar uma função ao
aluno. Está bem? Passe o ID, o nome, o
resultado, o sucesso. Ok, o que é sucesso aqui,
então adicionamos apola Success. É isso mesmo. Nomeie os resultados todos concluídos. Então outra função é
função, pegue meu aluno. Você executa ID por ID. É a força externa, a
visão e o retorno. Você precisa especificar essa
interface porque ela retornará isso OK. Portanto, isso não é o aluno que
não distrai o aluno. Não, é uma distração
da interface. É por isso que adicionamos
isso e o dot student. Vamos pegar literatura. O que é. Ok, estudante de um litro, pegue aluno e passe
a carteira de identidade. É isso mesmo. Ok, chamadas de contato. Vamos compilar este. Ok, foi compilado
com sucesso. Marca de verificação. Vamos implantar a
interface primeiro. Hm não posso. O que? Ninguém
pode implantar este. Uau. Ok, implantamos os alunos
primeiro, vamos implantar. Está bem? Essa
marca de verificação. Eu adoro isso. E os parâmetros do nosso contrato
estudantil. Então, vamos implantar este. Foi compilado
com sucesso. Deploy. Desculpe. Estamos passando primeiro
o endereço do aluno. Está bem? E o construtor Porque quando você
implanta o contrato, ele é chamado diretamente
de construtor Então, passamos o endereço
do aluno e pronto. Mãe, hmm. E esse é meu aluno
e meu aluno. O contrato foi implantado e vamos adicionar um aluno e um professor Verdadeiro. Bob é meu aluno. Resultados de Bob. Digamos que dez. Ok, é verdade. Esses tapetes de verificação. É isso mesmo. Digamos que três. Minha aluna Alice. Vá trabalhar, Alas 20. Verdadeiro. Vamos manter meu aluno com dois. Aqui estão dois, Bob,
dez, até o fim. E o que? Sim, três em Alice. Aluna Alice. É isso mesmo. E os anúncios do estudante
Cuts 0d60 CD seis a quatro. Isso é tudo para esta licença. Ok, vamos terminar este.
16. FINAL: projeto do desafio FUNDME: Finalmente, o projeto Fund Me. Portanto, esse projeto é mais complexo e há um novo
conceito nisso. Você precisa saber antes de
começar este projeto. Ok, Pike trabalha basicamente, quando você comercializa um
endereço a pagar, esse endereço aceita oito fundos Caso contrário, basta
declarar um endereço normal que também
não pode ser aceito E qualquer iteração para esse
endereço, ela será perdida. Outra coisa que você pode comercializar a
pagar são funções, funções, funções de construtor
, receber fallback,
todas essas funções, que
você pode Depois de comercializar uma função, pagável, para que essas funções
possam aceitar Ether, que significa que quando você
chama essas funções, você pode enviar um pouco de éter
para É uma mensagem do
remetente, o que significa manter o endereço de quem
essas funções funcionam valor do ponto da mensagem são os dados, os fundos que você envia
com esta chamada, exatamente, suas funções de chamada e você envia um pouco de Ether Portanto, o valor do ponto da mensagem são os
fundos que você recebe e envia. É por isso que, na etapa três, há funções divertidas
que permitem ao usuário enviá-lo. Portanto, é o
valor do Sr. Dot neste caso. Então, em funções,
há uma segunda etapa, proprietário. Ok, o proprietário, aquele
que implantou este contrato. A contribuição mínima
é como um limite. OK. O valor mínimo que
você precisa enviar
para este contrato, as funções infantis,
existe um usuário que pode enviá-lo, que significa que você deve
comercializar as funções a pagar E então armazene esse
valor em um mapeamento. Mapeamento com endereço até o valor. Endereço para, você foi, que significa a senhorita
GSander que enviou
quem chamou essas funções
e enviou esse comedor e o comedor
que enviou quantia, o
que
significa inato o
nome, por exemplo, saldo,
saldo miss remetente saldo miss E conforme exigido
acima. É isso mesmo. E passo a passo para declarar suas funções de retirada
. Criar as funções de saque só pode ser
coletado pelo proprietário, ou seja
, somente no fogo
e recém a contribuição. Então, essa retirada, envia todo o saldo do
contrato para o proprietário, depois redefine o mapeamento, redefine para zero, o que significa,
novamente, que o jogo acabou. Portanto, envie todo o éter
deste contrato para
equilibrar o proprietário
e repouse o saldo E sim, então, como
enviar todo
o contrato , basicamente,
é endereçar este endereço. Esse é o endereço
do contrato. Resolva esse
saldo de pontos. É isso mesmo. Como, por exemplo, um usuário, por exemplo, endereço usuário,
endereço dot Balance. Roteador, o
saldo desse endereço. E o modificador CP cinco, eu defini e CP seis, um contrato não pode ser aceito Ether até ter duas funções, C ou funções de fallback Caso contrário, o éter desaparecerá. Portanto, o recebimento é um gatilho que é acionado quando o
contrato sai do éter, zagueiro é acionado
quando o contratante
aceita o éter Explicaremos mais duas
funções no curso do fundo. Para segurar Ether. É isso mesmo. E S four é implantado
no Support, um bônus. Ok, ou, o principal colaborador. É isso mesmo.
Parabéns. Um grande obrigado por fazer este curso. E estou muito empolgada em
ensinar a você o primeiro passo para entrar na cadeia de blocos e aprender essa linguagem
poderosa. Então, solidez, ok, eu
adoro isso pessoalmente. É uma linguagem linda. E mais do que isso, quando
você aprende a solidez, então você tem a solidez e
experimenta esse código usando fundição,
isso é incrível . Isso é incrível. Portanto, no próximo curso
sobre o projeto, fornecerei a
solução desse projeto com conceitos
adicionais, como pagamento, recebimento, retorno, conforme adicionamos Sabemos o que é um chili, chili
C, muito e muito mais Então, nos vemos no projeto eu. Mais uma vez, muito obrigado.