WEB3DEV

Cover image for Crie um Aplicativo Básico de Mensagem com Contratos Inteligentes na Blockchain
Panegali
Panegali

Posted on

Crie um Aplicativo Básico de Mensagem com Contratos Inteligentes na Blockchain

Um guia passo a passo para construir um Dapp de mensagem nos contratos inteligentes na blockchain. E uma introdução às variáveis ​​do Solidity usando o Remix IDE — nenhuma experiência prévia em codificação é necessária!

Neste artigo, vamos mergulhar nos contratos inteligentes na blockchain e construir um exemplo que é o Dapp de mensagem na linguagem de programação Solidity. Neste projeto usaremos o Remix, o qual será explicado neste artigo, então pegue seu café e vamos começar!

O que são contratos inteligentes na blockchain?

Os contratos inteligentes na Blockchain são como programas executados quando determinados critérios são satisfeitos e são registrados nas redes blockchain. A rede blockchain de contrato inteligente mais famosa é a Ethereum, que usa uma linguagem de programação chamada Solidity para construir contratos inteligentes, que é considerado o back-end de desenvolvimento em projetos blockchain.

Os contratos inteligentes na blockchain são frequentemente usados ​​para automatizar a implementação de condições para que todos os participantes possam ter certeza da conclusão instantaneamente, sem a participação de um intermediário ou perda de tempo. Eles também podem automatizar um fluxo de trabalho ativando automaticamente a próxima atividade quando determinadas circunstâncias forem atendidas.

Alguns pontos que você precisa saber antes de começarmos sobre contratos inteligentes na blockchain:

  • Os contratos inteligentes na Blockchain são muito rápidos na execução, portanto, são eficientes.
  • Imutáveis, o que significa que não podem ser alterados!
  • Permanente, esses contratos não podem ser alterados se houver algum erro, então você deve reimplantá-los.
  • Nem todas as redes blockchain suportam contratos inteligentes.

O que é o Remix IDE

O Remix IDE é uma ferramenta online que você pode usar para escrever e depurar código Solidity e implantá-lo em várias redes da Ethereum.

O Remix pode ser uma ferramenta extremamente importante no desenvolvimento Web3 e assim como no de contratos inteligentes na blockchain. Usaremos o Remix como nosso IDE principal para escrever, aprender e implantar nosso Dapp de mensagem na rede Ethereum.

Mas o que você precisa saber antes de construirmos o Dapp de mensagem com Solidity?

Você pode ler meu artigo anterior: DevOps vs Agile: Which Wins?_

Variáveis ​​na linguagem de programação Solidity

Se alguém não souber o que significa variável, em termos simples, significa apenas um espaço reservado para qualquer tipo de dado, como uma string ou um número. As variáveis ​​permitem que os usuários obtenham e modifiquem os dados armazenados.

Existe um grande tipo de variáveis ​​no Solidity, mas vamos pegar apenas algumas delas as quais usaremos em nosso caminho para construir o Dapp de mensagem.

Booleanos:

É o mais fácil de entender entre todos eles. Os Booleanos são apenas tipos de dados que aceitam dois tipos de dados: Verdadeiro ou Falso (SIM/NÃO, LIGADO/DESLIGADO). E é definido como um bool, vamos dar um exemplo:

bool isCodingFun==true;
bool goingToGym==false;
Enter fullscreen mode Exit fullscreen mode

Inteiros não assinados:

A próxima coisa sobre a qual falaremos são inteiros assinados/não assinados, que é outro tipo de variável que são números completos. A diferença entre inteiros com sinal e inteiros sem sinal é que os com sinal podem ir para valores negativos, enquanto os inteiros sem sinal são valores positivos (de zero a algo realmente grande). Eles são definidos como uint, por exemplo:

uint myUint=2023; // Ele varia de 0 - (2²⁵⁶)
uint8 mySmallerNumber = 2; // Outro tipo de unidade para números menores
uint goodNumber=-7; // Valor negativo
Enter fullscreen mode Exit fullscreen mode

Strings e Bytes:

Strings são arrays, se isso parece muito complicado, deixe-me explicar para você. Em termos simples, é uma sequência de caracteres que pode conter qualquer texto, por exemplo:

String myText="Eu vou gostar deste artigo xD"; // Pode conter qualquer tipo de texto
Enter fullscreen mode Exit fullscreen mode

