O livro “Criando contratos inteligentes Solidity para o blockchain Ethereum. Guia prático"

O livro “Criando contratos inteligentes Solidity para o blockchain Ethereum. Guia prático"
Há mais de um ano venho trabalhando no livro “Criando Contratos Inteligentes de Solidez para o Blockchain Ethereum. Guia Prático", e agora este trabalho está concluído, e o livro publicado e disponível em litros.

Espero que meu livro ajude você a começar rapidamente a criar contatos inteligentes Solidity e DApps distribuídos para o blockchain Ethereum. Consiste em 12 aulas com tarefas práticas. Depois de concluí-los, o leitor poderá criar seus próprios nós Ethereum locais, publicar contratos inteligentes e chamar seus métodos, trocar dados entre o mundo real e contratos inteligentes usando oráculos e trabalhar com a rede de depuração de testes Rinkeby.

O livro é dirigido a todos os interessados ​​em tecnologias avançadas na área de blockchains e que desejam adquirir rapidamente conhecimentos que lhes permitam fazer um trabalho interessante e promissor.

Abaixo você encontrará o índice e o primeiro capítulo do livro (também em Litrese fragmentos do livro estão disponíveis). Espero receber feedback, comentários e sugestões. Tentarei levar tudo isso em consideração na preparação da próxima edição do livro.

Índice analíticoIntroduçãoNosso livro é destinado a quem deseja não apenas compreender os princípios do blockchain Ethereum, mas também adquirir habilidades práticas na criação de DApps distribuídos na linguagem de programação Solidity para esta rede.

É melhor não apenas ler este livro, mas trabalhar com ele, realizando as tarefas práticas descritas nas aulas. Para funcionar, você precisará de um computador local, servidor virtual ou em nuvem com sistema operacional Debian ou Ubuntu instalado. Você também pode usar o Raspberry Pi para realizar muitas tarefas.

Na primeira aula Veremos os princípios operacionais do blockchain Ethereum e a terminologia básica, e também falaremos sobre onde esse blockchain pode ser usado.

Meta segunda lição — crie um nó blockchain Ethereum privado para trabalhos futuros neste curso em um servidor Ubuntu e Debian. Veremos os recursos de instalação de utilitários básicos, como o geth, que garante a operação do nosso nó blockchain, bem como o daemon de armazenamento descentralizado de dados swarm.

Terceira lição ensinará como experimentar o Ethereum em um microcomputador Raspberry Pi barato. Você instalará o sistema operacional (SO) Rasberian no Raspberry Pi, o utilitário Geth que alimenta o nó blockchain e o daemon de armazenamento de dados descentralizado Swarm.

Lição quatro é dedicado a contas e unidades de criptomoeda na rede Ethereum, bem como formas de transferir fundos de uma conta para outra a partir do console Geth. Você aprenderá como criar contas, iniciar transações de transferência de fundos e obter o status e o recebimento da transação.

Na quinta lição Você conhecerá os contratos inteligentes na rede Ethereum e aprenderá sobre sua execução pela máquina virtual Ethereum.

Você criará e publicará seu primeiro contrato inteligente na rede privada Ethereum e aprenderá como chamar suas funções. Para fazer isso, você usará o IDE Remix Solidity. Você também aprenderá como instalar e usar o compilador em lote solc.
Também falaremos sobre a chamada Application Binary Interface (ABI) e ensinaremos como usá-la.

Sexta lição dedica-se à criação de scripts JavaScript executando Node.js e à execução de operações com contratos inteligentes Solidity.

Você instalará o Node.js no sistema operacional Ubuntu, Debian e Rasberian, escreverá scripts para publicar um contrato inteligente na rede local Ethereum e chamará suas funções.

Além disso, você aprenderá como transferir fundos entre contas normais usando scripts, bem como creditá-los em contas de contratos inteligentes.

Na sétima lição Você aprenderá como instalar e usar a estrutura Truffle, popular entre os desenvolvedores de contratos inteligentes Solidity. Você aprenderá como criar scripts JavaScript que chamam funções de contrato usando o módulo trufa-contrato e testar seu contrato inteligente usando Truffle.

