Lesson 2

Compreender a Sintaxe e Conceitos Básicos da Vyper

Prepare-se para ir mais fundo no mundo dos contratos inteligentes Ethereum com a Vyper no futuro. Na lição 3, olharemos para os princípios Vyper mais sofisticados. Vamos adotar uma abordagem mais prática, concentrando-nos em projetar, implementar e interagir com contratos inteligentes na rede Ethereum.

Introdução à Sintaxe da Vyper

Os computadores, como as pessoas, comunicam numa variedade de idiomas. Solidez e Vyper são duas línguas notáveis no reino da blockchain Ethereum. Apresentámos o Vyper, uma linguagem de programação com contratos inteligentes da Ethereum e comparámo-la com a Solidez na lição 1. Em vez disso, vamos aprofundar a sintaxe do Vyper, que é espantosamente semelhante à Python's. Um dos objetivos da Vyper é tornar a codificação de contratos inteligentes mais fácil mantendo uma boa segurança. A sua sintaxe pretende ser o mais simples e simples possível. Vai sentir-se perfeitamente em casa se for um codificador Python. Mesmo que não seja, a sintaxe do tipo Python da Vyper é simples de aprender. Vejamos os principais componentes sintáticos do Vyper.

Python
# Isto é um comentário no Vyper
@external
def sauet (nome: string [10]) - > cadeia de caracteres [30]:
 voltar concat ("Olá, nome",! " ")

Tipos de dados básicos em Vyper

Os tipos de dados são os elementos de construção de qualquer linguagem de programação. Eles definem que tipo de dados podem ser armazenados e manipulados dentro de um programa. Vamos ver alguns tipos de dados básicos que a Vyper oferece:

  • Booleano: Este é um tipo de dados binário que pode ter um de dois valores possíveis, verdadeiro ou falso. Exemplo: bandeira: bool = Verdadeiro
  • Integos: O Vyper suporta inteiros, que são números inteiros que podem ser positivos, negativos ou zero. Vêm em vários tamanhos de 8 a 256 bits, sendo o mais comum int128. Exemplo: contagem: int128 = 10
  • Decimal: Isto é utilizado para representar números em ponto flutuante, isto é, números que têm uma vírgula decimal. Exemplo: preço: decimal = 123,45
  • Bytes e Cadeia de Caracteres: Os bytes são sequências de dados de bytes, enquanto as cadeias de caracteres são sequências de caracteres unicode. Exemplo: nome: cadeia de caracteres [20] = 'Alice'
  • Listas e Matrizes: As listas são uma coleção de itens do mesmo tipo de dados. Já as matrizes são um tipo especial de lista em que o comprimento é fixo. Exemplo: números: int128 [5] = [1, 2, 3, 4, 5]
    Cada um destes tipos de dados tem o seu próprio lugar para escrever contratos inteligentes. Vai precisar escolher o tipo de dados certo para cada pedaço de dados que deseja armazenar, com base no tipo de operações que deseja executar nesses dados.

Para recapitular, alguns valores disponíveis no Vyper:

  • bool
  • int128
  • uint256
  • decimais
  • morada
  • bytes32
  • Bytes
  • Corda
Python
# @version ^0.3.7

b: público (bool)
i: público (int128) # -2 ** 127 a (2 ** 127 - 1)
u: público (uint256) # 0 a 2 ** 256 - 1
dez: público (decimal) # -2 ** 127 a (2 ** 127 - 1), 10 casas decimais
addr: público (morada)
b32: público (bytes32)
bs: público (Bytes [100])
s: público (String [100])


@external
def __init__():
 self.b = Falso
 self.i = -1
 self.u = 123
 self.dez = 3.14
 self.addr = 0x704534A22F03EA46F76A07A195568D115e2e6D52
 self.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206e26ae84b525cdacb
 self.bs = b\ x01 " "
 self.s = " Olá Vyper "

Funções em Vyper

As funções no Vyper, tal como em muitas outras línguas, são blocos de código reutilizável que realizam uma tarefa específica. Proporcionam melhor modularidade para a sua aplicação e permitem a reutilização de código.

No Vyper, pode definir uma função usando a palavra-chave def, tal como em Python. As funções também têm uma lista de parâmetros e um tipo de retorno. Eis uma função Vyper simples:

Python
@external
adicionar def (a: int128, b: int128) - int128: >
 voltar a + b

O decorador @externaltorna esta função chamável de fora do contrato (por uma transação ou outro contrato). Sem este decorador, a função só seria chamada dentro do contrato onde está definida.

