A alternativa Eth-lingo
O VyperLang é conhecido como a linguagem alternativa de contratos inteligentes da Ethereum e é de longe a segunda linguagem mais popular para construir contratos inteligentes na rede Ethereum.
É uma linguagem de programação tipada e orientada a contratos, que têm como alvo a Ethereum Virtual Machine (EVM) e foi construída para se assemelhar ao Python.
Grandes empresas de tecnologia, como UniswapV1, CurveFi e muitas outras, preferem usá-lo em vez de Solidity, para contratos inteligentes.
Bem, qual é a promessa?
O Vyper promete um conjunto exclusivo de recursos. Esses recursos incluem:
- Verificação de limites e overflow. Por causa de seus arrays dinâmicos fixos, o Vyper é capaz de economizar mais gás em chamadas de funções, pois o compilador já conhece os limites desses arrays dinâmicos.
- Suporte para números inteiros com sinal e números decimais de ponto fixo.
- Decidibilidade: Com o Vyper é possível calcular um limite superior preciso para o consumo de gás de qualquer chamada de função.
- Tipagem forte: Assim como o Java, Solidity e Python, o Vyper exige uma especificação clara dos tipos de dados.
- O código do compilador é pequeno e compreensível.
- Suporte limitado para funções puras: Qualquer coisa marcada como constante não tem permissão para alterar o estado.
- Código legível mínimo: Os contratos inteligentes do Vyper são escritos da forma mais minimalista possível para permitir melhor auditoria e legibilidade para não desenvolvedores.
Leia mais sobre os recursos exclusivos do Vyper aqui.
Um consenso feito em 30 de novembro de 2021 pela DefiLlama mostra que, em um recorde histórico, o Solidity havia garantido mais de $ 186,57 bilhões de valor bloqueado em contratos inteligentes, o que representava até 85% do valor total bloqueado em contratos inteligentes na época, mas atrás do Solidity estava o Vyper, com um total de $ 27.02 bilhões, o que representava 10%.
Estatísticas do DefiLlama
Isso é uma evidência de que, embora o VyperLang continue sendo uma espécie de linguagem de programação de contrato inteligente com pouca visibilidade, existem empresas de tecnologia que estão construindo ativamente com ele e usando seus contratos seguros para suas operações transacionais diárias.
Embora seja altamente considerada como a segunda linguagem mais popular na blockchain Ethereum, seus desenvolvedores anunciaram no passado que ela não foi criada para competir com o Solidity, que é mais dominante.
Isso pode ser apoiado pelo fato de que, embora o Vyper tenha sido feito para melhorar a criação de contratos inteligentes à sua própria maneira, ele não permite o uso de algumas coisas, infelizmente algumas dessas coisas tornam o Solidity uma ótima linguagem orientada a contratos.
Por exemplo:
- Modificadores: Um dos recursos que não continuam nesta linguagem alternativa de programação de contrato inteligente são os modificadores de controle de acesso que impedem chamadas externas e internas de chamadores indesejados.
contract SolidityModifier {
...
address payable owner;
...
modifier onlyOwner {
require(owner = msg.sender, "error: not owner");
_;
}
function sendEth(uint amount) public payable onlyOwner {
...
}
}
O modificador onlyOwner no Solidity pode ser utilizado para restringir o acesso do usuário à função sendEth (), desta forma somente o usuário (msg.sender) definido como owner (proprietário) pode chamar a função.
Você também pode verificar mais recursos não oferecidos pelo VyperLang em sua documentação oficial aqui.
Construindo Contratos Inteligentes com Vyper
O Vyper é estaticamente tipado, como a maioria das linguagens de máquina orientadas a objetos, e com um pouco de conhecimento em Solidity e Python, você pode aprendê-lo e ser bom nele em apenas um ano de desenvolvimento constante.
No final deste artigo, há vários recursos excelentes para que você comece a trabalhar corretamente. Fique à vontade para consultá-los e iniciar sua jornada.
Um exemplo de contrato:
# Este é um exemplo de contrato inteligente
# Crie um arquivo e salve como HelloWorld.vy em um editor de código
# Copie e cole o seguinte código abaixo no editor
# @version ^0.2.0
# Crie uma variável de string que pode conter no máximo 100 caracteres
greet: public(String[100])
@external
def __init__():
self.greet = "Hello World"
Este é um contrato inteligente minimalista do Vyper que retorna a saudação “Hello World” quando você chama a função de saudação.
Pragma
O Vyper suporta uma versão do pragma para garantir que um contrato seja compilado apenas para a versão esperada ou versões definidas esperadas.
O contrato HelloWorld.vy acima está atualmente em execução na versão 2.0.
Comentários em linha
Abaixo da declaração de versão há uma nota escrita com a hashtag '#', que é o equivalente ao comentário em linha ou traços inclinados usados no Solidity '//' para deixar um comentário ou nota, seja para detalhar uma função ou explicar variáveis. Basicamente, escrevendo o código que você deseja que seja ignorado pelo compilador.
Declarações de variáveis
As variáveis de estado são valores armazenados permanentemente no contrato. Eles são declarados fora de qualquer função como no Solidity e geralmente contêm o valor padrão para seu tipo.
A string greet é uma variável de estado com visibilidade definida como pública e declarada para conter no máximo 100 caracteres, embora neste caso apenas 10 desse espaço disponível sejam usados.
Este é um excelente exemplo de 'A Verificação de Overflow de Limites ', pois a variável 'greet' nunca será capaz de ultrapassar seus limites pretendidos.
As variáveis de estado podem então ser acessadas usando o objeto self.
Funções
Por último, as funções são unidades executáveis de código em um contrato. Isso não é novidade, pois vale para todas as linguagens orientadas a objetos.
No Vyper, as funções são atribuídas com @externo ou @interno, de acordo com sua visibilidade e acessibilidade.
No Solidity a visibilidade das funções são mais diversificadas, variando de:
- Privada.
- Interna.
- Externa.
- Pública.
No Vyper existem apenas dois tipos de visibilidade para as funções;
- Interna.
- Externa.
Essas funções também podem aceitar argumentos e retornar variáveis para passar valor dentro delas.
O contrato de exemplo acima tem a visibilidade externa, portanto, também pode ser chamado de fora do contrato.
Você pode praticar a chamada da função no IDE do Remix, que é um editor de código online muito poderoso e em rápido crescimento para contratos inteligentes na blockchain Ethereum.
Começando
- Abra o Remix IDE em remix.ethereum.org.
- Ative o plug-in do compilador Vyper. Se você ainda não sabe bem onde fica o plugin… escrevi esse guia aqui.
- Em seguida, recrie o arquivo HelloWorld.vy e cole o código de exemplo nele. Compile o contrato (novamente, se você estiver tendo problemas para encontrar o plug-in Vyper no Remix, consulte este link).
- Implante o contrato inteligente e interaja com a função de saudação.
Instalando o Vyper localmente
A melhor maneira de instalar o Vyper em seu editor de código local é seguir as orientações dos documentos oficiais aqui.
Melhores recursos e repositórios do Github
Estes são alguns sites de documentações e repositórios incríveis que ajudarão você a entender como é construir contratos inteligentes no Vyper e como construí-los da maneira certa com exemplos.
- docs.vyperlang.org: A documentação oficial do Vyper. Todo desenvolvedor que é bom no que faz sabe a importância de se sentar com a documentação oficial lançada pelos desenvolvedores. Não é diferente para o VyperLang. A documentação é o melhor lugar para aprender as melhores práticas e se manter atualizado sobre mudanças e atualizações.
- vyper-by-example.org: Este é uma mina de ouro de exemplos de contratos Vyper com explicação em vídeo no YouTube.
- Repositórios do Github: A análise de outros contratos no Github o ajudará a descobrir novos códigos, novas maneiras de escrever de forma mais limpa e maneiras de escrever códigos mais eficientes em termos de consumo de gás.
- Os contratos CurveFi.
- Vyper/vyper.fun.
- Jogo de guerra Vyper.
Se você gostou ou achou esse artigo útil, siga-me para receber mais artigos sobre o novo desenvolvimento da Web. Você também pode me enviar uma mensagem no Twitter.
Eu adoraria receber seu feedback.
Artigo escrito por Jamaltheatlantean. Traduzido por Panegali
Latest comments (0)