Oitava lição dedicado aos tipos de dados Solidity. Você escreverá contratos inteligentes que funcionam com tipos de dados como inteiros assinados e não assinados, números assinados, strings, endereços, variáveis ​​complexas, arrays, enumerações, estruturas e dicionários.

Na nona lição Você estará um passo mais perto de criar contratos inteligentes para a rede principal Ethereum. Você aprenderá como publicar contratos usando Truffle na rede privada Geth, bem como na testnet Rinkeby. Depurar um contrato inteligente na rede Rinkeby é muito útil antes de publicá-lo na rede principal - quase tudo lá é real, mas de graça.

Como parte da lição, você criará um nó de rede de teste Rinkeby, financiará-o com fundos e publicará um contrato inteligente.

Lição 10 dedicado ao armazenamento de dados distribuídos Ethereum Swarm. Ao usar o armazenamento distribuído, você economiza no armazenamento de grandes quantidades de dados no blockchain Ethereum.

Neste tutorial, você criará um armazenamento Swarm local, operações de gravação e leitura em arquivos e diretórios de arquivos. A seguir, você aprenderá como trabalhar com o gateway público Swarm, escrever scripts para acessar o Swarm a partir do Node.js, bem como usar o módulo Perl Net::Ethereum::Swarm.

Objetivo da lição 11 - domine o trabalho com contratos inteligentes Solidity usando a popular linguagem de programação Python e a estrutura Web3.py. Você instalará a estrutura, escreverá scripts para compilar e publicar o contrato inteligente e chamará suas funções. Neste caso, Web3.py será usado sozinho e em conjunto com o ambiente de desenvolvimento integrado Truffle.

Na lição 12 você aprenderá a transferir dados entre contratos inteligentes e o mundo real usando oráculos. Isso será útil para você receber dados de sites, dispositivos IoT, vários dispositivos e sensores, e enviar dados de contratos inteligentes para esses dispositivos. Na parte prática da lição, você criará um oráculo e um contrato inteligente que recebe a taxa de câmbio atual entre dólares americanos e rublos do site do Banco Central da Federação Russa.

Lição 1. Brevemente sobre o blockchain e a rede EthereumO objetivo da lição: familiarize-se com os princípios de funcionamento do blockchain Ethereum, suas áreas de aplicação e terminologia básica.
Tarefas práticas: não abordado nesta lição.

Dificilmente existe um desenvolvedor de software hoje que não tenha ouvido nada sobre tecnologia blockchain (Blockchain), criptomoedas (criptomoeda ou criptomoeda), Bitcoin (Bitcoin), oferta inicial de moeda (ICO, oferta inicial de moeda), contratos inteligentes (contrato inteligente), bem como outros conceitos e termos relacionados ao blockchain.

A tecnologia Blockchain abre novos mercados e cria empregos para programadores. Se você entende todos os meandros das tecnologias de criptomoeda e de contratos inteligentes, não deverá ter problemas para aplicar esse conhecimento na prática.

É preciso dizer que há muita especulação em torno de criptomoedas e blockchains. Deixaremos de lado as discussões sobre mudanças nas taxas de criptomoedas, a criação de pirâmides, os meandros da legislação sobre criptomoedas, etc. Em nosso curso de formação focaremos principalmente nos aspectos técnicos da aplicação de contratos inteligentes da blockchain Ethereum (Ethereum, Ether) e no desenvolvimento das chamadas aplicações descentralizadas (Aplicação Distribuída, DApp).

O que é blockchain?

Blockchain (Block Chain) é uma cadeia de blocos de dados conectados entre si de uma determinada maneira. No início da cadeia está o primeiro bloco, que é chamado de bloco primário (bloco de gênese) ou bloco de gênese. É seguido pelo segundo, depois pelo terceiro e assim por diante.

Todos esses blocos de dados são duplicados automaticamente em vários nós da rede blockchain. Isso garante o armazenamento descentralizado de dados blockchain.
Você pode pensar em um sistema blockchain como um grande número de nós (servidores físicos ou virtuais) conectados em uma rede e replicando todas as alterações na cadeia de blocos de dados. É como um computador multiservidor gigante, e os nós desse computador (servidores) podem estar espalhados por todo o mundo. E você também pode adicionar seu computador à rede blockchain.

