---
title: "Como as transações do Ethereum são propagadas (transmitidas)?"
description: "Saiba como as transações do Ethereum são propagadas pela rede Ethereum"
---

# Como as transações do Ethereum são propagadas (transmitidas)?

Transações são a troca fundamental de informação e valor em uma blockchain, e são essenciais para desenvolvedores, traders e hobistas entenderem. As transações são propagadas pela rede Peer-to-Peer \(P2P\) descentralizada da Ethereum usando diversos protocolos de rede, como **RLPx** e o **Wire Protocol**, para garantir que produtores de blocos e validadores consigam encontrar transações pendentes no mempool.

Este artigo abordará os tipos de transação da Ethereum e como as transações são transmitidas pela rede de nós da Ethereum.

## **O que é uma transação Ethereum?**

Uma **transação Ethereum** é um processo contratual pelo qual um endereço envia tokens ou ativos para outro endereço na rede Ethereum. Um exemplo simples de transação Ethereum é uma pessoa, Alice, que envia 1 ETH, o token nativo da Ethereum, para seu amigo Bob.

Como as transações são fundamentais para a construção de aplicações blockchain, vamos explorar as informações incluídas em uma transação Ethereum.

### **Quais informações estão incluídas em uma transação Ethereum?**

No nível da linguagem de programação, o remetente Alice carrega a variável global **msg.sender**, enquanto o destinatário, Bob, carrega a variável **address\(this\)**, e a quantidade de tokens sendo enviada entre as duas partes, 1 ETH, é o **msg.value**.

Além dos dados acima, uma transação Ethereum típica sempre contém os seguintes detalhes:

- **Signature** - um selo de aprovação do remetente para inicializar a transação
- **gasLimit** - a quantidade máxima de gas que pode ser usada na transação
- **Nonce** - um identificador único da transação específica
- **Data** - uma seção opcional para a descrição ou mensagem da transação

## **Quais são os diferentes tipos de transações Ethereum?**

Existem vários tipos de transações Ethereum, incluindo transações para implantar smart contracts, transações entre entidades \(ou seja, humanos\), transações entre smart contracts \(transações internas\), ou uma combinação de transações humano-smart-contract, como o uso de um protocolo DeFi.

Nesta seção, vamos focar nos diferentes tipos de estados de transação Entidade-para-Entidade conforme se relacionam à propagação de transações pela rede Ethereum.

### **1. Transações agrupadas \(pendentes\)**

