﻿---
title: "ProteÃ§Ã£o contra replay de mensagens cross-chain"
description: "A proteÃ§Ã£o contra replay vincula uma mensagem de origem autenticada a uma versÃ£o do protocolo e a um domÃ­nio de destino, permitindo novas tentativas sem mais de um efeito econÃ´mico bem-sucedido."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ProteÃ§Ã£o contra replay de mensagens cross-chain

> Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.

<a id="answer"></a>

## Resposta direta

A proteÃ§Ã£o contra replay de mensagens cross-chain garante que uma mensagem de origem autenticada produza no maximo um efeito econÃ´mico bem-sucedido no domÃ­nio de destino pretendido. Um relayer pode entregar a mesma prova repetidamente, e uma tentativa que falhou pode ser repetida, mas uma mensagem concluida nÃ£o pode emitir, desbloquear nem chamar o destinatario novamente.

Autenticidade, finalidade e proteÃ§Ã£o contra replay sÃ£o verificacoes separadas. Uma assinatura, atestaÃ§Ã£o de validadores ou prova de armazenamento vÃ¡lida pode autenticar dados sem provar que o evento de origem e final, que destino e destinatario foram vinculados ou que o destino ainda nÃ£o o processou. Um relayer autorizado e apenas a rota de entrega; sua identidade nÃ£o substitui a autenticaÃ§Ã£o da mensagem.

Nao existe `messageId` cross-chain universal. A especificaÃ§Ã£o do protocolo define serializaÃ§Ã£o e identidade. Um envelope robusto costuma vincular protocolo e versÃ£o, domÃ­nio e messenger ou emissor de origem, remetente, nonce ou identidade da transaÃ§Ã£o/log, domÃ­nio e destinatario de destino, valor, payload e eventual expiraÃ§Ã£o. Wormhole, CCTP, Optimism e ERC-5164 usam campos e maquinas de estado diferentes; seus identificadores nÃ£o sÃ£o intercambiaveis.

<a id="mechanism"></a>

## Como funciona

Uma aÃ§Ã£o na origem emite ou armazena a mensagem. Depois da polÃ­tica exigida de confirmaÃ§Ã£o ou finalidade, validadores, guardians ou um sistema de provas a autenticam. No destino, o verificador confere raiz ou conjunto de assinaturas, versÃ£o, remoto confiavel, destino, destinatario, payload e limites temporais. O destinatario deriva a identidade definida pelo protocolo e consulta o estado processed persistente antes de gerar um efeito externo.

A entrega costuma ser at-least-once, enquanto o efeito de negocio pretendido ocorre efetivamente uma vez. Uma mÃ¡quina de estados Ãºtil distingue nunca tentada, em processamento, falha ou repetivel, e bem-sucedida ou consumida. Uma chamada de destino que falha nÃ£o e automaticamente um ataque de replay. O ERC-5164, por exemplo, exige no maximo uma execucao bem-sucedida, permitindo nova tentativa apÃ³s falha. Regras especificas de retry, gas e valor continuam valendo.

O flag de replay ou guard de processamento deve ser definido antes de uma chamada externa nÃ£o confiavel, com controle de reentrancia. Se toda a transaÃ§Ã£o reverter, esse estado normalmente tambÃ©m reverte e preserva uma rota definida de retry; se o protocolo capturar intencionalmente uma falha downstream, deve registrar um estado de falha distinto sem reter valor nem efeitos parciais por engano. O destinatario tambÃ©m deve ser idempotente quando sistemas downstream puderem ser chamados por outra rota.

O escopo do nonce importa. Um nonce sequencial impÃµe ordem, mas uma mensagem ausente pode bloquear as seguintes. Um nonce nÃ£o ordenado ou bitmap permite entrega independente, mas exige cÃ¡lculo exato de word e bit. Em lotes, deve-se definir se tudo e atÃ´mico ou se cada folha tem prova e estado processed independentes. Consumir apenas a raiz depois de execucao parcial pode duplicar folhas bem-sucedidas ou impedir as que falharam.

