@eth-optimism/viem • Docs
@eth-optimism/viem / actions/interop / relayCrossDomainMessage
relayCrossDomainMessage<
TChain
,TAccount
,TChainOverride
>(client
,parameters
):Promise
<RelayCrossDomainMessageReturnType
>
Relays a message emitted by the CrossDomainMessenger
• TChain extends undefined
| Chain
• TAccount extends undefined
| Account
• TChainOverride extends undefined
| Chain
= undefined
• client: Client
<Transport
, TChain
, TAccount
>
L2 Client
• parameters: RelayCrossDomainMessageParameters
<TChain
, TAccount
, TChainOverride
, DeriveChain
<TChain
, TChainOverride
>>
RelayCrossDomainMessageParameters
Promise
<RelayCrossDomainMessageReturnType
>
transaction hash - RelayCrossDomainMessageReturnType
import { createPublicClient } from 'viem'
import { http } from 'viem/transports'
import { op, unichain } from '@eth-optimism/viem/chains'
const publicClientOp = createPublicClient({ chain: op, transport: http() })
const publicClientUnichain = createPublicClient({ chain: unichain, transport: http() })
const receipt = await publicClientOp.getTransactionReceipt({ hash: '0x...' })
const messages = await getCrossDomainMessages(publicClientOp, { logs: receipt.logs })
const message = messages.filter((message) => message.destination === unichain.id)[0]
const params = await buildExecutingMessage(publicClientOp, { log: message.log })
const hash = await relayCrossDomainMessage(publicClientUnichain, params)
packages/viem/src/actions/interop/relayCrossDomainMessage.ts:87