Tutorial de Solidity para iniciantes - curso completo | Lhoussaine Ait Aissa | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Tutorial de Solidity para iniciantes - curso completo

teacher avatar Lhoussaine Ait Aissa, Smart Contract Developer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Bem-vindo ao Solidity: sua jornada começa aqui!

      2:23

    • 2.

      O que é Solidity? Desbloquear seu poder para construir DApps

      6:24

    • 3.

      Prático: criando seu primeiro contrato inteligente de Solidity

      6:22

    • 4.

      Noções básicas de Solidity: variáveis, funções e matrizes explicadas

      16:14

    • 5.

      Crie e implante uma calculadora na Sepolia Testnet

      12:19

    • 6.

      Solidity intermediário: dominando mapeamentos e estruturas

      5:20

    • 7.

      DApp em sala de aula: seu primeiro projeto de solidez intermediário

      17:03

    • 8.

      Dominando loops no Solidity (simplificado)

      2:22

    • 9.

      Loops de solidez: exercícios práticos para iniciantes

      8:59

    • 10.

      Modificadores de solidez e requisitos desmistificados

      5:31

    • 11.

      Modificadores e requisitos: desafios de prática no Solidity

      11:14

    • 12.

      Eventos de solidez: como eles funcionam e por que eles importam

      3:23

    • 13.

      Eventos em ação: exercícios de solidez interativos

      6:02

    • 14.

      Herança e interfaces: criando contratos mais inteligentes

      14:29

    • 15.

      Finalizando DApp para sala de aula: adicionando herança e interfaces

      14:05

    • 16.

      O desafio de solidez definitivo: DApp FundMe

      5:28

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

10

Estudantes

1

Projetos

Sobre este curso

Curso de fundamentos de solidez

Criei este curso com muito ❤️ porque queria ter algo assim quando estava começando como desenvolvedor de blockchain.

Espero que você goste!

O que você vai aprender neste curso:

  • Fundamentos de solidez: comece construindo uma base forte em variáveis, funções e matrizes. Você também vai criar um contrato de calculadora básica para aplicar seu conhecimento.

  • Implantação e verificação de contratos: aprenda como implantar contratos do Solidity na Sepolia Testnet e verificá-los no Sepolia Scan, garantindo transparência pública para seu trabalho.

  • Conceitos de solidez em profundidade: ganhe experiência em conceitos chave, como mapeamentos, estruturas, modificadores, exigindo declarações e manipulação de eventos para melhorar a funcionalidade do contrato.

  • Desenvolvimento de contrato em sala de aula: crie um contrato completo em sala de aula com características do mundo real, como registro de estudantes, gerenciamento de registros e atualizações dinâmicas.

  • Técnicas avançadas de solidez: domine tópicos complexos, incluindo loops, herança e interações de contratos para aplicações descentralizadas escaláveis.

  • Projeto do Desafio Capstone: coloque suas habilidades à prova criando um Contrato FundMe. Implementar recursos avançados como funções pagas, funções de recebimento/retorno e integração do Chainlink Oracle para buscar dados do mundo real diretamente na cadeia.

No final deste curso, você terá as habilidades e a confiança para desenvolver contratos inteligentes e projetos de blockchain do zero. Perfeito para desenvolvedores aspirantes e entusiastas de blockchain que querem avançar em suas carreiras!

Conheça seu professor

Teacher Profile Image

Lhoussaine Ait Aissa

Smart Contract Developer

Professor

Hello,

I'm Lhoussaine Ait Aissa, a passionate Smart Contract Developer and Security Researcher with expertise in blockchain technology. My skills focus on developing secure, efficient, and scalable smart contracts, auditing DeFi projects, and discovering vulnerabilities in complex systems.

In addition to blockchain development, I am a dedicated problem-solver who enjoys exploring innovative solutions to enhance the reliability of Web3 applications. On Skillshare, I aim to share my knowledge and experience to help aspiring developers and security researchers master the art of blockchain programming and security.

When I'm not coding or auditing, I enjoy exploring new technologies and contributing to the growth of the blockchain ecosystem. Let's build a secure and d... Visualizar o perfil completo

Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

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.