Banco de dados distribuído

Um blockchain pode ser pensado como um banco de dados distribuído que é replicado em todos os nós da rede blockchain. Em teoria, o blockchain estará operacional enquanto pelo menos um nó estiver funcionando, armazenando todos os blocos do blockchain.

Registro de dados distribuídos

Blockchain pode ser pensado como um livro-razão distribuído de dados e operações (transações). Outro nome para esse registro é livro-razão.

Os dados podem ser adicionados a um razão distribuído, mas não podem ser alterados ou excluídos. Esta impossibilidade é conseguida, nomeadamente, através da utilização de algoritmos criptográficos, algoritmos especiais para adição de blocos à cadeia e armazenamento descentralizado de dados.

Ao adicionar blocos e realizar operações (transações), são utilizadas chaves privadas e públicas. Eles restringem os usuários do blockchain, dando-lhes acesso apenas aos seus próprios blocos de dados.

Transações

Blockchain armazena informações sobre operações (transações) em blocos. Ao mesmo tempo, transações antigas e já concluídas não podem ser revertidas ou alteradas. Novas transações são armazenadas em blocos novos e adicionados.

Desta forma, todo o histórico de transações pode ser registrado inalterado no blockchain. Portanto, o blockchain pode ser usado, por exemplo, para armazenar com segurança transações bancárias, informações de direitos autorais, histórico de mudanças nos proprietários, etc.

A blockchain Ethereum contém os chamados estados do sistema. À medida que as transações são executadas, o estado muda do estado inicial para o estado atual. As transações são registradas em blocos.

Blockchains públicos e privados

Ressalta-se aqui que tudo o que foi dito é verdade apenas para as chamadas redes públicas de blockchain, que não podem ser controladas por nenhuma pessoa física ou jurídica, órgão governamental ou governo.
As chamadas redes privadas de blockchain estão sob controle total de seus criadores, e tudo é possível ali, por exemplo, uma substituição completa de todos os blocos da cadeia.

Aplicações práticas de blockchain

Para que o blockchain pode ser útil?

Resumindo, o blockchain permite realizar transações (transações) com segurança entre pessoas ou empresas que não confiam umas nas outras. Os dados registados na blockchain (transações, dados pessoais, documentos, certificados, contratos, faturas, etc.) não podem ser falsificados ou substituídos após o registo. Portanto, com base no blockchain, é possível criar, por exemplo, registros distribuídos confiáveis ​​de diversos tipos de documentos.

Claro, você sabe que os sistemas de criptomoeda estão sendo criados com base em blockchains, projetados para substituir o papel-moeda comum. O papel-moeda também é chamado de fiduciário (de Fiat Money).
O Blockchain garante o armazenamento e a imutabilidade das transações registradas em blocos, por isso pode ser utilizado para criar sistemas de criptomoeda. Ele contém todo o histórico de transferência de fundos criptográficos entre diferentes usuários (contas), e qualquer operação pode ser rastreada.

Embora as transações dentro dos sistemas de criptomoeda possam ser anônimas, retirar a criptomoeda e trocá-la por moeda fiduciária geralmente resulta na revelação da identidade do proprietário do ativo de criptomoeda.

Os chamados contratos inteligentes, que são softwares executados na rede Ethereum, permitem automatizar o processo de conclusão de transações e monitoramento de sua implementação. Isto é especialmente eficaz se o pagamento da transação for realizado usando a criptomoeda Ether.

O blockchain Ethereum e os contratos inteligentes Ethereum escritos na linguagem de programação Solidity podem ser usados, por exemplo, nas seguintes áreas:

  • uma alternativa à notarização de documentos;
  • armazenamento de cadastro de objetos imobiliários e informações sobre transações com objetos imobiliários;
  • armazenamento de informações de direitos autorais sobre propriedade intelectual (livros, imagens, obras musicais, etc.);
  • criação de sistemas de votação independentes;
  • Finanças e bancos;
  • logística em escala internacional, acompanhando a movimentação de mercadorias;
  • armazenamento de dados pessoais como análogo a um sistema de bilhetes de identidade;
  • transações seguras na área comercial;
  • armazenar os resultados dos exames médicos, bem como o histórico dos procedimentos prescritos

