Quais são as melhorias na nova versão da linguagem de contrato inteligente Solidity?

Autor: Adam Boudjemaa

Compilador: Sr. Huai, Diretor do Departamento de Pesquisa de Investimento do Web3 Club da Universidade de Wuhan

Introdução

Após uma extensa análise de informações como o repositório Solidity Github, o roteiro do Solidity, conversas da comunidade no Twitter, solicitações pull ativas e problemas, este artigo mergulha fundo em direção ao futuro do Solidity.

A principal linguagem de programação de contratos inteligentes está prestes a ser lançada com atualizações 0.9.0 e 1.0.0, que introduzirão várias melhorias altamente antecipadas.

O objetivo deste artigo é apresentar aos leitores os mais recentes desenvolvimentos e melhorias no Solidity, que são baseados na contribuição da comunidade e debates em curso. Embora as informações relevantes fornecidas sejam inconclusivas, revelam potenciais direções para o avanço tecnológico.

1. Integração revolucionária de require() com Custom Error

Método atual (0.8.x):

详解智能合约语言Solidity新版本有哪些改进?

Previsão de ocorrência em 0.9.0 ou 1.0.0:

详解智能合约语言Solidity新版本有哪些改进?

Em vez de usar um grande número de condições if para lançar um erro com informações de cadeia de caracteres ou um erro personalizado, usar uma combinação de require() e erro personalizado tornará o programa mais claro e economizará gás.

2. Otimização de representação interna (RI): eficiência de liberação

O processo de representação interna (IR) no Solidity desempenha um papel fundamental na conversão do código-fonte do contrato inteligente em instruções executáveis para a Máquina Virtual ETH (EVM).

A representação interna simplifica e padroniza códigos complexos, tornando o processo de conversão de código em linguagem de máquina mais eficiente. As próximas melhorias do Solidity para a versão 0.9.0 foram projetadas para tornar esse processo de compilação mais rápido e eficiente, reduzindo custos e aumentando a produtividade do desenvolvedor.

3. Tratamento de erros melhorado: clarificação e simplificação do código

Espera-se que atualizações futuras melhorem o tratamento de erros no Solidity, resultando em mensagens de erro mais diretas e depuração mais fácil.

Esse aprimoramento é especialmente útil para desenvolvedores que trabalham com contratos complexos, economizando tempo e minimizando possíveis erros.

4. Aritmética de ponto fixo: alta precisão e alto desempenho

[Nota do tradutor: Um número de ponto fixo é um tipo de dados usado por computadores para representar números decimais correspondentes a números de vírgula flutuante, e seus dígitos inteiros e casas decimais são valores fixos, portanto, são mais seguros do que números de vírgula flutuante.] No momento, o Solidity não tem nenhum tipo de dados interno que represente decimais, e os desenvolvedores muitas vezes precisam multiplicar os dados originais por um grande número para reservar manualmente casas decimais e ficar de olho no problema de ponto decimal em operações subsequentes, o que é bastante problemático. 】

Neste estágio, bibliotecas externas como ABDKMath64x64 e DSMath usam o Solidity para implementar números de ponto fixo.

Espera-se que a atualização 0.9.0 integre aritmética de ponto fixo nativa e não exija mais bibliotecas externas. Isso tornará os cálculos decimais muito mais simplificados.

5. EVM Object Format (EOF): Crie bytecode de contrato inteligente

A próxima atualização EOF do Solidity se prepara para introduzir bytecode estruturado e versionado para contratos inteligentes.

Espera-se que essa melhoria torne as futuras atualizações de contratos mais fáceis de implementar, mantenha a compatibilidade com versões anteriores e permita uma análise mais eficiente durante a fase de compilação.

Embora isso não mude a experiência de codificação direta para desenvolvedores de contratos inteligentes, a saída do compilador será mais eficiente em termos de gás.

6. Armazenamento transitório: processamento de dados ad hoc e eficiente

