
Mais de um ano estive trabalhando no livro 'Criando contratos inteligentes Solidity para a blockchain Ethereum. Guia Prático', e agora este trabalho está concluído, e o livro .
Espero que meu livro ajude a começar rapidamente a criar contratos inteligentes Solidity e aplicativos descentralizados DApp para a blockchain Ethereum. Ele consiste em 12 lições com tarefas práticas. Ao completá-las, o leitor poderá criar seus próprios nós locais Ethereum, publicar contratos inteligentes e chamar seus métodos, trocar dados entre o mundo real e os contratos inteligentes com a ajuda de oráculos, e trabalhar com a rede de testes Rinkeby.
O livro é destinado a todos que estão interessados em tecnologias avançadas no campo das blockchains e desejam obter rapidamente conhecimentos que lhes permitam trabalhar em atividades interessantes e promissoras.
Abaixo você encontrará o índice e o primeiro capítulo do livro (também na estão disponíveis trechos do livro). Espero receber feedback, comentários e sugestões. Tudo isso tentarei levar em conta na preparação da próxima edição do livro.
ÍndiceIntroduçãoNosso livro é destinado àqueles que querem não apenas entender os princípios de funcionamento da blockchain Ethereum, mas também adquirir habilidades práticas na criação de aplicativos descentralizados DApp na linguagem de programação Solidity para essa rede.
Este livro é melhor não apenas para ler, mas para trabalhar com ele, realizando as tarefas práticas descritas nas lições. Para trabalhar, você precisará de um computador local, um servidor virtual ou em nuvem com o sistema operacional Debian ou Ubuntu instalado. Para a realização de muitas tarefas, é possível usar também o Raspberry Pi.
Na primeira lição vamos explorar os princípios de funcionamento da blockchain Ethereum e a terminologia básica, além de discutir onde essa blockchain pode ser utilizada.
O objetivo a segunda lição — criar um nó de blockchain Ethereum privado para trabalhos futuros no âmbito deste curso em um servidor Ubuntu e Debian. Vamos examinar as particularidades da instalação das principais utilidades, como geth, que proporciona o funcionamento do nó da nossa blockchain, assim como o daemon de armazenamento descentralizado swarm.
A terceira lição o ensinará a realizar experimentos com Ethereum em um barato microcomputador Raspberry Pi. Você instalará o sistema operacional (SO) Rasberian no Raspberry Pi, a ferramenta Geth, que permite o funcionamento do nó blockchain, assim como o daemon de armazenamento descentralizado Swarm.
Quarta aula é dedicada às contas e unidades de criptomoeda na rede Ethereum, além das formas de transferir fundos de uma conta para outra a partir do console Geth. Você aprenderá a criar contas, iniciar transações de transferência de fundos, obter o estado da transação e seu recibo.
Na quinta aula você será apresentado aos contratos inteligentes na rede Ethereum e aprenderá sobre sua execução pela máquina virtual Ethereum.
Você criará e publicará em uma rede privada Ethereum seu primeiro contrato inteligente e aprenderá a chamar suas funções. Para isso, você usará o ambiente de desenvolvimento Remix Solidity IDE. Além disso, você aprenderá a instalar e usar o compilador em lote solc.
Também abordaremos o que é conhecido como interface binária de aplicativo Application Binary Interface (ABI) e ensinaremos a utilizá-la.
Sexta aula é dedicada à criação de scripts JavaScript que operam sob Node.js e realizam operações com contratos inteligentes Solidity.
Você instalará o Node.js no SO 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á a transferir fundos entre contas comuns usando scripts, assim como creditá-los às contas de contratos inteligentes.
Na sétima aula você aprenderá a instalar e usar o popular ambiente integrado Truffle, que é bastante utilizado pelos desenvolvedores de contratos inteligentes Solidity. Você aprenderá a criar scripts JavaScript que chamam as funções dos contratos usando o módulo truffle-contract, além de testar seu contrato inteligente com as ferramentas do Truffle.
Oitava aula é dedicada aos tipos de dados Solidity. Você escreverá contratos inteligentes que trabalham com tipos de dados como inteiros com sinal e sem sinal, números com sinal, strings, endereços, variáveis de tipos complexos, arrays, enums, structs e dicionários.
Na nona aula Você dará mais um passo em direção à criação de contratos inteligentes para a rede principal Ethereum. Você aprenderá a publicar contratos usando o Truffle em uma rede privada Geth, bem como em uma rede de testes Rinkeby. A depuração do contrato inteligente na rede Rinkeby é muito útil antes de sua publicação na rede principal — lá tudo é praticamente real, mas grátis.
Neste módulo, você criará um nó da rede de testes Rinkeby, o financiará e publicará um contrato inteligente.
Aula 10 é dedicada aos armazéns de dados descentralizados Ethereum Swarm. Usando armazéns descentralizados, você economiza no armazenamento de grandes volumes de dados na blockchain Ethereum.
Neste módulo, você criará um armazenamento local Swarm, realizará operações de gravação e leitura de arquivos, bem como de diretórios com arquivos. Depois, você aprenderá a trabalhar com um gateway público Swarm, escreverá scripts para acessar o Swarm a partir do Node.js, além de utilizar o módulo Perl Net::Ethereum::Swarm.
O objetivo da aula 11 é dominar o trabalho com contratos inteligentes Solidity utilizando a popular linguagem de programação Python e o framework Web3.py. Você instalará este framework, escreverá scripts para compilar e publicar contratos inteligentes, bem como para invocar suas funções. O Web3.py será usado tanto de forma independente quanto em conjunto com o ambiente de desenvolvimento integrado Truffle.
Na aula 12 você aprenderá a transmitir dados entre contratos inteligentes e o mundo real usando oráculos. Isso será útil para obter dados de websites, dispositivos de Internet das Coisas (IoT), vários aparelhos e sensores, e enviar dados de contratos inteligentes para esses dispositivos. Na parte prática da aula, você criará um oráculo e um contrato inteligente que receberá a taxa de câmbio atual do USD para rubros do site do Banco Central da Rússia.
Aula 1. Breve introdução ao blockchain e à rede EthereumObjetivo da aula: conhecer os princípios de funcionamento do blockchain Ethereum, suas áreas de aplicação e a terminologia básica.
Exercícios práticos: nesta aula não estão previstos.
É difícil hoje encontrar um desenvolvedor de software que nunca tenha ouvido falar da tecnologia blockchain, criptomoedas, bitcoins, ofertas iniciais de moedas (ICO) e contratos inteligentes, bem como de outros conceitos e termos relacionados ao blockchain.
A tecnologia blockchain abre novos mercados e cria empregos para programadores. Se você entender todos os detalhes das tecnologias de criptomoedas e contratos inteligentes, não deve ter problemas em aplicar esse conhecimento na prática.
É preciso dizer que há muitas especulações em torno das criptomoedas e dos blockchains. Vamos deixar de lado as discussões sobre as variações de preços das criptomoedas, a criação de pirâmides, as sutilezas da legislação sobre criptomoedas, etc. Em nosso curso, vamos nos concentrar principalmente nos aspectos técnicos da aplicação de contratos inteligentes no blockchain Ethereum (éthereum, ether) e no desenvolvimento de aplicativos descentralizados (Distributed Application, DApp).
O que é blockchain
O blockchain (Blockchain, Block Chain) é uma cadeia de blocos de dados interligados de uma maneira específica. No início da cadeia está o primeiro bloco, chamado de bloco gênesis (genesis block) ou bloco de gênesis. Em seguida, vem o segundo, depois o terceiro, e assim por diante.
Todos esses blocos de dados são automaticamente duplicados em numerosos nós da rede blockchain. Isso garante o armazenamento descentralizado dos dados do blockchain.
Você pode imaginar o sistema blockchain como uma grande quantidade de nós (servidores físicos ou virtuais) interconectados em uma rede, replicando todas as alterações na cadeia de blocos de dados. É como se fosse um gigantesco computador multi-servidor, onde os nós desse computador (servidores) podem estar espalhados pelo mundo. E você também pode adicionar seu computador à rede blockchain.
Banco de dados distribuído
O blockchain pode ser visto como um banco de dados distribuído, replicado em todos os nós da rede blockchain. Em teoria, o blockchain funcionará enquanto houver pelo menos um nó que armazene todos os blocos do blockchain.
Registro de dados distribuído
O blockchain pode ser interpretado como um registro distribuído de dados e operações (transações). Outra denominação para esse registro é livro-razão.
Em um registro distribuído, é possível adicionar dados, mas não é possível alterá-los ou excluí-los. Essa impossibilidade é alcançada, em particular, através da aplicação de algoritmos criptográficos, algoritmos especiais para adicionar blocos à cadeia e armazenamento descentralizado de dados.
Ao adicionar blocos e realizar operações (transações), são utilizados chaves privadas e públicas. Elas restringem os usuários da blockchain, concedendo-lhes acesso apenas aos seus próprios blocos de dados.
Transações
A blockchain armazena informações sobre operações (transações) em blocos. Nesse processo, transações antigas, já realizadas, não podem ser revertidas ou modificadas. Novas transações são armazenadas em novos blocos adicionados.
Assim, toda a história das transações pode ser registrada na blockchain de forma imutável. Portanto, a blockchain pode ser utilizada, por exemplo, para o armazenamento seguro de operações bancárias, informações sobre direitos autorais, histórico de alterações de proprietários de imóveis, entre outros.
A blockchain Ethereum contém os chamados estados do sistema. À medida que as transações são realizadas, o estado muda do inicial para o atual. As transações são registradas em blocos.
Blockchains públicas e privadas
É importante notar que tudo o que foi dito se aplica apenas às chamadas redes públicas de blockchain, que não podem ser controladas por indivíduos ou entidades jurídicas específicas, órgãos governamentais ou governos.
As chamadas redes privadas de blockchain estão sob controle total de seus criadores, e tudo é possível lá, por exemplo, a substituição completa de todos os blocos da cadeia.
Aplicações práticas da blockchain
Para que a blockchain pode ser útil?
Resumidamente, a blockchain permite realizar operações (transações) de forma segura entre pessoas ou empresas que não confiam umas nas outras. Os dados registrados na blockchain (transações, dados pessoais, documentos, certificados, contratos, notas fiscais, etc.) não podem ser falsificados ou substituídos após o registro. Portanto, em cima da blockchain, é possível criar, por exemplo, registros distribuídos confiáveis de diversos tipos de documentos.
Claro, você sabe que sistemas de criptomoeda são criados com base em blockchains, projetados para substituir o dinheiro em papel comum. O dinheiro em papel também é conhecido como fiduciário (do Fiat Money).
O blockchain garante o armazenamento e a imutabilidade das transações registradas em blocos, por isso pode ser usado para criar sistemas de criptomoeda. Ele contém todo o histórico de transferência de ativos criptográficos entre diferentes usuários (contas), e qualquer operação pode ser rastreada.
Embora as operações dentro dos sistemas de criptomoeda possam ser anônimas, a conversão de criptomoeda e sua troca por dinheiro fiduciário geralmente resulta na divulgação da identidade do proprietário do ativo criptográfico.
Os chamados contratos inteligentes, que são softwares que operam na rede Ethereum, permitem automatizar o processo de formalização de acordos e o controle de seu cumprimento. Isso é especialmente eficaz quando o pagamento pelo acordo é feito em criptomoeda Ether (éter).
O blockchain Ethereum e os contratos inteligentes Ethereum, escritos na linguagem de programação Solidity, podem ser usados, por exemplo, nas seguintes áreas:
- alternativa à certificação notarial de documentos;
- armazenamento do registro de bens imóveis e informações sobre operações relacionadas a bens imóveis;
- armazenamento de informações sobre direitos autorais de propriedades intelectuais (livros, imagens, obras musicais etc.);
- criação de sistemas de votação independente;
- setor financeiro e atividades bancárias;
- logística em escala internacional, rastreamento de movimentações de cargas;
- armazenamento de dados pessoais como uma alternativa ao sistema de identificação;
- transações seguras no setor comercial;
- armazenamento de resultados de exames médicos, bem como do histórico de procedimentos prescritos.
Problemas com o blockchain
Mas, é claro, nem tudo é tão simples quanto parece!
Existem problemas com a verificação de dados antes de serem adicionados ao blockchain (por exemplo, se não são falsificados?), problemas de segurança do software de sistema e aplicativo usado para trabalhar com blockchain, e problemas relacionados à possibilidade de usar métodos de engenharia social para roubar acesso a carteiras de criptomoeda etc.
Novamente, se estivermos falando de uma blockchain privada pertencente a uma pessoa ou organização, e não de uma blockchain pública com nós espalhados pelo mundo, o nível de confiança aqui não será maior do que o nível de confiança nessa pessoa ou organização.
Também é importante considerar que os dados gravados na blockchain tornam-se acessíveis a todos. Nesse sentido, a blockchain (especialmente a pública) não é adequada para armazenar informações confidenciais. No entanto, o fato de que as informações na blockchain não podem ser alteradas pode ajudar a prevenir ou investigar diversos tipos de fraudes.
Aplicativos descentralizados do Ethereum serão mais convenientes se forem pagos com criptomoedas. Quanto mais pessoas possuírem criptomoedas ou estiverem dispostas a adquiri-las, maior será a popularidade dos aplicativos DApp e dos contratos inteligentes.
Entre os problemas gerais da blockchain que dificultam sua aplicação prática, podemos mencionar a velocidade limitada de adição de novos blocos e o custo relativamente alto das transações. Mas as tecnologias nessa área estão se desenvolvendo ativamente, e há esperanças de que os problemas técnicos sejam resolvidos com o tempo.
Outro problema é que os contratos inteligentes da 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 do contrato inteligente não pode ler dados de sites ou de quaisquer dispositivos físicos (sensores, contatos, etc.), nem pode enviar dados para quaisquer dispositivos externos. Este problema e as formas de resolvê-lo serão discutidos na aula dedicada aos chamados Oráculos – intermediários de informação para contratos inteligentes.
Existem também limitações legais. Em alguns países, por exemplo, o uso de criptomoedas como meio de pagamento é proibido, mas é permitido possuí-las como um ativo digital, semelhante a valores mobiliários. Esses ativos podem ser comprados e vendidos em bolsas. Em qualquer caso, ao criar um projeto que lida com criptomoedas, é necessário se familiarizar com a legislação do país cuja jurisdição abrange seu projeto.
Como é formada a cadeia da blockchain
Como já mencionamos, a blockchain é uma simples cadeia de blocos de dados. Primeiro, o primeiro bloco dessa cadeia é formado, em seguida, adiciona-se o segundo e assim por diante. Os dados das transações são supostos serem armazenados nos blocos, e adicionados ao último bloco.
Na Fig. 1.1 mostramos a versão mais simples da sequência de blocos, onde o primeiro bloco aponta para o seguinte.

