Documentation Index
Fetch the complete documentation index at: https://kleros-mintlify-changelog-2026-05-12-1778458371.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Build with Vea
This page covers how to integrate Vea into a cross-chain application. For protocol-level details, see the Vea Bridge overview.Integration Pattern
To integrate Vea, you deploy two gateway contracts:- Sender Gateway on the sending chain, which interfaces with VeaInbox
- Receiver Gateway on the receiving chain, which interfaces with VeaOutbox
1. Sender Gateway
The Sender Gateway callssendMessage() on VeaInbox to initiate cross-chain communication.
- The target contract address on the receiving chain (
_to) - The function to call on the target (
_fnSelector) - The encoded parameters (
_data)
Example: Sender Gateway
2. Receiver Gateway
The Receiver Gateway receives the relayed message on the destination chain. Vea passes themsg.sender from the sending chain as the first argument of any cross-chain call.
address msgSender as the first parameter:
3. Relaying Messages
After the challenge period passes, a relayer callsverifyAndRelay() on VeaOutbox to deliver the message to the Receiver Gateway.
The Vea SDK provides utility functions to calculate merkle inclusion proofs and fetch message data for relaying:
The SDK is under active development. Check the Vea SDK package for the latest API.
Lightbulb Demo
The Vea Lightbulb Demo is a minimal cross-chain application where a switch on one chain controls a lightbulb on another chain via Vea. The tutorial repository walks through deploying the contracts for each chain pair. Bridge status can be tracked on VeaScan.Deployment Addresses
See Vea Deployment Addresses for contract addresses on each supported route.Further Reading
Full Build Guide
Complete integration guide on docs.vea.ninja
Lightbulb Demo
Interactive cross-chain demo application
Run a Validator
Run a Vea bridge validator node
Vea Bridge Architecture
Protocol architecture and bridge types