A polÃ­tica de reorganizaÃ§Ã£o da origem integra a seguranca contra replay. Uma observaÃ§Ã£o assinada antes de finalidade suficiente pode continuar criptograficamente vÃ¡lida mesmo se o evento deixar de ser canonico. Upgrades sÃ£o outro limite: layout de storage do proxy, mappings processed, domÃ­nios de versÃ£o, entry points antigos, rotaÃ§Ã£o de peers e fork ou reutilizacao de chain ID devem preservar ou invalidar deliberadamente identidades antigas sem reabrir mensagens consumidas.

Use este fluxo:

1. Fixe protocolo, versÃ£o implantada, domÃ­nios, messenger ou emissor confiavel, remetente, destinatario, valor, payload, nonce ou identidade do evento e semÃ¢ntica de expiraÃ§Ã£o.
2. Reproduza a codificaÃ§Ã£o canonica e o vetor de teste de `messageId`; rejeite concatenacao ambigua, campos omitidos e suposicoes emprestadas de outra bridge.
3. Verifique inclusÃ£o e polÃ­tica de finalidade ou confirmaÃ§Ã£o e, depois, raiz, quorum, conjunto de validadores ou guardians e versÃ£o corretos.
4. Verifique separadamente destino, destinatario, remetente cross-domain, valor, payload e expiraÃ§Ã£o; trate o relayer como transporte, nÃ£o como autoridade.
5. Leia o estado persistente e entre em processing ou consumed antes de chamada externa nÃ£o confiavel, testando reentrancia e comportamento de revert.
6. Defina transicoes de sucesso, falha e retry, nonce ordenado ou bitmap, atomicidade do lote e contabilidade de valor; prove que nova entrega nÃ£o repete uma folha bem-sucedida.
7. Teste upgrades, migraÃ§Ã£o de storage, entry points legacy desativados, rotaÃ§Ã£o de peers, forks e recuperaÃ§Ã£o; reconcilie receipts, eventos, estado processed e saldos no destino.

<a id="example"></a>

## Exemplos

- **Vinculo ao domÃ­nio de destino.** Duas instrucoes trazem nonce `42` e valor `1,000`, mas uma aponta para a chain `10` e outra para a chain `8453`. Um identificador que omite o destino trata `2 messages` como candidatas a colisÃ£o; a codificaÃ§Ã£o canonica que o vincula gera `2 distinct IDs`. Hash e representaÃ§Ã£o do domÃ­nio sÃ£o definidos pelo protocolo.
- **Bitmap nÃ£o ordenado.** Para nonce `513`, `word = floor(513 / 256) = 2`, `bit = 513 mod 256 = 1` e `mask = 1 << 1 = 2`. O primeiro sucesso altera a word `2` de `0` para `2`. Uma duplicata encontra `2 & 2 = 2` e e rejeitada; nonce `512` usa o bit `0` de forma independente.
- **Retry nÃ£o cria outro efeito.** A mesma mensagem e entregue `3` vezes. Chamadas com `110,000` e `125,000` gas falham e revertem; a terceira usa `140,000` gas e tem um sucesso. O gas total e `110,000 + 125,000 + 140,000 = 375,000`; a `20 gwei`, equivale a `0.0075 ETH`. Sao `3` entregas, mas `1` efeito de negocio bem-sucedido.
- **Contabilidade de lote parcial.** Quatro folhas executaveis separadamente carregam `25 + 40 + 15 + 20 = 100` unidades. As folhas `0`, `1` e `3` executam `25 + 40 + 20 = 85`; a folha `2` falha e deixa `15` pendentes. Consumir apenas a raiz prende as `15`; repetir tudo sem estado por folha pode repetir as `85`. Use rollback atÃ´mico ou estado processed por folha.

<a id="risks"></a>

## Riscos

