Lição 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 [@external](https://github.com/external)torna 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](https://github.com/internal) só podem ser chamadas dentro do contrato.

As funções [@external](https://github.com/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 ## 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!

Exclusão de responsabilidade

* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.

* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.