Fig. 1.1. Sequência simples de blocos
Neste formato, no entanto, é muito fácil falsificar o conteúdo de qualquer bloco da cadeia, uma vez que os blocos não contêm nenhuma informação para proteger contra alterações. Considerando que a blockchain é destinada a usuários e empresas que não confiam entre si, pode-se concluir que esse método de armazenamento de dados não é adequado para a blockchain.
Vamos trabalhar na proteção dos blocos contra falsificações. Na primeira etapa, tentaremos proteger cada bloco com um hash (Fig. 1.2).

Fig. 1.2. Adicionando proteção dos dados do bloco com um hash
Agora, um invasor não pode simplesmente alterar um bloco, pois ele contém o hash dos dados do bloco. A verificação do hash mostrará que os dados foram alterados.
Para calcular o hash, pode-se usar uma das funções de hash, como MD-5, SHA-1, SHA-256, etc. As funções de hash calculam um determinado valor (por exemplo, em forma de string de texto de comprimento fixo) como resultado da execução de operações irreversíveis sobre um bloco de dados. As operações dependem do tipo de função de hash.
Mesmo com uma pequena alteração no conteúdo do bloco de dados, o valor da função de hash também mudará. Analisando o valor da função de hash, não é possível recuperar o bloco de dados para o qual ele foi calculado.
Essa proteção será suficiente? Infelizmente, não.
Neste esquema, o hash (função hash) protege apenas blocos individuais, mas não toda a cadeia de blocos. Sabendo o algoritmo de cálculo da função hash, um invasor pode facilmente alterar o conteúdo de um bloco. Além disso, nada impede que ele exclua blocos da cadeia ou adicione novos.
Para proteger toda a cadeia como um todo, pode-se armazenar em cada bloco, juntamente com os dados, também o hash dos dados do bloco anterior (Fig. 1.3).

