Autor original: Foresight News, Alex Liu

Solana é uma plataforma blockchain de alto desempenho projetada para suportar dApps, conhecida por sua velocidade e escalabilidade, alcançada por meio de um mecanismo de consenso e design arquitetônico exclusivos. Este artigo usa Ethereum como objeto de comparação para apresentar brevemente as características do modelo de programação de contrato inteligente Solana.

Contratos inteligentes, programas on-chain:

Os programas executados no Ethereum são chamados de contratos inteligentes, que são uma série de códigos (funções) e dados (estado) localizados em um endereço específico no Ethereum. (Ah, o código e os dados estão acoplados) Os contratos inteligentes também são contas Ethereum, chamadas contas de contrato. Eles têm saldos e podem se tornar objetos de transação, mas não podem ser controlados por humanos e são implantados na rede para serem executados como programas.

Os códigos executáveis ​​executados no Solana são chamados de programas on-chain e podem interpretar as instruções enviadas em cada transação. Esses programas podem ser implantados diretamente no núcleo da rede como programas nativos ou publicados por qualquer pessoa como programas SPL.

  • Instruções: Instruções é um termo exclusivo para programas da rede Solana. Os programas on-chain são compostos por instruções, que são as menores unidades que realizam operações específicas: uma ou mais instruções são incluídas em cada transação Solana. As instruções especificam as ações a serem executadas, incluindo chamar um programa específico na cadeia, passar uma conta, uma lista de entradas e fornecer uma matriz de bytes. As instruções têm restrições computacionais, portanto os programas on-chain devem ser otimizados para usar um pequeno número de unidades computacionais ou para dividir operações caras em múltiplas instruções.

  • Programa nativo: Um programa nativo que fornece a funcionalidade exigida pelo nó de verificação. O mais famoso deles é o Programa Sistema, que gerencia a criação de novas contas e a transferência de SOL entre duas contas.

  • Programa SPL: define uma série de atividades on-chain, incluindo a criação, troca e empréstimo de tokens, bem como a criação de pools de penhores, manutenção de serviços de resolução de nomes de domínio on-chain, etc. Entre eles, o SPL Token Program é usado para operações de token, enquanto o Associated Token Account Program é frequentemente usado para escrever outros programas personalizados.

Você chama isso de contrato inteligente, eu chamo de programa on-chain. Todos têm opiniões diferentes, mas todos se referem ao código em execução no blockchain. Zhang, San, Li, Si e Wang Mazi são nomes pessoais e sua qualidade precisa ser examinada em outros aspectos.

Modelo de conta, dissociação de dados:

Semelhante ao Ethereum, Solana também é um blockchain baseado em um modelo de conta, mas Solana fornece um modelo de conta diferente do Ethereum e armazena dados de maneiras diferentes.

No Solana, as contas podem salvar informações da carteira e outros dados. Os campos definidos pela conta incluem Lamports (saldo da conta), Proprietário (proprietário da conta), Executável (se é uma conta executável) e Dados (dados armazenados na conta). Cada conta designa um programa como seu proprietário para distinguir para qual programa a conta é usada como armazenamento de estado. Esses programas on-chain são somente leitura ou sem estado: a conta do programa (conta executável) armazena apenas bytecode BPF e não armazena nenhum estado. O programa armazenará o estado em outras contas independentes (contas não executáveis), nomeadamente a Programação de Solana. modelos dissociam código e dados.

A conta Ethereum é principalmente uma referência ao estado EVM, e seu contrato inteligente não contém apenas lógica de código, mas também precisa armazenar dados do usuário. Isto é frequentemente considerado uma falha de design que sobrou da história do EVM.​

Não subestime essa diferença! Os contratos inteligentes Solana são fundamentalmente mais difíceis de atacar do que blockchains com modelos de programação acoplados (como Ethereum):

No Ethereum, o “proprietário” de um contrato inteligente é uma variável global que corresponde ao contrato inteligente individualmente. Portanto, chamar uma função pode alterar diretamente o “dono” do contrato.