O novo recurso do Solidity, Transient Storage, propõe uma maneira de salvar temporariamente os dados durante a execução do contrato sem gravá-los permanentemente no blockchain. Espera-se que esta abordagem seja mais eficiente em termos de consumo de gás.

É provável que o armazenamento transitório semelhante ao código abaixo seja encontrado no Solidity 0.9.0 ou no Solidity 1.0.0.

详解智能合约语言Solidity新版本有哪些改进?

7. Proteção de reentrância nativamente integrada

Antes da versão 0.8.0, a biblioteca SafeMath era uma ferramenta comum usada por desenvolvedores para operações aritméticas para evitar problemas de estouro de limite e limite inferior. Com o lançamento do Solidity 0.8.0, essas verificações de segurança são incorporadas diretamente no idioma.

Da mesma forma, espera-se que a versão 0.9.0 ou 1.0.0 do Solidity integre nativamente a proteção contra reentrância. Este recurso foi projetado para simplificar o processo de implementação de protocolos de segurança para evitar ataques de reentrância.

Você verá algo assim:

详解智能合约语言Solidity新版本有哪些改进?

8. Herança refatorada e layouts de armazenamento

No Solidity, a herança cria um novo contrato que assume as propriedades e a funcionalidade de um contrato existente. A atualização planejada visa melhorar a linearização dos layouts de herança e armazenamento, aumentando assim a previsibilidade e a organização da arquitetura do contrato. Isso pode melhorar a eficiência do uso do armazenamento e reduzir a confusão em cenários de várias heranças.

Por exemplo, um contrato Child que herda de ParentA e ParentB terá um layout de armazenamento otimizado e armazenamento variável contínuo, reduzindo o custo das operações de armazenamento.

9. Sinalizadores de compilação e opções de configuração aprimorados

O desenvolvimento do Solidity inclui a extensão do escopo de sinalizadores de compilação e definições de configuração, fornecendo aos desenvolvedores um alto grau de controle sobre o processo de compilação. Esses aprimoramentos podem levar a implantações de contrato mais personalizadas com controle refinado sobre otimização de gás, verificações de segurança e recursos de depuração.

Novos sinalizadores de compilação podem permitir que os desenvolvedores alternem otimizações ou verificações de segurança específicas:

Por exemplo, um novo sinalizador de compilação, --enable-loop-optimization, se concentrará na otimização de loops para melhorar a eficiência do gás, e um novo sinalizador de compilação, --strict-security-checks, introduzirá uma análise de segurança severa durante a compilação

10. Ferramentas de depuração e mensagens de erro melhoradas

A ferramenta de depuração aprimorada tem mensagens de erro mais detalhadas e pode simplificar significativamente o processo de desenvolvimento, especialmente para estruturas contratuais complexas. Mensagens de erro aprimoradas podem ajudar os desenvolvedores a entender melhor os problemas em seus códigos, e ferramentas avançadas de depuração podem ajudar os desenvolvedores a encontrar e corrigir problemas de forma mais eficaz.

11. Suporte para tipos de dados e estruturas avançadas

A introdução de tipos de dados e estruturas complexas no Solidity pode inspirar novos projetos de contratos e possibilidades funcionais. Tal pode incluir o apoio a tipos numéricos mais complexos, estruturas de dados melhoradas ou métodos melhorados para lidar com grandes conjuntos de dados em contratos.

A solidez pode introduzir uma nova estrutura de dados, como o TreeMap, que organiza os dados de forma ordenada para uma recuperação eficiente. Isso pode ser útil em contratos em que os dados precisam ser classificados ou classificados, como em sistemas de votação. [Nota do tradutor: Semelhante à árvore vermelha e preta.] Outro avanço poderia ser suportar tipos mais complexos de números, como números de ponto fixo, que podem executar operações matemáticas precisas diretamente no contrato.

12. Introdução a genéricos e modelos

Genéricos e modelos no Solidity tornarão o código mais adaptável e reutilizável possível. Por exemplo, você pode criar uma função genérica para lidar com diferentes tipos de ativos (como tokens ERC20, NFTs, etc.) de forma padronizada sem ter que reescrever a função para cada tipo de ativo específico. Isso melhorará a conceção do contrato e a eficiência do desenvolvimento, já que uma única função pode ser aplicada a uma variedade de cenários.

