SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
29.11.2024

Lição 177: Introdução à Linguagem Vyper

Vyper é uma linguagem de programação pythonica para escrever contratos inteligentes na blockchain Ethereum. Ela tem como objetivo fornecer uma alternativa mais segura, simples e auditável em relação ao Solidity, com foco na legibilidade e simplicidade. Nesta lição, vamos explorar as principais características do Vyper e fornecer exemplos práticos para ajudá-lo a começar.

Principais Características do Vyper

  1. Sintaxe Pythonica: O Vyper foi projetado para ser fácil de ler e escrever para quem já está familiarizado com Python. Isso incentiva um código mais limpo, facilitando a auditoria.

  2. Segurança: O Vyper possui várias escolhas de design destinadas a minimizar a complexidade e aumentar a segurança. Ele não possui certas funcionalidades que poderiam levar a vulnerabilidades, como herança, sobrecarga de operadores e tipos de dados complexos.

  3. Simplicidade: O Vyper permite apenas um número limitado de tipos de dados e estruturas de controle, o que ajuda a evitar comportamentos inesperados e torna o código mais fácil de entender.

  4. Sem Funções Mágicas: O Vyper não suporta funções especiais (como fallback ou constructor no Solidity); em vez disso, métodos explícitos são definidos.

Sintaxe Básica e Tipos de Dados

O Vyper possui uma sintaxe direta e suporta um conjunto limitado de tipos de dados:

  • Tipos Primitivos: int128, uint256, bool, bytes e string.
  • Coleções: mapping, array e variáveis públicas.

Exemplo "Olá, Mundo!"

Vamos começar com um contrato simples de "Olá, Mundo!" em Vyper.

# HelloWorld.vy

@public
@constant
def greet() -> string:
    return "Olá, Mundo!"

Neste exemplo:

  • O decorador @public especifica que a função pode ser chamada externamente.
  • O decorador @constant indica que a função não modifica o estado do contrato.
  • A função greet retorna uma simples string.

Variáveis de Estado

As variáveis de estado no Vyper são definidas no nível do contrato. Aqui está um exemplo de um contrato simples que armazena um número.

# SimpleStorage.vy

storedData: public(uint256)

@public
def set(x: uint256):
    self.storedData = x

@public
@constant
def get() -> uint256:
    return self.storedData

Neste contrato:

  • storedData é uma variável de estado pública do tipo uint256.
  • A função set permite definir o valor de storedData.
  • A função get recupera o valor armazenado.

Mapeamentos

Mapeamentos são uma forma de armazenar pares chave-valor. Aqui está um exemplo de um contrato que rastreia saldos usando um mapeamento.

# BalanceTracker.vy

balances: public(map(address, uint256))

@public
def deposit(amount: uint256):
    assert amount > 0, "O valor do depósito deve ser maior que zero"
    self.balances[msg.sender] += amount

@public
@constant
def getBalance(account: address) -> uint256:
    return self.balances[account]

Neste contrato:

  • balances é um mapeamento público de endereços de usuários para seus respectivos saldos.
  • A função deposit permite que um usuário deposite fundos, aumentando seu saldo.
  • A função getBalance retorna o saldo de uma conta específica.

Estruturas de Controle

O Vyper suporta estruturas de controle básicas, incluindo if, for e while. Aqui está um exemplo simples que verifica se um valor é positivo.

# CheckPositive.vy

@public
def check_positive(x: int128) -> bool:
    if x > 0:
        return True
    else:
        return False

Esta função retorna True se a entrada x for maior que zero; caso contrário, retorna False.

Conclusão

O Vyper oferece um ambiente minimalista e seguro para a escrita de contratos inteligentes na Ethereum. Sua sintaxe simples, juntamente com uma ênfase na segurança, faz dele uma alternativa atraente ao Solidity para desenvolvedores focados em auditabilidade e clareza. Nesta lição, cobrimos as principais características, a sintaxe e exemplos para ajudá-lo a começar com o Vyper.

Agora que você tem uma compreensão básica do Vyper, pode começar a experimentar para criar seus próprios contratos inteligentes e explorar suas capacidades ainda mais.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!