Golver is a cross-chain bridge relayer built on ERC-7683. When a user opens an intent to move assets across chains, Golver detects it, auctions it to competing solvers, confirms the fill on the destination chain, and verifies the solver's reimbursement on the source chain.
To prevent solver centralization — where only a few well-capitalised solvers can realistically compete — Golver runs a short open auction before each fill, letting any solver bid for the right to serve the user.
Source Chain
│ user opens order, locking funds in escrow
▼
┌──────────────────────────────────────────────┐
│ Chain Listener │
│ Watches the source chain for new │
│ cross-chain intents; deduplicates events │
│ so each order enters the pipeline once │
└─────────────────────┬────────────────────────┘
│ raw intent event
▼
┌──────────────────────────────────────────────┐
│ Order Decoder │
│ Parses each intent: which assets the user │
│ wants to move, to which destination, by │
│ what deadline, and at what minimum amount │
└─────────────────────┬────────────────────────┘
│ decoded order (assets, deadline, fill instructions)
▼
┌──────────────────────────────────────────────┐◄── solvers connect here to bid
│ Auction Service │
│ Broadcasts the order to all competing │
│ solvers and elects the lowest-fee winner │
│ before the fill deadline expires │
└─────────────────────┬────────────────────────┘
│ winning solver + agreed fee
▼
┌──────────────────────────────────────────────┐◄── Destination Chain
│ Fill Executor │ solver pays user here
│ Waits for the winning solver to pay the │
│ user on the destination chain; declares a │
│ fill failure if the deadline passes first │
└─────────────────────┬────────────────────────┘
│ fill confirmed (destination tx)
▼
┌──────────────────────────────────────────────┐◄── Source Chain
│ Settlement Monitor │ escrowed funds released to solver
│ Watches the source chain for the locked │
│ funds to be released to the solver, │
│ confirming the full bridge cycle is done │
└─────────────────────┬────────────────────────┘
│ order fully settled
▼
downstream
Each binary takes a --config flag pointing to a TOML file. Copy an example from configs/ and fill in the required fields:
./chain-listener --config configs/chain-listener.toml
./order-decoder --config configs/order-decoder.toml
./auction-service --config configs/auction-service.toml
./fill-executor --config configs/fill-executor.toml
./settlement-monitor --config configs/settlement-monitor.tomlRequired fields per service: RPC WebSocket URL, chain ID, settler contract addresses, Kafka brokers, and PostgreSQL connection string. Topic names, consumer groups, and timeouts default to sensible values if omitted.