Construa um aplicativo de gerenciamento de bibliotecas descentralizado com Solidity | Rahul Agarwal | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


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

Construa um aplicativo de gerenciamento de bibliotecas descentralizado com Solidity

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

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.

      INTRODUÇÃO DO CURSO

      0:53

    • 2.

      Como criar um novo projeto hardhat

      7:39

    • 3.

      Chaves de alquimia e Metamask

      9:04

    • 4.

      Como criar contrato de biblioteca

      6:54

    • 5.

      Funcionalidade para buscar livros

      12:45

    • 6.

      Como criar um novo arquivo de teste

      13:14

    • 7.

      Teste de unidade para adicionar e buscar livros

      13:59

    • 8.

      Executar os testes

      5:05

    • 9.

      Como escrever o script de implantação

      4:54

    • 10.

      Trabalho no frontend de js

      9:46

    • 11.

      Funcionalidade para connet MetaMask

      11:18

    • 12.

      Funcionalidade para adicionar um livro

      16:32

    • 13.

      Funcionalidade para buscar livros

      9:29

    • 14.

      Como criar um componente de livro

      18:52

    • 15.

      Funcionalidade para alterar o status do livro

      5:10

    • 16.

      Teste o aplicativo completo

      4:40

  • --
  • 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.

44

Estudantes

1

Projeto

Sobre este curso

Blockchain é uma tecnologia chave por trás da Web3. É mais frequentemente associado ao bitcoin de criptomoeda e é a tecnologia que o sustenta. O blockchain de bitcoin é um livro público de atividade da rede de bitcoin. Mas o bitcoin não é propriedade de uma única empresa ou pessoa e não é emitido por uma autoridade central como um banco central. Em vez disso, ela é descentralizada e a rede é mantida por um grupo global de pessoas que executam computadores especializados.

Neste curso, vamos aprender como criar um aplicativo completo de gerenciamento de bibliotecas pessoais descentralizado do zero. Vamos usar Solidity para o contrato inteligente, hardhat para testar e propósito de implantação, Ethers js para se comunicar com o contrato, Metamask para assinar a transação, Próximo js para o frontend e Alchemy como provedor de nó blockchain. No final do curso, você vai entender todos os conceitos necessários para se candidatar a um trabalho de desenvolvedor ou até mesmo criar seu próprio aplicativo no blockchain Ethereum.

Nossa pilha

  • Solidariedade (para escrever nosso contrato inteligente)

  • Hardat (estrutura de compilação, teste e implantação)

  • Reagir / Próximo js (para criar nosso frontend)

  • Ethers (biblioteca web3 para interagir com o blockchain e nosso contrato inteligente)

  • Alquimia (provedor de nó Ethereum)

Conheça seu professor

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Professor

Hello, I'm Rahul. I am skilled in building cross platform application using Flutter. I am freelance developer as well as conduct workshops to share my knowledge with the community.

Visualizar o perfil completo