Fig. 1.3. Adicionando ao bloco de dados o hash do bloco anterior
Neste esquema, para modificar qualquer bloco, é necessário recalcular as funções hash de todos os blocos subsequentes. À primeira vista, qual é o problema?
Nos blockchains reais, dificuldades artificiais foram criadas para a adição de novos blocos — algoritmos que requerem muitos recursos computacionais são utilizados. Considerando que, para alterar um bloco, é necessário recalcular não apenas esse bloco, mas todos os subsequentes, será extremamente complicado fazê-lo.
Lembre-se também de que os dados do blockchain são armazenados (duplicados) em numerosos nós na rede, ou seja, utiliza-se armazenamento descentralizado. Isso torna muito mais difícil a falsificação de um bloco, uma vez que as alterações precisam 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.
Blockchain Ethereum
O blockchain Ethereum é uma plataforma sobre a qual é possível criar aplicativos distribuídos DApp. Diferentemente de outras plataformas, o Ethereum permite o uso de chamados contratos inteligentes (smart contracts), escritos na linguagem de programação Solidity.
Esta plataforma foi criada em 2013 por Vitalik Buterin, fundador da revista Bitcoin Magazine, e lançada em 2015. Tudo o que estudaremos ou faremos em nosso curso prático está relacionado ao blockchain Ethereum e aos contratos inteligentes em Solidity.
Mineração ou como os blocos são criados
A mineração (mining) é um processo bastante complexo e que consome muitos recursos para adicionar novos blocos à cadeia de blockchain, e não apenas 'extrair criptomoedas'. A mineração garante o funcionamento do blockchain, pois é esse processo que responde pela adição de transações ao blockchain Ethereum.
As pessoas e organizações que se dedicam à adição de blocos são chamadas de mineradores (miner).
O software (SW) que opera nos nós dos mineradores tenta encontrar para o último bloco o parâmetro de hash chamado Nonce, para que um determinado valor da função hash, definido pela rede, seja obtido. O algoritmo de hash Ethash, aplicado no Ethereum, permite obter o valor de Nonce apenas por meio de tentativas sequenciais.
Se o nó do minerador encontrou o valor correto do Nonce, isso é conhecido como prova de trabalho (PoW, Proof-of-work). Neste caso, se o bloco for adicionado à rede Ethereum, o minerador recebe uma recompensa em moeda da rede — Ether. No momento em que este livro foi preparado, a recompensa é de 5 Ether, mas com o tempo isso será reduzido.
Assim, os mineradores Ethereum garantem o funcionamento da rede adicionando blocos e recebem por isso dinheiro em criptomoeda. Na internet, você encontrará uma abundância de informações sobre mineradores e mineração, mas nós nos concentraremos na criação de contratos Solidity e aplicativos descentralizados DApp na rede Ethereum.
Resumo da lição
Na primeira lição, você se familiarizou com a blockchain e aprendeu que ela é uma sequência de blocos composta de maneira especial. O conteúdo dos blocos já registrados não pode ser alterado, pois isso exigiria recalcular todos os blocos subsequentes em muitos nós da rede, o que requer muitos recursos e tempo.
A blockchain pode ser aplicada para manter os resultados da execução de transações. Sua principal finalidade é organizar a execução segura de transações entre partes (pessoas e organizações) que não confiam umas nas outras. Você aprendeu em quais áreas específicas de negócios e em quais setores a blockchain Ethereum e os contratos inteligentes Solidity podem ser utilizados. Esses setores incluem o setor bancário, a registradora de propriedade, documentos e assim por diante.
Você também aprendeu que ao utilizar a blockchain, diversos problemas podem surgir. Esses incluem problemas de verificação da informação adicionada à blockchain, a velocidade de operação da blockchain, o custo das transações, problemas de troca de dados entre contratos inteligentes e o mundo real, além de potenciais ataques maliciosos destinados a roubar criptomoedas das contas dos usuários.
Além disso, falamos brevemente sobre mineração como o processo de adição de novos blocos à blockchain. A mineração é necessária para a execução de transações. Aqueles que fazem mineração garantem o funcionamento da blockchain e recebem recompensas em criptomoeda por isso.
Lição 2. Preparação do ambiente de trabalho nos sistemas operacionais Ubuntu e DebianEscolha do sistema operacional
Instalação das utilidades necessárias
Instalação do Geth e Swarm no Ubuntu
Instalação do Geth e Swarm no Debian
Preparação preliminar
Carregamento do distribuidor Go
Configuração de Variáveis de Ambiente
Verificando a versão do Go
Instalação do Geth e Swarm
Criando uma blockchain privada
Готовим файл genesis.json
Criando um diretório de trabalho
Criando uma conta
Iniciando a inicialização do nó
Parâmetros de inicialização do nó
Conectando ao nosso nó
Gerenciando a mineração e verificando o saldo
Finalizando o console do Geth
Resumo da lição
Aula 3. Preparação do ambiente de trabalho no Raspberry Pi 3Preparando o Raspberry Pi 3 para uso
Instalação do Rasberian
Instalação de atualizações
Ativando o acesso SSH
Configurando um endereço IP estático
Instalação das utilidades necessárias
Instalação do Go
Carregamento do distribuidor Go
Configuração de Variáveis de Ambiente
Verificando a versão do Go
Instalação do Geth e Swarm
Criando uma blockchain privada
Verificando a conta e o saldo
Resumo da lição
Aula 4. Contas e transferência de fundos entre contasVisualizando e adicionando contas
Visualizando a lista de contas
Adicionando uma conta
Parâmetros do comando geth account
Senhas de contas
Criptomoedas no Ethereum
Unidades monetárias do Ethereum
Determinado o saldo atual de nossas contas
Transferindo fundos de uma conta para outra
Método eth.sendTransaction
Visualizando o estado da transação
Recibo da transação
Resumo da lição
Aula 5. Publicando o primeiro contratoContratos inteligentes no Ethereum
Executando um contrato inteligente
Máquina virtual do Ethereum
Ambiente de desenvolvimento integrado Remix Solidity IDE
Iniciando a compilação
Chamando funções do contrato
Publicando o contrato em uma rede privada
Obtendo a definição do ABI e o código binário do contrato
Publicação do contrato
Verificando o estado da transação de publicação do contrato
Chamando funções do contrato
Compilador em lote solc
Instalação do solc no Ubuntu
Instalação do solc no Debian
Compilando o contrato HelloSol
Publicação do contrato
Instalação do solc no Rasberian
Resumo da lição
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Instalação no Ubuntu
Instalação no Debian
Instalação e execução do Ganache-cli
Instalação do Web3
Instalação do solc
Instalação do Node.js no Rasberian
Script para obter a lista de contas no console
Script para publicar um contrato inteligente
Iniciando e obtendo parâmetros
Obtendo parâmetros de inicialização
Compilação do contrato
Desbloqueando a conta
Carregando ABI e código binário do contrato
Avaliação da quantidade necessária de gás
Criando um objeto e iniciando a publicação do contrato
Executando o script de publicação do contrato
Chamando funções do contrato inteligente
É possível atualizar um contrato inteligente publicado?
Trabalhando com Web3 versão 1.0.x
Obtendo a lista de contas
Publicação do contrato
Chamando funções do contrato
Transferindo fundos de uma conta para outra
Transferindo fundos para a conta do contrato
Atualizando o contrato inteligente HelloSol
Criando um script para visualizar o saldo da conta
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Recarregando a conta do contrato inteligente
Resumo da lição
Aula 7. Introdução ao TruffleInstalação do Truffle
Criando o projeto HelloSol
Criação do diretório e arquivos do projeto
Diretório contracts
Diretório migrations
Diretório test
Файл truffle-config.js
Compilando o contrato HelloSol
Início da publicação do contrato
Chamada das funções do contrato HelloSol no convite Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalação do módulo truffle-contract
Chamada das funções do contrato getValue e getString
Chamada das funções do contrato setValue e setString
Mudança do contrato e republicação
Trabalhando com Web3 versão 1.0.x
Fazendo alterações no smart contract HelloSol
Scripts para chamar os métodos do contrato
Testes no Truffle
Teste em Solidity
Teste em JavaScript
Resumo da lição
Aula 8. Tipos de dados em SolidityContrato para estudar tipos de dados
Tipos de dados lógicos
Números inteiros sem sinal e inteiros com sinal
Números de ponto fixo
Endereço
Variáveis de tipos complexos
Arrays de tamanho fixo
Arrays dinâmicos
Enumeração
Estruturas
Mapas mapping
Resumo da lição
Aula 9. Migração de contratos para rede privada e para a rede RinkebyPublicação do contrato do Truffle na rede privada Geth
Preparação do nó da rede privada
Preparação do contrato para funcionamento
Compilação e migração do contrato para a rede Truffle
Início da migração na rede local geth
Extraindo artefatos do Truffle
Publicação do contrato do Truffle na rede de teste Rinkeby
Preparação do nó Geth para trabalhar com Rinkeby
Sincronização do nó
Adição de contas
Reforço da conta Rinkeby com ether
Início da migração do contrato para a rede Rinkeby
Visualização das informações do contrato na rede Rinkeby
Console Truffle para a rede Rinkeby
Uma maneira mais simples de chamar funções do contrato
Вызов методов контракта при помощи Node.js
Transferência de fundos entre contas no console Truffle para Rinkeby
Resumo da lição
Aula 10. Armazenamento descentralizado de dados Ethereum SwarmComo funciona o Ethereum Swarm
Instalação e execução do Swarm
Operações com arquivos e diretórios
Upload de arquivo para o Ethereum Swarm
Leitura de arquivo do Ethereum Swarm
Visualização do manifesto do arquivo carregado
Upload de diretórios com subdiretórios
Leitura de arquivo do diretório carregado
Uso de gateway público Swarm
Обращение к Swarm из скриптов Node.js
Módulo Perl Net::Ethereum::Swarm
Instalação do módulo Net::Ethereum::Swarm
Gravação e leitura de dados
Resumo da lição
Aula 11. Framework Web3.py para trabalhar com Ethereum em PythonInstalação do Web3.py
Atualização e instalação de pacotes necessários
Instalação do módulo easysolc
Publicação do contrato usando Web3.py
Compilação do contrato
Conexão com o provedor
Execução da publicação do contrato
Salvando o endereço do contrato e abi em um arquivo
Executando o script de publicação do contrato
Chamada de métodos do contrato
Leitura do endereço e abi do contrato a partir de arquivo JSON
Conexão com o provedor
Criação do objeto do contrato
Chamada de métodos do contrato
Truffle e Web3.py
Resumo da lição
Aula 12. OráculosUm contrato inteligente pode confiar em dados do mundo externo?
Oráculos como intermediários informacionais da blockchain
Fonte de dados
Código para representar dados da fonte
Oráculo para gravar a taxa de câmbio na blockchain
Contrato USDRateOracle
Atualização da taxa de câmbio no contrato inteligente
Uso do provedor Web Socket
Aguardando o evento RateUpdate
Processamento do evento RateUpdate
Iniciando a atualização de dados no contrato inteligente
Resumo da lição
Fonte: habr.com