Funções internas e externas

As funções @internal só podem ser chamadas dentro do contrato.

As funções @external só podem ser chamadas de fora do contrato.

Exemplo:

Python
# @version ^0.3.7

# As funções internas só podem ser chamadas dentro deste contrato
@internal
@pure
def _add (x: uint256, y: uint256) - uint256: >
 voltar x + y


@external
@view
def ExtFunc () - bool: >
 voltar Verdadeiro


# As funções externas só podem ser chamadas de fora deste contrato
@external
@view
def avg (x: uint256, y: uint256) - uint256: >
 # não pode chamar outra função externa
 # Self.extFUNC ()

    # pode chamar funções internas
 z: uint256 = eu próprio. _add (x, y)

 retorno (x + y)/2


@internal
@pure
def _sqr (x: uint256) - uint256: >
 retorno x * x


@external
@view
def sumofSquares (x: uint256, y: uint256) - uint256: >
 voltar a si próprio. _sqr (x) + eu próprio. _sqr (y)

Estruturas de Controlo em Vyper

As estruturas de controlo são utilizadas para executar ações diferentes com base em decisões diferentes. A Vyper oferece várias estruturas de controlo, incluindo se, para loop e enquanto.

A instrução if é a estrutura de controle mais básica. Executa um bloco de código apenas se uma condição especificada for verdadeira.

Python
@external
def is_greater_than_ten (a: int128) - bool: >
 se a > 10:
 voltar Verdadeiro
 senão:
 devolver Falso

O loop for em Vyper tem a mesma sintaxe que em Python. Pode executar um conjunto de instruções, uma vez para cada item de uma lista, tupla, conjunto etc.

Python
números: int128 [5] = [1, 2, 3, 4, 5]

@external
def sum_números () - int128: >
 soma: int128 = 0
 para i na gama (5):
 soma += auto.números [i]
    devolver soma

O loop in Vyper executa repetidamente um comando alvo desde que uma determinada condição seja verdadeira.

Python
@external
contagem de def para_ten () - int128: >
 contagem: int128 = 0
 enquanto conta < 10:
 contagem += 1
 devolução da contagem

Erro na manipulação no Vyper

Na programação, o tratamento de erros é crucial para lidar com erros de tempo de execução e fornecer mensagens de erro significativas ao utilizador. O Vyper usa a declaração de afirmação para lidar com erros.

Python
@external
divisão def (a: decimal, b: decimal) - > decimal:
 assevere b! = 0, " Não é possível dividir por zero "
 voltar a/b

No código acima, se b for zero, será lançada uma mensagem de erro “Não é possível dividir por zero” e a transação será revertida. Caso contrário, prosseguirá para a operação de divisão.

O Vyper também fornece a instrução reverter que pode ser usada para parar a execução da chamada atual e reverter as alterações de estado, enquanto também fornece uma mensagem de erro.

Isso é um rápido resumo da sintaxe e dos princípios fundamentais do Vyper. A chave para dominar o Vyper, como com qualquer linguagem de programação, é praticar. Defendo o uso dessas técnicas para escrever aplicações simples. Na sessão seguinte, vamos analisar como usar o Vyper para construir e manter contratos inteligentes. Mantenha-se atento!

Parabéns por concluir com sucesso a Lição 2! Fez um progresso tremendo ao perceber a sintaxe de Vyper e construções fundamentais. Demos uma introdução à sintaxe Vyper, tipos de dados básicos e funções, estruturas de controlo e manipulação de erros no Vyper. Lembre-se de que cada um destes componentes é a base de qualquer programa Vyper. É fundamental ter uma compreensão firme destes componentes principais, e a melhor maneira de o fazer é praticar e explorar. Criar programas simples que incorporam o que aprendeu hoje. Não há alternativa para uma experiência prática no que toca a codificação.

Prepare-se para ir mais fundo no mundo dos contratos inteligentes Ethereum com a Vyper no futuro. Na lição 3, olharemos para os princípios Vyper mais sofisticados. Vamos adotar uma abordagem mais prática, concentrando-nos em projetar, implementar e interagir com contratos inteligentes na rede Ethereum. Percebe que o mundo da tecnologia blockchain está todo e em constante mudança. Como engenheiro de blockchain, a sua jornada de descoberta e aprendizagem nunca acaba verdadeiramente. Está a caminho da mestria e cada passo em frente, não importa quão minúsculo, é um passo em frente. Continue o seu excelente esforço, e vou te ver na Lição 3!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 2

