# Class BSV::Network::Protocols::ARC <a id="class-BSV-Network-Protocols-ARC"></a>

**Inherits:** `BSV::Network::Protocol`

ARC protocol implementation for submitting transactions to the BSV network.

Extends Protocol with five endpoints and two escape hatches for broadcast
logic: EF format preference, rejection detection, and custom headers.

The protocol returns ProtocolResponse objects (never raises).

## Example

    arc = BSV::Network::Protocols::ARC.new(
      base_url: 'https://arc.taal.com',
      api_key: 'my-api-key'
    )
    result = arc.call(:broadcast, tx)
    result.http_success? # => true
    result.data['txid'] # => "abc123..."

- **@see** `https://docs.gorillapool.io/arc/api.html` ARC API v1 documentation

## Constants
### `ORPHAN_MARKER` <a id="constant-ORPHAN_MARKER"></a> <a id="ORPHAN_MARKER-constant"></a>
Substring marker for orphan detection in txStatus or extraInfo fields.

### `REJECTED_STATUSES` <a id="constant-REJECTED_STATUSES"></a> <a id="REJECTED_STATUSES-constant"></a>
ARC response statuses that indicate a transaction was NOT accepted. Matches
the TypeScript SDK's ARC broadcaster failure set.

## Public Instance Methods
### `initialize(base_url:, api_key: = nil, auth: = nil, network: = nil, deployment_id: = nil, callback_url: = nil, callback_token: = nil, http_client: = nil)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
- **@param** `base_url` [String] ARC base URL (may contain {network})
- **@param** `api_key` [String, nil] legacy bearer token shorthand — use +auth:+ for new code
- **@param** `auth` [Hash, Symbol, nil] auth config; takes precedence over +api_key:+
- **@param** `network` [String, nil] network name for base URL interpolation
- **@param** `deployment_id` [String, nil] deployment identifier for the
XDeployment-ID header; defaults to a per-instance random hex value
- **@param** `callback_url` [String, nil] optional X-CallbackUrl header value
- **@param** `callback_token` [String, nil] optional X-CallbackToken header value
- **@param** `http_client` [#request, nil] injectable HTTP client for testing
- **@return** [ARC] a new instance of ARC
