Encaminhe o título original '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana é uma plataforma blockchain de alto desempenho projetada para apoiar dApps. É conhecido por sua velocidade e escalabilidade, alcançada através de um mecanismo de consenso único e projeto arquitetônico. Este artigo usa Ethereum como um objeto de comparação para apresentar brevemente as características do modelo de programação de contrato inteligente Solana.
Os códigos executáveis executados em Solana são chamados de programas na rede e eles 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 são termos exclusivos para programas na cadeia Solana. Os programas on-chain são compostos por instruções. São as menores unidades que realizam operações específicas: uma ou mais instruções são incluídas em cada Solana transação. As instruções especificam as ações a serem executadas, incluindo chamar um programa na rede específico, passar uma conta, uma lista de entradas e fornecer uma matriz de bytes. As instruções têm restrições computacionais, portanto, na rede programas devem ser otimizados para usar um pequeno número de unidades computacionais ou para dividir operações caras em várias instruções.

Programas nativos: São programas que fornecem as funcionalidades necessárias para validar nós. O mais notável é o Programa do Sistema, que é responsável por gerenciar a criação de novas contas e transferir SOL entre duas contas.- Programas SPL: definem uma série de atividades na rede, incluindo a criação, exchange e empréstimo de tokens, bem como a criação de pools de staking e a manutenção de na rede serviços de resolução de nomes de domínio. Entre estes, o Programa SPL Token é usado para operações de token, enquanto o Programa de Conta Token Associada é comumente usado para escrever outros programas personalizados. Você os chama de contratos inteligentes, eu os chamo na rede programas. Termos diferentes, mas ambos se referem ao código em execução no blockchain. Assim como Alice, Bob e John são todos nomes, e suas qualidades reais precisam ser avaliadas por outros aspectos.
Além Solana, as contas podem salvar informações da carteira e outros dados. Os campos definidos pela conta incluem Lamports (saldo da conta), Proprietário (conta proprietário), Executável (se for um conta executável) e Dados (dados armazenados no conta). Cada conta designa um programa como seu proprietário para distinguir para qual programa o conta é usado como um armazenamento de estado. Esses programas na rede são somente leitura ou sem monitoração de estado: o programa conta (conta executável) armazena apenas bytecódigo BPF e não armazena nenhum estado. O programa armazenará o estado em outras contas independentes (contas não executáveis). Ou seja, o modelo de programação do Solana desacopla código e dados.

O Ethereum conta é principalmente uma referência ao estado EVM. Seu contrato inteligente não só tem lógica de código, mas também precisa armazenar dados do usuário. Isso é muitas vezes considerado uma falha de design remanescente da história do EVM.

Não subestime essa distinção! Solana contratos inteligentes são fundamentalmente mais desafiadores para atacar em comparação com blockchains com um modelo de programação acoplado como o Ethereum.
Em Ethereum, um "proprietário" de contrato inteligente é uma variável global que corresponde um a um com o contrato inteligente. Portanto, chamar uma função pode alterar diretamente o contrato de "proprietário".
Em Solana, no entanto, o "dono" de um contrato inteligente são os dados associados a uma conta e não a uma variável global. Um conta pode ter vários proprietários, em vez de uma associação um-para-um. Para que um invasor explore uma vulnerabilidade de segurança em um contrato inteligente, ele não só precisa encontrar a função problemática, mas também precisa preparar as contas "corretas" para chamar essa função. Essa etapa não é fácil porque Solana contratos inteligentes normalmente envolvem várias contas de entrada e gerenciam seus relacionamentos por meio de restrições (como account1.owner == account2.key). O processo de "preparar as contas corretas" para "lançar um ataque" dá ao pessoal de monitoramento de segurança tempo suficiente para detectar proativamente transações suspeitas relacionadas à criação de contas "falsas" associadas ao contrato inteligente antes que o ataque ocorra.
Ethereum contratos inteligentes são como um cofre que usa uma senha única, uma vez que você obtém essa senha, você ganha a propriedade total. Em contraste, os contratos inteligentes de Solana são como um cofre com muitas senhas. Para obter acesso, você não só precisa obter as senhas, mas também descobrir qual senha corresponde a qual bloqueio abri-la.
Como a linguagem Rust em si é difícil de começar e não é personalizada para o desenvolvimento de blockchain, muitos requisitos exigem reinventar a roda e o código redundante. (Muitos projetos em produção usam o framework Anchor criado pelo co-criador da 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 utilizam o framework Anchor
Ethereum contratos inteligentes são desenvolvidos principalmente na linguagem Solidity (a sintaxe é semelhante ao javascript, e o arquivo de código tem uma extensão .sol). Devido à sintaxe relativamente simples e ferramentas de desenvolvimento mais maduras (framework Hardhat, Remix IDE...), geralmente pensamos que a experiência de desenvolvimento de Ethereum é mais simples e atual, enquanto Solana desenvolvimento é mais difícil de começar. Então, mesmo que Solana seja muito popular agora, na verdade o número de desenvolvedores em Ethereum ainda é muito mais do que Solana.
Sob certas condições de estrada, os carros de corrida de topo não são tão rápidos como 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, ele não é projetado para desenvolver esta pista para programas na rede, mas em vez disso causa um aumento na dificuldade de condução (desenvolvimento). Usar uma cadeia pública baseada em Rust e desenvolver uma linguagem personalizada para a cadeia é equivalente a modificar o carro de corrida para torná-lo mais adequado às condições da estrada. Solana está em desvantagem aqui.