No Solana, o “dono” do contrato inteligente são os dados associados à conta, não as variáveis ​​globais. Uma conta pode ter vários proprietários, em vez de estar vinculada individualmente. Para explorar vulnerabilidades de segurança em contratos inteligentes, um invasor não só precisa encontrar a função problemática, mas também preparar a conta “correta” para chamar a função. Esta etapa não é fácil porque os contratos inteligentes Solana geralmente envolvem múltiplas contas de entrada e gerenciam o relacionamento entre elas por meio de restrições (como `account 1.owner==account 2.key`). O processo desde “preparar a conta correta” até “lançar o ataque” é suficiente para que o pessoal de monitoramento de segurança detecte proativamente transações suspeitas que criam contas “falsas” relacionadas a contratos inteligentes antes do ataque.

O contrato inteligente do Ethereum é como um cofre com uma senha única, desde que você obtenha essa senha, você pode obter a propriedade total, enquanto o do Solana é um cofre com muitas senhas, mas se quiser obter permissões, você não só precisa encontrar; uma forma de obter a senha, mas também é preciso descobrir o número correspondente à senha para abrir a fechadura.

linguagem de programação

Rust é a principal linguagem de programação para o desenvolvimento de contratos inteligentes em Solana. Devido ao seu desempenho e recursos de segurança, é adequado para o ambiente de alto risco de blockchain e contratos inteligentes. Solana também oferece suporte a C, C++ e (muito incomum) outras linguagens. O SDK oficial para Rust e C é fornecido para apoiar o desenvolvimento de programas on-chain. Os desenvolvedores podem usar ferramentas para compilar o programa no bytecode Berkley Packet Filter (BPF) (o arquivo tem uma extensão .so), depois implantá-lo na cadeia Solana e executar a lógica do contrato inteligente por meio do tempo de execução do contrato inteligente paralelo Sealevel.

Como a linguagem Rust em si é difícil de iniciar e não é personalizada para o desenvolvimento de blockchain, muitos requisitos exigem a reinvenção da roda e o código redundante. (Muitos projetos em produção usam a estrutura Anchor criada pelo co-criador do Backpack Armani para simplificar o desenvolvimento) Muitas linguagens de programação recém-criadas dedicadas ao desenvolvimento de blockchain são baseadas em Rust, como Cairo (Starknet), Move (Sui, Aptos ).

Muitos projetos em produção usam a estrutura Anchor

Os contratos inteligentes Ethereum são desenvolvidos principalmente na linguagem Solidity (a sintaxe é semelhante ao javascript e o arquivo de código possui uma extensão .sol). Devido à sintaxe relativamente simples e às ferramentas de desenvolvimento mais maduras (estrutura Hardhat, Remix IDE...), geralmente pensamos que a experiência de desenvolvimento do Ethereum é mais simples e refrescante, enquanto o desenvolvimento do Solana é mais difícil de começar. Portanto, embora Solana seja muito popular agora, na verdade o número de desenvolvedores no Ethereum ainda é muito maior do que Solana.

Sob certas condições de estrada, os melhores carros de corrida não são tão rápidos quanto os carros modificados. Rust é como um carro de corrida de alto nível, o que efetivamente garante o desempenho e a segurança de Solana. No entanto, não foi projetado para desenvolver esta pista para programas em cadeia, mas sim provoca um aumento na dificuldade de condução (desenvolvimento). Usar uma cadeia pública baseada em Rust e desenvolver uma linguagem personalizada para a cadeia equivale a modificar o carro de corrida para torná-lo mais adequado às condições da estrada. Solana está em desvantagem aqui.

Resumir

O modelo de programação de contratos inteligentes de Solana é inovador. Ele fornece um método de desenvolvimento de contrato inteligente sem estado, usando Rust como linguagem de programação principal e uma arquitetura que separa a lógica do estado, fornecendo um ambiente poderoso para os desenvolvedores construirem e implantarem contratos inteligentes, garantindo segurança e desempenho, mas desenvolvendo mais difícil. Com foco em alto rendimento, baixo custo e escalabilidade, Solana continua sendo a escolha atual para desenvolvedores que buscam criar dApps de alto desempenho.

Link de referência

https://solana.com/docs

https://ethereum.org/en/developers/docs

https://www.anchor-lang.com/