Broadcasting

Transaction Broadcasting from SPV Wallet

The SPV Wallet broadcasts all valid transactions it receives or creates to ARC.

ARC Endpoints

We use the first endpoint to determine the correct fee model to use when creating a transaction.

Get the policy settings

This endpoint returns the policy settings.

GEThttps://arc.taal.com/v1/policy
Response

Success

Body
timestamp*string (date-time)
policy*Policy (object)
Request
const response = await fetch('https://arc.taal.com/v1/policy', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "timestamp": "2025-01-21T07:39:54.825Z",
  "policy": {
    "maxscriptsizepolicy": 500000,
    "maxtxsigopscountspolicy": 4294967295,
    "maxtxsizepolicy": 10000000,
    "miningFee": {
      "satoshis": 1,
      "bytes": 1000
    }
  }
}

Thereafter we simply broadcast to ARC and expect a SEEN_ON_NETWORK txStatus response in most cases.

Submit a transaction.

This endpoint is used to send a raw transaction to a miner for inclusion in the next block that the miner creates.

POSThttps://arc.taal.com/v1/tx
Header parameters
Body

Transaction hex string

string
Example: "<transaction hex string>"
Response

Success

Body
timestamp*string (date-time)
blockHashstring

Block hash

Example: "00000000000000000854749b3c125d52c6943677544c8a6a885247935ba8d17d"
blockHeightinteger (uint64)

Block height

Example: 782318
txid*string

Transaction ID in hex

Example: "6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0"
merklePathnullable string

Transaction Merkle path as a hex string in BUMP format BRC-74

Example: "0000"
txStatus*enum

Transaction status

Example: "ACCEPTED_BY_NETWORK"
UNKNOWNQUEUEDRECEIVEDSTOREDANNOUNCED_TO_NETWORKREQUESTED_BY_NETWORKSENT_TO_NETWORKACCEPTED_BY_NETWORKSEEN_IN_ORPHAN_MEMPOOLSEEN_ON_NETWORKDOUBLE_SPEND_ATTEMPTEDREJECTEDMINED
extraInfonullable string

Extra information about the transaction

Example: "Transaction is not valid"
competingTxsnullable array of string
status*integer (int)

Status

Example: 201
title*string

Title

Example: "Added to mempool"
Request
const response = await fetch('https://arc.taal.com/v1/tx', {
    method: 'POST',
    headers: {
      "Content-Type": "text/plain"
    },
    body: JSON.stringify("<transaction hex string>"),
});
const data = await response.json();
Response
{
  "timestamp": "2025-01-21T07:39:54.825Z",
  "blockHash": "00000000000000000854749b3c125d52c6943677544c8a6a885247935ba8d17d",
  "blockHeight": 782318,
  "txid": "6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
  "merklePath": "0000",
  "txStatus": "ACCEPTED_BY_NETWORK",
  "extraInfo": "Transaction is not valid",
  "competingTxs": [
    [
      "c0d6fce714e4225614f000c6a5addaaa1341acbb9c87115114dcf84f37b945a6"
    ]
  ],
  "status": 201,
  "title": "Added to mempool"
}

Usually a callbackUrl would be set for async status updates - but if you'd like to manually check the most recent state of a given transaction, you can use this:

Get transaction status.

This endpoint is used to get the current status of a previously submitted transaction.

GEThttps://arc.taal.com/v1/tx/{txid}
Path parameters
txid*string

The transaction ID (32 byte hash) hex string

Response

Success

Body
timestamp*string (date-time)
blockHashstring

Block hash

Example: "00000000000000000854749b3c125d52c6943677544c8a6a885247935ba8d17d"
blockHeightinteger (uint64)

Block height

Example: 782318
txid*string

Transaction ID in hex

Example: "6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0"
merklePathnullable string

Transaction Merkle path as a hex string in BUMP format BRC-74

Example: "0000"
txStatus*enum

Transaction status

Example: "ACCEPTED_BY_NETWORK"
UNKNOWNQUEUEDRECEIVEDSTOREDANNOUNCED_TO_NETWORKREQUESTED_BY_NETWORKSENT_TO_NETWORKACCEPTED_BY_NETWORKSEEN_IN_ORPHAN_MEMPOOLSEEN_ON_NETWORKDOUBLE_SPEND_ATTEMPTEDREJECTEDMINED
extraInfonullable string

Extra information about the transaction

Example: "Transaction is not valid"
competingTxsnullable array of string
Request
const response = await fetch('https://arc.taal.com/v1/tx/{txid}', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "timestamp": "2025-01-21T07:39:54.825Z",
  "blockHash": "00000000000000000854749b3c125d52c6943677544c8a6a885247935ba8d17d",
  "blockHeight": 782318,
  "txid": "6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
  "merklePath": "0000",
  "txStatus": "ACCEPTED_BY_NETWORK",
  "extraInfo": "Transaction is not valid",
  "competingTxs": [
    [
      "c0d6fce714e4225614f000c6a5addaaa1341acbb9c87115114dcf84f37b945a6"
    ]
  ]
}

Last updated