A postagem Linguagem de programação Master Solidity em 5 minutos: a espinha dorsal dos contratos inteligentes Ethereum apareceu pela primeira vez em Coinpedia Fintech News

Introdução:

Você já se perguntou como a escalada na indústria de blockchain mudou completamente nossa visão sobre os ativos digitais? Este desenvolvimento não teria sido possível sem o Ethereum, uma plataforma global de código aberto para aplicativos descentralizados (dApps). É a pedra angular de sua criptomoeda nativa, o Ether (ETH).

Ether (ETH) é a segunda maior criptomoeda do mundo, com um limite atual de US$ 404,86 bilhões, depois do Bitcoin (BTC). Também é conhecido por seu método de validação de prova de aposta. Ethereum é acessível para quem procura uma plataforma segura escalável, programável e descentralizada.

O potencial fundamental do Ethereum reside na linguagem principal dos seus contratos inteligentes: Solidity. Vamos nos aprofundar na compreensão dos fundamentos do Solidity. 

Introdução à Solidez:

O que é solidez?

Solidity é a linguagem predominante introduzida pela Ethereum para criar contratos inteligentes. É uma linguagem de alto nível, orientada a objetos e de tipo estaticamente projetada para contratos inteligentes. Solidity é uma linguagem relativamente nova, apresentada por Gavin Wood em 2014 e posteriormente desenvolvida por Christian Reitwiessner e Alex Beregszaszi. Mesmo sendo nova, tornou-se a linguagem favorita dos desenvolvedores Ethereum.

Seus principais recursos são os seguintes: ele suporta herança múltipla junto com linearização C3, tipos de dados complexos definidos pelo usuário, bibliotecas e até heranças, e também traz (ABI)Interferência binária de aplicativo que garante segurança de tipo e inclui especificação de linguagem natural .

Por que Solidez para Ethereum?

Solidity compartilha semelhanças com linguagens como C++, JavaScript e Python e é executado em uma Máquina Virtual Ethereum (EVM) hospedada em nós Ethereum conectados ao blockchain. É imensamente útil e capaz de criar aplicativos industriais, benéficos e fortes que suportam bibliotecas e herança definidas pelo usuário. Ele garante implantação e execução perfeitas de contratos nos nós Ethereum. 

A Máquina Virtual Ethereum serve principalmente como um ambiente de execução para contratos inteligentes. Ele é utilizado e centrado na garantia da segurança e implementação de código não confiável por meio de uma rede internacional de nós públicos.

O Solidity compila os bytecodes Ethereum executados pelo EVM. Ele se concentra em prevenir um ataque de negação de serviço e garante que os programas não tenham acesso aos estados um do outro, confirmando também a inibição de qualquer inferência.

Sintaxe e estrutura de solidez

Sintaxe Básica

Linguagens como C++, JavaScript e Python influenciam a solidez. O Solidity usa sintaxe semelhante ao ECMAScript, mas possui digitação estática. A linguagem de implementação usada para Solidity foi C++. Possui um paradigma imperativo que necessita que funções sejam codificadas implicitamente em cada etapa. 

Ele contém estruturas de dados típicas, como mapeamentos, matrizes e outros tipos de dados, como inteiros, booleanos e endereços que suportam operações e estruturas personalizadas. Funções são os blocos fundamentais da linguagem que podem modificar as variáveis ​​de estado e possuem tipos de retorno.

Estrutura de um Contrato de Solidez

Começamos o contrato inteligente com um preâmbulo que define a versão do pragma solidity, que declara a versão do compilador solidity usado para o código e contém o nome do contrato. Em segundo lugar, a palavra-chave do contrato é como o trecho de código deve começar a indicar o contrato sob o qual o código se enquadra. 

Os contratos podem ser considerados análogos às classes em OOPs. Cada contrato possui as seguintes declarações de variáveis ​​de estado: funções com tipos e métodos de retorno, modificadores, eventos, tipos estruturais, enums e erros. 

Cada subparte do código possui sua funcionalidade. Variáveis ​​de estado são usadas para armazenar os dados do contrato, funções são usadas para definir o comportamento, eventos são usados ​​para comunicação entre o contrato e os recursos externos e modificadores são usados ​​para impor regras.

Escrevendo um contrato simples e inteligente com solidez

Configurando o Ambiente de Desenvolvimento

O contrato inteligente Solidity pode ser implementado nos modos offline e online

  • Modo offline: para executar o solidity offline, você deve ter Node.js, trufa global e ganache-cli em seu sistema. Em seguida, você pode implementar contratos inteligentes, criar um projeto de trufas e interagir usando o console de trufas

  • Modo Online: Remix IDE é usado para compilar e executar os contratos inteligentes. A seguir estão as etapas envolvidas:

  1. Comece com o Remix IDE, defina o ambiente e crie um novo arquivo

  2. Crie um código de contrato inteligente e compile-o

  3. Implantar e executar o código 

  4. Depuração e chamada de método

 Exemplo de um contrato de solidez simples

//Solidez do Pragma>=0.4.22///título do contrato///autorcontrato Armazenamento{  uint256 dados privados;    Conjunto de funções(uint256 _data) public{      data=_data; }  Função get() retornos de visualização pública (uint256){      Retornar dados; }}

Vamos colocar na prática um exemplo simples de contrato de solidez:

Trecho:

O trecho de código acima permite ao usuário armazenar um único número inteiro não assinado. Aqui, a função set armazena os dados e a função get os recupera. Você pode tentar exemplos curtos e simples para começar sua jornada neste domínio.

Recursos avançados em Solidity

Herança e Bibliotecas

Além da forma lúcida de redigir contratos, a característica notável do Solidity é a herança. Herança refere-se ao uso de classes ou à herança das propriedades de uma classe em OOPS. Da mesma forma, permite que os usuários herdem as propriedades e métodos de um contrato em outro. Isso torna o código mais legível, torna a escrita mais limpa e aumenta a capacidade de reutilização do código. Bibliotecas no Solidity são uma vantagem, pois ajudam a organizar a forma como você representa seu código, permitindo modificações adequadas para modularizá-lo.

Melhores práticas de segurança

A segurança é crucial ao escrever contratos inteligentes. Existem algumas vulnerabilidades comuns, como ataques de reentrada e estouro de número inteiro. Um ataque de reentrada ocorre quando seu código fica vulnerável à exploração quando uma função faz uma chamada externa antes de atualizar seu próprio estado. Assim, permite que o elemento do contrato externo entre novamente na função e intervenha em ações como a retirada, repetindo-as.

Outra vulnerabilidade é o conhecido estouro de número inteiro, que ocorre quando o resultado de uma operação excede o limite máximo que o tipo de dados atribuído pode conter. Portanto, para superá-los, a melhor prática seria usar a biblioteca SafeMath, realizar auditorias completas e implementar padrões de verificações-efeitos-interações.

As práticas mais recentes que são eficazes para garantir a segurança são designs simples de contratos e testes Fuzz, que parecem um pouco pouco convencionais, mas testes de dados aleatórios ajudam a encontrar problemas ocultos. Além disso, um movimento estratégico seria ter grandes programas de recompensas que envolveriam a comunidade de segurança contribuindo e corrigindo os bugs e oferecendo grandes recompensas. 

Desenvolvendo e implantando contratos de solidez

Fluxo de trabalho de desenvolvimento

A seguir está o fluxo de trabalho:

  1. Conceitualização da ideia: O desenvolvedor deve definir um propósito claro para o contrato.

  2. Escreva contratos: escreva código limpo e legível usando IDEs como Remix IDE, Truffle ou Hardhat.

  3. Teste: use estruturas de teste apropriadas nos IDEs

  4. Depuração: depure o código para quaisquer problemas e verifique se o código funciona conforme o esperado.

  5. Verificação de segurança: verifique se há vulnerabilidades usando ferramentas de segurança como MythX.

  6. Implantar: por fim, implante o contrato e garanta uma integração perfeita

Implantação na Rede Ethereum

A implantação de contratos inteligentes requer muita consideração quanto à precisão do código. Portanto, antes de interagir com a rede principal, primeiro implantamos nosso contrato inteligente em redes de teste Ethereum como Robstan, Kovan ou Rinkben. Eles nos permitem encontrar e resolver os erros no código. A rede de teste mais recente é Goerli, que foi introduzida em 2018 e usa mecanismo de consenso de prova de autoridade

 Depois de finalizar o contrato, você pode implantá-lo na rede principal. A implantação na rede principal requer taxas de gás em Ether (ETH). Portanto, é necessário ter um código preciso e sem discrepâncias. Plataformas como Infura e Metamask fornecem APIs e serviços de carteira. Assim, uma vez implantados seus contratos, eles serão imutáveis ​​e públicos.

Uma alternativa aos IDEs convencionais de Truffle e capacete de segurança é o Brownie, que fornece uma interface de linha de comando e um console interativo, e usa pytest, portanto, para desenvolvedores familiarizados com Python. Brownie certamente adiciona pontos de brownie!

Futuro da Solidity e Contratos Inteligentes Ethereum

Evolução da Solidez

A solidez evoluiu incrivelmente. A concentração atual está em atualizações de segurança, eficiência e capacidade de reutilização. Uma grande comunidade por trás dessa evolução aprimora e contribui constantemente para trazer o Solidity onde ele está hoje. 

O ecossistema de desenvolvedores também está aumentando em muitos países. Para se tornar um desenvolvedor Solidity, você precisa de uma base sólida em programação de computadores.

Tendências e Inovações

As tendências recentes no Solidity são o desenvolvimento de contratos inteligentes, incluindo soluções de camada 2, interoperabilidade entre cadeias e integração de IA. Esta inovação revolucionou a indústria blockchain e o desenvolvimento de dApps.

Junto com o foco em aumentar a análise do programa e melhorar a correção, os pesquisadores pretendem integrar esquemas criptográficos avançados, como o protocolo de votação eletrônica TAVS no Solidity. Para melhorar a usabilidade e resolver a análise baseada em bytes, novas ferramentas como o SolSEE estão em desenvolvimento.

Conclusão

Para concluir, Solidity é o pilar do Ethereum e do desenvolvimento de contratos inteligentes. Ele fornece uma estrutura segura, confiável e bem construída para a criação de dApps. À medida que a tecnologia blockchain continua a brilhar na indústria, o Solidity, sendo seu pioneiro, continua sendo um dos mais fortes contribuintes para o crescimento. Então prepare tudo e entre na arena de um futuro descentralizado!

Leia também: Criptografia 101: A chave para o desenvolvimento de Blockchain para iniciantes