Comment on page
BloqNodes Setup
Nodes is one of the core services of Bloq. In this tutorial you will learn how to set up and start using a Bloq node on your network of choice.
Before you can create a new node, you first need to set up your Bloq account. If you have not done so, please refer to the corresponding guide.
In order to create a new node you must always use Bloq Console. We also provide the Command Line Interface (CLI) and the REST API where you can perform some other actions like retrieve node info or stop a running node.
Log into Bloq Console to spin up a new node. You can pick among different chains and networks and you can customize the performance, the region, and the authentication type.
Once you finish with the configuration, choose the billing plan that fits best and select your payment method.
After your payment is confirmed, you will see your new node in the Nodes View and you will be able to access it.
Open the terminal and make sure that you have a valid session. If not, you can start one running
bcl login
.The CLI has the
nodes
command which lets you list, remove or get info about your nodes. You can run bcl nodes info
to retrieve your node information:bcl nodes info -i node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
✔ Retrieved node with id node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
* ID: node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
* Started At: 2019-08-01T21:55:46.612Z
* Stopped At: N/A
* Chain: btc
* Network: mainnet
* Version: core-0.17
* Performance: standard
* State: started
* IP: 3.215.178.169
* User: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
* Password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Retrieving the node information using the REST API requires more steps than the CLI (which automates the whole authentication process). Aside from authentication, the CLI provides the same capabilities as the REST API.
As previously stated, a valid pair of client keys is required prior to using the service. The client keys let you generate your access and refresh tokens. The
access token
grants you access to the Nodes Service, but for security reasons, the access token
is a short term token (expires after one hour). When the access token
expires, you can use the refresh token
(expires after one year but could be revoked) to get a new valid access token
.The first step is to use the client keys to generate access and refresh tokens. In this step you will request access directly to our Accounts Service.
curl -X POST https://accounts.bloq.cloud/auth/token
-H 'Content-Type: application/json' \
-d '{
"grantType": "clientCredentials",
"clientId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"clientSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}'
{
"accessToken": "xxxxxx.xxxxxxxxxx.xxxxxx",
"refreshToken": "xxxxxx.xxxxxxxxxx.xxxxxx"
}
curl -X GET \ https://nodes.bloq.cloud/users/me/nodes/node-xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-H 'Authorization: Bearer xxxxxx.xxxxxxxxxx.xxxxxx'
{
"stoppedAt": "2020-04-21T05:00:18.586Z",
"serviceData": {
"amiPrefix": "btc",
"performance": "standard",
"software": "core-0.17",
"ports": [8080, 8332]
},
"ip": "18.213.193.254",
"createdAt": "2020-04-21T00:45:07.687Z",
"ttl": "1588050018",
"user": "user-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userPlanData": {
"startsAt": "2020-04-21T00:45:05.324Z",
"id": "user-plan-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"plan": "plan-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"expiresAt": "2020-05-21T00:45:05.324Z"
},
"instance": {
"region": "us-east-1",
"id": "i-02cb186c0808950f6",
"imageId": "ami-01ee6543215d4006b"
},
"vendor": {
"name": "aws",
"subnet": "subnet-41daba24",
"securityGroups": [
"sg-50d39921",
"sg-0a52e56ee0c02fd7a",
"sg-784d5703",
"sg-0769b9650222e64ce"
],
"region": "us-east-1",
"instanceType": "t3.large",
"quickSync": true
},
"network": "mainnet",
"state": "stopped",
"service": "service-f409a426-8bdd-5c65-bcd3-7c6d0424a5ac",
"auth": {
"type": "basic",
"user": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"pass": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"updatedAt": "2020-04-21T00:45:09.419Z",
"chain": "btc",
"id": "node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
TIP
- IP is the URL that you are going to use to connect and access your node.
- At the moment, the supported chains are btc, btctestnet, bch, bchtestnet, ltc, eth, and ethropsten.
In addition to the Bloq Console, CLI, and REST API, nodes may also be accessed via interfaces supported by their chain. These include REST, JSON RPC, and WebSocket RPC. Please see the Blockchain Node API section for more information.
Mainnet and testnet Bloq nodes on Bitcoin, Bitcoin Cash, and Litecoin (mainnet only) are all accessible through REST and JSON RPC interfaces. To access your node, you must use the proper
IP
port corresponding to the node's chain:Protocol | Chain | Port |
---|---|---|
Bitcoin (BTC) | Mainnet | 8332 |
Bitcoin | Testnet | 18332 |
Bitcoin Cash (BCH) | Mainnet | 8332 |
Bitcoin Cash | Testnet | 18332 |
Litecoin (LTC) | Mainnet | 9332 |
curl -k -X GET \
--user <NodeUser>:<NodePass> \
https://<ip-address>:8332/rest/chaininfo.json
curl -k -X POST \
--user <NodeUser>:<NodePass> \
-H 'Content-Type: application/json' \
-d '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockchaininfo", "params": [] }' \
https://<ip-address>:8332/
{
"chain": "main",
"blocks": 567245,
"headers": 567245,
"bestblockhash": "0000000000000000002a127c4e914d03cac111ec2921018eb05b7e4e5516edc3",
"difficulty": 6068891541676.553,
"mediantime": 1552684564,
"verificationprogress": 0.9999988860202572,
"initialblockdownload": false,
"chainwork": "000000000000000000000000000000000000000005712777e7fc462e2363baa4",
"size_on_disk": 237377254316,
"pruned": false,
"softforks": [
{
"id": "bip34",
"version": 2,
"reject": {
"status": true
}
},
{
"id": "bip66",
"version": 3,
"reject": {
"status": true
}
},
{
"id": "bip65",
"version": 4,
"reject": {
"status": true
}
}
],
"bip9_softforks": {
"csv": {
"status": "active",
"startTime": 1462060800,
"timeout": 1493596800,
"since": 419328
},
"segwit": {
"status": "active",
"startTime": 1479168000,
"timeout": 1510704000,
"since": 481824
}
},
"warnings": ""
}
Mainnet and Ropsten testnet Ethereum nodes are accessible through JSON and WebSocket RPC interfaces. ETH nodes do not support REST interface. To access your node, you must use the proper
IP
port corresponding to the node's chain. There is a different port required for JSON RPC
and WebSocket RPC
commands:Protocol | Chain | Port | Interface |
---|---|---|---|
Ethereum (ETH) | Mainnet | 8545 | JSON |
Ethereum (Ropsten) | Testnet | 8545 | JSON |
Ethereum (ETH) | Mainnet | 8546 | WebSocket |
Ethereum (Ropsten) | Testnet | 8546 | WebSocket |
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/
{
"jsonrpc": "2.0",
"result": "0x981fb8",
"id": 1
}
Algorand mainnet and testnet are accessible through REST interface. To access your node, you must use the proper port and assigned cluster domain corresponding to the node's chain. Relay nodes are full archive nodes. Participation nodes are non-relay (non-archive) nodes. To generate and register participation key, use respective REST APIs documented in Blockchain Node API.
Key management daemon (KMD) is disabled by default for relay and non-relay nodes.
Protocol | Chain | Port |
---|---|---|
Algorand (Algo) relay node | Mainnet | 4160, 8080 |
Algorand (Algo) relay node | Testnet | 4161, 8080 |
Algorand (Algo) participation node | Mainnet | 8080 |
Algorand (Algo) participation node | Testnet | 8080 |
curl --user <NodeUser>:<NodePass> \
https://<ip-address or domain>:8080/v2/status
{
"catchpoint": "",
"catchpoint-acquired-blocks": 0,
"catchpoint-processed-accounts": 0,
"catchpoint-total-accounts": 0,
"catchpoint-total-blocks": 0,
"catchup-time": 51537844993,
"last-catchpoint": "7690000#SZEU3VIC5SCIIS3A6EN72F33GJHZYDLL32YG75M3TNDGSYV6HWGA",
"last-round": 7691353,
"last-version": "",
"next-version": "",
"next-version-round": 7691354,
"next-version-supported": true,
"stopped-at-unsupported-round": false,
"time-since-last-round": 135691260
}
Mainnet and testnet nodes are accessible through a JSON RPC interface. Avalanche nodes listen on the following ports:
Protocol | Chain | Port |
---|---|---|
Avalanche (AVAX) | Mainnet | 9650, 8080 |
Avalanche | Testnet | 9650, 8080 |
curl -X POST \
--user <NodeUser>:<NodePass> \
-H 'Content-Type: application/json' \
-d '{ "jsonrpc": "2.0", "method": "health.getLiveness", "params": [], "id": 1 }' \
https://<ip-address>:9650/ext/health
{
"jsonrpc": "2.0",
"result": {
"checks": {
"chains.default.bootstrapped": {
"timestamp": "2020-09-17T21:27:31.776773-07:00",
"duration": 5891,
"contiguousFailures": 0,
"timeOfFirstFailure": null
},
"network.validators.heartbeat": {
"message": {
"heartbeat": 1600403244
},
"timestamp": "2020-09-17T21:27:31.776793-07:00",
"duration": 4000,
"contiguousFailures": 0,
"timeOfFirstFailure": null
}
},
"healthy": true
},
"id": 1
}
TIP
- Your
NodeUser
andNodePassword
are hexadecimal strings that are accessible through CLI or REST commands above, as well as through the Console website. - This username/password pair is unique for each node, and separate from your Bloq username and password.
You now have everything you need to create and request data from your nodes. For more information, please refer to the Nodes Service Technical Reference.
Last modified 1mo ago