Compreender a Sintaxe e Conceitos Básicos da Vyper

Prepare-se para ir mais fundo no mundo dos contratos inteligentes Ethereum com a Vyper no futuro. Na lição 3, olharemos para os princípios Vyper mais sofisticados. Vamos adotar uma abordagem mais prática, concentrando-nos em projetar, implementar e interagir com contratos inteligentes na rede Ethereum.

Introdução à Sintaxe da Vyper

Os computadores, como as pessoas, comunicam numa variedade de idiomas. Solidez e Vyper são duas línguas notáveis no reino da blockchain Ethereum. Apresentámos o Vyper, uma linguagem de programação com contratos inteligentes da Ethereum e comparámo-la com a Solidez na lição 1. Em vez disso, vamos aprofundar a sintaxe do Vyper, que é espantosamente semelhante à Python's. Um dos objetivos da Vyper é tornar a codificação de contratos inteligentes mais fácil mantendo uma boa segurança. A sua sintaxe pretende ser o mais simples e simples possível. Vai sentir-se perfeitamente em casa se for um codificador Python. Mesmo que não seja, a sintaxe do tipo Python da Vyper é simples de aprender. Vejamos os principais componentes sintáticos do Vyper.

Python
# Isto é um comentário no Vyper
@external
def sauet (nome: string [10]) - > cadeia de caracteres [30]:
 voltar concat ("Olá, nome",! " ")

Tipos de dados básicos em Vyper

Os tipos de dados são os elementos de construção de qualquer linguagem de programação. Eles definem que tipo de dados podem ser armazenados e manipulados dentro de um programa. Vamos ver alguns tipos de dados básicos que a Vyper oferece:

  • Booleano: Este é um tipo de dados binário que pode ter um de dois valores possíveis, verdadeiro ou falso. Exemplo: bandeira: bool = Verdadeiro
  • Integos: O Vyper suporta inteiros, que são números inteiros que podem ser positivos, negativos ou zero. Vêm em vários tamanhos de 8 a 256 bits, sendo o mais comum int128. Exemplo: contagem: int128 = 10
  • Decimal: Isto é utilizado para representar números em ponto flutuante, isto é, números que têm uma vírgula decimal. Exemplo: preço: decimal = 123,45
  • Bytes e Cadeia de Caracteres: Os bytes são sequências de dados de bytes, enquanto as cadeias de caracteres são sequências de caracteres unicode. Exemplo: nome: cadeia de caracteres [20] = 'Alice'
  • Listas e Matrizes: As listas são uma coleção de itens do mesmo tipo de dados. Já as matrizes são um tipo especial de lista em que o comprimento é fixo. Exemplo: números: int128 [5] = [1, 2, 3, 4, 5]
    Cada um destes tipos de dados tem o seu próprio lugar para escrever contratos inteligentes. Vai precisar escolher o tipo de dados certo para cada pedaço de dados que deseja armazenar, com base no tipo de operações que deseja executar nesses dados.

Para recapitular, alguns valores disponíveis no Vyper:

  • bool
  • int128
  • uint256
  • decimais
  • morada
  • bytes32
  • Bytes
  • Corda
Python
# @version ^0.3.7

b: público (bool)
i: público (int128) # -2 ** 127 a (2 ** 127 - 1)
u: público (uint256) # 0 a 2 ** 256 - 1
dez: público (decimal) # -2 ** 127 a (2 ** 127 - 1), 10 casas decimais
addr: público (morada)
b32: público (bytes32)
bs: público (Bytes [100])
s: público (String [100])


@external
def __init__():
 self.b = Falso
 self.i = -1
 self.u = 123
 self.dez = 3.14
 self.addr = 0x704534A22F03EA46F76A07A195568D115e2e6D52
 self.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206e26ae84b525cdacb
 self.bs = b\ x01 " "
 self.s = " Olá Vyper "

Funções em Vyper

As funções no Vyper, tal como em muitas outras línguas, são blocos de código reutilizável que realizam uma tarefa específica. Proporcionam melhor modularidade para a sua aplicação e permitem a reutilização de código.

No Vyper, pode definir uma função usando a palavra-chave def, tal como em Python. As funções também têm uma lista de parâmetros e um tipo de retorno. Eis uma função Vyper simples:

Python
@external
adicionar def (a: int128, b: int128) - int128: >
 voltar a + b

O decorador @externaltorna esta função chamável de fora do contrato (por uma transação ou outro contrato). Sem este decorador, a função só seria chamada dentro do contrato onde está definida.

