Scilla & amp; Vyper

O surgimento de blockchains e contratos inteligentes gerou um amplo interesse na criação de dapps e no aproveitamento de contratos inteligentes para fins práticos. Solidity – uma linguagem de contrato inteligente de Ethereum – é a principal linguagem de programação usada para a rede blockchain pública de Ethereum e continua a ser a linguagem de contrato inteligente mais difundida.

Apesar de seu sucesso e uso difundido para escrever contratos inteligentes no Ethereum, Solidity é uma linguagem de programação relativamente nova, naturalmente suscetível a bugs e algumas falhas lógicas de alto nível. A partir da demanda por criação inteligente de contratos e métodos de segurança aprimorados para escrevê-los, surgiram as linguagens de programação Vyper e Scilla.

Scilla & amp; Vyper

Solidez & Contratos Inteligentes

Solidity foi proposto por Gavin Wood em 2014 e é a linguagem de programação dominante para escrever contratos inteligentes. Ele é projetado especificamente para a Máquina Virtual Ethereum (EVM) e apresenta alguns documentação sobre o que é e como usá-lo.

Solidity é uma linguagem de programação de alto nível que compila até bytecode compatível com EVM que é executado em nós Ethereum. Notavelmente, Solidity é uma linguagem de programação relativamente simples (em comparação com outras) com uma sintaxe muito familiar que se assemelha ao JavaScript. A solidez também é construída com algumas considerações importantes como uma linguagem de contrato inteligente para execução em blockchains, incluindo a necessidade de contratos inteligentes serem determinísticos.

Guia de solidez

Leia: O que é Solidity? Nosso guia para a linguagem de Ethereum Smart Contracts

Solidity está disponível para aprender em várias plataformas educacionais online – incluindo Udemy – e tem vários extensos livros escreveu sobre isso. Os efeitos de rede do Solidity o consolidaram como a linguagem de programação ideal para contratos inteligentes e dapps construídos no Ethereum.

Apesar de sua ampla popularidade, a existência do Solidity como uma linguagem de programação específica de EVM limita seu uso para outras plataformas de blockchain. Além disso, as preocupações com a segurança em torno de linguagens de alto nível e seus problemas potenciais levaram a uma ênfase na auditoria de contrato inteligente e em linguagens mais simples e seguras. Alto perfil hacks e pesquisa estudos revelar o tamanho das vulnerabilidades inevitavelmente levou a uma necessidade urgente de melhores práticas de contrato inteligentes.

Vyper

Vyper é uma linguagem de programação experimental semelhante à Solidity, pois também é adaptada especificamente para o EVM. Vyper é sintaticamente semelhante ao Python e é orientado a contratos como o Solidity.

No entanto, Vyper foi projetado com os objetivos específicos de segurança, simplicidade e capacidade de auditoria. Em grande parte, isso é resultado de problemas de segurança nas primeiras iterações de contratos inteligentes. Como consequência dos princípios e objetivos de Vyper, exemplos explícitos de recursos que ele faz propositalmente não tem são delineado como:

  • Modificadores
  • Herança de classe
  • Função & Sobrecarga do operador
  • Chamada Recursiva
  • Loops infinitos

Notavelmente, a chamada recursiva torna impossível definir um limite superior nos limites de gás e pode levar a ataques de limite de gás. Além disso, a remoção de modificadores foi feita com a capacidade de auditoria em mente, pois eles podem tornar o código enganoso e difícil de interpretar de uma perspectiva legível.

Vyper retira recursos vulneráveis ​​à segurança, mas também adiciona algumas funcionalidades importantes, incluindo limites e verificação de estouro, decidibilidade e digitação forte. Em relação aos limites de gás, a decidibilidade permite que um desenvolvedor calcule um limite superior preciso para o consumo de gás de uma chamada de função.

A principal distinção entre Vyper e Solidity é que – embora eles pareçam semelhantes – Vyper remove muitos dos arquétipos orientados a objetos presentes no Solidity. A ênfase na simplicidade para Vyper também permite que seja muito mais legível em instâncias onde a auditoria por partes não muito familiarizadas com a programação são necessárias. O uso potencial de Vyper é, portanto, atraente para muitos dapps de negócios práticos que podem ser escritos em Vyper.

É importante levar em consideração considerações de segurança no nível da linguagem de programação. A simplicidade geralmente leva a uma complexidade lógica menos exigida e pode fornecer inerentemente melhor segurança. O Vyper também não foi necessariamente projetado para substituir o Solidity, mas foi construído para fornecer uma linguagem mais simples e segura como uma opção alternativa para quando for necessário.

Vyper inclui um Protocolo de Melhoria Vyper (VIP) e ainda tem um editor de texto com um online compilador para brincar com o código Vyper. Ethereum Casper FFG implementação também é escrita em Vyper.

Scilla

Scilla é uma linguagem de contrato inteligente de nível intermediário usada pela Zilliqa. O Scilla é explicitamente projetado com a segurança e a proteção de contrato inteligente em mente. É importante ressaltar que ele se concentra em fornecer verificação formal de contratos inteligentes.