Problemas com blockchain

Mas, claro, nem tudo é tão simples quanto pode parecer!

Existem problemas com a verificação de dados antes de adicioná-los ao blockchain (por exemplo, eles são falsos?), problemas com a segurança do sistema e software aplicativo usado para trabalhar com o blockchain, problemas com a possibilidade de usar métodos de engenharia social para roubar acesso para carteiras de criptomoedas, etc.

Novamente, se não estamos falando de um blockchain público, cujos nós estão espalhados por todo o mundo, mas de um blockchain privado pertencente a uma pessoa ou organização, então o nível de confiança aqui não será superior ao nível de confiança nesta pessoa ou nesta organização.

Deve-se levar em conta também que os dados registrados no blockchain ficam disponíveis para todos. Nesse sentido, o blockchain (especialmente o público) não é adequado para armazenar informações confidenciais. No entanto, o facto de as informações na blockchain não poderem ser alteradas pode ajudar a prevenir ou investigar vários tipos de atividades fraudulentas.

Os aplicativos descentralizados Ethereum serão convenientes se você pagar pelo seu uso com criptomoeda. Quanto mais pessoas possuírem criptomoedas ou estiverem dispostas a comprá-las, mais populares os DApps e os contratos inteligentes se tornarão.

Problemas comuns com blockchain que dificultam sua aplicação prática incluem a velocidade limitada com que novos blocos podem ser adicionados e o custo relativamente alto das transações. Mas a tecnologia nesta área está se desenvolvendo ativamente e há esperança de que os problemas técnicos sejam resolvidos com o tempo.

Outro problema é que os contratos inteligentes na blockchain Ethereum operam em um ambiente isolado de máquinas virtuais e não têm acesso a dados do mundo real. Em particular, o programa de contrato inteligente não pode ler dados de sites ou de quaisquer dispositivos físicos (sensores, contatos, etc.) e também não pode enviar dados para quaisquer dispositivos externos. Discutiremos esse problema e as formas de resolvê-lo em uma lição dedicada aos chamados Oráculos - intermediários de informações de contratos inteligentes.

Existem também restrições legais. Em alguns países, por exemplo, é proibido usar criptomoeda como meio de pagamento, mas você pode possuí-la como uma espécie de ativo digital, como títulos. Esses ativos podem ser comprados e vendidos na bolsa. De qualquer forma, ao criar um projeto que trabalhe com criptomoedas, você precisa se familiarizar com a legislação do país sob cuja jurisdição o seu projeto se enquadra.

Como uma cadeia blockchain é formada

Como já dissemos, blockchain é uma simples cadeia de blocos de dados. Primeiro, forma-se o primeiro bloco dessa cadeia, depois adiciona-se o segundo e assim por diante. Os dados da transação são armazenados em blocos e adicionados ao bloco mais recente.

Na Fig. 1.1 mostramos a versão mais simples de uma sequência de blocos, onde o primeiro bloco se refere ao próximo.

O livro “Criando contratos inteligentes Solidity para o blockchain Ethereum. Guia prático"
Arroz. 1.1. Sequência simples de blocos

Com esta opção, porém, é muito fácil adulterar o conteúdo de qualquer bloco da cadeia, uma vez que os blocos não contêm nenhuma informação para proteção contra alterações. Considerando que o blockchain se destina a ser utilizado por pessoas e empresas entre as quais não existe confiança, podemos concluir que este método de armazenamento de dados não é adequado para o blockchain.

Vamos começar a proteger os blocos contra falsificação. Na primeira etapa, tentaremos proteger cada bloco com um checksum (Fig. 1.2).

O livro “Criando contratos inteligentes Solidity para o blockchain Ethereum. Guia prático"
Arroz. 1.2. Adicionando proteção para esses blocos com uma soma de verificação

Agora, um invasor não pode simplesmente alterar o bloco, pois ele contém a soma de verificação dos dados do bloco. A verificação da soma de verificação mostrará que os dados foram alterados.

Para calcular a soma de verificação, você pode usar uma das funções de hash, como MD-5, SHA-1, SHA-256, etc. As funções hash calculam um valor (por exemplo, uma sequência de texto de comprimento constante) executando operações irreversíveis em um bloco de dados. As operações dependem do tipo de função hash.

