O que é a Solidity?

Solidity é uma linguagem de programação orientada a objetos criada especificamente pela equipe da Ethereum Network para construir e projetar contratos inteligentes em plataformas Blockchain.

  • É usado para criar contratos inteligentes que implementam a lógica de negócios e geram uma cadeia de registros de transações no sistema blockchain.
  • Ele atua como uma ferramenta para criar código em nível de máquina e compilá-lo na Máquina Virtual Ethereum (EVM).
  • Tem muitas semelhanças com C e C ++ e é bastante simples de aprender e entender

Como outras linguagens de programação, a programação do Solidity também possui variáveis, funções, classes, operações aritméticas, manipulação de strings e muitos outros conceitos.

Dapps também conhecidos como decentralized applications (“Aplicativos Descentralizados”) são aplicativos construídos na rede peer-to-peer de código aberto da Ethereum Blockchain, que usa contratos inteligentes e interfaces de usuário front-end para criar plataformas descentralizadas.

O desenvolvimento de um Dapp, como qualquer outro aplicativo, requer programação e execução de código no sistema. A programação Solidity se destaca das outras linguagens de programação e é a linguagem de programação escolhida no Ethereum.

Evolução de programação da Solidity

Solidity é uma linguagem relativamente nova que está crescendo rapidamente.

  • Solidity é atualmente a linguagem central no Ethereum e outros blockchains privados operando em plataformas concorrentes, como Monax e seu blockchain Hyperledger Burrow que usa Tendermint para consenso. 
  • A SWIFT criou uma prova de conceito que roda no Burrow e usa o Solidity.
Programação solidity

O que são EVM e Contratos inteligentes?

EVM ou Ethereum Virtual Machine 

  • A Máquina Virtual Ethereum (EVM) fornece um ambiente de tempo de execução para contratos inteligentes Ethereum.
  • Seu principal objetivo é garantir a segurança e a execução de programas não confiáveis ​​por meio do uso de uma rede internacional de nós públicos.
  • O EVM é especializado na prevenção de ataques de negação de serviço e certifica que os programas não têm acesso ao estado uns dos outros, bem como estabelece comunicação, sem possível interferência.

Contratos Inteligentes 

  • Contratos inteligentes referem-se a códigos de programa de alto nível compilados no EVM antes de serem postados no blockchain Ethereum para execução.
  • Ele permite que você conduza transações confiáveis ​​sem o envolvimento de terceiros; essas transações são rastreáveis ​​e irreversíveis.
  • As linguagens de programação comumente usadas para criar e escrever contratos inteligentes são Serpent, Solidity, Mutan e LLL.

Tipos de dados de programação da Solidity

Ele suporta todos os tipos de dados comuns vistos em outras linguagens, como:

  • Boolean – O tipo de dados Boolean retorna ‘1’ quando a condição é verdadeira e ‘0’ quando é falsa, dependendo do status da condição.
  • Inteiro – você pode assinar ou cancelar a assinatura de valores inteiros no Solidity. Ele também suporta exceções de tempo de execução e as palavras-chave ‘uint8’ e ‘uint256’.
  • String – Aspas simples ou duplas podem denotar uma string.
  • Modificador – antes de executar o código para um contrato inteligente, um modificador geralmente verifica se qualquer condição é racional.
  • Array – A sintaxe de programação do Solidity é como a de outras linguagens OOP e oferece suporte a arrays simples e multidimensionais.

Além disso, a programação do Solidity permite que você “Mapeie” estruturas de dados com enums, operadores e valores hash para retornar valores armazenados em locais de armazenamento específicos.

Como começar a programar Solidity?

Versão pragma

Solidity_Programming_6
  • Pragmas são diretivas para o compilador sobre como lidar com o código. Cada linha do código-fonte de solidez deve começar com um “pragma de versão”, que especifica qual versão do compilador de solidez usar.
  • Isso evita que o código seja incompatível com versões futuras do compilador que podem introduzir alterações.

A palavra-chave do contrato

Solidity_Programming_7
  • A palavra-chave do contrato declara um contrato que encapsula o código.

Declarar / declarar variáveis

Solidity_Programming_8
  • Variáveis ​​de estado são gravadas no Ethereum Blockchain e são mantidas permanentemente no armazenamento de contrato.
  • A linha uint public var1 declara uma variável de estado do tipo uint chamada var1 (inteiro sem sinal de 256 bits), é muito semelhante a adicionar um slot em um banco de dados.

Uma declaração de função

Solidity_Programming_9
  • Esta é uma função chamada “conjunto” do tipo de modificador de acesso público que leva uma variável ae a variável b do tipo de dados uint como um parâmetro.
  • Este foi um exemplo de um contrato inteligente simples que atualiza o valor de var1 e var2. Qualquer pessoa com acesso ao blockchain Ethereum pode usar a função set para alterar o valor de var1 e var2.
  • Ao adicionar os valores das variáveis ​​var1 e var2, ele pode calcular a soma da variável.
  • Ele irá recuperar e imprimir o valor da soma da variável de estado usando a função “get”.

