# bombora
> Bombora is an Ethereum block builder by Sigma Prime. Submit private Ethereum transactions and bundles through Bombora's Mainnet JSON-RPC endpoint.
import { CopyBox } from "../../components/copy-box"
## Builder Public Keys
Bombora submits Ethereum Mainnet blocks only with the builder public keys below.
If a block is attributed to any other key, it is not from Bombora. Do not rely on `extraData` for attribution, since that field can be set arbitrarily.
### Ethereum Mainnet
## eth\_cancelBundle
Cancel a pending bundle by its replacement UUID. The bundle is removed from the pool and any pending built blocks containing it are invalidated.
### Request
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_cancelBundle",
"params": [
{
"replacementUuid": "uuid-string"
}
]
}
```
### Parameters
| Parameter | Required | Description |
| ----------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `replacementUuid` | Yes | The UUID provided when the bundle was originally submitted via [`eth_sendBundle`](/docs/eth-sendBundle). |
:::warning
Cancellation is best-effort. If the bundle has already been submitted to a relay for the current slot, cancellation may not take effect in time.
:::
## eth\_cancelPrivateTransaction
Cancel a pending private Ethereum transaction by its transaction hash.
### Request
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_cancelPrivateTransaction",
"params": [
{
"txHash": "0x..."
}
]
}
```
### Parameters
| Parameter | Required | Description |
| --------- | -------- | ------------------------------------------ |
| `txHash` | Yes | Hash of the private transaction to cancel. |
:::warning
Cancellation is best-effort. If the transaction has already been included in a pending block, cancellation may not take effect.
:::
## eth\_sendBundle
Submit a bundle of Ethereum transactions for ordered execution within a block. Transactions execute in the order submitted, with explicit controls for revertable and optional transactions.
### Request
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendBundle",
"params": [
{
"txs": ["0x...", "0x..."],
"blockNumber": "0x1234567",
"minTimestamp": 1234567890,
"maxTimestamp": 1234567899,
"revertingTxHashes": ["0x..."],
"droppingTxHashes": ["0x..."],
"replacementUuid": "uuid-string",
"replacementSeqNumber": 1,
"refundPercent": 50,
"refundRecipient": "0x...",
"refundTxHashes": ["0x..."]
}
]
}
```
### Parameters
| Parameter | Required | Description |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `txs` | Yes | Array of signed transactions to execute in order (RLP-encoded hex). |
| `blockNumber` | No | Target block number (hex). Defaults to the next block. |
| `minTimestamp` | No | Earliest unix timestamp at which the bundle is valid. |
| `maxTimestamp` | No | Latest unix timestamp at which the bundle is valid. |
| `revertingTxHashes` | No | Transaction hashes that are allowed to revert without invalidating the bundle. Reverted transactions in this set may still remain part of the bundle. |
| `droppingTxHashes` | No | Transaction hashes that are optional. If one of these transactions fails validation or execution, it is skipped and the bundle can continue. If it executes successfully, it is included. |
| `replacementUuid` | No | A UUID (max 255 chars) used to replace or cancel this bundle. Submitting a new bundle with the same UUID replaces the previous one. |
| `replacementSeqNumber` | No | Monotonically increasing sequence number for bundles sharing the same `replacementUuid`. Later bundles must have a higher sequence or they are dropped. If `0` or omitted, ordering falls back to builder receive time. |
| `refundPercent` | No | Percentage (0–99) of the bundle's MEV profit to refund. `0` or omitted means no refund. |
| `refundRecipient` | No | Address to receive the refund. Defaults to the signer of the first transaction. |
| `refundTxHashes` | No | Transaction hash used to anchor the refund calculation. Defaults to the last transaction. Max 1 entry. |
### Execution Semantics
Transactions within a bundle execute in the order submitted.
By default, any transaction failure invalidates the bundle.
If a transaction hash is listed in `revertingTxHashes`, that transaction may revert without invalidating the bundle.
If a transaction hash is listed in `droppingTxHashes`, that transaction is treated as optional. If it fails validation or execution, it is not included and the bundle may continue with later transactions. Only successfully executed dropping transactions are included.
Strict all-or-nothing behavior therefore applies only to transactions that are not listed in `revertingTxHashes` or `droppingTxHashes`.
### Refunds
When `refundPercent` is greater than zero, Bombora constructs a refund transaction after executing the bundle. The refund amount is:
```
refund = (bundle_profit * refundPercent / 100) - transfer_cost
```
If the refund anchor transaction (from `refundTxHashes`, or the last tx by default) is never evaluated, or the refund transaction fails to construct, the bundle is dropped.
### Replacement and Cancellation
Submitting a new bundle with the same `replacementUuid` replaces the previous bundle. Submitting an empty `txs` array with a `replacementUuid` is treated as a cancellation. You can also use [`eth_cancelBundle`](/docs/eth-cancelBundle) to cancel by UUID.
When multiple replacements may be in flight, set `replacementSeqNumber` to a monotonically increasing value so the builder can order them deterministically instead of relying on receive time. A bundle with a sequence number lower than or equal to one already seen for the same `replacementUuid` is dropped.
### Response
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"bundleHash": "0x..."
}
}
```
A successful response means the bundle was accepted for inclusion. It does not guarantee the bundle will be included in a block.
## eth\_sendPrivateTransaction
Submit a single private Ethereum transaction with an optional block number ceiling. The transaction is not broadcast to the public mempool.
Use this method when you want Bombora to consider a signed transaction for private transaction inclusion before a specific Ethereum Mainnet block.
### Request
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendPrivateTransaction",
"params": [
{
"tx": "0x...signed-tx-bytes...",
"maxBlockNumber": "0x1234567"
}
]
}
```
### Parameters
| Parameter | Required | Description |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------- |
| `tx` | Yes | Signed raw transaction (RLP-encoded hex). |
| `maxBlockNumber` | No | Last block number in which the transaction should be included (hex). Must be in the future if provided. |
### Response
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x...txhash..."
}
```
The transaction can be cancelled with [`eth_cancelPrivateTransaction`](/docs/eth-cancelPrivateTransaction).
## eth\_sendRawTransaction
Submit a single signed Ethereum transaction privately. The transaction is not broadcast to the public mempool.
Bombora documents this as the raw private-transaction entrypoint. At the edge, `eth_sendPrivateRawTransaction` is also accepted and forwarded to the same downstream handler.
### Request
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendRawTransaction",
"params": ["0x...signed-tx-bytes..."]
}
```
### Parameters
| Parameter | Required | Description |
| ----------- | -------- | ----------------------------------------- |
| `params[0]` | Yes | Signed raw transaction (RLP-encoded hex). |
### Response
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x...txhash..."
}
```
import { CopyBox } from "../../components/copy-box"
## Getting Started
Bombora is an Ethereum block builder by [Sigma Prime](https://sigmaprime.io). Submit bundles and private Ethereum transactions via the JSON-RPC endpoint.
Use Bombora when you need direct builder submission, private transaction inclusion, or ordered bundle execution on Ethereum Mainnet.
### Coinbase
Ethereum Mainnet blocks built by Bombora use the following coinbase address:
### Endpoints
| Network | Region | Endpoint |
| ---------------- | ------ | ------------------------------ |
| Ethereum Mainnet | Global | `https://rpc.bombora.build` |
| Ethereum Mainnet | EU | `https://eu-rpc.bombora.build` |
More regions coming soon. Global endpoints route to the nearest available region.
### Authentication
No authentication is required. The `X-Flashbots-Signature` header is accepted but does not affect priority.
### Privacy
Bundles and private transactions submitted to Bombora are not broadcast to the public mempool.
### Supported Methods
| Method | Description |
| -------------------------------------------------------------------- | ----------------------------------------------------------- |
| [`eth_sendBundle`](/docs/eth-sendBundle) | Submit an ordered bundle with explicit revert/drop controls |
| [`eth_cancelBundle`](/docs/eth-cancelBundle) | Cancel a pending bundle via its replacement UUID |
| [`eth_sendRawTransaction`](/docs/eth-sendRawTransaction) | Submit a single private transaction (raw) |
| [`eth_sendPrivateTransaction`](/docs/eth-sendPrivateTransaction) | Submit a private transaction with a block number ceiling |
| [`eth_cancelPrivateTransaction`](/docs/eth-cancelPrivateTransaction) | Cancel a pending private transaction |
### Quick Example
```bash
curl -X POST https://rpc.bombora.build \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendRawTransaction",
"params": ["0x...signed-tx-bytes..."]
}'
```