Mesmo que o conteúdo do bloco de dados mude ligeiramente, o valor do hash também mudará. Ao analisar o valor da função hash, é impossível reconstruir o bloco de dados para o qual ela foi calculada.

Essa proteção será suficiente? Infelizmente não.

Neste esquema, a soma de verificação (função hash) protege apenas blocos individuais, mas não toda a blockchain. Conhecendo o algoritmo para calcular a função hash, um invasor pode facilmente substituir o conteúdo de um bloco. Além disso, nada o impedirá de remover blocos da cadeia ou adicionar novos.

Para proteger toda a cadeia como um todo, você também pode armazenar em cada bloco, junto com os dados, um hash dos dados do bloco anterior (Fig. 1.3).

O livro “Criando contratos inteligentes Solidity para o blockchain Ethereum. Guia prático"
Arroz. 1.3. Adicione o hash do bloco anterior ao bloco de dados

Neste esquema, para alterar um bloco, é necessário recalcular as funções hash de todos os blocos subsequentes. Ao que parece, qual é o problema?

Em blockchains reais, também são criadas dificuldades artificiais para adicionar novos blocos – são usados ​​algoritmos que exigem muitos recursos computacionais. Considerando que para fazer alterações em um bloco é necessário recalcular não apenas este bloco, mas todos os subsequentes, isso será extremamente difícil de fazer.

Lembremos também que os dados do blockchain são armazenados (duplicados) em vários nós da rede, ou seja, O armazenamento descentralizado é usado. E isso torna muito mais difícil falsificar um bloqueio, porque alterações devem ser feitas em todos os nós da rede.

Como os blocos armazenam informações sobre o bloco anterior, é possível verificar o conteúdo de todos os blocos da cadeia.

Cadeia de blocos Ethereum

O blockchain Ethereum é uma plataforma na qual DApps distribuídos podem ser criados. Ao contrário de outras plataformas, o Ethereum permite a utilização dos chamados contratos inteligentes (contratos inteligentes), escritos na linguagem de programação Solidity.

Esta plataforma foi criada em 2013 por Vitalik Buterin, fundador da Bitcoin Magazine, e lançada em 2015. Tudo o que estudaremos ou faremos em nosso curso de treinamento está relacionado especificamente ao blockchain Ethereum e aos contratos inteligentes Solidity.

Mineração ou como os blocos são criados

A mineração é um processo bastante complexo e que consome muitos recursos de adição de novos blocos à cadeia blockchain, e não de “mineração de criptomoeda”. A mineração garante a funcionalidade do blockchain, porque é esse processo responsável por adicionar transações ao blockchain Ethereum.

Pessoas e organizações envolvidas na adição de blocos são chamadas de mineradores.
O software em execução nos nós mineradores tenta encontrar um parâmetro de hash chamado Nonce para o último bloco para obter um valor de hash específico especificado pela rede. O algoritmo de hash Ethash usado no Ethereum permite obter o valor Nonce apenas por meio de pesquisa sequencial.

Se o nó mineiro encontrar o valor Nonce correto, então esta é a chamada prova de trabalho (PoW, Prova de Trabalho). Nesse caso, se um bloco for adicionado à rede Ethereum, o minerador recebe uma determinada recompensa na moeda da rede – Ether. No momento em que este artigo foi escrito, a recompensa era 5 Éter, mas será reduzida com o tempo.

Assim, os mineradores de Ethereum garantem o funcionamento da rede adicionando blocos, e recebem dinheiro em criptomoeda por isso. Você encontrará muitas informações na internet sobre mineradores e mineração, mas vamos nos concentrar na criação de contratos Solidity e DApps na rede Ethereum.

Resumo da lição

Na primeira lição, você conheceu o blockchain e aprendeu que ele é uma sequência de blocos especialmente composta. O conteúdo dos blocos gravados anteriormente não pode ser alterado, pois isso exigiria o recálculo de todos os blocos subsequentes em muitos nós da rede, o que requer muitos recursos e tempo.