Transações agrupadas são [transações pendentes no mempool](http://www.alchemy.com/overviews/what-is-a-mempool) que ainda não foram mineradas \(ou seja, transações pendentes dentro do armazenamento local de um único nó\).

Quando dois nós estabelecem uma conexão compartilhada, o conteúdo do pool local de transações de cada nó é compartilhado para que cada nó tenha uma lista completa de transações pendentes.

À medida que os nós estabelecem mais conexões na rede P2P da Ethereum, transações enviadas a um único nó ou a múltiplos nós simultaneamente se propagam mais amplamente pela rede.

### **2. Transações mineradas**

Transações mineradas são transações concluídas que foram selecionadas do pool global de transações pendentes \(ou seja, o mempool\), e incluídas em um novo bloco adicionado à blockchain.

Devido às [reorganizações de cadeia \(reorgs\)](https://www.alchemy.com/overviews/what-is-a-reorg), uma transação minerada pode ter um entre vários níveis de confirmação. Antes do The Merge, blocos de transações tinham um nível de confirmação _latest_ que era incrementado a cada bloco \(~12 segundos\), enquanto após o The Merge as transações também podem ser rotuladas como _safe_ \(também chamadas de _justified_\) ou finalized, que são incrementadas a cada 32 blocos \(~6 minutos\).

Blocos _safe_ são blocos com baixa probabilidade de serem reorganizados, e blocos _finalized_ têm probabilidade extremamente baixa de sofrer reorg.

### **3. Transações descartadas e substituídas**

Uma [transação descartada](https://www.alchemy.com/docs/ethereum-transactions-pending-mined-dropped-replaced) é uma transação pendente que foi removida do mempool global. Transações descartadas podem ocorrer se as taxas de gas do remetente forem muito baixas, ou se houver um erro com o nonce da transação.

Uma transação substituída é uma transação que possui o mesmo nonce de uma transação já existente no mempool. Transações substituídas são tipicamente usadas quando usuários tentam aumentar o preço do gas de sua transação original para que ela seja incluída no próximo bloco. Quando uma transação substituída é confirmada, a transação original é descartada.

### **4. Transações reforçadas**

Uma transação reforçada é um novo tipo de transação Ethereum que aumenta a probabilidade de as transações serem validadas, especialmente durante períodos de alta atividade na rede e volatilidade no preço do gas, repropagando transações para os nós Ethereum.

Transações reforçadas são uma solução para transações falhas e descartadas.

### **Tipos adicionais de transação**

Além das transações agrupadas, mineradas, descartadas e substituídas, e reforçadas, existem outros estados de transação, incluindo:

- **Canceled Transactions** - um tipo de transação de substituição que cancela a transação original
- **Confirmed Transactions** - uma transação que foi minerada e incluída na blockchain
- **EOA Transactions** - uma transação entre uma ou mais Externally Owned Accounts \(EOAs\), tipicamente uma pessoa
- **Failed Transactions** - uma transação que foi tentada e não teve sucesso
- Internal Transactions - uma transação entre dois smart contracts
- **Private Transactions** - uma transação enviada diretamente a um miner, contornando o mempool público
- **Stuck Transactions** - uma transação que não pode ser minerada
- **Type 0 Transactions** - uma transação anterior à adoção do EIP-1559
- **Type 2 Transactions** - uma transação que segue a atualização EIP-1559

## **Como funciona a rede p2p da Ethereum?**

Em uma rede peer-to-peer, os usuários são tanto consumidores quanto fornecedores de recursos da rede. Mas nem todos os frameworks P2P são iguais, e por isso os mecanismos de como a informação é compartilhada, validada e transmitida são essenciais para entender a rede Ethereum como um todo.

Em redes P2P, a informação é compartilhada e armazenada por meio de nós. No momento em que este texto foi escrito, a Ethereum tem mais de 300.000 full nodes. A seguir, um resumo de como novos full nodes são adicionados, os protocolos relevantes, e as funções específicas que cada nó executa para processar, verificar e validar novos blocos na chain da Ethereum.

### **1. Os nós se descobrem mutuamente**

A Ethereum usa **bootnodes** para detectar e descobrir novos nós na rede. Quando um novo nó deseja se conectar, ele envia ao bootnode uma solicitação de inicialização chamada PING. O bootnode então responde com uma mensagem de vínculo PONG.

Uma vez estabelecido isso, o nó consulta o bootnode para que este forneça uma lista de outros nós próximos. Como a Ethereum organiza os nós como folhas em uma árvore binária, a noção de distância se refere à proximidade numérica entre os IDs de 160 bits de quaisquer dois nós.

A função do bootnode termina quando o nó consegue se conectar aos nós próximos disponíveis. A tarefa de sincronização é então facilitada pelo protocolo RPLx.

### **2. Os nós estabelecem uma conexão segura**

O protocolo RPLx facilita a sincronização entre dois nós, permitindo o envio e recebimento de pacotes \(ou seja, pequenos blocos de dados\). Os pacotes são dinamicamente encapsulados, usando codificação RLP, além de criptografados e autenticados.

Usando o RPLx, os nós estabelecem uma conexão segura e se verificam mutuamente. A verificação exige que ambos os nós enviem uma mensagem de autenticação seguida de uma mensagem que inclui a porta, os IDs do cliente e do nó, e o protocolo e sub-protocolo.

Uma vez que os nós se autenticaram mutuamente, eles podem começar a se comunicar usando o Wire protocol. Esses dois nós agora são considerados peers, e é por meio dos peers que um nó se comunica com toda a rede Ethereum.

### **3. Os nós sincronizam estado, blocos e trocam transações agrupadas**

Nesta etapa, um novo full node na rede P2P da Ethereum se harmoniza com o estado de todo o protocolo e começa a trocar dados. Há uma distinção importante a ser feita aqui entre nós e clientes. Embora os termos sejam frequentemente usados de forma intercambiável, um cliente é o software que permite aos nós ler blocos e smart contracts na blockchain da Ethereum.

Todos os full nodes na Ethereum têm três tarefas básicas com [o Wire protocol](https://github.com/ethereum/devp2p/blob/master/caps/eth.md):

1. Sincronização
1. Propagação de blocos
1. Propagação de transações pendentes

#### **3A. Sincronização de chain e de estado**

A sincronização é dividida em sincronização com a chain e sincronização com o estado.

Durante a sincronização com a chain, os peers apresentam a taxa de dificuldade e o hash dos blocos que possuem. O cliente com a maior taxa de dificuldade baixa os headers dos blocos. Já durante a sincronização de estado, os peers autenticam a originalidade dos dados e baixam o estado do bloco.

#### **3B. Propagação de blocos**

Durante a propagação de blocos, os blocos na rede P2P da Ethereum são processados e transmitidos. Quando há um novo bloco, os clientes o verificam enviando-o aos seus peers e aprovando as transações contidas no bloco.

Depois que o cliente validou e processou o bloco, o nó deve transmiti-lo a todos os full nodes ou peers na rede, dando a eles a oportunidade de contestar sua validade.

#### **3C. Troca de transações pendentes \(agrupadas\)**

Os miners têm a responsabilidade de adicionar novos blocos à chain; portanto, todos os nós que participaram da verificação devem fornecer aos miners as transações pendentes processadas.

Para iniciar essa troca, cada peer deve enviar aos demais os hashes das transações pendentes que possui. Como as [transações privadas](http://www.alchemy.com/overviews/ethereum-private-transactions) são enviadas diretamente aos miners ou produtores de blocos, os nós não conseguirão descobrir e propagar esses tipos de transação.

Quando todas essas tarefas são concluídas, os miners podem então adicionar um novo bloco à chain da Ethereum, e o Wire protocol recomeça.

## **Como as transações Ethereum são propagadas?**

As transações Ethereum são propagadas por toda a rede quando um nó sinaliza que há uma nova transação em sua coleção de transações agrupadas, e os peers consultam para buscar essas transações.

É assim que acontece:

1. O nó propagador informa à rede sobre as novas transações publicando a mensagem `NewPooledTransactionHashes`.
1. Alternativamente, os peers podem consultar essas transações publicando a mensagem `GetPooledTransactions`

## **Como as transações são transmitidas após o merge?**

Desde o The Merge, os nós Ethereum têm dois clientes de nó separados - um [cliente de execution layer e um cliente de consensus layer](https://www.alchemy.com/overviews/execution-layer-and-consensus-layer-node-clients) - com responsabilidades separadas para lidar com transações. Em resumo, o cliente de execution layer é responsável por executar transações e validar o estado, e o cliente de consensus layer é responsável por receber e propagar novos blocos.

**Aqui está mais um pouco de detalhe sobre como as transações operam em um ambiente pós-merge:**

O cliente de consensus layer de cada nó é responsável por receber, pré-validar, passar o bloco ao cliente de execution layer, adicionar o bloco à head da blockchain assim que o cliente EL concluir suas tarefas, e transmiti-lo pela rede.

Quando o cliente de execução recebe um bloco pré-validado do cliente de consensus layer do nó, ele é responsável por executar as transações, validar o estado do bloco, e então enviar o bloco validado de volta ao cliente de consensus layer.

Além dessas mudanças, todos os demais modos de operação da rede P2P da Ethereum permanecem os mesmos desde [The Merge](https://www.alchemy.com/the-merge).

### **Como as transações são transmitidas quando o cliente CL também é o produtor de blocos?**

Na Ethereum pós-merge haverá [produtores de blocos e proponentes de blocos](https://www.alchemy.com/overviews/proposer-builder-separation), e a forma como transações e blocos são propagados após o The Merge funciona de maneira um pouco diferente quando o cliente de consensus layer também é o produtor de blocos. Para informações sobre esse caso de uso mais específico, leia [a documentação da camada de rede da Ethereum Foundation](https://ethereum.org/en/developers/docs/networking-layer/#connecting-clients:~:text=When%20consensus%20client%20is%20block%20producer%3A).

## **Resumo da propagação de transações Ethereum**

A rede peer-to-peer global da Ethereum exige que os nós encontrem, verifiquem e se comuniquem com segurança entre si para transmitir transações pendentes \(agrupadas\) e blocos recém-minerados. Usando uma série de protocolos de rede de baixo nível, como RLPx e o Wire Protocol, esse processo de peering e propagação de informação pelo computador global da Ethereum torna possíveis as transações em blockchain.
