# Blockchain Node API

This reference guide outlines the interfaces to access blockchain nodes that are created as part of the Bloq Nodes service. Any key deviations from the standard node interface (by blockchain) are highlighted as part of the reference guide.

TIP

Testnet nodes use the same API calls as their mainnet counterparts. Just make sure the address port matches your node's chain!

# BTC

TIP

The Bitcoin Node API is largely interoperable with Litecoin, with a few documented distinctions. Please see the Litecoin REST API documentation and Litecoin JSON-RPC methods for more information.

# REST API

TIP

A key-client pair must be created prior to using the Nodes service. Use the bcl client-keys command if client-keys do not currently exist.

If a key-client pair already exists, use the bcl conf command to load your keypair.

TIP

In addition to having a client-key pair generated, a clientAccessToken and refreshToken are also required to access the Nodes service. Use the bcl client-token command to generate the tokens.

To learn more about the REST API that this node provides please see the REST API documentation.

# JSON-RPC

The Nodes service supports the standard Bitcoin JSON-RPC calls with a number that are blacklisted. RPC calls that would negatively impact the running of the service are blacklisted. Wallet specific RPC calls are also currently not allowed as all nodes are run with --disable-wallet.

# POST getblock

curl -k -X POST \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "1.0", "method": "getblock", "params": ["000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", true] }' \
  https://<ip-address>:8332/

# Response

{
  "hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
  "confirmations": 633169,
  "size": 285,
  "height": 0,
  "version": 1,
  "versionHex": "00000001",
  "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
  "tx": [
    "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
  ],
  "time": 1231006505,
  "mediantime": 1231006505,
  "nonce": 2083236893,
  "bits": "1d00ffff",
  "difficulty": 1,
  "chainwork": "0000000000000000000000000000000000000000000000000000000100010001",
  "nTx": 1,
  "nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"
}

# POST getdifficulty

curl -k -X POST \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc": "1.0", "method": "getdifficulty", "params": [] }' \
  https://<ip-address>:8332/

# Response

{
  "result": 15958652328578.1588
}

# Full BTC JSON-RPC call list

For a full list of Bitcoin JSON-RPC commands please see Bitcoin JSON-RPC methods.

# Blacklisted BTC JSON-RPC Calls

The following list of JSON-RPC calls are NOT available for the Nodes Bitcoin (BTC) service:

  • stop
  • generate
  • generatetoaddress

# Disabled BTC Wallet Specific Calls

Wallet specific RPC calls are currently disabled. For the full list of unsupported wallet RPCs, please see Wallet RPC methods.

# BCH

# REST API

TIP

A key-client pair must be created prior to using the Nodes service. Use the bcl client-keys command if client-keys do not currently exist.

If a key-client pair already exists, use the bcl conf command to load your keypair.

TIP

In addition to having a client-key pair generated, a clientAccessToken and refreshToken are also required to access the Nodes service. Use the bcl client-token command to generate the tokens.

To learn more about the REST API that this node provides please see the REST API documentation.

# JSON-RPC

The Nodes service supports the standard Bitcoin Cash JSON-RPC calls with a number that are blacklisted. RPC calls that would negatively impact the running of the service are blacklisted. Wallet specific RPC calls are also currently not allowed as all nodes are run with --disable-wallet.

# Full BCH JSON-RPC call list

For a full list of Bitcoin JSON-RPC commands please see Bitcoin Cash JSON-RPC methods.

# Blacklisted BCH JSON-RPC Calls

The following list of JSON-RPC calls are NOT available for the Nodes Bitcoin Cash (BCH) service:

  • stop
  • generate
  • generatetoaddress

# Disabled BCH Wallet Specific Calls

Wallet specific RPC calls are currently disabled. For the full list of unsupported wallet RPCs, please see Wallet RPC methods.

# ETH & ETC

# JSON-RPC

The Nodes service supports the standard Ethereum JSON-RPC calls with a number that are blacklisted. RPC calls that would negatively impact the running of the service are blacklisted.

TIP

ETH JSON-RPC calls are interoperable with Ethereum Classic nodes.

# POST blockNumber

curl -X POST \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  -d '{ "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 1 }' \
  https://<ip-address>:8545/

# Response

{	
  "jsonrpc": "2.0",
  "result": "0x981fb8", //9969592
  "id": 1
}

# Full ETH JSON-RPC call list

For a full list of Ethereum JSON-RPC commands see Ethereum JSON-RPC methods.

# Blacklisted ETH JSON-RPC Calls