Funções internas e externas

As funções @internal só podem ser chamadas dentro do contrato.

As funções @external só podem ser chamadas de fora do contrato.

Exemplo:

Python
# @version ^0.3.7

# As funções internas só podem ser chamadas dentro deste contrato
@internal
@pure
def _add (x: uint256, y: uint256) - uint256: >
 voltar x + y


@external
@view
def ExtFunc () - bool: >
 voltar Verdadeiro


# As funções externas só podem ser chamadas de fora deste contrato
@external
@view
def avg (x: uint256, y: uint256) - uint256: >
 # não pode chamar outra função externa
 # Self.extFUNC ()

    # pode chamar funções internas
 z: uint256 = eu próprio. _add (x, y)

 retorno (x + y)/2


@internal
@pure
def _sqr (x: uint256) - uint256: >
 retorno x * x


@external
@view
def sumofSquares (x: uint256, y: uint256) - uint256: >
 voltar a si próprio. _sqr (x) + eu próprio. _sqr (y)

Estruturas de Controlo em Vyper

As estruturas de controlo são utilizadas para executar ações diferentes com base em decisões diferentes. A Vyper oferece várias estruturas de controlo, incluindo se, para loop e enquanto.

A instrução if é a estrutura de controle mais básica. Executa um bloco de código apenas se uma condição especificada for verdadeira.

Python
@external
def is_greater_than_ten (a: int128) - bool: >
 se a > 10:
 voltar Verdadeiro
 senão:
 devolver Falso

O loop for em Vyper tem a mesma sintaxe que em Python. Pode executar um conjunto de instruções, uma vez para cada item de uma lista, tupla, conjunto etc.

Python
números: int128 [5] = [1, 2, 3, 4, 5]

@external
def sum_números () - int128: >
 soma: int128 = 0
 para i na gama (5):
 soma += auto.números [i]
    devolver soma

O loop in Vyper executa repetidamente um comando alvo desde que uma determinada condição seja verdadeira.

Python
@external
contagem de def para_ten () - int128: >
 contagem: int128 = 0
 enquanto conta < 10:
 contagem += 1
 devolução da contagem

Erro na manipulação no Vyper

Na programação, o tratamento de erros é crucial para lidar com erros de tempo de execução e fornecer mensagens de erro significativas ao utilizador. O Vyper usa a declaração de afirmação para lidar com erros.

Python
@external
divisão def (a: decimal, b: decimal) - > decimal:
 assevere b! = 0, " Não é possível dividir por zero "
 voltar a/b

No código acima, se b for zero, será lançada uma mensagem de erro “Não é possível dividir por zero” e a transação será revertida. Caso contrário, prosseguirá para a operação de divisão.

O Vyper também fornece a instrução reverter que pode ser usada para parar a execução da chamada atual e reverter as alterações de estado, enquanto também fornece uma mensagem de erro.

Isso é um rápido resumo da sintaxe e dos princípios fundamentais do Vyper. A chave para dominar o Vyper, como com qualquer linguagem de programação, é praticar. Defendo o uso dessas técnicas para escrever aplicações simples. Na sessão seguinte, vamos analisar como usar o Vyper para construir e manter contratos inteligentes. Mantenha-se atento!

Parabéns por concluir com sucesso a Lição 2! Fez um progresso tremendo ao perceber a sintaxe de Vyper e construções fundamentais. Demos uma introdução à sintaxe Vyper, tipos de dados básicos e funções, estruturas de controlo e manipulação de erros no Vyper. Lembre-se de que cada um destes componentes é a base de qualquer programa Vyper. É fundamental ter uma compreensão firme destes componentes principais, e a melhor maneira de o fazer é praticar e explorar. Criar programas simples que incorporam o que aprendeu hoje. Não há alternativa para uma experiência prática no que toca a codificação.

Prepare-se para ir mais fundo no mundo dos contratos inteligentes Ethereum com a Vyper no futuro. Na lição 3, olharemos para os princípios Vyper mais sofisticados. Vamos adotar uma abordagem mais prática, concentrando-nos em projetar, implementar e interagir com contratos inteligentes na rede Ethereum. Percebe que o mundo da tecnologia blockchain está todo e em constante mudança. Como engenheiro de blockchain, a sua jornada de descoberta e aprendizagem nunca acaba verdadeiramente. Está a caminho da mestria e cada passo em frente, não importa quão minúsculo, é um passo em frente. Continue o seu excelente esforço, e vou te ver na Lição 3!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.