Nomad is an interoperability protocol for sending arbitrary messages between blockchains.
Analogous to how the application layer in the Internet protocol treats the transport layer as a black-box, Nomad developers can deploy cross-chain applications (xApps) without needing to know how the cross-chain transport layer works.
As described above, Nomad separates the transport and application layers so that application developers do not have to reason about the guts of cross-chain communications.
To that extent, when we describe the Nomad protocol, we only mean the message-passing layer, which is application agnostic. To learn more about the application layer and building cross-chain apps, check out the Developers section.
The Nomad protocol consists of two core components, on-chain smart contracts and off-chain agents:
Developers need not interface with off-chain agents directly, as the core contracts enforce logic around optimistic verification and ensure messages are securely transmitted.
Nomad uses an optimistic verification mechanism, which is patterned after optimistic systems. It sees an attestation of some data, and accepts it as valid after a timer elapses. While the timer is running, honest participants (ie. Watchers) have a chance to respond to the attestation and submit fraud proofs.