Fazer a mudança de EVM para SVM (Solana) requer a compreensão de várias diferenças importantes entre as máquinas virtuais. Este artigo examinará várias dessas diferenças, incluindo contas, taxas, transações, contratos inteligentes (programas) e muito mais. Ele também explorará a configuração do desenvolvedor, incluindo ferramentas e SDKs.
Ao final, os desenvolvedores terão o conhecimento necessário para iniciar sua jornada Solana.
Compreendendo as principais diferenças
Para começar, vejamos a diferença mais significativa entre EVM e SVM: o design do modelo de conta.
Modelo de conta
Ao contrário do Ethereum, o Solana foi projetado para aproveitar múltiplos núcleos e suportar transações paralelas. Para conseguir isso, Solana usa um modelo de conta.
Uma conta no Solana é um registro no livro-razão do Solana que contém dados (uma conta de dados) ou é um programa executável (um contrato inteligente ou programa no Solana).
Assim como o Ethereum, cada conta possui um identificador de endereço. No entanto, ao contrário do Ethereum – onde cada contrato inteligente é uma conta com lógica de execução e armazenamento interligados – os contratos inteligentes de Solana são totalmente sem estado. O estado deve ser passado para contas para que possam ser executados.
Vejamos um exemplo de código. No código do Solidity abaixo, o estado está vinculado ao contrato inteligente com a linha int private count = 0.
Com Rust (Solana) existe uma estrutura dentro do contrato inteligente informando inicialize_counter. Este contador inicial cria uma conta com contagem 0. A conta é passada para este contador para incrementar a contagem. Isso evita que o estado seja mantido dentro do próprio contrato inteligente.
Com Solana, os dados são armazenados em contas separadas fora do programa. Para executar a lógica de um programa, passe a conta a ser executada.
No caso deste programa de contador, passe uma conta de contador para o programa ao chamar a função de incremento, e o programa então incrementará o valor na conta de contador.
Benefícios do design do modelo de conta
Um dos principais benefícios deste modelo de conta é a capacidade de reutilização do programa.
Com a interface ERC20 no Ethereum, sempre que um desenvolvedor cria um novo token, ele deve reimplantar o contrato inteligente ERC20 no Ethereum com seus valores especificados. Esta redistribuição acarreta um custo elevado.
Mas com Solana, não é necessário criar e implantar um novo contrato inteligente para criar um novo token. Em vez disso, crie uma nova conta, conhecida como conta mint, usando o Programa Solana Token, passando detalhes como número de tokens, casas decimais, quem pode cunhar e muito mais.
E isso pode ser feito simplesmente enviando uma transação para o Programa Token. Usando a CLI da Biblioteca de Programas Solana, por exemplo, é apenas um único comando:
Mercados de taxas locais
Outro benefício do modelo de conta é que os mercados de taxas são locais por conta.
No Ethereum, os mercados de taxas são globais. Se uma coleção NFT se tornar viral e todos estiverem cunhando, as taxas aumentarão para todos. Mas em Solana, como os mercados de taxas são locais por conta, apenas as pessoas que cunham essa coleção de NFT pagam as taxas elevadas. Os usuários que não participam não são afetados.
Tarifas
Vamos nos aprofundar nas taxas. No Solana, as taxas são divididas em três categorias: taxa básica, taxa de prioridade e aluguel. Vejamos cada um.
A taxa básica é calculada com base no número de assinaturas em uma transação. Cada assinatura custa 5.000 lamports (0,000000001 sol = 1 lamport). Se uma transação tiver 5 assinaturas, a taxa básica será de 25.000 lamports.
A taxa de prioridade é uma taxa opcional que pode ser adicionada a uma transação para lhe dar prioridade. Essa taxa é baseada na quantidade de unidades de computação usadas na transação. Semelhante ao gás Ethereum, esta taxa é uma medida simples dos recursos computacionais necessários para a transação.
A taxa final, aluguel, é mais parecida com um depósito. Quando os desenvolvedores criam contas ou alocam espaço na rede, eles devem depositar SOL para que a rede mantenha sua conta. O aluguel é calculado com base no número de bytes armazenados na rede, e uma taxa básica adicional é cobrada pela alocação do espaço.
Transações
No Solana, a execução do programa começa com o envio de uma transação ao cluster. Cada transação no Solana consiste em quatro partes:
Uma ou mais instruções. As instruções são a menor lógica de execução no Solana. Eles podem ser considerados chamadas de função em um contrato inteligente Ethereum. Eles invocam programas que fazem chamadas ao tempo de execução do Solana para atualizar o estado (por exemplo, chamando o programa de token para transferir tokens de uma conta para outra).
Uma série de contas para ler ou escrever
Uma ou mais assinaturas
Um blockhash recente ou nonce. Em vez de usar um nonce incremental como no Ethereum, no Solana um blockhash recente é extraído do cluster. Com este blockhash, a transação é válida apenas para 150 blocos, evitando que assinaturas de transações de longa duração sejam executadas em uma data muito posterior.
Uma outra diferença significativa entre Ethereum e Solana é que com Solana, as transações podem ter múltiplas instruções (chamadas de função no Ethereum). Isso significa que não é necessário criar contratos inteligentes personalizados para encadear funções em uma única transação. Cada instrução pode ser uma chamada de função separada, feita em ordem na transação. As transações também são atômicas: se uma instrução falhar, toda a transação falhará.
Limitações de transação
Assim como acontece com as limitações do gás Ethereum, existem limitações de unidades de computação nas transações Solana.
Outras limitações incluem:
Cada conta referenciada pode ter no máximo 12 milhões de unidades de computação usadas por bloco.
As instruções só podem ser chamadas a uma profundidade de 4 antes da transação ser revertida.
Mempool
Ao contrário do Ethereum, Solana não possui mempools. Em vez disso, os validadores Solana encaminham todas as transações para até quatro líderes na programação de líderes. Não ter um mempool força as transações a pularem de líder em líder até a expiração do blockhash, mas também reduz a sobrecarga de fofocas no cluster.
O ambiente de desenvolvedor Solana
Agora vamos dar uma olhada em algumas das ferramentas de desenvolvedor do Solana.
Linguagens de programação
Enquanto Ethereum usa principalmente Solidity para escrever contratos inteligentes, Solana usa Rust. Se estiver migrando do Ethereum, considere a estrutura Anchor ou Neon, que podem ajudar os desenvolvedores a começar mais rapidamente, permitindo-lhes construir em Solana usando ferramentas EVM familiares.
Assim como o Ethereum, existem SDKs do lado do cliente disponíveis para muitas das linguagens de programação mais populares, incluindo JavaScript, Python e Java.
Ferramentas para desenvolvedores
Solana atualmente não possui equivalente ao Foundry, mas possui um amplo conjunto de ferramentas equivalentes às utilizadas no Solidity.
Para um mergulho mais profundo, aqui está uma lista mais ampla de recursos para desenvolvedores.
Criando Contratos Inteligentes
Ao criar programas no Solana (ou ao migrar contratos inteligentes Ethereum existentes), existem várias diferenças fundamentais – muitas para serem abordadas aqui. Mas vejamos alguns dos mais comuns:
O mapeamento não existe diretamente no Solana. Em vez disso, use endereços derivados de programas. Assim como o mapeamento, os endereços derivados do programa permitem criar um mapa de uma chave ou conta para um valor armazenado na cadeia.
No Solana, os programas podem ser atualizados por padrão. Um contrato inteligente pode ser atualizado por um simples comando CLI solana program deploy <program_filepath>.
Ao escrever um contrato inteligente de solidez, é comum verificar msg.sender ou tx.origin. Não há equivalente a isso em Solana. Cada transação pode ter vários signatários e a pessoa que envia a transação não é necessariamente aquela que a assinou.
Para obter mais informações sobre programas e como implantá-los, consulte este guia.
Saber mais
Essas são algumas das diferenças mais críticas entre o desenvolvimento em Ethereum e Solana. Há muito mais para aprender, é claro. E a melhor maneira de começar é começar imediatamente! Aqui estão alguns recursos para as próximas etapas:
O Solana Playground onde os desenvolvedores podem escrever, construir e implantar programas Solana a partir do navegador
Uma introdução ao desenvolvimento do Solana usando o Solana Playground
Uma visão mais detalhada das diferenças entre desenvolver em Ethereum e Solana
O Bootcamp Solana