Como executar o código

Você pode executar um Programa Solidity de duas maneiras – 

  1. Modo offline
  2. Moda online

Modo offline 

Para operar um contrato inteligente Solidity no modo offline, ele deve atender a três condições e seguir quatro ações essenciais:

  • Condições
  1. Baixe e instale node.js.
  2. Instale o Truffle globalmente.
  3. Install ganache-cli.
Solidity_Programming_10
  • Ações
  1. Crie um projeto de trufas e estabeleça uma rede de desenvolvimento para ele.
  2. Desenvolva e implante um contrato inteligente para ele.
  3. No console do Truffle, interaja com o contrato inteligente.
  4. Crie testes para avaliar os recursos primários do Solidity.

Moda online 

No modo online, o Remix IDE é normalmente usado para compilar e executar contratos inteligentes Solidity.

Solidity_Programming_11.

Remix IDE

Vantagens da programação da Solidity

Além da funcionalidade primária da Programação Solidity, existem muitos outros recursos fornecidos pela programação Solidity que fazem com que ele tenha uma vantagem sobre outras linguagens baseadas em Ethereum.

  • Além dos tipos de dados fundamentais, a programação do Solidity também permite tipos de dados complexos e variáveis ​​de membro.
  • Ela fornece uma interface binária de aplicativo (ABI) para habilitar a segurança de tipo. Se o compilador descobrir uma incompatibilidade de tipo de dados para qualquer variável, a ABI gerará um erro.
  • Refere-se à ‘Especificação de linguagem natural’, que é usada para transformar especificações centradas no usuário em uma linguagem que as máquinas possam entender.
bitcoin
Bitcoin (BTC) 19.710,65 0,68%
ethereum
Ethereum (ETH) 1.373,32 0,80%
tether
Tether (USDT) 1,03 0,15%
usd-coin
USD Coin (USDC) 1,03 0,14%
bnb
BNB (BNB) 286,72 1,38%
xrp
XRP (XRP) 0,503589 0,77%
binance-usd
Binance USD (BUSD) 1,03 0,18%
cardano
Cardano (ADA) 0,474271 0,07%
solana
Solana (SOL) 34,98 0,71%
dogecoin
Dogecoin (DOGE) 0,065135 2,93%
polkadot
Polkadot (DOT) 6,54 1,00%
shiba-inu
Shiba Inu (SHIB) 0,000012 2,78%
dai
Dai (DAI) 1,03 0,19%
staked-ether
Lido Staked Ether (STETH) 1.365,76 0,83%
matic-network
Polygon (MATIC) 0,783544 0,95%
tron
TRON (TRX) 0,062049 0,04%
avalanche-2
Avalanche (AVAX) 18,33 0,69%
wrapped-bitcoin
Wrapped Bitcoin (WBTC) 19.676,47 0,44%
uniswap
Uniswap (UNI) 6,13 0,29%
cosmos
Cosmos Hub (ATOM) 14,26 0,80%
ethereum-classic
Ethereum Classic (ETC) 30,09 2,34%
leo-token
LEO Token (LEO) 4,41 0,03%
chainlink
Chainlink (LINK) 8,29 5,18%
okb
OKB (OKB) 15,85 2,73%
litecoin
Litecoin (LTC) 55,85 1,84%
ftx-token
FTX (FTT) 24,63 0,31%
stellar
Stellar (XLM) 0,123086 3,44%
crypto-com-chain
Cronos (CRO) 0,122158 1,69%
near
NEAR Protocol (NEAR) 3,86 0,82%
algorand
Algorand (ALGO) 0,409314 5,01%
monero
Monero (XMR) 148,55 1,53%
bitcoin-cash
Bitcoin Cash (BCH) 121,42 1,82%
flow
Flow (FLOW) 1,74 0,44%
apecoin
ApeCoin (APE) 5,69 1,11%
vechain
VeChain (VET) 0,023890 0,78%
chain-2
Chain (XCN) 0,079235 0,91%
filecoin
Filecoin (FIL) 5,80 1,02%
terra-luna
Terra Luna Classic (LUNC) 0,000238 7,31%
internet-computer
Internet Computer (ICP) 6,24 1,31%
quant-network
Quant (QNT) 118,86 1,62%
chiliz
Chiliz (CHZ) 0,280264 4,58%
hedera-hashgraph
Hedera (HBAR) 0,063671 0,87%
frax
Frax (FRAX) 1,03 0,13%
tezos
Tezos (XTZ) 1,55 1,54%
the-sandbox
The Sandbox (SAND) 0,921426 1,64%
decentraland
Decentraland (MANA) 0,735484 1,00%
eos
EOS (EOS) 1,26 0,55%
axie-infinity
Axie Infinity (AXS) 13,26 3,73%
theta-token
Theta Network (THETA) 1,17 0,54%
elrond-erd-2
Elrond (EGLD) 50,05 0,83%