Guia Zilliqa

Leia: Guia para iniciantes em Zilliqa

Verificação formal é projetado para fornecer garantias estáticas de contratos inteligentes antes que eles estejam imutavelmente comprometidos com o blockchain. A verificação formal de contratos inteligentes está se tornando mais prevalente no campo e está sendo ativamente buscada e aplicada por várias plataformas, incluindo Tezos e Cardano. O uso de verificação formal deve reduzir substancialmente as ocorrências de código com bugs comprometidos com blockchains e, posteriormente, diminuir a necessidade de auditoria intensiva de contrato inteligente por terceiros.

O Scilla é cuidadosamente projetado para ser expressivo o suficiente para construir dapps úteis, ao mesmo tempo que garante o raciocínio formal sobre o comportamento do contrato. Semelhante a Vyper, o princípio primário é a simplicidade e a segurança sobre a expressividade. Uma distinção importante que precisa ser feita sobre Scilla, porém, é que é um linguagem de nível intermediário, o que significa que se destina a ser um alvo de tradução para linguagens de alto nível e, subsequentemente, compilar em bytecode executável. Como resultado, a linguagem é mais difícil de entender do que uma linguagem de alto nível como Solidity.

O Scilla separa comunicação e computação, o que tem consequências significativas sobre como os contratos são executados. Os contratos são estruturados como comunicando autômatos onde cálculos em contrato são executados como transições atômicas sem envolvendo quaisquer outras partes. Além disso, uma instância de envolvimento exigido por outra parte resulta em um fim explicitamente comunicado para a transição. Efeitos específicos do contrato, como transições, podem ser dissociados de interações de blockchain, como mensagens e envio / recebimento de fundos.

Além disso, Scilla fornece separação entre eficaz e puro cálculos junto com a separação entre invocação e continuação. Com relação a cálculos eficazes e puros, Scilla se inspira na programação funcional citando:

“Ao projetar cuidadosamente a semântica de interação entre aspectos de linguagem pura e impura, garantimos uma série de propriedades fundamentais sobre as transições de contrato, como progresso e preservação de tipo, ao mesmo tempo que as tornamos passíveis de verificação interativa e / ou automática com ferramentas autônomas”

A separação de invocação e continuação refere-se à estruturação de contratos como autômatos comunicantes para fornecer um CPS modelo computacional. Usando este modelo com continuações explícitas, linguagens como Solidity podem ser traduzidas diretamente para Scilla sem comprometer a integridade da estrutura do autômato.

O componente de verificação formal do Scilla é habilitado por sua incorporação no Coq Proof Assistant, um sistema de gerenciamento de prova formal projetado para fornecer provas verificadas mecanicamente de contratos inteligentes e aplicativos distribuídos. O resultado é a verificação formal de contratos que fundamentam tanto as propriedades de segurança e vivacidade. Exatidão em sistemas distribuídos podem ser separados em segurança e vivacidade. De acordo com Zilliqa:

Segurança é quando “nada dá errado”- Esta é uma garantia de que algo ruim irá Nunca acontecer. Em consenso, isso ocorre quando dois processos não decidem sobre valores diferentes. Outro exemplo seria que não há conflito em sistemas de transações distribuídas. A segurança tem consequências importantes na integridade geral dos contratos inteligentes a longo prazo.

Vivacidade é onde “certas coisas podem eventualmente acontecer”- Uma garantia de que algo de bom eventualmente acontecer. A palavra “eventualmente” também não implica um limite de tempo, mas se o sistema funcionar por tempo suficiente, então a vitalidade é garantida. Por exemplo, em consenso, todos os processos acabarão por decidir sobre um valor. Outro exemplo é a integridade dos detectores de falha que eventualmente irão detectar processos com falha.

O desenvolvimento do Scilla pela Zilliqa em paralelo com a formalização e sua incorporação no Coq deve ser uma decisão valiosa para a segurança futura de contratos inteligentes executados em sua cadeia de blocos de alto rendimento.

Finalmente, Scilla é agnóstico em blockchain e pode ser usado para outros blockchains. No entanto, ainda está em pesquisa e desenvolvimento ativos, principalmente com a equipe Zilliqa. O Scilla local na rede Internet também fornece um tutorial e IDE online por experimentar o idioma.

Conclusão

A inovação contínua no desenvolvimento de contratos inteligentes certamente verá o surgimento de linguagens de programação mais orientadas a contratos e soluções para lidar com sua segurança. A necessidade de segurança de dapps e contratos inteligentes é de extrema importância, considerando as quantidades de valor que são transferidas em grandes redes de criptomoedas como Ethereum.

As iterações iniciais de contratos inteligentes mostraram um potencial significativo em suas capacidades futuras. Agora, uma nova classe de desenvolvimento está focada em melhorar sua segurança no nível da linguagem de programação para garantir sua sustentabilidade.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me