Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Takers & State Stream

Searchers, solvers, and aggregators use Bombora's normal transaction and bundle APIs for PropAMM routes. No PropAMM-specific taker submission method is required.

Submit candidate routes

Construct and submit routes the same way you do for other onchain liquidity:

  1. Build the standard route through passive AMMs.
  2. Build one or more candidates that include PropAMM hops.
  3. Submit each candidate through eth_sendBundle, or submit a single private taker transaction.
  4. Set normal slippage and execution guards in the taker transaction.

State stream

The state stream publishes next-block PropAMM state for makers that opt in. It lets takers simulate routes locally before submission.

Endpoint

NetworkRegionWebSocket endpoint
Ethereum MainnetGlobalwss://rpc.bombora.build/ws/pamm_quote_stream
Ethereum MainnetEUwss://eu-rpc.bombora.build/ws/pamm_quote_stream
Ethereum MainnetUSComing soon

No API key is required. If the stream is not enabled for an endpoint, the WebSocket upgrade returns HTTP 503.

Snapshot format

Each text message is a complete JSON snapshot:

{
  "slot": 12345678,
  "blockNumber": 25000001,
  "timestamp": 1785000000000000000,
  "0x1111111111111111111111111111111111111111": {
    "stateOverride": {
      "0xda7afeed01fe625cf15d187a19f94b45f00b8c5f": {
        "stateDiff": {
          "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
        }
      }
    }
  }
}
FieldDescription
slotConsensus slot of the target block. Omitted when not yet known, so treat it as optional.
blockNumberThe block the overrides target, the next block.
timestampSnapshot time, in Unix nanoseconds.
0x1111…One key per maker, carrying its stable identity. Makers rotate the pool lanes they price, so this key is not a pool address.
  ↳ stateOverrideKeyed by the Priority Update Registry, always 0xda7afeed01fe625cf15d187a19f94b45f00b8c5f.
    ↳ stateDiffStorage slot to 32-byte value: the registry writes that pre-apply that maker's pending update.

Simulating a route

A snapshot is already in Ethereum's state-override shape, so it can be passed straight to any simulation that accepts state overrides. Simulating with it prices a route against the state the block will have, rather than against what is currently onchain.

Emission

Snapshots go out as makers update their quotes. Consecutive identical snapshots are suppressed, so no message means the state is unchanged.