Blockchain pode ser usado para armazenar os resultados das transações. O seu principal objetivo é organizar transações seguras entre partes (pessoas e organizações) entre as quais não existe confiança. Você aprendeu em quais áreas específicas de negócios e em quais áreas o blockchain Ethereum e os contratos inteligentes Solidity podem ser usados. Este é o setor bancário, registro de direitos de propriedade, documentos, etc.

Você também aprendeu que vários problemas podem surgir ao usar o blockchain. São problemas de verificação de informações adicionadas ao blockchain, a velocidade do blockchain, o custo das transações, o problema da troca de dados entre contratos inteligentes e o mundo real, bem como possíveis ataques de invasores com o objetivo de roubar fundos de criptomoeda de contas de usuários. .

Também falamos brevemente sobre mineração como o processo de adição de novos blocos ao blockchain. A mineração é necessária para concluir as transações. Os envolvidos na mineração garantem o funcionamento do blockchain e recebem uma recompensa em criptomoeda por isso.

Lição 2. Preparando um ambiente de trabalho no Ubuntu e Debian OSSelecionando um sistema operacional
Instalando os utilitários necessários
Instalando Geth e Swarm no Ubuntu
Instalando Geth e Swarm no Debian
Preparação preliminar
Baixando a distribuição Go
Configurando variáveis ​​de ambiente
Verificando a versão Go
Instalando Geth e Swarm
Criando um blockchain privado
Preparando o arquivo genesis.json
Crie um diretório para trabalho
Crie a sua conta aqui
Iniciamos a inicialização do nó
Opções de inicialização do nó
Conecte-se ao nosso nó
Gestão de mineração e verificação de saldo
Desligando o console Geth
Resumo da lição

Lição 3. Preparando o ambiente de trabalho no Raspberry Pi 3Preparando o Raspberry Pi 3 para o trabalho
Instalando Rasberian
Instalando atualizações
Habilitando acesso SSH
Configurando um endereço IP estático
Instalando os utilitários necessários
Instalando o Go
Baixando a distribuição Go
Configurando variáveis ​​de ambiente
Verificando a versão Go
Instalando Geth e Swarm
Criando um blockchain privado
Verificando sua conta e saldo
Resumo da lição

Lição 4. Contas e transferência de fundos entre contasVer e adicionar contas
Ver uma lista de contas
Adicionando uma conta
opções de comando da conta geth
Senhas de conta
Criptomoeda em Ethereum
Unidades Monetárias Ethereum
Determinamos o saldo atual de nossas contas
Transferir fundos de uma conta para outra
Método eth.sendTransaction
Ver o status da transação
Recibo de transação
Resumo da lição

Lição 5. Publicando seu primeiro contratoContratos inteligentes em Ethereum
Execução Inteligente de Contrato
Máquina virtual Ethereum
Ambiente de desenvolvimento integrado Remix Solidity IDE
Executando compilação
Chamando funções de contrato
Publicação de um contrato em uma rede privada
Obtendo a definição da ABI e o código binário do contrato
Publicação do contrato
Verificando o status da transação de publicação do contrato
Chamando funções de contrato
Compilador de lote solc
Instalando solc no Ubuntu
Instalando solc no Debian
Compilando o contrato HelloSol
Publicação do contrato
Instalando solc no Rasberian
Resumo da lição

Lição 6. Contratos inteligentes e Node.jsInstalando o Node.js
Instalação no Ubuntu
Instalação no Debian
Instalando e executando o Ganache-cli
Instalação Web3
Instalando o solc
Instalando Node.js no Rasberian
Script para obter uma lista de contas no console
Script para publicar um contrato inteligente
Inicie e obtenha parâmetros
Obtendo opções de inicialização
Compilação de Contrato
Desbloqueando sua conta
Carregando ABI e contrato de código binário
Estimando a quantidade necessária de gás
Crie um objeto e comece a publicar um contrato
Executando o script de publicação de contrato
Chamando funções de contrato inteligente
É possível atualizar um contrato inteligente publicado?
Trabalhando com Web3 versão 1.0.x
Obtendo uma lista de contas
Publicação do contrato
Chamando funções de contrato
Transferir fundos de uma conta para outra
Transferir fundos para a conta do contrato
Atualizando o contrato inteligente HelloSol
Crie um script para visualizar o saldo da sua conta
Adicione uma chamada à função getBalance ao script call_contract_get_promise.js
Recarregamos a conta do contrato inteligente
Resumo da lição

