> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cowboy.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# cowboy bridge

> CIP-25 bridge operations, the permissionless fraud-proof door

## Synopsis

```bash theme={null}
cowboy bridge fraud-proof submit --src-chain-id <n> --dst-chain-id <n> --height <n>
                                 --registry <address> --bundle <path>
                                 [--cycles-limit <n>] [--cells-limit <n>]
                                 [--rpc-url <url>] [--private-key <path>]
```

## Subcommands

### `cowboy bridge fraud-proof submit`

Submit a fraud-proof (or verifier-maintenance) bundle for a published chain-root commitment and wait for committed execution. The door is permissionless: any sender may submit and pays ordinary fees.

**Behavior:**

1. Parse `--registry` as a 20-byte address and read `--bundle` as raw bytes.
2. Validate the bundle the way the wire codec will: it must be a JSON object, and it must fit the consensus bundle bound less 8 KiB of transaction framing (header, chain id, nonce, limits, fees, signature). The contents are otherwise opaque; only the node's verifier adapter interprets them.
3. Print `Submitting fraud proof for src_chain_id=<n> height=<n> (<bytes> bytes)`.
4. Load the private key via [auto-discovery](https://docs.cowboy.inc/cli-specs/key-auto-discovery.md), fetch the nonce, basefee, and chain id, sign a `SubmitFraudProof` system instruction with the given cycle and cell limits and the ordinary system-transaction access limit, print the transaction hash, and `POST` it to `<rpc-url>/submit`.
5. Wait up to 90 seconds for a committed receipt (following the node's finalized-receipt stream); a receipt that reports a failed execution is returned as a `transaction_failed` error.
6. Print `SubmitFraudProof submitted: <response>`.

**Flags:**

| Flag | Default | Description |
| - | - | - |
| `--src-chain-id` | Required | Source chain id of the challenged commitment |
| `--dst-chain-id` | Required | Destination (Cowboy) chain id whose anchor holds the commitment |
| `--height` | Required | Source block height of the commitment (or of the maintenance target) |
| `--registry` | Required | ChainRegistry actor the commitment was published under (20-byte hex, `0x` optional): the live governance pin, or a former pin whose commitments are still inside their window |
| `--bundle` | Required | Path to the JSON evidence envelope built by the relayer |
| `--cycles-limit` | `10000000` | Cycle limit to sign with (verification is priced dynamically; a maximal bundle reaches roughly eight million cycles) |
| `--cells-limit` | `10000000` | Cell limit to sign with |
| `--rpc-url` | Auto-discovered | RPC endpoint |
| `--private-key` | Auto-discovered | Private key file |

**Example:**

```bash theme={null}
$ cowboy bridge fraud-proof submit --src-chain-id 1 --dst-chain-id 2 --height 100 \
    --registry 0x1111111111111111111111111111111111111111 --bundle fraud-proof.json
Submitting fraud proof for src_chain_id=1 height=100 (18342 bytes)
  Transaction hash: 0xdef789...
✓ SubmitFraudProof submitted: ...
```

## Edge Cases

* A bundle that is not valid JSON, is a JSON array or scalar rather than an object, or exceeds the submittable size is refused before anything is signed, with the byte limits stated in the error.
* If the transaction does not commit within the wait window, the command fails with `receipt_pending` and `SubmitFraudProof transaction 0x... did not commit within 90s; check it with cowboy transaction status --hash ... before sending anything again`.
* Unlike `cowboy timer` and `cowboy deploy-code`, which take their limits from the node's estimate and return on acceptance, this command waits for commitment and signs with explicit limits (10,000,000 cycles and cells by default).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.