---
title: "Contas de dados vs. contas de programa no Solana"
description: "Entenda a diferença entre contas de dados e contas de programa no modelo de contas do Solana"
---

# Contas de dados vs. contas de programa no Solana

Solana é uma plataforma de blockchain descentralizada projetada para ser rápida, segura e escalável, usando[ modelos de contas](https://www.alchemy.com/overviews/solana-account-model) exclusivos para orquestrar o fluxo de processos. Normalmente, um layout completo de dApp na Solana compreende três tipos de contas: contas nativas, contas de dados e contas de programa.

Este artigo foca nas contas de dados e de programa da Solana, em conjunto na blockchain Solana, e em como elas diferem dos [contratos inteligentes da Ethereum](https://alchemy.com/overviews/smart-contract-security-best-practices), o equivalente de conta na Ethereum.

## **O que é uma conta de dados da Solana?**

**Uma conta de dados da Solana é um tipo de conta na blockchain Solana que armazena dados como tokens, documentos ou qualquer outro tipo de informação.** Contas de dados podem armazenar estado, mas não são executáveis.

Contas de dados são semelhantes a contas em outras plataformas de blockchain, no sentido de que possuem um saldo e podem receber e enviar transações. Essas contas, junto com metadados, identificam seu proprietário e o tipo de interação possível durante a execução (runtime). Contas de wallet, mint e token são bons exemplos de contas de dados, pois armazenam valor e pertencem a um usuário e a uma conta de programa.

## **O que é uma conta de programa da Solana?**

**Uma conta de programa é um contrato inteligente na blockchain Solana usado para executar código, normalmente acionado por transações recebidas ou pela passagem do tempo.** Contas de programa podem interagir com contas de dados, permitindo que leiam e escrevam dados na blockchain. Elas próprias não conseguem armazenar estados variáveis, mas os invocam a partir de contas de dados.

Uma diferença importante entre contas de dados e contas de programa da Solana é que contas de programa só podem ser criadas por outras contas de programa, enquanto contas de dados podem ser criadas por qualquer desenvolvedor ou usuário. No entanto, contas de programa podem ser usadas para criar mais contas de programa, permitindo a criação de sistemas de contratos inteligentes complexos e em várias camadas na [Solana EVM](https://www.alchemy.com/overviews/solana-evm).

## **Como contas de dados e contas de programa funcionam juntas?**

Contas de dados podem ser usadas para armazenar os dados utilizados por contas de programa, e contas de programa podem interagir com contas de dados para ler e escrever esses dados. Contas de dados e de programa coexistem e colaboram na [blockchain Solana](https://www.alchemy.com/ecosystem/solana) para viabilizar uma ampla gama de funções e serviços de dApps.

Por exemplo, uma conta de programa poderia ser usada para criar um contrato de token simples que permite aos usuários transferir tokens entre contas de dados. Nesse caso, a conta de programa seria responsável por executar a lógica do contrato, enquanto as contas de dados seriam usadas para armazenar os saldos dos tokens.

Algo assim:

Neste exemplo, criamos uma conta de programa chamada "transfer_tokens.wasm" que contém a lógica para transferir tokens de uma conta para outra. Podemos então conectar a conta de dados à conta de programa usando o método invoke, passando a conta de dados e os argumentos da transferência como um array.

Quando a conta de programa é executada, ela usa os dados armazenados na conta de dados para realizar a transferência de tokens. Nesse caso, a conta de programa transferiria 100 tokens da conta de token para a conta destinatária.

Você pode testar o fluxo de programa demonstrado no exemplo acima com qualquer outro programa de sua escolha ou com alguns dos programas prontos da[ Solana Program Library (SPL)](https://www.alchemy.com/overviews/solana-program-library).

## **Contas da Solana vs. contratos inteligentes da Ethereum**

Contas de dados e contas de programa da Solana são semelhantes a contratos inteligentes da Ethereum, mas há algumas diferenças importantes, incluindo armazenamento, chamadas, execução, gas, e mais.

### **Em que as contas de dados e programas da Solana diferem dos contratos inteligentes da Ethereum?**

**Contas de dados e de programa da Solana diferem dos contratos inteligentes da Ethereum na forma como os dados são armazenados, como os contratos são chamados, no modelo de execução, no suporte a linguagens e no gas.**

#### **1. Armazenamento de dados**

Na blockchain Solana, contas de dados são usadas para armazenar dados, enquanto na blockchain Ethereum, os dados são armazenados dentro dos contratos inteligentes. Isso significa que, na Solana, há uma separação entre os dados e a lógica que interage com eles, enquanto na Ethereum, os dados e a lógica são combinados em um único contrato inteligente.

#### **2. Chamadas de contrato**

Na blockchain Solana, contas de programa são acionadas por transações recebidas,[ chamadas de outros programas (ou seja, invocações entre programas)](https://www.alchemy.com/overviews/cross-program-invocation), ou pela passagem do tempo. Na blockchain Ethereum, contratos inteligentes são acionados por transações recebidas e também podem ser chamados por outros contratos inteligentes.

#### **3. Modelo de execução**

Contas de dados e de programa da Solana são executadas pelos validadores na rede Solana, enquanto contratos inteligentes da Ethereum são executados pela Ethereum Virtual Machine (EVM) em nós individuais.

#### **4. Gas da EVM e correlação com dados**

Contas de dados da Solana podem armazenar uma quantidade ilimitada de dados, enquanto a Ethereum tem uma [capacidade limitada de armazenamento em contratos inteligentes](https://www.alchemy.com/docs/smart-contract-storage-layout) determinada pela quantidade de gas consumida durante a execução.

#### **5. Suporte a linguagens**

Contas de programa da Solana podem ser escritas em qualquer linguagem que possa ser compilada para WebAssembly (WASM), enquanto contratos inteligentes da Ethereum são normalmente escritos em [Solidity](https://www.alchemy.com/overviews/solidity) ou Vyper (uma implementação de Solidity baseada em Python).

### **Em que as contas de dados e de programa da Solana são semelhantes aos contratos inteligentes da Ethereum?**

**Contas de dados e de programa da Solana são semelhantes aos contratos inteligentes da Ethereum em termos de funcionalidade de contrato inteligente, descentralização, imutabilidade, transparência e programabilidade.**

#### **1. Funcionalidade de contrato inteligente**

Tanto as contas da Solana quanto os contratos inteligentes da Ethereum podem ser usados para facilitar transações e automatizar processos, como transferir ativos ou gerenciar a logística de cadeias de suprimento.

#### **2. Descentralização**

Tanto as contas da Solana quanto os contratos inteligentes da Ethereum são implantados e executados em redes de blockchain públicas e descentralizadas.

#### **3. Imutabilidade**

Uma vez que uma conta de dados e de programa da Solana ou um contrato inteligente da Ethereum é implantado na blockchain, ele não pode ser modificado ou excluído.

#### **4. Transparência**

O código e os dados armazenados em contas de dados e de programa da Solana e em contratos inteligentes da Ethereum são publicamente acessíveis, permitindo transparência e auditabilidade.

#### 5. Programabilidade

Contas de dados e de programa da Solana e contratos inteligentes da Ethereum são programáveis, o que significa que podem conter lógica e executar funções com base em determinadas condições. Na Solana, contas de programa podem criar outras contas de programa, enquanto na Ethereum, contratos inteligentes podem chamar outros contratos inteligentes.

### **Como a Solana EVM da Neon Labs lida com programas, contas e contratos inteligentes?**

A Solana EVM da Neon Labs é uma ferramenta que permite aos desenvolvedores usar as linguagens de programação Solidity/Vyper para criar e [implantar contratos inteligentes da Ethereum na blockchain Solana](https://www.alchemy.com/overviews/solana-evm), facilitando a portabilidade de [aplicativos](https://www.alchemy.com/dapps/top/defi-dapps) Ethereum existentes para a Solana. Antes do lançamento da [Neon EVM](https://www.alchemy.com/dapps/neon-evm) na [devnet da Solana](https://www.alchemy.com/overviews/solana-devnet) e na mainnet, aplicativos Ethereum eram incompatíveis com o [ecossistema Solana](https://www.alchemy.com/dapps/ecosystem/solana).

A Neon EVM fornece uma plataforma para que contratos inteligentes sejam executados como seriam na blockchain Ethereum, aproveitando os recursos que as contas normalmente têm na blockchain Solana, como taxas de gas baixas e alto throughput.

A Solana EVM funciona emulando a Ethereum Virtual Machine na blockchain Solana, permitindo que contratos inteligentes da Ethereum sejam executados na Solana de forma semelhante a como seriam executados na blockchain Ethereum. Isso significa que os desenvolvedores podem usar seu conhecimento já existente da linguagem de programação Solidity e do [ecossistema Ethereum](https://www.alchemy.com/dapps/ecosystem/ethereum) para publicar aplicativos na Solana.

## **Construa contas da Solana com a Alchemy**

Um aplicativo descentralizado construído na Solana normalmente compreende contas nativas, contas de dados e contas de programa. Contas nativas representam programas na Solana, contas de dados armazenam informações, e contas de programa executam código na Solana. Se você quer começar a desenvolver, [registre uma conta de desenvolvedor Solana gratuita](https://dashboard.alchemy.com/signup/?a=cbb287cfba) na Alchemy!
