Layerzero is a user application (UA) configurable on-chain endpoint that runs a uln. Layerzero relies on two parties to transfer messages between on-chain endpoints: the oracle and the relayer. When a UA sends a message from chain A to chain B, the message is routed through the endpoint on chain A. The endpoint then notifies the UA specified Oracle and Relayer of the message and it's destination chain. The Oracle forwards the block header to the endpoint on chain B and the Relayer then submits the transaction proof. The proof is validated on the destination chain and the message is forwarded to the destination address.