The following list of JSON-RPC calls are NOT available for the Nodes Ethereum (ETH) service:

  • eth_accounts
  • shh_newIdentity

# Algorand

Bloq Algorand nodes support some REST APIs for participation nodes to create, list, view and delete participation keys on the node. These are additional REST APIs on top of the standard Algorand REST APIs. For full list of Algorand REST APIs see Algorand REST APIs

# REST API- Participation node

# POST create particiation key

curl -X POST \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  -d '{ "address": <address>, "roundFirstValid": <roundFirstValid>, "roundLastValid": <roundLastValid>, "id": 1 }' \
  https://<ip-address>:8080/addpartkey --output -

# Response

Participation key generation successful

# GET list participation keys

curl --user <NodeUser>:<NodePass> \
  https://<ip-address>:8080/listpartkeys --output -

# Response

Registered	Filename                                                                        	Parent address                                              	 First round	  Last round	   First key
no       	HMJHNGQPPBNUVSHB3EQ4YJ2IK2RQCCMYC4ZNDIUS75QTOZUEDWAQMFRWBQ.6969458.7969458.partkey	HMJHNGQPPBNUVSHB3EQ4YJ2IK2RQCCMYC4ZNDIUS75QTOZUEDWAQMFRWBQ  	     6969458	     7969458	    716.3239
no        	UEDD34QFEMWRGYCBLKZIEHPKSTNBFSRMFBHRJPY3O2JPGKHQCXH4IY6XRI.1221.2221.partkey    	UEDD34QFEMWRGYCBLKZIEHPKSTNBFSRMFBHRJPY3O2JPGKHQCXH4IY6XRI  	        1221	        2221	       715.0

# GET get part key info

curl --user <NodeUser>:<NodePass> \
  https://<ip-address>:8080/partKeyInfo --output -

# Response

{
  "acct": "UEDD34QFEMWRGYCBLKZIEHPKSTNBFSRMFBHRJPY3O2JPGKHQCXH4IY6XRI",
  "first": 1221,
  "last": 2221,
  "sel": "LnXGberaBu/VSnCdHDlB57ezEcsCXuh8Ayea8PXA7BU=",
  "vote": "GL4yNwJ1h/uxHUqExfOzcTw7Q3moqfw89ab14Vj2LiQ=",
  "voteKD": 10000
}
------------------------------------------------------------------
File: HMJHNGQPPBNUVSHB3EQ4YJ2IK2RQCCMYC4ZNDIUS75QTOZUEDWAQMFRWBQ.6969458.7969458.partkey
{
  "acct": "HMJHNGQPPBNUVSHB3EQ4YJ2IK2RQCCMYC4ZNDIUS75QTOZUEDWAQMFRWBQ",
  "first": 6969458,
  "last": 7969458,
  "sel": "KCUYm7L9dopxVC02LR/WgQWB5qzdG5Pj7WWKaccU6I0=",
  "vote": "6sJ+620IFyBQ6TaQQg/vzPvy65lvOOIoBN0SWQjWk/Y=",
  "voteKD": 10000
}

# POST remove participation key

curl -X POST \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  -d '{ "address": <address>, "roundFirstValid": <roundFirstValid>, "roundLastValid": <roundLastValid>, "id": 1 }' \
  https://<ip-address>:8080/removePartKey --output -

# Response

Participation key removed

# Avalanche

Bloq Avalanche nodes support the JSON RPC described in the Avalanche API reference.

# Management API

A special API is provided on port 8080 for all nodes with calls to help manage the nodes.

# GET /status

Request the status of a node.

# Responses

Status Meaning Description
200 OK Successful operation

# Example responses

200 Response

"healthy"

# Code Sample

curl -k -X GET \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  https://<ip-address>:8080/status

# GET /logs

Request the logs from the running blockchain daemon.

# Parameters

Name In Type Required Description
lines body number false Number of log lines to retrieve. Leave blank for full log.

# Responses

Status Meaning Description
200 OK Successful operation

# Example responses

200 Response

[
	"B2019-07-01T19:43:21Z Bitcoin Core version v0.17.1 (release build)",
    "z2019-07-01T19:43:21Z InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1",
    "2019-07-01T19:43:21Z Assuming ancestors of block 0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8 have valid signatures.",
    "p2019-07-01T19:43:21Z Setting nMinimumChainWork=0000000000000000000000000000000000000000028822fef1c230963535a90d"
]

# Code Sample

curl -k -X GET \
  --user <NodeUser>:<NodePass> \
  -H 'Content-Type: application/json' \
  https://<ip-address>:8080/logs
Last updated: 9/30/2020, 8:03:15 PM