Lição 7. Introdução à TrufaInstalando Trufa
Crie um projeto HelloSol
Criando o diretório e os arquivos do projeto
Diretório de contratos
Migrações de catálogo
Teste de diretório
arquivo trufa-config.js
Compilando o contrato HelloSol
Comece a publicar um contrato
Chamando funções de contrato HelloSol em um prompt Truffle
Chamando funções de contrato HelloSol a partir de um script JavaScript executando Node.js
Instalando o módulo de contrato de trufas
Chamando as funções de contrato getValue e getString
Chamando funções de contrato setValue e setString
Modificação do contrato e republicação
Trabalhando com Web3 versão 1.0.x
Fazendo alterações no contrato inteligente HelloSol
Scripts para chamar métodos de contrato
Teste em Trufa
Teste de solidez
Teste de JavaScript
Resumo da lição

Lição 8. Tipos de dados de solidezContrato para aprender tipos de dados
Tipos de dados booleanos
Inteiros não assinados e inteiros assinados
Números de ponto fixo
endereço
Variáveis ​​de tipos complexos
Matrizes de tamanho fixo
Matrizes dinâmicas
Listagem
Estruturas
Mapeamento de dicionários
Resumo da lição

Aula 9. Migração de contratos para a rede privada e para a rede RinkebyPublicando um contrato do Truffle na rede privada Geth
Preparando um nó de rede privada
Preparando um contrato de trabalho
Compilando e migrando um contrato para a rede Truffle
Iniciando a migração de rede local geth
Obtendo artefatos de trufas
Publicando um contrato do Truffle na testnet Rinkeby
Preparando um nó Geth para trabalhar com Rinkeby
Sincronização de nós
Adicionando contas
Recarregando sua conta Rinkeby com ether
Lançamento da migração de contratos para a rede Rinkeby
Visualizando informações de contrato na rede Rinkeby
Console Truffle para Rede Rinkeby
Maneira mais fácil de chamar funções de contrato
Chamando métodos de contrato usando Node.js
Transferir fundos entre contas no console Truffle para Rinkby
Resumo da lição

Lição 10. Armazenamento descentralizado de dados Ethereum SwarmComo funciona o Ethereum Swarm?
Instalando e iniciando o Swarm
Operações com arquivos e diretórios
Fazendo upload de um arquivo para Ethereum Swarm
Lendo um arquivo do Ethereum Swarm
Ver o manifesto de um arquivo enviado
Carregando diretórios com subdiretórios
Lendo um arquivo de um diretório baixado
Usando um gateway Swarm público
Acessando o Swarm a partir de scripts Node.js
Módulo Perl Net::Ethereum::Swarm
Instalando o módulo Net::Ethereum::Swarm
Escrevendo e lendo dados
Resumo da lição

Lição 11. Estrutura Web3.py para trabalhar com Ethereum em PythonInstalando Web3.py
Atualizando e instalando pacotes necessários
Instalando o módulo easysolc
Publicando um contrato usando Web3.py
Compilação de Contrato
Conectando-se a um provedor
Executar publicação do contrato
Salvando o endereço do contrato e abi em um arquivo
Executando o script de publicação de contrato
Chamando Métodos de Contrato
Lendo o endereço e abi de um contrato de um arquivo JSON
Conectando-se a um provedor
Criando um objeto de contrato
Chamando Métodos de Contrato
Trufa e Web3.py
Resumo da lição

Lição 12. OráculosUm contrato inteligente pode confiar em dados do mundo exterior?
Oráculos como intermediários de informações blockchain
Fonte de dados
Código para representar dados da fonte
Oracle para registrar a taxa de câmbio no blockchain
Contrato USDRateOracle
Atualizando a taxa de câmbio em um contrato inteligente
Usando um provedor de soquete da Web
Aguardando evento RateUpdate
Tratamento do evento RateUpdate
Iniciando uma atualização de dados em um contrato inteligente
Resumo da lição

Fonte: habr.com

Adicionar um comentário