Level: Intermediate

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. INTRODUÇÃO DO CURSO: Blockchain é a força motriz da próxima geração, que também é conhecida como a árvore verbal. Blockchain reinventa a forma como os dados são armazenados e gerenciados. árvore da Web abraça a descentralização e está sendo construída e de propriedade de seus usuários. Como está em muitas novas oportunidades para desenvolvedores como nós neste dominante. Neste curso, aprenderemos como construir um aplicativo completo de gerenciamento de celebridades descentralizado a partir do zero, usaremos a solidariedade para o paradigma de desenvolvimento de contratos inteligentes para parte de teste e implantação estava sede de nos comunicar com o contrato, MetaMask para assinar a transação, React JS para o financiamento e alquimia é que o blockchain os fornecerá. No final do curso, você entenderá os conceitos necessários para se candidatar a eles para colocar um emprego ou até mesmo construir sua própria aplicação no blockchain akkadiano sem perder mais tempo. Inscreva-se agora e vamos começar. 2. Crie um novo projeto de hardhat: Olá, bem-vindo ao primeiro vídeo do curso, onde aprenderemos como criar um aplicativo de gerenciamento de bibliotecas descentralizado. Então, não vou perder seu tempo explicando o que é a Web três, o que é descentralização e tudo mais. Se você quiser, você pode Google por conta própria. Vou apenas estaticamente para o currículo do curso ou o roteiro do curso. Portanto, o curso é dividido em etapas D7. O primeiro passo será configurar o ambiente de desenvolvimento. Em seguida, criaremos um contrato inteligente. Em seguida, escreveremos o teste unitário. Em seguida, implantaremos um contrato inteligente. Depois de todos esses testes forem bem-sucedidos. Em seguida, usaremos um framework, framework React conhecido como próximos dois anos para construir um front-end. E então usaremos cadeiras éteres no front-end para interagir com o contrato inteligente. E, finalmente, testaremos todo o aplicativo se tudo está funcionando bem ou não. Então, antes de avançar, gostaria apenas de ter certeza de que você instalou máscara Matter e ter alguns interesses acadêmicos de teste em sua conta. Eu não vou me arrumar com, de novo. Assista a qualquer tutorial sobre ele e continue com o curso. Dificilmente será tecnológico cinco minutos, é isso. Agora, antes, antes de trabalhar no aplicativo, você deve pelo menos saber essa pilha de tecnologia. Então, obviamente, estamos usando uma cadeia de blocos de titânio. E solidez é essa linguagem de programação para escrever contratos inteligentes. Em seguida, usaremos o capacete como ferramenta de implantação. Em seguida, carteira MetaMask. Em seguida, a alquimia é um provedor de nó oculto. Ele diz que este é um laboratório para se comunicar com o contrato inteligente, depois HTML, CSS e, finalmente, React JS, ou você pode dizer Next JS. É isso. Vamos começar com o ambiente de desenvolvimento. Primeiro, crie uma pasta. O nome é gerenciamento de bibliotecas. Tudo bem, se você quiser, você pode nomear qualquer coisa e, em seguida, anexar um terminal nele. E para instalar o coração, você precisa primeiro criar um pacote NPM executando o comando e a VM nele. Por quê? Ele inicializará um pacote NPM vazio. É isso. Então você pode ver que esse arquivo package.json está lá. Em seguida, fazendo o estilo hardhead. Esse comando é npm. Instale, trave, trave, salve , tab, capacete e pressione Enter. Certo. Os pacotes hardhead são a dependência mais difícil instalada. Para não criar um projeto hardhat, usaremos esse comando, que nos dará uma estrutura mínima nua, que é capacete NP. Em seguida, pressione Enter. Em seguida, selecione o primeiro que é criar um projeto de amostra B6 e pressione Enter novamente e, novamente, Enter e, em seguida, insira. É isso. Agora, poucas pastas e arquivos são criados. O projeto de amostra pedirá que você instale hardhead por um terroristas mais difícil e poucas outras dependências que tornam o hardhead compatível com o teste falharão e tem celebridade para simplesmente copiar esta linha e cole-a e pressione enter. Ele baixará todas as dependências necessárias para o projeto. Certo. Deixe dependências que eu instalei com sucesso. Agora basta anexar o VS Code Editor e anexar sua pasta do projeto nele. Estes são os arquivos fictícios que a cabeça dura nos fornece. No próximo vídeo, incluiremos chaves de alquimia e máscara Meta na implantação da configuração Hardhead. Obrigado. 3. Teclas de alquimia e metamask: Oi. Então, um capacete nos dá poucas pastas e arquivos. Vamos entender todos esses passo a passo. Mas primeiro, vamos para o arquivo js de ponto de conflito com cabeça dura. E certifique-se de que estamos apontando nossa rede para correlacionar a rede de teste itanium. E para que isso funcione, precisamos ir antes do URL do nó itanium e de um endereço de carteira. Vr usando curly e não roubar Stone ou qualquer outro porque na Alchemy, essas redes estão sendo depreciadas. Então, certo, não a melhor escolha seria usar a rede caudalmente. Como já tenho uma conta no Alchemy, não vou criar uma nova conta, mas simplesmente vá para alchemy.com. E estou clicando em Login. Você tem que se registrar. É muito simples. Basta conectar sua conta do Google e tudo mais. Nada extravagante. E aqui, depois de criar uma nova conta em alquimia, você será redirecionado para esta tela do painel. Aqui, basta clicar no botão Criar aplicativo. E agora vamos preencher essas informações. nome do meu aplicativo será Gerenciamento de biblioteca, guia. Então a cadeia será tédio, mas a rede será piedosa. E como eu disse, isso é depreciado, depreciado. Portanto, é melhor usar apenas rede fria e clicar em Criar aplicativo. Então você criou com sucesso um aplicativo na Alquimia. Agora, o próximo passo é obter a chave privada do MetaMask. Você pode instalar a máscara Meta acessando o mascote Madame no seu site e instalar a extensão para o seu navegador. Como já o tenho, você pode simplesmente pausar o vídeo e assistir a configuração de uma nova carteira e como obter comedores de teste em sua conta. Porque definitivamente para fazê-lo funcionar, você deve fazer algum teste. Um teste como este. Esta é minha carteira. E apenas fazendo login. Então você pode ver, eu tenho tanto no teste. Come e certifique-se de boba. Você seleciona a rede oralmente nas opções. Em seguida, para obter a chave privada, você precisa clicar nos detalhes da conta, exportar a chave privada e digitar sua senha. É isso. Então você receberá sua chave privada. E isso, este 0 x a d, Essa coisa é a sua chave pública, que agora não é necessária, mas pelo menos você deve saber. Agora, você precisa instalar algumas dependências para escrever essas chaves. Porque escreveremos URL de alquimia e chave privada MetaMask em nossa configuração de hardhead. E para isso, instalaremos e usaremos a dependência chamada dot ENV porque não é recomendável passar essas informações confidenciais diretamente em nosso código. Então, basta anexar seu terminal e escrever npm install dot ENV. Mas também estou instalando Penn Zeplin acrescenta um avião é dizer que biblioteca de contratos modulares, reutilizáveis e inteligentes que retornam sólidos. Portanto, é simplesmente um código pré-escrito que você pode usar diretamente. Nada mais. Vou apenas escrever npm instalar um anexo direto dos contratos de barra Zeplin e, em seguida, espaço D, O, D E e V ponto ENV. Essa é outra dependência. Isso significa que existem duas dependências. E então vamos apenas pressionar Enter. Então, está feito. Agora. Use esse ponto ENV primeiro. Criarei um novo arquivo no diretório raiz pelo nome ponto ENV. Isso é assim. Você pode ver que está no diretório raiz. E então aqui vou criar um bem. Ou você pode dizer algo que armazenará o valor. URL da alquimia é igual a isso, e let g é igual a isso. Lembre-se de que não há nada que seja mina de carvão, tudo ainda diretamente. Estou escrevendo. Agora, para obter o URL da alquimia, basta acessar seu aplicativo e clicar na tecla Exibir. Então você verá esse cookie HTTP simplesmente copiado e colá-lo em sua URL de alquimia como este. E, em seguida, para obter a chave privada da carteira , acrescente a máscara de método. Em seguida, aqui os detalhes da conta, exporte a chave privada e a senha válida Dario e confirme. Copie essa chave e cole-a aqui na chave privada violeta. É isso. Salve e feche-o. Agora, queremos essas chaves em nossa configuração de hardhead. Para isso, acabou de abrir um arquivo de configuração com cabeçalho rígido. E dentro dos módulos ou exportação, certo? Redes, depois chaves encaracoladas. Então, dentro dele, como o nome da rede, estou usando feminino. Então, novamente, chaves encaracoladas. Em seguida, uma propriedade é URL, que usamos esses dados de arquivo ENV de ponto. Temos que escrever o URL de alquimia ENV de ponto de processo. E para fazê-lo funcionar no topo, temos o primeiro exigir o pacote dot ENV. Essa é a configuração de ponto ENV ponto como esta. Dessa forma, podemos acessar o arquivo ponto ENV. E, em seguida, o URL é fornecido. E o segundo parâmetro que temos que enviar essas contas. É no NA, nós simplesmente temos que escrever processo de ponto ENV, carteira de pontos, chave privada. É isso. É isso para a fertirrigação da cabeça dura. Agora, nosso projeto está apontando para a rede de mesa de correlação de alquimia. No próximo vídeo, trabalharemos na criação do contrato. Obrigado. 4. Como criar contrato de biblioteca: Então agora é hora de trabalharmos em nosso contrato inteligente. Crie um novo arquivo dentro da pasta Contratos e nomeie-o Library dot soul. Então a primeira coisa que temos que fazer qualquer contrato é a licença delta e o desvio de DVR sólido e sólido usando o contrato certo e o nome do contrato. Nós daremos o contrato chamado biblioteca. Agora, sou a biblioteca Wesley terá livros. Então, a primeira coisa que faremos é criar uma estrutura de livro. Ou seja, um livro terá algumas ideias, algum nome assim. Basta escrever um livro. Então. Ele terá um ID de livro. Em seguida, o nome do livro. Então, sim, publique. Então, quem é o Arthur? E, finalmente, se terminamos de ler este livro ou não, assim, porque esse conceito será que teremos nossa própria biblioteca onde podemos escrever. Este livro é deixado para ler. Já li este livro assim. Então a estrutura está pronta. Agora, criarei uma variável de listas de livros, que será uma lista de livros do tipo. Ou seja, ele manterá a estrutura do livro. Será um particular e vou apenas nomeá-lo vocalista. Em seguida, mapearemos esse ID do livro para o endereço da carteira do usuário que está adicionando esse livro. Para que mais tarde possamos buscar diretamente que os usuários reservem sem nenhum problema. Então, vou simplesmente escrever mapeamento. Em seguida, você termina em 56 será mapeado para o endereço, e será simplesmente reservar para o proprietário. Novamente, estou dizendo que é um mapeamento da ID do livro para o endereço da carteira do proprietário. É isso. Então a primeira função que criaremos é adicionar um livro. Então, basta adicionar em massa. Então essa função será uma função externa. Ele se lembrará de fora. E ele aceitará poucos valores como string mamary name você em 16 anos. Em seguida, artéria mamária de corda. Em seguida, um booleano de acabado. Essas coisas ele aceitará. Agora, para adicionar um livro, precisamos ter um ID de livro e ele deve ser exclusivo. serviço simplesmente não usará nenhuma dependência externa no momento. Vou dar ao ID o comprimento de nossos folhetos. Esse é este. Como obviamente, depois de adicionar um livro, ele continuará aumentando. Então, sempre isso será único. Suponha que a primeira coisa, começaremos a partir de 0, então esse é o id do livro será 0, depois um, depois dois assim. Então, na lista de livros, vamos empurrar o valor da estrutura. Ou seja, do livro de estrutura irá empurrá-lo. E a primeira coisa que será preciso é o ID do livro. Então dê um nome aqui. Então terminei assim. Então, isso vamos empurrá-lo. Então, automaticamente, o comprimento aumentará de 0 para um. Então, no mapeamento também, farei o mapeamento do livro. Id pertence ao remetente da mensagem assim. Então este livro pertence a isso, a quem quer que esteja chamando essa função. E no final, gostaria de emitir um evento. O evento será adicionado livro. Simplesmente. Ele solicitará o destinatário, destinatário e o ID do livro. Então, isso só será registrado nessa cadeia de blocos. Qualquer externamente que possamos lê-lo é informação. Basta vê-lo como uma função de login. Adicione evento de livro. O destinatário será remetente da mensagem e o ID do livro será o ID do livro. Então, espero que você tenha entendido que este é um código muito básico. Se você vem de qualquer outra linguagem de programação, entenderá o conceito. Obviamente, essas coisas como algo novo. Se você ainda tiver dúvidas, basta ler sobre mapeamento e eventos. E no próximo vídeo, trabalharemos em outras funcionalidades em nosso contrato inteligente. Obrigado. 5. Funcionalidade para buscar livros: Agora vamos trabalhar na funcionalidade para obter todos os livros desse usuário em particular. Então eu chamaria isso, simplesmente obter lista de livros. Será uma função privada. Vou te dizer o porquê. Ele só lhe dará as informações de que estou usando a palavra-chave view e retornará esse livro de coisas assim. Você pode estar pensando por que isso privado, porque eu só quero passar argumentos como booleano terminado. Isso significa se é se estamos pedindo os livros que estão acabados ou que não lemos. Então, com essa função, podemos chamar ou podemos implementar duas funcionalidades. Vamos começar a trabalhar. Você entenderá tudo. Certo? Função de ortografia errada. Certo? Agora, a primeira coisa que eu faria é criar uma variável, nomeie-a. Então, será uma nova lista de livros. E essa terra seria vocalista, terra escura como esta. Ok, então agora no início, contaremos quantos livros esse usuário tem. Porque nesta lista de livros haverá muitos livros de usuários diferentes e diferentes. A primeira coisa que temos que iterar ou percorrer essa lista para encontrar o proprietário do. Ou seja, defina os livros que estão sendo de propriedade desse usuário. Significa isso. Basta criar um loop for. Será quando eu for igual a 0. Eu menos que lista de livros, lista de livros, aterro I plus plus, assim. Então a primeira coisa que temos que verificar é se o proprietário do livro, seja, esse ID do livro pertence a este remetente de ponto de mensagem ou não. É. Como sabemos que a ID do livro começa a partir de 0. E é por isso que começamos isso a partir de 0. E perguntamos que o mapeamento está lá com esse endereço, para que possamos verificar se ele pertence a esse remetente. E outra condição que verificaremos é a lista de livros. I. Terminado igual a, igual ao acabado. Assim. Simplesmente significa, o que significa que este ponto da lista de livros terminou. Essa é essa propriedade. Se é igual à variável que estamos enviando é este booleano, seja igual ou não. Se estiver lá, nessa variável temporária, simplesmente neste local do contador, insira esse valor que é o valor contábil. Em seguida, incremente esse contador assim. Certo? Então agora, sem dúvida, temos todos os livros que são de propriedade do usuário nessa variável, mas esse comprimento é definido como maior, ou seja, toda a lista de livros. Pode ser um 100. E apenas cinco livros estarão lá. Para economizar memória e espaço. Ele criará outra variável. Ou seja, todas essas são variáveis temporárias que são o resultado final. E será, de novo. Uma nova área de livros, mas desta vez, o comprimento disso contava essa terra real. E usarei o loop for para simplesmente buscar todos os dados desses dois distintos. Agora, novamente usado novo int I é igual a 0. Eu menos do que contador I plus plus. Aqui, simplesmente, na matriz de resultados. Copie tudo dessa matriz temporária. É isso. É apenas cópia simples. E finalmente retornou. Isso é assim. Então, novamente, gostaria de explicar primeiro, esta é uma função privada que só vê. Ele não faz nada na cadeia de blocos. Nesta função, estamos enviando um parâmetro chamado finished, ou seja, verdadeiro ou falso. Então, vamos enviar. Então. A primeira coisa que criamos uma variável pelo nome temporário. É uma matriz vazia. Com isso é com o tamanho da matriz igual ao tamanho do livreto estável. Pode ser, suponha, suponha que 500. Em seguida, criamos este contador que começa a partir de 0. E simplesmente pense nisso. Quantos livros são de propriedade do usuário? Se for de propriedade e ele será implementado. E como eu sei, começa a partir de 0, é por isso que, no temporário, eu apenas o envio para a posição 0. Ou então, como enviaremos um valor dentro dele. Então, se você quiser, você pode devolver o temporário também, mas o comprimento é muito porco. Para removê-lo, acabei de criar uma nova matriz com esse comprimento de contador, ou seja, dez e horas, apenas por exemplo. E simplesmente copie cole tudo de dois dias temporários, resultado, variável e retorne o resultado. Agora, o propósito de torná-lo privado era usar esses dois porque estamos criando para funcionar. Primeiro, o nome da função está concluído. Livros. externa visualização externa retorna a memória do livro. E ele simplesmente retornará essa função que é obter lista de livros com valor final para true. E outra função que criaremos e nomearemos, terminaremos. Livros. visualização externa retorna uma matriz de estrutura de livros. E ele retornará a mesma coisa que é, obter lista de livros, mas definitivamente valorizará com false. Então, com essa função, somos capazes de escrever mais duas funções ou então temos que escrever desejo, talvez tenhamos que escrever separado, separado. Será, novamente, o código será repetido e tudo. Portanto, é muito simples. Você entenderá isso passo a passo ou então , pause o vídeo e tente entender a lógica por trás dele. Agora, a funcionalidade final que precisamos é definir esse valor final de false. Ou seja, de verdadeiro a falso e tudo. Porque, obviamente, se eles usarem a leitura daquele livro, ele pode querer atualizá-lo. Então, basta escrever a função. Punido. Então, será uma função externa. Agora, essa função solicitará esse ID do livro e um valor booleano. Terminado. Primeiro, verificaremos se o usuário é o dono deste livro ou não, porque ele só pode ler ou ver seus próprios livros. Este ID de livro pertence ao remetente do ponto da mensagem? Essa coisa estará aqui assim. Em seguida, basta lista de livros. ID do livro, ponto terminado será esse valor. E depois disso, eu gostaria de, novamente, eu fiz um evento. Assim como o conjunto de eventos foi concluído, ele pedirá o ID do livro. E o valor booleano. Aqui. Vamos emitir o conjunto terminado. E estamos enviando esse ID do livro e o valor final. Então é isso. Para nossa biblioteca, contrato inteligente. Nós escrevemos tudo. No próximo vídeo, escreveremos um teste de unidade para garantir que tudo esteja funcionando corretamente. Obrigado. 6. Crie um novo arquivo de teste: Olá, bem-vindo de volta. Como o Blockchain é imutável, então antes de implantar nosso contrato inteligente, devemos escrever testes unitários para garantir que todas as nossas funções e variáveis em nossos contratos estejam funcionando corretamente. E retornando os valores corretos. Usaremos o Mocha Chai para esse propósito. Então, dentro dessa pasta de teste, crie um novo arquivo e nomeie-o Library dot test, desculpe, biblioteca dot js. Agora, vamos certo, o necessário que é importação e toda a biblioteca que usaremos é Chai, isso é assim, temos que escrever. E então a próxima coisa que vamos exigir é os comedores são iguais a exigir e tos. Temos essas dependências quando criamos um novo projeto hardhead. Então, vamos criar nossa mesa. E vamos escrever um contrato de biblioteca. Então, dentro dele. Espero que você saiba como escrever teste usando capacete. Então, agora, antes de executar as funcionalidades e tudo, devemos escrever alguns dados ou algumas variáveis. Como antes de tudo, definitivamente, devemos ter nosso contrato de biblioteca e assim por diante. Vamos escrever essas variáveis. Então, o proprietário que está implantando o contrato. Esta segunda biblioteca que é letras pequenas será como um objeto e verificação do nosso contrato. E isso será uma fábrica, você pode dizer. Em seguida, devemos adicionar alguns dados fictícios à nossa biblioteca em primeiro lugar. Então, vamos apenas escrever o número do número de livros acabados é igual a cinco. Apenas dados fictícios. E secundário nós const num, livro acabado, erro ortográfico. Quando o livro de nicho é igual a três. Então, vamos ter terminado livros inacabada e outra lista de livros finalizada. Então Mark II usa ganchos para organizar a estrutura. Esta palavra-chave de mesa é usada para agrupar todos os nossos testes e podemos ir como Nest MLL. Podemos aninhá-lo. Ou seja, novamente, podemos escrever esse gráfico. Mais uma vez, podemos fazer assim para que possamos aninhar tudo. Depois, há cozinheiro de TI, são os casos de teste e tudo o que usaremos mais tarde. Então temos antes h, é um gancho. Ou seja, temos isso. Temos isso antes de cada gancho também. Portanto, é um gancho que será executado antes de todo o escriba e ele funcione. Então, em palavras simples, o que você escrever dentro disso antesCada um será executado quando nossos casos de teste que são construídos em quatro mesas separadas. Ok, agora vamos seguir em frente. Vamos começar com antes de cada gancho. Dentro dele, eles ganharão uma função sinc. Agora, usaremos essa palavra-chave de biblioteca, que é variável de biblioteca. E nós simplesmente escreveremos aguardar éteres, ponto get, fábrica de contratos. E o nome do nosso contrato é esse. Elaborando. Ok, então teremos este. Deixe a biblioteca, que estará aguardada , implantar pontos da biblioteca. Mais uma vez, aguarde isso. Não precisamos escrever diretamente. Agora podemos pegar o signatário assim. O proprietário é igual a aguardar. Comece. Consiga signatários assim. Certo. Certo, estou apenas verificando. Eu tenho tudo. Tudo está lá. Agora. Essa é a estrutura. Ou seja, ele terá uma lista de valores. O primeiro valor entrará nessa variável. Isto é, esse é o significado dessa afirmação. Agora vamos inicializar esse vocalista sem mobília para esta lista vazia e lugar mais amigável para esta lista vazia. Agora, o que faremos é adicionar cinco dados fictícios nesta lista de livros inacabados e três dados fictícios nesta lista de livros finalizada. Agora, para isso, usarei um loop for que é longe que eu seja igual a 0. Eu menos do que o número de livros inacabados I plus, mais. Assim, simplesmente, criarei um objeto de livro. Objeto ou você pode dizer assim. Então ele terá nome. Ele terá ano. Ele terá, terá um valor de terminado. Isso será falso. Agora, obtenha valores aleatórios de nome aqui em Arthur, já que ele estará fazendo um loop através dele. Vou criar uma função aleatória básica aqui. Assim. Função. Obtenha um número inteiro aleatório. Agora vou apenas definir os dígitos mínimo e máximo e tudo e simplesmente retornar o piso de ponto matemático. Então, não aleatório. Multiplique pelo máximo menos mínimo. Assim. Esta é uma função entorpecida muito básica. Se você estiver usando alguns mais complexos, se quiser alguns números mais complexos, então você deve usar algumas outras bibliotecas. Mas agora, isso fará esse trabalho. Este é apenas um propósito de teste. Vou simplesmente obter um inteiro aleatório. Eu preciso, é de um a 10 mil? E eu vou fazer com que ele fique assim. Mais uma vez, para o ano. Será qualquer coisa entre 1800 suponha até 2022. Então nosso terceiro seria apenas esse número aleatório. Apenas lembre-se, isso é apenas para testes. Quero que alguns dados estejam nesse lado. Agora, depois desse objeto de livro, vou simplesmente escrever aguardar, biblioteca, ponto, adicionar livro e livro. Livro, nome do ponto, livro, orelha de ponto, gancho. Nosso terceiro livro, terminado. E então vou empurrar essas informações em detalhes, essa lista inacabada. Esse é esse valor contábil como este. Então, simplesmente, novamente, isso antes de h ser executado antes de cada teste definido, definiremos o total para teste de unidade aqui. E antes de cada teste, esse pedaço de código será executado. Aqui estamos primeiro implantando nosso contrato e, em seguida, obtendo a instância dele e, em seguida, adicionando alguma caixa fictícia. Agora, novamente, da mesma forma, temos que adicionar dados para este livro que está concluído também. Depois deste livro inacabado, novamente, escreveremos um pouco o mesmo. Então, o que vou fazer é copiá-lo, colá-lo aqui. Então, a primeira coisa que vou fazer é obter esse número de livros acabados. Aqui. Eu igual a 0 menor que o número de livros acabados. Então, novamente, estes serão os livros e este aqui, valor da definição será verdadeiro. Então vou escrever aguardar ponto da biblioteca, adicionar livro, nome do ponto do livro. Então aqui vou enviar essas informações para esta lista de livros finalizada. É isso. Então, finalmente, agora estamos concluídos com isso antes de cada gancho. No próximo vídeo, escreveremos o teste unitário para adicionar um livro e obter todos os livros. Obrigado. 7. Teste de unidade para adicionar e buscar livros: Então, agora vamos escrever nosso primeiro teste para adicionar um livro. Depois disso, antes de cada cláusula. Vamos escrever novamente que descreva grupo e adicione livro. Isso será uma função. Então, dentro dele, use-o. Isso é o que isso vem da biblioteca também. Estes são os casos de teste. O primeiro caso de teste, devemos nos encontrar e reservar o evento. Basta anotá-lo. Se você não está entendendo, definitivamente no final do teste você entenderá o que essa linha significa. Mais uma vez, vamos criar um livro aleatório. Para isso. Copie, este objeto de livro. Aqui. Está tudo bem. Depois disso, basta escrever aguardar x de volta, novamente dentro dele imediatamente. Ponto da biblioteca, adicionar, reservar. Em seguida, escreva essas coisas dentro dela. Basta copiar e colar se quiser. Então isso emitirá um valor que deve emitir. Em seguida, nossa instância de biblioteca, ou seja, instância de contrato. Em seguida, ele emitirá um evento chamado Adicionar livro com argumentos ou endereço NOR. Em seguida, número de livro e finalizado mais o número de um livro finalizado como este. Então, o que quero dizer com esse código, já que no final da nossa função de livro de anúncios nesse contrato de biblioteca, é isso, estamos emitindo isso, certo? Portanto, esse evento é esse, que é o destinatário, que é quem é o dono do livro. E esse ID do livro. E como o id do livro é o tamanho da lista de livros. E em nosso, antes de cada livro, já inserimos esse número de livros que é 53 na lista. Esse limão começa a partir de 0. Então, em palavras simples, o que quero dizer é que já temos uma tarefa que é essa tarefa fictícia nessa lista. E esta será a nove tarefa que somos, ou seja, nove livros, que estamos adicionando, que terá um id oito. Isso terá um índice oito porque na lista de e-mails o índice começa a partir de 0. Portanto, este livro terá um id oito. É isso. Assim. Este livro terá uma identificação oito. Apenas verificaremos se o evento emitirá essas informações ou não. É isso. E para fazer verificação de igualdade ou comparar os resultados esperados com o resultado real, podemos usar o Chai, o que nos dá três afirmações ou seja, isso espera que haja um terceiro também e há deve também, mas usaremos apenas esperar. Agora. Isso adiciona um teste de livro feito. Depois disso, escreveremos outro teste unitário, que será para obter livros. Vamos escrevê-lo. Será uma função novamente. O primeiro caso de teste, na verdade, devemos retornar o número correto disso está correto. Livros inacabados. Haverá uma função sinc. Agora, vamos pegar os livros do nosso contrato. São livros encadeados. Este blockchain será o ponto da instância da biblioteca. Obtenha um livro inacabado que está aqui. Obtenha livros inacabados como este. Então o que esperamos é, em primeira coisa, livros do comprimento do ponto da corrente devem ser iguais ao número de livros inacabados. E então o que faremos é também verificar se livros ou seja, que livros dentro dessa matriz são iguais aos livros dentro desta lista de livros de seu contrato. Para isso, temos que criar uma função que irá verificar livros e, portanto, simplesmente anotá-lo. O código que estou prestes a escrever. A primeira função será verificar um único livro, ok? Serão necessários cadeias de livros e livros. Então, esperamos que o nome do ponto do livro seja igual ao nome do ponto blockchain. Então teremos outra expectativa. Livro. Dot ir dot duas cordas será igual a ponto blockchain, ponto a string. Então, esperamos um livro. Nosso terceiro deve ser o mesmo que n igual ao ponto blockchain Arthur. E agora teremos outra função, verifique a lista de livros. Então, serão livros da cadeia e da lista de livros. Vamos primeiro esperar livros da cadeia. comprimento não deve ser igual a ele, não é igual. Não é igual a 0. Então a segunda espera será o comprimento da cadeia de livros é este comprimento do é este ponto da lista de livros. Então, como temos muitos livros, isso é nesta área também e nesta área também teremos muitos livros. Então, temos que percorrer todos os livros e depois verificar. Então nós temos, teremos um loop de barra. Então. Começará de I igual a 0, eu menos do que o comprimento do ponto da lista de livros I plus. Então, basta escrever const. A cadeia de livros é igual aos livros da cadeia. Suponho que 0 índice primeiro índice assim. Em seguida, o livro será uma lista de livros, que é aqui que não é um teste. E então usaremos esse verificável, que isso verifica um único livro. Isto, para este livro em particular, verificaremos esse nome ou se tanto o nome quanto o autor, cor Eric, não assim no blockchain e no livro. Portanto, estamos simplesmente comparando livros armazenados nesse contrato e livros armazenados na variável local deste teste. É isso. Então, novamente, vá até aqui. O que vou escrever esta lista de livros de verificação. Então eu simplesmente enviarei livros da cadeia. E, em seguida, lista de livros inacabada. Então, definitivamente, deve nos dar uma lista de livros inacabada dessa cadeia. E então listas de livros inacabadas daqui que estão neste teste. E da mesma forma, teremos outra condição para obter o número correto de livros acabados. Aqui. Isso vamos terminar o livro, livros. Então os livros de Jane são iguais ao número de acabados. Isso será livros finalizados iguais. E, em seguida, verifique livretos, ou seja, livros de Jane. E este livro finalizado lista, seja igual ou não. Então é isso. Criamos com sucesso o teste unitário para adicionar um livro e até buscar nossos livros. Está buscando livros que são inacabados e buscando livros que estão acabados. É isso para este vídeo. Vejo você na próxima sessão. Obrigado. 8. Faça os testes: Neste vídeo, vamos apenas escrever nosso caso de teste final e, em seguida, executar todo o nosso teste e ver se está, se está funcionando corretamente ou não. Finalmente, o teste será terminar um livro, ou seja, um livro inacabado. Vamos mudá-lo para finalizado. Então, vamos novamente assim, esse cinza. Em seguida, defina a função final. Esse caso de teste realmente devemos definir o evento finalizado. Em seguida, escreva nossa função. Suponha que vamos levar esse ID do livro para ser 0. Esse é o primeiro livro. Em seguida, olhou. Livro. O acabamento é igual a verdadeiro. Então, basta escrever aguardar, esperar. Em seguida, conjunto de pontos da biblioteca função finalizada. Enviaremos o ID do livro. E esse é o decimal quais genes são verdadeiros. Então ele emitirá. Ele emitirá uma função ou um evento chamado set. Os capitalistas terminaram com argumentos, argumentos, ID do livro e um valor verdadeiro. Então, quando chamamos esse conjunto de terminado aqui, você pode ver que ele emite um evento que tem o ID do livro e um booleano acabado. É isso. É disso que estamos falando aqui. Vamos verificar se é uma reunião ou não. Agora, está na hora. Nós executamos nosso teste. Certifique-se de salvar todos os seus arquivos. Em seguida, no diretório do seu projeto, basta abrir seu terminal e direita e px, capacete, teste e pressione Enter. Lembre-se, se você receber algum erro aqui depois de terminar o adicionado ou depois de corrigir esse erro, use NP x hardhead clean e, em seguida, execute o teste novamente. Isso é executar este teste novamente. Nosso contrato de biblioteca contém alguns problemas. Você pode vê-lo. Certo. Vamos verificar. Temos alguns problemas. Vou voltar para você com uma solução. Então eu consegui a solução. Os erros que cometi foram o primeiro erro foi, ou seja, na quarta linha, eu deveria ter esse capacete, não uma biblioteca de testes. Essas cartas devem vir da biblioteca principal de Howard. E um segundo erro foi: Essa expectativa deveria vir da biblioteca infantil, mas não deve ser maiúscula, deve ser pequena letra que é ACS, pequena. Vamos salvá-lo. E novamente, vou conseguir um novo terminal. Vou ler e px. Eu tinha limpo. Então vou adicionar NP x tinha testado. Vamos ver. Agora tudo está funcionando corretamente ou não. Então, finalmente, você pode ver todos os casos de teste estão mostrando, ok, isso significa que estamos prontos para ir. No próximo módulo, enviaremos nosso contrato inteligente para o blockchain. Obrigado. 9. Como escrever o roteiro de implantação: Olá, bem-vindo de volta. Neste vídeo, escreveremos scripts de implantação para nosso contrato inteligente. Basta ir para a pasta de scripts e criar um novo arquivo pelo nome implantar dot js. Agora vamos começar a trabalhar nisso. Vamos exigir o pacote ethers da dependência hardhead. Agora basta escrever esse pedaço de código que é necessário para a finalidade de implantação. Primeiro de tudo, criaremos uma fábrica contratada. E espero que os comedores obtenham fábrica contratada. O nome é biblioteca. Em seguida, crie uma instância que seja contrato para o ponto de negociação. Implante. Um contrato de peso implantado. Vamos esperar para garantir que o contrato esteja sendo implantado. E depois do dia. Depois disso, vamos consolar o endereço do contrato log dow, o que é muito importante. Usaremos este endereço de contrato mais tarde no front-end. Basta escrever o endereço do contrato. E então vamos escrever outra função. Para executar a função acima assim. Tenha um bloco try catch. Queremos dizer, então, processar essa saída 0 se tudo estiver bem. E se tivermos algum somador, então você lê o log de pontos do console, talvez erro registrado. E vamos escrever saída do processo. Um. Podemos editar o botão Sair adder. E finalmente vamos escrever e executar o main aqui, digamos. Portanto, esse é o script de implantação. Basta salvar tudo. Em seguida, para implantar apenas o terminal anexado na pasta raiz. E simplesmente digite NP x. Heart executou scripts. Implante dot js. A rede é piedosa e pressione Enter. Vamos ver se está tudo bem, então obteremos nosso endereço de contrato. Como nosso contrato foi implantado com sucesso. Basta copiar esse endereço e simplesmente obter uma vírgula, ou seja, Command. E apenas salve-o para que não percamos essas informações. Agora, se você quiser, você também pode verificar o contrato. Informações em. Divino. Esters pode simplesmente acessar este site e simplesmente colar o endereço do seu contrato e apenas pesquisar. Veja, temos este contrato que está sendo carregado são implantados há 52 segundos. Você pode apenas verificar se sim, nosso contrato foi implantado dias de sucesso, sem problemas nele. Então é isso para este vídeo. No próximo módulo, trabalharemos no front-end e depois interagiremos com nosso contrato diploide. Obrigado. 10. Trabalhe no frontend do próximo js: Olá. Neste módulo, trabalharemos no front-end do nosso aplicativo e usaremos o próximo JS, que é área ainda framework. Agora, na pasta do projeto, basta escrever o comando npm. Crie, próximo aplicativo. Então, também usaremos os vivos lá. Basta escrever css tailwind e eu vou nomeá-lo cliente e pressionar enter. Ele criará um próximo aplicativo JS básico. Ok, então nossa próxima aplicação de cadeiras foi criada com sucesso. Agora, para interagir com nosso contrato inteligente implantado, precisaremos de duas coisas. Endereço do contrato e essa ABI. Para obter a ABI, basta copiar o arquivo json de ponto da biblioteca, que está dentro de artefatos e pasta Contratos e, em seguida, biblioteca. Então também temos esse arquivo json de ponto da biblioteca. Este cliente. E esse cliente cria uma nova pasta chamada ABI. Nova pasta aqui, ABI. E, em seguida, dentro desta pasta, basta colar o arquivo json do ponto da biblioteca. Ou seja, esta é a ABI que é necessária para a tarefa, ou seja, para este endereço de contrato. Basta criar um novo arquivo chamado config dot js dentro do diretório do cliente. Diretamente isso está dentro disso, crie um novo arquivo chamado config dot js. E por dentro, basta escrever exportação, tarefa const. Ou você pode simplesmente dizer não contrato, você pode simplesmente escrever contrato. O endereço é igual e, em seguida, copie diretamente este endereço aqui e salve-o. Usaremos isso mais tarde. Agora, se você quiser, você pode simplesmente removê-lo. O endereço aqui. É isso. Agora também teremos, precisaremos instalar algumas dependências para nosso próximo projeto JS. Então, basta ir para esse diretório do cliente no terminal que é cliente de CD. E simplesmente escreva npm, instale comedores , digite componentes com estilo e pressione Enter. Então, os comedores interagem bastante com o contrato inteligente. Os tipos verificarão os adereços e vamos ver o que eu cometi erro. Eu não fiz componentes se espalhando um pouco. Combo. Os tipos Nance verificarão a passagem de adereços para seus componentes, atenderão às suas condições. E certifique-se de que os dados recebidos sejam válidos. Talvez tipos, que é apenas para garantir que os dados enviados para o componente sejam válidos, então esses componentes de estilo nos permitem criar componentes e anexar estilos a ele usando tag ES6, modelo literais, os estilos que estão retornando CSS. Em palavras simples, é um pacote de terceiros usando o qual podemos criar um componente como uma variável JavaScript que já está estilizada com código CSS. Você entenderá isso mais tarde. Então agora basta executar, nosso aplicativo é npm run dev. Ok, agora vamos simplesmente ir para isso. É host local e veja nosso próximo aplicativo JS foi escrito com sucesso. Então é isso. Mais uma vez, vou o quê? Vou fazer isso pequeno. É assim. O endereço do contrato, apenas as cartas posteriores do CamelCase que eu gosto, eu gosto dessa maneira. Então, a próxima coisa que faremos é trabalhar no arquivo de índice, que está dentro das páginas. Aqui. Temos esse arquivo TypeScript de ponto de índice. E vou remover tudo daqui e simplesmente começar a escrever do zero. Primeira coisa que vou deixar você ficar e usar pessoas afetadas do React. Então terei o endereço do contrato. Endereço de contrato do arquivo de configuração, que está fora disso, ou seja, esse arquivo de configuração. Então eu vou importar o pacote éteres, éteres. Então vou importar nossa ABA que esta biblioteca da biblioteca de barras ABA dot json. Em seguida, importarei a próxima página da próxima. Então também vou simplesmente declarar janela de leads. Para que, mais tarde , não dê nenhum erro. Isso é ótimo. Nosso componente que é explorado em casa para o atraso. Então agora temos nosso componente irradiado se nossa próxima aplicação está pronta. No próximo vídeo, trabalharemos em como conectá-los a carteira MetaMask em nosso aplicativo. Obrigado. 11. Funcionalidade para criar uma conexão com o MetaMask: Olá. Neste vídeo, trabalharemos nessa funcionalidade para conectar nosso Liam válido é a massa molar à nossa aplicação. Então, vamos primeiro trabalhar na função e chamá-la de conexão. Ou deixe. Vamos embrulhar tudo nele. Tente pegar. O bloco simplesmente escreverá o somador console.log conectando-se ao meu termostato. E simplesmente escreveremos isso adicionado. Agora primeiro, obteremos o objeto do estádio, que é injetado no nosso navegador. Então veremos se temos um TDM ou não. Se não tivermos um TDM, simplesmente escreveremos console.log. Você pode mascarar não detectado e retornar. E se tivermos, então vamos verificar se ele está conectado à rede correta, seja, a rede Garlin ou não, simplesmente receberá a solicitação para eles minha vez, que é conhecida como auxiliar em cadeia. E então sabemos que sabemos que ID feminina é 0, X5, isso é cartilagem e ID. Então, vamos compará-lo se o Shane AD não for igual a correlacionar a cadeia AD. Nesse caso, basta alertar que você não está conectado a uma rede e simplesmente retornou daqui. E se isso também estiver bem, então simplesmente obterá essa conta. Este ponto um pedido. Essa solicitação e ouviremos solicitar que meu terceiro, que é conhecido como contas de solicitação, assim. E então devemos ter um estado que é variável aqui. Vou nomeá-la conta corrente. Para alterá-lo, simplesmente definirei a conta corrente. Espero que saiba que você declara o gancho no React. Simplesmente significa que esta é uma variável e seu valor inicial estará vazio. Esta é uma função que será usada para atribuir valor a essa variável. É isso. Então, assim, eu copio essa função, coloco aqui e simplesmente escrevo contas. O primeiro. Assim, assim, teremos várias contas no MetaMask, basta obter a primeira. Esta é a função que é a função para conectar a carteira. Agora, vamos trabalhar na parte HTML. Basta retornar uma div. Vamos dar a ele alguns nomes de classe de CSS. Flex, flex chamados itens. Se você quiser, você pode simplesmente copiar o que tudo isso significa. Porque este é um código CSS de vento de cauda, F3, F6 para. Então. Este é apenas um estilo básico. É isso. Nada mais. 68508. Principalmente a mãe estará dentro deste preenchimento inferior 20. Então, tenha outra aula. Me deu o nome da classe. Transição ao longo da data. Quando deu. Em seguida, em escala, quando 05, transição, duração 500. Facilidade para entrar, sair. Então, não dentro dele. Fora dele. Dado H2. É que os decks C x negrito, e B é margem inferior. Para adicionar uma margem, top 12. E dê um nome. Gerencie sua biblioteca pessoal. Assim. Então, agora vem nossa parte ou seja, verificaremos se a conta corrente é igual a vazia, então teremos um botão ou então teremos outra coisa. Certo? Vamos ver. Se estiver vazio, teremos um botão. O nome do botão será conectado. Vamos. Agora vamos dar algum estilo. Nome da classe. Texto, fonte suportada. Adicionando meus três. Apostas x 12. Plano de fundo. Um, C, 232, margem grande , inferior. Em seguida, dimensione 105, transição. E no evento onClick, vamos simplesmente escrever connect, bem a função de TI. Nós atribuiremos isso n. Se eles já estiverem conectados. Então teremos uma tag div, que terá uma vantagem para isso. Em seguida, a carteira, a carteira conectada e o endereço dessa conta atual. E vamos dar um pouco de estilo também. Em seguida, excel. No dia 12, gerenciando o ponto. Vamos salvá-lo. Quero adicionar um C. Temos esta linda carteira de botão completo, pescoço. Se eu clicar nele, ele exibirá meu MetaMask. E minha tarefa já está conectada à rede Golgi. Vou simplesmente escrever em seguida, conectar e dizer, bem conectado, este é o meu endereço público. Então, criamos steadies com sucesso. Trabalhamos com sucesso na funcionalidade para conectar nossa carteira My Thomas ao aplicativo. Nos próximos vídeos, trabalharemos no front-end e na funcionalidade para adicionar e excluir livros e tudo mais. Então é isso. Vejo você no próximo vídeo. 12. Funcionalidade para adicionar um livro: Oi. Neste vídeo, trabalharemos em uma fazenda que permitirá ao usuário enviar um livro. E direi que temos que escrever uma função que irá inserir essas informações nessa cadeia de blocos. Tão alto, vamos começar com a função. Para que a função funcione. Primeiro, devemos ter alguns estados. São algumas variáveis. Você pode dizer const, nome do livro. Então, definitivamente leia o livro terá um nome. E para atualizar essa variável, temos esse nome de livro definido. Você ficou no início. Ele estará vazio. Então teremos autor do livro. E então ele terá definido. O livro está de acordo com o estado de uso. Mais uma vez, será e então esse livro terá um ano. É ouvido rico, esse livro foi publicado. Reserve aqui. Você declara MD. E, finalmente, teremos o livro terminado. Isso é muito que este livro está terminado ou não. livro foi concluído. Então, no início, será não. Obviamente, quando adicionamos, adicionando um livro, o valor padrão deve ser conhecido. Então vamos trabalhar em sua função e nomeá-la. Envie livro. Será uma função sinc. Em seguida, vamos criar o objeto Book. Simule. A chave será nomeada BlockName. Depois, seu chefe. Não temos que mudá-lo para inteiro, essa string. Esse é o mais volumoso. Então temos o terceiro livro. Então nós terminamos o valor. Se o valor final do livro for sim, ele será verdadeiro ou falso. Você entenderá disso o que estou falando, porque esta é uma biblioteca pessoal. Então você pode querer inserir seu livro que já está sendo vermelho, mas você deseja adicioná-lo na cadeia de blocos. Tudo bem. Então, vamos fazer o bloco try-catch. Tente pegar bloco. Temos console.log e enviamos um novo livro. E então escreva o editor, traga diarréia. E o que faremos é primeiro pegar o estádio daquela janela. Então, se tivermos o objeto KTM, então vamos escrever const. O provedor é igual a novos provedores de comedores. Provedor da Web três. E passaremos esse objeto Itanium. Então vamos pegar o signatário. signatário será o ponto do provedor, obterá signatário assim. E então teremos uma instância de contrato. Biblioteca. O contrato é igual a novo contrato, este endereço de contrato, então devemos ter a ABA, ABA, e então temos que dar ao signatário. E agora temos que chamar a função adicionar livro deles. Um, blockchain. Agora deixe a transação da biblioteca ser igual a aguardar contrato de laboratório. Livro de adição de pontos de contrato de biblioteca. Isso está devolvendo o contrato inteligente. Enviaremos livro, nome do ponto, livro, aquele livro auditivo. Nosso livro. Terminou assim. E, em seguida, simplesmente registraremos o console dessa transação, ou seja, transação de biblioteca. E se o objeto Tanium não estiver disponível, o que não será o caso. Mas como não correremos nenhum risco, ele vai escrever, vamos escrevê-lo. A verificação não existe. Então é isso. Que esta é a função para enviar um livro. Vamos apenas nomear esta função enviar livro. Agora, vamos trabalhar na parte HTML. Vamos para baixo. Aqui. Ou seja, nesta carteira conectada. Você quer que o formulário seja exibido porque, no início, o usuário precisa conectá-lo a uma carteira de mesquita. Então, abaixo disso, abaixo disso teremos, primeiro lugar, o que vou fazer é envolver essa coisa dentro de uma div. Dave, espere, só estou pensando no que pode ser feito? Sim. Apenas dê uma div. Feche esta div. Certo. Agora, depois que essa carteira estiver conectada, Dave, vamos escrever esse formulário que é rápido. Nova div. Vou dar alguns ventos traseiros, CSS a ele. Essas coisas serão texto, fonte, semi negrito, e serão margem Duan De, quatro primeiros. Então, vamos ter nossos campos de entrada. A primeira entrada será o texto do tipo de entrada e, em seguida, o suporte do lugar será o nome do livro. E esse valor será a variável que mencionamos acima. E OnChange. O que teremos. Quando obtemos o valor. Isso é o que quer que esteja lá, vamos definir o nome do livro. Simplesmente definiremos o nome do livro e passaremos o valor de ponto, ponto, ponto. Assim. Vamos dar um pouco de estilo também. Então, vou dar um nome de classe. Não vai enviar texto para o Excel a bordo. Margem, margem inferior, superior. Assim. Então eu vou dar-lhe uma tag BR. Quebra de linha. E, novamente, terei outro campo de entrada. Então, basta copiá-lo e cole-o aqui. O estilo será o mesmo. Somente o espaço reservado será livro. O valor será livro e inalterado. Ele será um livro definido. Assim. Então, novamente, terei o mesmo campo de entrada. Então, estou apenas copiando o BR, isso é quebra de linha também. Esse terceiro será o valor contábil será ouvido de livro. Inalterado, disse livro aqui, assim. Certo? Em seguida, basta ter uma tag BR e depois um rótulo. Simplesmente certo? terminou de ler este livro? Então? Teremos alguns, teremos uma opção para selecionar essa tag HTML selecionada. O valor será concluído o livro. Em seguida, o onchange será semelhante. Como o que for que tivermos, vamos mudá-lo para terminar o livro. E ponto, ponto, ponto, ponto. Dentro dessa tag select, devemos ter opções. A primeira opção será de valor. Sim, esse é o que li este livro. E a segunda opção, saberemos? Ou seja, obviamente este livro não está certo por ele. Obter. Agora, depois desse rótulo, devemos ter um botão. Só estou colando esse código porque no último eu gravei este curso e apenas cometi um pequeno erro. Então você pode ver que este é um botão com um nome de classe de texto, Excel, fonte, negrito POR três, preenchimento em x2. Em seguida, fundo, cor desligada, hash F1, C, 232 , arredondado, margem grande, dez inferior, margem esquerda cinco. Em seguida, passe o mouse, dimensione. 105, depois transição. Duração 500, facilidade de entrada, saída. E onclick. Estou apenas atribuindo a função de botão de envio e dando a ela um nome do livro. É isso. Então, se você executar, você pode simplesmente pausar o vídeo e anotá-lo. É apenas uma linha de código. Agora salve-o e vá para seu aplicativo. Basta clicar na carteira Connect. Veja que o formulário está aqui. Você pode nomear qualquer coisa. Eu já tenho um livro porque, como eu disse, fiz isso que fiz o teste nele. Então aprenda livro duro ou ela, isso é certo. Bill Gates. Não sei que ele está interessado nisso ou não e deu 2019. Adicione um livro, então. Thomas pedirá aprovação. Simplesmente confirme isso. Vamos ver se no console recebemos nossa transação ou não. Estou apenas verificando, ainda está pendente. Está feito. Agora clique em Inspecionar. E nesse console temos esse objeto, que é a transação completa C. Então é isso para este vídeo. A funcionalidade para adicionar um livro está funcionando perfeitamente. No próximo vídeo, vamos trabalhar em como buscar esses livros da blockchain. Obrigado. 13. Funcionalidade para buscar livros: Então, agora vamos trabalhar na funcionalidade para buscar livros da cadeia de blocos. Primeiro de tudo, precisaremos de alguns estados. Basta escrever livros const. Caixa acabada e disse. Terminado é igual ao estado de uso. Será uma matriz. Da mesma forma, teremos outra caixa. E os livros acabados e produtos acabados. Eles usam data. Novamente, será uma matriz vazia. Agora, vamos trabalhar com a função abaixo desta função de envio de livro. Vou escrever const, obter livros é igual a uma pia. Então eu recebo um, mesma forma, teremos um bloco try catch. Se houver algum erro, simplesmente consolar o console.log. Nessa seção try. Mais uma vez, teremos essa linha de código. Basta copiar tanto em licença. Vou apenas copiar para dentro. Vou remover, o que não é necessário. Eu simplesmente removerei essas duas linhas porque precisaremos do contrato da biblioteca Itanium. A instância do contrato para trabalhar para buscar a função do blockchain. Agora, simplesmente, vamos pegar livros. Mobiliado é igual a aguardar. Ponto de contrato de biblioteca get. Agora vamos verificar. Conclua os trabalhos. Receba livros acabados. E da mesma forma, teremos deixado livros sem mobília, ponto de contrato ficar inacabado. E então vamos simplesmente definir o valor do estado. Isso é o conjunto de livros terminados. O livro está terminado. E definir livros inacabados será igual à lista proveniente de livros inacabados. Então, assim, temos nossa função get reserve também. Agora, para mostrá-lo no front-end, criaremos um componente separado. Então, dentro desta pasta Pages chamada Come on Nance, gumbo, Nance. E dentro dele crie um arquivo chamado Book JS. É isso. Então, será apenas imaginar um livro separado e separado. Nós apenas daremos um loop for e ele retornará esse componente. Então aqui vou usar algum estilo, se você quiser. Novamente, estou dizendo que você pode fazer por conta própria essas propriedades que instalamos no início, essas dependências, tipos de prop e, em seguida, importar quadros-chave estilo de componentes de estilo. Agora, vamos certo, alguns quadros-chave de estilo. E isso. Então, dentro disso, teremos, você pode simplesmente escrever esse código mesmo porque, como estou dizendo repetidas vezes, não me importo com o estilo. Só para vazar, só para parecer decente. Pelo menos estou dando essa transformação de estilos. Escala 0,5. Em seguida, leia por cento. Mais uma vez, vou copiar essas duas linhas. Colado. Escala um. E então nós escalamos um. Certo? Então, com componentes de estilo poeira, terei um recipiente. Então, isso é apenas que estamos dando um estilo a um componente diretamente. É disso que se trata as dependências de componentes de estilo . Ficando isso. Dave, vamos anotá-lo. Animação um por um. Deslizando 0,82 cúbico Bézier cúbico dentro dele. Certo? W 0,390,5750,5651. Em seguida, exiba grade. Em seguida, as colunas do modelo de grade serão 38 porcentagem, 20 por cento, cinco anos, porcentagem, 37 porcentagem. Em seguida, estamos adicionando dois REMs, 0.1881.625168, data REM, borda, sólido, um pixel. Borda, raio. Para big cell. Linha, altura. Normal. Transição de volta ao solo, 0,40 como linear. Margem. Brilhante. Primeiro, estou a taxa de 50 pixels. Exibir bloco em linha. É isso. Então é isso para a porção de estilo. Se você quiser, você pode simplesmente pausar este vídeo e anotá-lo novamente. Se eu fosse um pouco rápido. Então, no próximo vídeo, trabalharemos no componente do livro. Obrigado. 14. Como criar um componente de livro: Então, agora vamos criar esse componente de livro. Abaixo deste pedaço de código. Digamos que o livro const seja igual a isso. E neste componente aceitaremos alguns adereços como id, name. Aqui são punidos e uma função que será Click book. Terminou assim. Vamos voltar. Vamos voltar, vamos então esse contêiner, que já está estilizado assim. É por isso que usamos esses componentes de estilo para que, quando o usamos, ele já esteja predefinido e funcione como se estivesse funcionando como um componente. Você pode ver, suponha que algum tipo de componente de contêiner. Você o nomeia, você o nomeia contêiner e podemos usá-lo assim. Agora, vamos. Esse é Dave, nome. Então. Então temos aqui. Então, esta tag de span, simplesmente diremos se terminar igual a, igual a pausa. Se o livro não estiver sendo concluído, teremos algo ou outra coisa, ou então , simplesmente teremos uma tag p. Então teremos um botão. Em seguida, esta tag p mais tarde. Então aqui, se tivermos isso, eles terão um botão. E vamos dar um pouco de estilo ao botão. Fonte, negrito, casamento em x, y, quebrar. Ash, F, F, 77, F. Então teremos Dexter White. Em seguida, arredondado. Margem grande, top cinco. Nossa escala 105. Transição. Duração. 500 está neste fardo. Então, neste botão, o que teremos é que teremos o método on click também. É, está dentro, aqui fora. Vamos ter o clique ao clicar. Quando o usuário clica em um clique, essa função divertida será executada, que é fornecida pelo Glick Book. E temos que enviar o ID. Esse é um livro rico. Temos que excluir e apenas nomeá-lo. Livro de nicho como este. Então, será quando, quando, quando a propriedade for falsa e se for verdadeira, então simplesmente podemos dar um parágrafo e dar-lhe algum estilo. Fonte. Bola, negrito , texto, altura 0 d, 71 E. E será escrito livro terminado. Digamos. Então. Agora, após esse componente, teremos alguns tipos de prop que realmente garantem que essas propriedades ascendam nessa ordem. Tempos de suporte é, temos algumas condições que devem ser cumpridas no início. Ou seja, essa é a coisa em que é como se o id fosse adquirido assim. Número do ponto dos tipos de prop, que deve ser numerado e necessário. Isso é um nome. Tipos de prop. String, ponto é necessário. tipo B de prop cadeia de capital é necessária do que o que temos. Temos nosso talento acabado. Então, acabamos de copiar. Nós terminamos. Assim. Isso, essa coisa é um número. E, finalmente, vamos simplesmente exportar o livro padrão, assim. componente livro está pronto. Agora vamos mostrar este livro na página de índice que não é que as páginas iniciais o mostrem. Depois disso. Temos este botão Adicionar. Então temos esse Dave. Temos este debate em 132 após dia, após dia é Dave. Teremos outra div que conterá que conterá a lista de livros. Vamos dar um pouco de estilo a isso também. Flex, flex, coluna, justificar, centralizar, centralizar itens como este. Então, novamente, teremos um nome de classe Dave. Não são texto semi-negrito, texto grande, centro, gerenciando os quatro últimos. E vou nomear a lista de livros. Certo? Então teremos um, então teremos um botão. Então teremos um botão e ele chamará get books. E esse botão terá novamente classes como o Excel a bordo, assim. E se você for bom com o Tailwind CSS, você também pode alterá-lo. Estes são apenas um estilo básico. Em seguida, arredondado, arredondado, margem inferior. Então nossa escala quando 05, duração da transição, 500 está dentro, fora. Portanto, este é o botão. E abaixo desse botão, faremos nossa lógica. Simplesmente. O que faremos são livros inacabados. Aquela terra. Se for maior que 0, então teremos uma div. Se o comprimento for 0, então teremos div, que, como eu estou indo, ele simplesmente escreverá livro inacabado. E dentro disso haverá um número de livros. Ou seja, livros inacabados, não terra assim. E vamos dar um estilo básico a isso. Fonte. Texto em negrito, centro, margem, inferior. Para margem, os cinco primeiros. E se não for, então simplesmente teremos alguma div vazia. Assim. Não mostrará nenhum caminho para ele porque será, não parece bom. Então abaixo disso, abaixo disso, deixe-me ver. Abaixo disso, vamos ter outro div nome de classe será flex. linha flexível justifica o centro, o centro de itens. E aqui teremos como esses livros, inacabados, mapa, assim. E aqui teremos livros únicos. E neste único livro, chamaremos o componente do livro. Vamos, vamos importar o componente duplo aqui. Importar livro Componentes assim. Agora isso aceitará algumas propriedades. Livro chave que ID, ID, análise int. Vamos apenas dizer livro. Nós nos certificamos de que seja um ID. Ou seja, é n taxa numérica. Digamos que o editor vá mais tarde. nome do ponto do livro é igual a barras. Livro, o ouvido. String, assim assim são terríveis. Livro. Não. Em seguida, terminei. Livro. Dot, terminado, ponto dois. String. Em seguida, clique em livro. Terminado será o clique da função , clique em Livro fornecido. Temos que criar essa função. Digamos que que tenhamos esse componente de livro. Certo, aqui. Isso será isso. Vamos ver. Existe algum editor? Vamos chamar este componente Este livro de cliques concluído. Aqui. Clique Ok, a ortografia, eu acho, terminou C. Ok. Agora, eles estão funcionando corretamente. Você pode ver que temos que criar uma função de flip book finalizada também. E para essas linhas vermelhas e tudo, se você quiser, você pode simplesmente ir para o arquivo ts config dot JS, que está aqui. E então aqui, altere o valor estrito para false. O distrito para falso, é isso. Se você fizer isso, essas linhas vermelhas e essas coisas serão resolvidas. C, Esses agora estão resolvidos. Então é isso para este vídeo. No próximo vídeo, trabalharemos com funcionalidade para alterar a livraria para concluída. Obrigado. 15. Funcionalidade para alterar o status do livro: Então, bem-vindo de volta. Vamos trabalhar em nosso aplicativo. V4. Bom, para atribuir essa função ou seja, obtenha livros. Esse botão. O botão aqui, que é esse. Então, basta escrever onclick e isso é um bom livro. E também da mesma forma, isso mostrará todos os livros que estão acabados. Da mesma forma, teremos, teremos que mostrar livros que são, quais são, que estão acabados dessa maneira. Estes são livros que não estão acabados e temos que mostrar livros que estão acabados. Então, o que vou fazer é simplesmente copiar esse pedaço de linhas. Vamos dizer, suponha que a primeira coisa eu copiarei isso e colarei aqui. Serão livros de escrita. Livros, acabados. Livros, acabados. Comprimento do ponto em vez da mesma coisa e ele realmente terminou o livro, é isso. E então eu farei novamente o mapeamento assim. Então, basta copiá-lo e cole-o abaixo aqui. Farei esse mapeamento com livros, terminado, mapa de pontos. E ele terá livros acabados nos dias de hoje. E agora vamos trabalhar na função aqui e vamos nomeá-la. Reserve, acabado, copiado e colado aqui também. Esta será a função que estaremos criando agora. Livro do lago terminado. Vá até aqui. Função criativa. Const assim. Uma pia. Ele aceitará ID, assim. Certo? Então agora, novamente, teremos try-catch e tudo mais. Da mesma forma, como sempre, já que temos que nos conectar ao contrato inteligente, que já está implantado, basta escrever console.log e alterar status do livro. Basta imprimir o cabeçalho também. Então, nesse bloco try, nós simplesmente teremos, copiaremos de, copiaremos daqui. Basta copiar essas linhas. Cole-o aqui. Certo, temos o provedor. Em seguida, a transição da biblioteca será, ela será simplesmente definida. ID finalizado assim, digamos log de pontos do console. Portanto, esta é a função. E a maioria das funções é um pouco semelhante. Nada tão extravagante. Estamos apenas chamando este que está pronto para terminar isso aqui. Este, é preciso um ID de livro e um booleano acabado. Então, simplesmente vamos e enviamos o ID e o booleano, é isso. Então, finalmente, escrevemos todos esses códigos para o aplicativo. Fico feliz que você assistiu a coisa agora, no próximo módulo, testaremos nosso aplicativo se tudo está funcionando corretamente ou não. E se recebermos algum erro, vamos resolvê-lo o mais rápido possível. Obrigado. 16. Teste o aplicativo completo: Olá. Neste vídeo, nós realmente testamos o funcionamento do nosso aplicativo. Estamos citando os últimos vídeos, mas agora, é hora de testar se todas as funcionalidades estão funcionando ou não. Então, a primeira coisa que vou fazer é genes do que a rede de meus tomates de Gormley para ser suponho. E então eu vou clicar na carteira Connect. Veja, você não está conectado para chamá-lo de rede, por isso está nos solicitando a mudar nossa rede. Isso está funcionando bem. Vamos para a colina. Então, quando clico em Conectar violeta, MetaMask acrescenta e, em seguida, e conecte-se. Certo. Agora temos esses livros. Se você se lembra, já adicionamos um livro azul anteriormente. Então, se eu clicar em Obter livros, teremos dois livros inacabados. Veja, este é um, aprenda árvore web e a outra é aprender capacete. Então isso está muito bonito. E também se eu escrever aprender, há uma data de negociação é a próxima. Js. Mark Zuckerberg e 2018. Suponha que se eu simplesmente escrever, se eu mudar para sim, vamos ver o que acontece. Alertas podem se formar. Vamos ver se a transação ainda está pendente. Vai demorar algum tempo. Está feito. Então, agora, se eu clicar em Obter livros, veja que tenho livros terminados. Mas estou bem. Esse erro. Eu entendi por que são dois porque aqui esquecemos de mudar. Então, os livros acabados terão esse comprimento. Digamos que isso seja um erro muito pequeno. É, está corrigido. Livros terminaram um. E se eu clicar neste livro acabado, aprenda capacete. Mais uma vez. Mostrando isso, depois clico em confirmar. Esse motivo principal deste curso era entender o básico da cadeia de blocos. A tecnologia não é essa interface do usuário. Se você quiser, você pode usar qualquer ferramenta de interface do usuário front-end e torná-la muito bonita. Porque você pode estar pensando que isso é muito simples, mas o principal é essa funcionalidade. Agora, está gastando a função finalizada definida. Esse gasto. Agora está feito. Se eu clicar em Obter livros. Veja, isso também está na seção finalizada e agora temos um livro inacabado e para o livro finalizado. Então, esse aplicativo completo está funcionando de forma incrível. E acho que estamos orgulhosos de nós mesmos por termos construído um aplicativo descentralizado do zero. Então, espero que você tenha gostado do curso. Certifique-se de assistir a outros cursos meus também. Obrigado. Tenha um bom dia.