A linguagem de programação Move foi inicialmente usada para construir o blockchain Diem. Foi criado pela Diem Association, um consórcio de tecnologia apoiado pela Meta. Embora o blockchain tenha sido eventualmente descartado, o Move ainda está em uso hoje.
A linguagem de programação Move é uma linguagem de bytecode executável. Implementa contratos inteligentes e transações personalizadas. O Move visa solucionar problemas decorrentes de outras linguagens de programação blockchain, como Solidity. No entanto, os objetivos básicos para alcançar a escassez digital e o controlo sobre os ativos digitais permanecem os mesmos. Em particular, visa também evitar gastos duplos e permitir que os detentores de ativos digitais mantenham informações de propriedade.
Ao fazer isso, o Move maximiza a segurança, mantendo um design simplificado e custos de gás significativamente mais baixos do que blockchains não construídos no Move.
Como funciona a linguagem de programação Move?
Move usa lógica linear, o que significa que os recursos só podem ser usados uma vez e nunca copiados ou descartados implicitamente. Isso permite que os desenvolvedores codifiquem tipos de recursos personalizados que não podem ser apagados ou duplicados e são tratados melhor do que outros.
O sistema de tipos estáticos do Move é onde as variáveis devem ser definidas como um tipo (um número/palavra). Ele protege os recursos priorizados. Ainda assim, eles podem ser usados como elementos regulares e armazenados em estruturas de dados ou fornecidos como valores em cálculos. Os recursos também são transparentes em módulos e não podem ser acessados por fontes externas.
Além disso, os módulos do Move são flexíveis e seguros, pois o relacionamento entre módulos, recursos e procedimentos é como o relacionamento entre classes, objetos e métodos na programação orientada a objetos.
O Move também pode verificar todas as características de segurança na cadeia e oferecer suporte a ferramentas de verificação estática fora da cadeia. Isso reduz muito as complexidades em torno da verificação na cadeia. Seu design é baseado em três decisões principais:
—> A falta de despacho dinâmico evita a construção do gráfico de chamadas e permite a determinação estática do local da chamada. Isso permite que o Move identifique os efeitos de uma chamada de procedimento com mais facilidade e sem complexidades adicionais.
—> Graças à sua modularidade, os módulos podem ser isolados para verificação funcional e ajudam na abstração de dados e na localização de operações críticas nos recursos. A segurança é garantida pelo encapsulamento do módulo junto com o sistema de tipos da linguagem, o que significa que o código fora de um módulo não pode violar seus tipos. Além disso, ao examinar módulos isolados, fornecerá verificação funcional completa para invariantes de módulo significativos.
—> Finalmente, sua mutabilidade limitada permite o uso de tipos de referência semelhantes ao C++. As referências são vitais para alterar cada valor Move e normalmente os valores temporários são criados e destruídos dentro de um script de transcrição. Semelhante ao Rust, o verificador de bytecode do Move "empresta verificações" para confirmar pelo menos uma referência mutável.
—> Finalmente, o Move rejeita programas que não seguem segurança de tipo, segurança de memória e segurança de recursos. Em vez disso, pode ser utilizada uma linguagem de programação de alto nível com um compilador, responsável pela verificação das propriedades. A alternativa é uma montagem não tipificada de baixo nível com verificações de segurança.