详解智能合约语言Solidity新版本有哪些改进?

Perspetivas Futuras: O Caminho para a Solidez 1.0.0

Em várias plataformas, como Github, Twitter, Ethresearch e Reddit, há muita discussão dentro da comunidade Solidity sobre o desenvolvimento da versão 0.9.0.

Um ponto fulcral do debate é a revelação:

É uma transição direta e cautelosa para o Solidity 1.0.0 para declarar a maturidade total da linguagem, ou é uma progressão gradual para uma versão mais avançada com a versão 0.9.0 primeiro?

Influenciada pelo feedback da comunidade e ideias criativas, a esperada estreia do Solidity 1.0.0 provavelmente coincidirá com uma grande atualização para o ETH Workshop, refletindo o crescimento e a estabilidade do ecossistema como um todo.

  1. A Evolução dos Sistemas de Tipo: Melhorar a Flexibilidade e a Segurança. Espera-se que haja um sistema do tipo upgrade que se inspire em linguagens de programação funcionais como Haskell ou Scala. Esta evolução visa aumentar a segurança e flexibilidade do desenvolvimento de contratos.

  2. Suporte oráculo nativo integrado: simplifique as interações de dados externos. Os planos incluem a integração de suporte integrado para oráculos descentralizados no Solidity, facilitando interações mais seguras e diretas com fontes de dados externas.

  3. Melhorar a gestão do estado: Melhorar a interação blockchain. Melhorias nas capacidades de gerenciamento de estado estão sendo discutidas, e elementos como canais estatais ou sidechains podem ser introduzidos como estruturas integradas projetadas para otimizar as interações no blockchain e reduzir as taxas de gás.

  4. Abordagem modular à conceção de contratos: melhorar a reutilização. Está a ser prevista uma mudança para uma arquitetura de contrato modular, que permita a utilização de componentes substituíveis. Isso simplifica significativamente o processo de desenvolvimento e melhora a operacionalidade do código.

  5. Integre ferramentas de verificação formal: garanta a confiabilidade do contrato. Há uma expectativa de que as ferramentas de verificação formal sejam integradas diretamente ao Solidity, movimento que visa garantir que os contratos estejam em conformidade com padrões e comportamentos específicos, reduzindo assim a probabilidade de erros e vulnerabilidades.

  6. Construa recursos de cadeia cruzada: alcance a interoperabilidade entre blockchains. Atualizações futuras podem introduzir recursos nativos de compatibilidade entre cadeias, permitindo que os contratos Solidity funcionem sem problemas em uma variedade de protocolos blockchain.

  7. Implementar medidas avançadas de privacidade: Aumentar a segurança dos dados. Estão em curso planos para integrar ferramentas avançadas de privacidade, como provas de conhecimento zero ou encriptação homomórfica, diretamente na linguagem para melhorar a segurança dos dados e a privacidade do utilizador.

  8. Criptografia Quantum-Resistente: Preparando-se para Desafios Futuros. Dadas as capacidades emergentes de computação quântica, as pessoas estão considerando implementar métodos de criptografia resistentes ao quântico para proteger os contratos ETH de potenciais ameaças futuras.

Conclusão

À medida que você explora possíveis caminhos para o Solidity, este artigo combina perceções da comunidade e desenvolvimentos atuais com projeções da comunidade para fornecer uma compreensão abrangente do tópico. Embora tenhamos mergulhado nas possibilidades das versões 0.9.0 e 1.0.0, a trajetória real e o conjunto de recursos estão sujeitos a alterações à medida que o Solidity continua sua jornada de desenvolvimento. Fique atento para ver como essas conversas e conceitos ganham vida no mundo em constante evolução da programação de contratos inteligentes.

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Republicar
  • Partilhar
Comentar
0/400
Nenhum comentário
  • Fixar

Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)