- O identificador omite a chain ou domÃ­nio de destino.
- O identificador omite o messenger ou emissor de origem.
- A versÃ£o do protocolo ou da mensagem estÃ¡ ausente do domÃ­nio.
- Um namespace de nonce colide entre remetentes ou deployments.
- Codificacao packed ambigua cria colisoes entre campos diferentes.
- Um fork ou chain ID reutilizado torna um domÃ­nio antigo valido.
- Um evento e aceito antes de finalidade suficiente e sai por reorg.
- A raiz ou o conjunto de validadores ou guardians errado e aceito.
- Um domÃ­nio de assinatura antigo continua valido apÃ³s upgrade.
- Corrupcao do storage do proxy reinicia ou sobrepoe estado processed.
- A migraÃ§Ã£o omite consumidos ou mantem entry point legacy ativo.
- O estado e marcado so depois da chamada externa, permitindo reentrancia.
- Uma chamada falha e marcada como sucesso e nunca pode ter retry.
- Uma chamada bem-sucedida nÃ£o persiste e repete o efeito econÃ´mico.
- Um nonce ordenado ausente bloqueia todas as mensagens posteriores.
- A aritmÃ©tica de word, bit ou invalidacao do bitmap estÃ¡ errada.
- O estado da raiz do lote conflita com execucao parcial por folha.
- Um retry repete folhas que jÃ¡ tiveram sucesso.
- Unidades de deadline, expiry ou relogio de destino sÃ£o mal interpretadas.
- A allowlist de relayers e confundida com autorizaÃ§Ã£o da mensagem.

<a id="misconceptions"></a>

## Erros comuns

- **Um nonce sozinho e globalmente unico.** Remetente, protocolo, deployment e domÃ­nios definem seu namespace.
- **Somente relayer autorizado impede replay.** Relayers entregam; verificaÃ§Ã£o no destino e estado consumed persistente impoem autorizaÃ§Ã£o e controle.
- **Toda entrega repetida e ataque.** Redes at-least-once podem repetir uma falha; a invariante e no maximo um efeito bem-sucedido.
- **Prova ou assinatura vÃ¡lida demonstra finalidade e intencao.** Pode omitir o target, vincular versÃ£o errada ou atestar estado depois reorganizado.
- **Transacao bem-sucedida prova conclusao exactly-once.** Confira receipt, storage processed, eventos do destinatario e saldos, inclusive cada folha.

<a id="related"></a>

## TÃ³picos relacionados

- [Bridge cross-chain](/pt-br/crypto/cross-chain-bridge/)
- [Bridge canonica](/pt-br/crypto/canonical-bridge/)
- [Falha de relayer cross-chain](/pt-br/crypto/bridge-relayer-liveness-risk/)

<a id="sources"></a>

## Fontes

- [ERC-5164: Cross-Chain Execution](https://eips.ethereum.org/EIPS/eip-5164) - Ethereum Improvement Proposals (acesso: 2026-08-13)
- [EIP-712: Typed structured data hashing and signing](https://eips.ethereum.org/EIPS/eip-712) - Ethereum Improvement Proposals (acesso: 2026-08-13)
- [CCTP Technical Guide](https://developers.circle.com/cctp/references/technical-guide) - Circle Developers (acesso: 2026-08-13)
- [Interop message passing overview](https://docs.optimism.io/app-developers/guides/interoperability/message-passing) - Optimism Documentation (acesso: 2026-08-13)
- [VAAs](https://docs.wormhole.com/protocol/infrastructure/vaas/) - Wormhole Docs (acesso: 2026-08-13)
- [Security Considerations](https://docs.soliditylang.org/en/latest/security-considerations.html) - Solidity Documentation (acesso: 2026-08-13)
- [Proof-of-stake (PoS)](https://ethereum.org/developers/docs/consensus-mechanisms/pos/) - ethereum.org (acesso: 2026-08-13)
- [Upgrading smart contracts](https://docs.openzeppelin.com/contracts/5.x/learn/upgrading-smart-contracts) - OpenZeppelin Docs (acesso: 2026-08-13)

Source: https://wiki.fcontext.com/pt-br/crypto/bridge-message-replay-protection/index.mdx
