Solana é uma plataforma de blockchain de alto desempenho projetada para suportar dApps, conhecida por sua velocidade e escalabilidade alcançadas por meio de mecanismos de consenso e designs arquiteturais únicos. Este artigo irá introduzir brevemente as características do modelo de programação de contratos inteligentes da Solana, comparando-o com o Ethereum para contexto.
Os programas em execução no Ethereum são conhecidos como contratos inteligentes, que são uma série de código (funções) e dados (estado) localizados num endereço específico na rede Ethereum. Os contratos inteligentes também são contas Ethereum, designadas por contas de contrato. Têm saldos, podem ser o alvo de transações, mas não podem ser controlados por indivíduos. São implementados na rede para funcionar como programas.
Por outro lado, o código executável em execução na Solana é referido como Programas On-Chain, que interpretam as instruções enviadas com cada transação. Estes programas podem ser implementados diretamente no núcleo da rede como programas nativos ou publicados por qualquer pessoa como programas SPL.
Instruções: As instruções são termos únicos para programas on-chain da Solana. Consistem em instruções que executam operações específicas, formando a menor unidade de execução para transações na Solana. Cada transação na Solana contém uma ou mais instruções especificando as operações a serem realizadas, incluindo a chamada de programas específicos on-chain, passagem de contas, listas de entrada e fornecimento de matrizes de bytes. As instruções têm limites computacionais, portanto, os programas on-chain devem ser otimizados para usar menos unidades computacionais ou dividir operações caras em várias instruções.
Programas nativos: Estes fornecem as funcionalidades essenciais necessárias pelos nós validadores. O mais famoso é o Programa do Sistema, responsável por gerir a criação de novas contas e transferir SOL entre duas contas.
Programas SPL: definem uma série de atividades on-chain, incluindo criação de tokens, troca, empréstimos, criação de pools de stakes, manutenção de serviços de resolução de nomes de domínio on-chain e muito mais. Entre eles, o SPL Token Program é usado para operações de token, enquanto programas como o Associated Token Account Program são comumente usados para escrever outros programas personalizados.
Chamas-lhe contratos inteligentes, eu chamo-lhes programas on-chain. Nomes diferentes, mas ambos referem-se a código a correr na blockchain. Tal como Zhang San, Li Si e Wang Ma Zi são todos nomes, a qualidade de alguém deve ser avaliada com base em outros aspetos também.
Similar ao Ethereum, a Solana também é uma blockchain baseada num modelo de conta, mas a Solana fornece um modelo de conta diferente do Ethereum, armazenando dados de uma forma diferente.
No Solana, as contas podem conter informações de carteira e outros dados. Os campos definidos por uma conta incluem Lamports (o saldo da conta), Proprietário (o proprietário da conta), Executável (se é uma conta executável) e Dados (os dados armazenados na conta). Cada conta especifica um programa como seu proprietário para diferenciar qual estado do programa armazena. Esses programas on-chain são somente leitura ou sem estado: contas de programa (contas executáveis) armazenam apenas o bytecode BPF e não armazenam nenhum estado. Os programas armazenam seu estado em outras contas independentes (contas não executáveis). O modelo de programação da Solana desacopla código e dados.
Por outro lado, as contas Ethereum servem principalmente como referências para o estado da EVM (Máquina Virtual Ethereum). Os contratos inteligentes na Ethereum contêm tanto lógica de código quanto a necessidade de armazenar dados do usuário. Isso é frequentemente considerado uma falha de design herdada da história da EVM.
Não subestime esta distinção! Os contratos inteligentes da Solana são fundamentalmente mais difíceis de atacar do que as blockchains com modelos de programação acoplados, como o Ethereum:
No Ethereum, o “proprietário” de um contrato inteligente é uma variável global que corresponde diretamente a cada contrato inteligente. Portanto, chamar uma determinada função poderia alterar diretamente o “proprietário” do contrato.
No Solana, porém, o "dono" de um contrato inteligente é dados associados a uma conta, em vez de uma variável global. Uma conta pode ter vários donos, em vez de uma associação um-para-um. Para um atacante explorar uma vulnerabilidade de segurança em um contrato inteligente, eles não apenas precisam identificar a função problemática, mas também preparar as contas "corretas" para chamar essa função. Este passo não é fácil porque os contratos inteligentes da Solana normalmente envolvem várias contas de entrada e gerenciam seus relacionamentos através de restrições (como account1.owner==account2.key
O processo, desde a "preparação das contas corretas" até ao "lançamento do ataque", é suficiente para os monitores de segurança detetarem proativamente transações suspeitas relacionadas com a criação de contas "falsas" ligadas a contratos inteligentes antes que ocorra um ataque.
Os contratos inteligentes do Ethereum são como um cofre com uma única senha exclusiva. Uma vez que você tenha essa senha, você obtém a propriedade completa. Os da Solana, por outro lado, são como um cofre com muitas senhas. Para ter acesso, você não só precisa obter as senhas, mas também entender os identificadores correspondentes antes de poder abrir a porta.
Rust é a linguagem de programação principal para desenvolver contratos inteligentes na Solana. Suas características de desempenho e segurança a tornam adequada para o ambiente de alto risco da blockchain e contratos inteligentes. A Solana também suporta C, C++ e outras linguagens (embora menos comuns). Os SDKs oficiais Rust e C são fornecidos para apoiar o desenvolvimento de programas on-chain. Os desenvolvedores podem usar ferramentas para compilar programas em bytecode Berkeley Packet Filter (arquivos com extensão .so) e implantá-los na blockchain Solana. A lógica dos contratos inteligentes é então executada através do tempo de execução paralelo do contrato inteligente Sealevel.
No entanto, devido à elevada curva de aprendizagem da linguagem Rust e à falta de personalização para o desenvolvimento de blockchain, muitos requisitos resultam em código redundante e na reinvenção da roda. Para simplificar o desenvolvimento, muitos projetos em produção utilizam o framework Anchor criado pela colaboração da Backpack e Armani. Além disso, várias novas linguagens de programação especificamente adaptadas para o desenvolvimento de blockchain, como Cairo (Starknet) e Move (Sui, Aptos), são baseadas em Rust.
Muitos projetos em produção usam o framework Anchor.
Os contratos inteligentes do Ethereum são desenvolvidos principalmente usando a linguagem Solidity, que tem uma sintaxe semelhante ao JavaScript, com arquivos de código tendo uma extensão .sol. Devido à sua sintaxe relativamente simples e ferramentas de desenvolvimento mais maduras (como o framework Hardhat e o IDE Remix), o Ethereum é geralmente considerado oferecer uma experiência de desenvolvimento mais simples e agradável em comparação com o Solana, que tem uma curva de aprendizado mais alta. Apesar da popularidade atual do Solana, o número de desenvolvedores no Ethereum continua sendo muito maior do que no Solana.
Em circunstâncias específicas, um carro de corrida de primeira linha superará um carro modificado. A ferrugem, como um carro de corrida de primeira linha, garante efetivamente o desempenho e a segurança da Solana. No entanto, não é projetado inherentemente para o desenvolvimento de programas on-chain, o que na verdade aumenta o nível de dificuldade de dirigir (desenvolver). As cadeias públicas que adotam linguagens baseadas em Rust e personalizadas para o desenvolvimento on-chain podem ser comparadas à modificação deste carro de corrida para se adaptar melhor às condições da estrada. Neste sentido, a Solana está em desvantagem.
O modelo de programação de contratos inteligentes da Solana é inovador. Oferece uma abordagem sem estado para o desenvolvimento de contratos inteligentes, com Rust como a linguagem de programação principal e uma arquitetura que separa a lógica do estado. Isso fornece aos desenvolvedores um ambiente poderoso para construir e implementar contratos inteligentes, garantindo segurança e desempenho, embora com maior dificuldade de desenvolvimento. A Solana foca na alta throughput, baixos custos e escalabilidade, tornando-a a escolha ideal para desenvolvedores que buscam criar dApps de alto desempenho.
Este artigo é reproduzido a partir de [ panews], título original "Minha avó também pode entender: Qual é a diferença entre o modelo de programação de Solana e ETH?", os direitos autorais pertencem ao autor original [Foresight News, Alex Liu], se tiver alguma objeção à reimpressão, entre em contato Equipe Gate Learn, a equipa tratará dela o mais rápido possível de acordo com os procedimentos relevantes.
Aviso legal: As opiniões expressas neste artigo representam apenas as visões pessoais do autor e não constituem qualquer conselho de investimento.
Outras versões do artigo são traduzidas pela equipe do Gate Learn, não mencionadas emGate, o artigo traduzido não pode ser reproduzido, distribuído ou plagiado.
Solana é uma plataforma de blockchain de alto desempenho projetada para suportar dApps, conhecida por sua velocidade e escalabilidade alcançadas por meio de mecanismos de consenso e designs arquiteturais únicos. Este artigo irá introduzir brevemente as características do modelo de programação de contratos inteligentes da Solana, comparando-o com o Ethereum para contexto.
Os programas em execução no Ethereum são conhecidos como contratos inteligentes, que são uma série de código (funções) e dados (estado) localizados num endereço específico na rede Ethereum. Os contratos inteligentes também são contas Ethereum, designadas por contas de contrato. Têm saldos, podem ser o alvo de transações, mas não podem ser controlados por indivíduos. São implementados na rede para funcionar como programas.
Por outro lado, o código executável em execução na Solana é referido como Programas On-Chain, que interpretam as instruções enviadas com cada transação. Estes programas podem ser implementados diretamente no núcleo da rede como programas nativos ou publicados por qualquer pessoa como programas SPL.
Instruções: As instruções são termos únicos para programas on-chain da Solana. Consistem em instruções que executam operações específicas, formando a menor unidade de execução para transações na Solana. Cada transação na Solana contém uma ou mais instruções especificando as operações a serem realizadas, incluindo a chamada de programas específicos on-chain, passagem de contas, listas de entrada e fornecimento de matrizes de bytes. As instruções têm limites computacionais, portanto, os programas on-chain devem ser otimizados para usar menos unidades computacionais ou dividir operações caras em várias instruções.
Programas nativos: Estes fornecem as funcionalidades essenciais necessárias pelos nós validadores. O mais famoso é o Programa do Sistema, responsável por gerir a criação de novas contas e transferir SOL entre duas contas.
Programas SPL: definem uma série de atividades on-chain, incluindo criação de tokens, troca, empréstimos, criação de pools de stakes, manutenção de serviços de resolução de nomes de domínio on-chain e muito mais. Entre eles, o SPL Token Program é usado para operações de token, enquanto programas como o Associated Token Account Program são comumente usados para escrever outros programas personalizados.
Chamas-lhe contratos inteligentes, eu chamo-lhes programas on-chain. Nomes diferentes, mas ambos referem-se a código a correr na blockchain. Tal como Zhang San, Li Si e Wang Ma Zi são todos nomes, a qualidade de alguém deve ser avaliada com base em outros aspetos também.
Similar ao Ethereum, a Solana também é uma blockchain baseada num modelo de conta, mas a Solana fornece um modelo de conta diferente do Ethereum, armazenando dados de uma forma diferente.
No Solana, as contas podem conter informações de carteira e outros dados. Os campos definidos por uma conta incluem Lamports (o saldo da conta), Proprietário (o proprietário da conta), Executável (se é uma conta executável) e Dados (os dados armazenados na conta). Cada conta especifica um programa como seu proprietário para diferenciar qual estado do programa armazena. Esses programas on-chain são somente leitura ou sem estado: contas de programa (contas executáveis) armazenam apenas o bytecode BPF e não armazenam nenhum estado. Os programas armazenam seu estado em outras contas independentes (contas não executáveis). O modelo de programação da Solana desacopla código e dados.
Por outro lado, as contas Ethereum servem principalmente como referências para o estado da EVM (Máquina Virtual Ethereum). Os contratos inteligentes na Ethereum contêm tanto lógica de código quanto a necessidade de armazenar dados do usuário. Isso é frequentemente considerado uma falha de design herdada da história da EVM.
Não subestime esta distinção! Os contratos inteligentes da Solana são fundamentalmente mais difíceis de atacar do que as blockchains com modelos de programação acoplados, como o Ethereum:
No Ethereum, o “proprietário” de um contrato inteligente é uma variável global que corresponde diretamente a cada contrato inteligente. Portanto, chamar uma determinada função poderia alterar diretamente o “proprietário” do contrato.
No Solana, porém, o "dono" de um contrato inteligente é dados associados a uma conta, em vez de uma variável global. Uma conta pode ter vários donos, em vez de uma associação um-para-um. Para um atacante explorar uma vulnerabilidade de segurança em um contrato inteligente, eles não apenas precisam identificar a função problemática, mas também preparar as contas "corretas" para chamar essa função. Este passo não é fácil porque os contratos inteligentes da Solana normalmente envolvem várias contas de entrada e gerenciam seus relacionamentos através de restrições (como account1.owner==account2.key
O processo, desde a "preparação das contas corretas" até ao "lançamento do ataque", é suficiente para os monitores de segurança detetarem proativamente transações suspeitas relacionadas com a criação de contas "falsas" ligadas a contratos inteligentes antes que ocorra um ataque.
Os contratos inteligentes do Ethereum são como um cofre com uma única senha exclusiva. Uma vez que você tenha essa senha, você obtém a propriedade completa. Os da Solana, por outro lado, são como um cofre com muitas senhas. Para ter acesso, você não só precisa obter as senhas, mas também entender os identificadores correspondentes antes de poder abrir a porta.
Rust é a linguagem de programação principal para desenvolver contratos inteligentes na Solana. Suas características de desempenho e segurança a tornam adequada para o ambiente de alto risco da blockchain e contratos inteligentes. A Solana também suporta C, C++ e outras linguagens (embora menos comuns). Os SDKs oficiais Rust e C são fornecidos para apoiar o desenvolvimento de programas on-chain. Os desenvolvedores podem usar ferramentas para compilar programas em bytecode Berkeley Packet Filter (arquivos com extensão .so) e implantá-los na blockchain Solana. A lógica dos contratos inteligentes é então executada através do tempo de execução paralelo do contrato inteligente Sealevel.
No entanto, devido à elevada curva de aprendizagem da linguagem Rust e à falta de personalização para o desenvolvimento de blockchain, muitos requisitos resultam em código redundante e na reinvenção da roda. Para simplificar o desenvolvimento, muitos projetos em produção utilizam o framework Anchor criado pela colaboração da Backpack e Armani. Além disso, várias novas linguagens de programação especificamente adaptadas para o desenvolvimento de blockchain, como Cairo (Starknet) e Move (Sui, Aptos), são baseadas em Rust.
Muitos projetos em produção usam o framework Anchor.
Os contratos inteligentes do Ethereum são desenvolvidos principalmente usando a linguagem Solidity, que tem uma sintaxe semelhante ao JavaScript, com arquivos de código tendo uma extensão .sol. Devido à sua sintaxe relativamente simples e ferramentas de desenvolvimento mais maduras (como o framework Hardhat e o IDE Remix), o Ethereum é geralmente considerado oferecer uma experiência de desenvolvimento mais simples e agradável em comparação com o Solana, que tem uma curva de aprendizado mais alta. Apesar da popularidade atual do Solana, o número de desenvolvedores no Ethereum continua sendo muito maior do que no Solana.
Em circunstâncias específicas, um carro de corrida de primeira linha superará um carro modificado. A ferrugem, como um carro de corrida de primeira linha, garante efetivamente o desempenho e a segurança da Solana. No entanto, não é projetado inherentemente para o desenvolvimento de programas on-chain, o que na verdade aumenta o nível de dificuldade de dirigir (desenvolver). As cadeias públicas que adotam linguagens baseadas em Rust e personalizadas para o desenvolvimento on-chain podem ser comparadas à modificação deste carro de corrida para se adaptar melhor às condições da estrada. Neste sentido, a Solana está em desvantagem.
O modelo de programação de contratos inteligentes da Solana é inovador. Oferece uma abordagem sem estado para o desenvolvimento de contratos inteligentes, com Rust como a linguagem de programação principal e uma arquitetura que separa a lógica do estado. Isso fornece aos desenvolvedores um ambiente poderoso para construir e implementar contratos inteligentes, garantindo segurança e desempenho, embora com maior dificuldade de desenvolvimento. A Solana foca na alta throughput, baixos custos e escalabilidade, tornando-a a escolha ideal para desenvolvedores que buscam criar dApps de alto desempenho.
Este artigo é reproduzido a partir de [ panews], título original "Minha avó também pode entender: Qual é a diferença entre o modelo de programação de Solana e ETH?", os direitos autorais pertencem ao autor original [Foresight News, Alex Liu], se tiver alguma objeção à reimpressão, entre em contato Equipe Gate Learn, a equipa tratará dela o mais rápido possível de acordo com os procedimentos relevantes.
Aviso legal: As opiniões expressas neste artigo representam apenas as visões pessoais do autor e não constituem qualquer conselho de investimento.
Outras versões do artigo são traduzidas pela equipe do Gate Learn, não mencionadas emGate, o artigo traduzido não pode ser reproduzido, distribuído ou plagiado.