#601

Global Rank · of 601 Skills

broadcast-arc AI Agent Skill

View Source: b-open-io/bsv-skills

Critical

Installation

npx skills add b-open-io/bsv-skills --skill broadcast-arc

14

Installs

ARC Transaction Broadcasting

Broadcast signed BSV transactions using the ARC (Application Runtime & Certificate) protocol via @bsv/sdk.

ARC Overview

ARC is the production-grade transaction broadcaster for BSV. Unlike simple REST broadcast endpoints, ARC:

  • Connects to multiple nodes simultaneously (no single point of failure)
  • Accepts Extended Format (EF) transactions for script/fee validation
  • Returns structured status responses with txStatus
  • Supports callback webhooks for confirmation events
  • Handles rebroadcast automatically

Two public ARC endpoints are available:

Provider URL API Key Required
GorillaPool https://arc.gorillapool.io No (mainnet, public beta)
TAAL https://api.taal.com/arc Yes — get from console.taal.com

GorillaPool is the default for development. Use TAAL for production if a guaranteed SLA is needed.

Basic Usage

import { Transaction, ARC } from '@bsv/sdk'

// GorillaPool — no API key needed
const result = await tx.broadcast(new ARC('https://arc.gorillapool.io'))

// TAAL — API key required
const result = await tx.broadcast(new ARC('https://api.taal.com/arc', 'mainnet_xxxxxx'))

// Check result
if (result.status === 'success') {
  console.log('txid:', result.txid)
  console.log('status:', result.message) // e.g. "SEEN_ON_NETWORK"
} else {
  console.error('broadcast failed:', result.description)
}

ArcConfig Options

Use ArcConfig for advanced configuration:

import { ARC, ArcConfig } from '@bsv/sdk'

const config: ArcConfig = {
  apiKey: 'mainnet_xxxxxx',          // Optional for GorillaPool
  callbackUrl: 'https://myapp.com/arc-callback',  // Webhook for confirmations
  callbackToken: 'my-secret-token',  // Sent as Authorization header in callbacks
  deploymentId: 'my-app-v1',         // Identifies your app in ARC logs
  headers: { 'X-Custom': 'value' },  // Extra headers on all requests
}

const broadcaster = new ARC('https://arc.gorillapool.io', config)
await tx.broadcast(broadcaster)

Callback Webhook

When callbackUrl is set, ARC will POST to that URL when the transaction is:

  • Seen in mempool (SEEN_ON_NETWORK)
  • Mined in a block (MINED)
  • Double-spent (DOUBLE_SPEND_ATTEMPTED)

The callback body contains { txid, txStatus, blockHash?, blockHeight? }.

Transaction Formats

The ARC broadcaster internally calls tx.toHexEF() (Extended Format). EF includes source transaction data so ARC can validate scripts and fees without looking up inputs separately.

If EF serialization fails (source transactions not attached), it falls back to raw hex.

// Manually build with source tx attached (enables EF)
tx.addInput({
  sourceTXID: '...',
  sourceOutputIndex: 0,
  sourceTransaction: parentTx,  // Attaches parent → enables EF
  unlockingScriptTemplate: new P2PKH().unlock(key),
})

Batch Broadcasting

Broadcast multiple transactions in one call:

const broadcaster = new ARC('https://arc.gorillapool.io')
const results = await broadcaster.broadcastMany([tx1, tx2, tx3])

for (const r of results) {
  console.log(r)
}

broadcastMany posts to /v1/txs (vs /v1/tx for single). Results are mixed — some may succeed while others fail.

Broadcasting a BEEF Transaction

When using WalletClient with noSend: true, the wallet returns a BEEF transaction. To broadcast it via ARC:

import { Transaction, ARC } from '@bsv/sdk'

// Parse BEEF bytes from WalletClient
const tx = Transaction.fromBEEF(beefBytes)

// Or from hex BEEF string
const tx = Transaction.fromHexBEEF(beefHex)

// Broadcast
const result = await tx.broadcast(new ARC('https://arc.gorillapool.io'))

Script Usage

# Broadcast a raw/EF tx hex
bun run skills/broadcast-arc/scripts/broadcast.ts <tx-hex>

# Broadcast BEEF hex
bun run skills/broadcast-arc/scripts/broadcast.ts --beef <beef-hex>

# Use TAAL with API key
bun run skills/broadcast-arc/scripts/broadcast.ts <tx-hex> --key mainnet_xxxxxx --url https://api.taal.com/arc

Error Codes

Code Meaning
200 Success — transaction accepted
409 Already known — txid exists (not an error)
422 Invalid transaction — script/fee error
465 Cumulative fee too low
473 Double spend detected

A 409 response (already known) should be treated as success — the tx is already on the network.

txStatus Values

Status Meaning
STORED Received, not yet validated
ANNOUNCED_TO_NETWORK Propagated to nodes
SEEN_ON_NETWORK Seen by multiple nodes
MINED Included in a block
SEEN_IN_ORPHAN_MEMPOOL In an orphan branch
DOUBLE_SPEND_ATTEMPTED Competing transaction detected

Related Skills

  • wallet-brc100 — create transactions with WalletClient including noSend: true BEEF pattern
  • wallet-send-bsv — build and sign transactions with a WIF key before broadcasting
  • decode-bsv-transaction — inspect a transaction before or after broadcast

Installs

Installs 14
Global Rank #601 of 601

Security Audit

ath Safe
socket Safe
Alerts: 0 Score: 90
snyk High
EU EU-Hosted Inference API

Power your AI Agents with the best open-source models.

Drop-in OpenAI-compatible API. No data leaves Europe.

Explore Inference API

GLM

GLM 5

$1.00 / $3.20

per M tokens

Kimi

Kimi K2.5

$0.60 / $2.80

per M tokens

MiniMax

MiniMax M2.5

$0.30 / $1.20

per M tokens

Qwen

Qwen3.5 122B

$0.40 / $3.00

per M tokens

How to use this skill

1

Install broadcast-arc by running npx skills add b-open-io/bsv-skills --skill broadcast-arc in your project directory. Run the install command above in your project directory. The skill file will be downloaded from GitHub and placed in your project.

2

No configuration needed. Your AI agent (Claude Code, Cursor, Windsurf, etc.) automatically detects installed skills and uses them as context when generating code.

3

The skill enhances your agent's understanding of broadcast-arc, helping it follow established patterns, avoid common mistakes, and produce production-ready output.

What you get

Skills are plain-text instruction files — not executable code. They encode expert knowledge about frameworks, languages, or tools that your AI agent reads to improve its output. This means zero runtime overhead, no dependency conflicts, and full transparency: you can read and review every instruction before installing.

Compatibility

This skill works with any AI coding agent that supports the skills.sh format, including Claude Code (Anthropic), Cursor, Windsurf, Cline, Aider, and other tools that read project-level context files. Skills are framework-agnostic at the transport level — the content inside determines which language or framework it applies to.

Data sourced from the skills.sh registry and GitHub. Install counts and security audits are updated regularly.

EU Made in Europe

Chat with 100+ AI Models in one App.

Use Claude, ChatGPT, Gemini alongside with EU-Hosted Models like Deepseek, GLM-5, Kimi K2.5 and many more.

Get the App:

Customer Support