Overview
Broadcasters (also called Integrators) — partners that create user orders on-chain on behalf of their users, wallets, or marketplaces. They broadcast user intents into the Bron network and receive a front-end fee per executed order. Each broadcaster must be registered and authorized in the Broadcaster Register smart contract before creating any orders.Registration
To become a broadcaster:- Register in the Broadcaster Register smart contract.
- Use the registered (whitelisted) address as
msg.senderwhen calling contract functions:createOrdersetUserTxOnBaseNetwork
createOrder directly from your backend or programmatic service.
Order creation
Function
createOrder(CreateOrderParams _create, uint256 _frontEndFee)
Flow
When a broadcaster callscreateOrder, it:
- validates parameters
- initializes a new order with
status = USER_INITIATED - stores
_frontEndFeefor settlement - emits
OrderStatusChanged(orderId, USER_INITIATED) - triggers the auction phase and waits for solvers’ quotes
- once the auction finishes, broadcaster must send user’s funds from
baseParams.networkId - after sending funds, broadcaster calls
setUserTxOnBaseNetwork(orderId, txHash) - waits until status
COMPLETED (7)
Parameters
| Field | Description |
|---|---|
orderId | Unique string ID (UUID-style) |
baseNetworkId | Network where user sends tokens |
baseTokenAddress | Token contract on base chain, or 0x0 for native assets |
baseAmount | Amount user sends (in token decimals) |
quoteNetworkId | Network where user receives tokens |
quoteTokenAddress | Token contract on quote chain, or 0x0 for native assets |
quoteAmount | Amount user receives (opposite side to baseAmount) |
maxPrice_e18 | Maximum price in e18 units (slippage limit) |
orderValueInUSD_e18 | Total value of order in USD, scaled by 1e18 |
auctionDuration | Solver auction duration in seconds |
userAddress | Destination address on quote network |
_frontEndFee | Broadcaster fee (basis points, 10000 = 100%) |
Example
Commission flow
- Broadcaster specifies
_frontEndFeeduring order creation, in bps. - Once order executes and both sides settle, on-chain logic distributes the broadcaster.
- Broadcaster fees can be collected at any time via
SolverRegister.collectBroadcasterFees().
Typical integration flow
1
1. Register broadcaster
Call
BroadcasterRegister.register(address) and fund the account.2
2. Create order
Call
orderEngine.createOrder() with all required params and your frontend fee.3
3. Monitor status
Subscribe to:
4
5. Show the price to user
Once you receive the event
OrderStatusChanged(orderId, 2),
show the current best quote to the user.5
5. Send user transaction
When the auction ends, send user’s base token from
baseNetworkId and baseTokenAddress to the solver’s settlement address quoteParams.solverAddress.6
6. Link txHash
Call
setUserTxOnBaseNetwork(orderId, txHash) to confirm user payment.7
7. Fee settlement
After completion, your frontend fee is distributed automatically on-chain.
Validation rules
_frontEndFee < 10000orderIdanduserAddressmust be non-empty- Exactly one of
baseAmountorquoteAmountmust be non-zero orderValueInUSD_e18 > 0auctionDuration > 0orderIdmust not exist before creation
Errors
| Error | Meaning |
|---|---|
BC_INVALID_PARAMS() | Invalid parameters |
BC_INVALID_CALLER() | Unauthorized broadcaster |
BC_INVALID_ORDER_STATUS() | Invalid state transition |
BC_TX_ALREADY_USED() | Transaction hash already linked |
Example broadcaster implementation
SeeBroadcasterService — reference implementation using @bronlabs/intents-sdk, ethers, and Hono HTTP server:
https://github.com/bronlabs-intents/intents-broadcaster-example
This service:
- Listens for HTTP requests (POST
/orders, GET/orders/:id, POST/orders/:id/accept) - Creates on-chain orders
- Tracks order statuses
- Sends user transactions after auctions
- Print order statuses