A linguagem de programação Solidity para o desenvolvimento de contratos inteligentes na blockchain suporta aspas duplas (“) e aspas simples (') para o tipo de variável string. Mas de alguma forma como algo muito exclusivo do Solidity, não há muitas funções de manipulação de string como em outras linguagens de programação, se você vier de linguagens populares como Python ou Javascript, saberá do que estou falando.

Exceto por uma que permite concatenar strings, você pode colocá-las e mesclá-las, mas nativamente não há funções de manipulação de strings. Uma das razões para isso é que as strings são muito caras de armazenar em redes blockchain.

Tipo de endereço:

É um tipo de variável muito específico para o Solidity, pode conter o endereço da sua carteira (20 bytes) que é o endereço da carteira Ethereum (Sua conta na blockchain). Por exemplo:

address myAccount= 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C; // Este hash é uma conta na rede Ethereum
Enter fullscreen mode Exit fullscreen mode

O tipo de endereço também pode obter a conta diretamente do usuário, mas devemos usar um novo método que é:

address myAccount=msg.sender;
Enter fullscreen mode Exit fullscreen mode

Mas ele deve ser público para que você possa vê-lo ao implantá-lo no Remix então nós adicionaremos isso à ele:

address public myAccount=msg.sender; // public significa que você o chamará da janela quando o implantar.
Enter fullscreen mode Exit fullscreen mode

O endereço também possui um saldo de nomes de propriedade do membro, com essa propriedade você pode acessar o saldo da conta, por exemplo:

address public myAccount=msg.sender;
uint256 public accountBlanace=myAccount.balance;
Enter fullscreen mode Exit fullscreen mode

O Objeto Msg.

Esta seção é a parte mais importante do desenvolvimento em Solidity. Há muitas coisas no objeto msg, mas, em geral usaremos msg.sender que contem o endereço da pessoa que está interagindo com o contrato inteligente na blockchain, por exemplo:

address public myAddress;
function updateMyAddress() public{
myAddress = msg.sender; // Você pode usá-lo, o qual contém algumas propriedades e uma delas é .sender
}
Enter fullscreen mode Exit fullscreen mode

Como você pode ver, se implantarmos este contrato no Remix, encontraremos dois botões, o primeiro é o myAddress que é 0, mas quando clicarmos em updateMyAddress, veremos que myAddress será atualizado com base no meu endereço.

Você pode ler meu artigo anterior: _My DevOps Journey: Part 1 — Falling in Love with DevOps (Minha jornada no DevOps: Parte 1 — Apaixonando-se pelo DevOps)

Funções no Solidity

Eu sei que deveria abordar isso primeiro, mas queria falar sobre isso um pouco mais tarde, porque é um tópico muito importante em todos os campos de tecnologia, não apenas no desenvolvimento de contratos inteligentes na blockchain.

Para iniciantes, as funções são simplesmente como um “pedaço” de código que você pode reutilizar em vez de escrevê-la várias vezes.

Os programadores podem usar funções para dividir problemas ou seções de código em partes menores, cada uma com uma finalidade específica.

Mas no Solidity existem algumas diferenças, e falaremos sobre as funções view e as funções pure. A sintaxe básica da função no Solidity é assim:

function nameOfTheFunction(parameters) scope returns() {
// o código
}
Por exemplo:
function getSum() public view returns(uint){
uint a = 1;
uint b = 2;
uint sum = a + b;
return sum;
}
Enter fullscreen mode Exit fullscreen mode

Agora as funções com o tipo view são somente para leitura, o que significa que as variáveis ​​de estado não podem ser alteradas após chamadas. A função Simply View declara que nenhum estado será alterado, mas a função Pure declara que nenhuma variável de estado será alterada ou lida. Por exemplo:

uint public x = 1;
// Promessa de não modificar o estado.
function increaseX(uint y) public view returns (uint) {
return x + y;
}
// Promessa de não modificar ou ler a partir do estado.
function increase(uint i, uint j) public pure returns (uint) {
return i + j;
}
Enter fullscreen mode Exit fullscreen mode

Contratos inteligentes de mensagens na blockchain

Ok, agora podemos colocar tudo o que aprendemos juntos em um pequeno projeto que é simplesmente armazenar uma string em um contrato inteligente na blockchain, deve ser legível para todos, mas é gravável apenas para a pessoa que implantou o contrato inteligente na blockchain.

Queremos também saber quantas vezes a mensagem foi atualizada no contrato inteligente para podermos contá-la.

Agora vá para o Remix IDE e abra um novo contrato, nomeie como quiser .sol, depois disso coloque esse código dentro do contrato:

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract nameOfTheContract{
// Código aqui
}
Enter fullscreen mode Exit fullscreen mode

A linha SPDX refere-se à licença que deve estar em cada código de contrato inteligente. Enquanto a palavra-chave pragma é usada para habilitar certos recursos ou versões do compilador, essas duas linhas de código devem estar em todos os códigos de contrato inteligente.

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract learn{
uint public counter;
address public owner=msg.sender; // O endereço do proprietário
string public message;
function updateMessage(string memory _newMessage) public{
   if(msg.sender==owner){ 
       message=_newMessage;
       counter++;
   }
}
}
Enter fullscreen mode Exit fullscreen mode

Remix IDE

O resultado dos contratos inteligentes na blockchain

O desenvolvimento de um DApp básico na blockchain no Solidity é uma excelente maneira de aprender o desenvolvimento de contratos inteligentes na blockchain.

Com o aumento de soluções blockchain e Web3, a demanda por desenvolvedores de contratos inteligentes está aumentando, e aprender a construir DApps básicos no Solidity e na Ethereum pode ser um grande passo.


Artigo escrito por Essam Aldeen.Traduzido por Marcelo Panegali.

Top comments (0)