Frequently Asked Questions

Glenn Rempe edited this page Nov 2, 2018 · 46 revisions

Frequently Asked Questions

Node UI

How can I see my Node's UI in my browser?

Visit the IP address of your Node in a browser. http://NODEIP

What is the password for the Node UI?

By default, the password is the same as the Node's NODE_TNT_ADDRESS you configured in your .env file.

Can I change the password for the Node UI?

Yes. Add an configuration variable to the .env file and restart your Node:

CHAINPOINT_NODE_UI_PASSWORD=mynewpassword

This is more fully documented in the .env.sample file in the root directory of this repository.

Where in the UI do I find stats about my Node's health?

Click on the menu button in the top right of the web page once you login. Open the 'About' page.

On my 'About' page I see only a few lines of info, and no stats?

This is possibly due to a mis-configured CHAINPOINT_NODE_PUBLIC_URI variable in your .env file. If you are sending the wrong IP address for your Node to Chainpoint Core it will not be able to conduct audits of your Node, and it will not be able to send stats down to the Node. Make sure the IP address is exactly the same as the one you used to visit the Node UI in your browser.

On the 'Activity' page I see that my Node has not received any hashes for a while. Is this OK?

Yes. Receiving hashes is not one of the criteria used for determining reward eligibility. While we build out the network of Nodes not all will be found in the service discovery mechanism at all times, and so hashes coming into the network are directed to a changing set of Nodes. This is normal.

The NTP field on the 'About' page shows a delta from the Core time. Is this OK?

Yes, as long as your Node is being audited and showing a delta of less than 1000ms your Node is keeping good enough time. You won't fail an audit for time unless your Node is more than 5000ms off. Most Nodes running NTP are within a few milliseconds of Core time continuously.

Audits

How often do audits take place?

Normal Audits take place every thirty minutes. Normal audits demonstrate a node is reachable and passes standard audit criteria. Daily Audits take place once per day. Daily Audits demonstrate that a node can create and verify a Chainpoint proof. See the Audit Queue Rules for details.

Audit Queue Rules

Audit Queue Announcement

If I fail one audit, do I drop to the bottom of the queue?

No. A Node's audit score is decremented by 1 for failing Normal Audits, and 96 for failing Daily Audits. It may take several days to drop to the bottom of the queue dependending on how many audits a Node has previously passed.

If I reboot my Node do I automatically fail an audit or drop to the bottom of the queue?

No. Only if your Node was down at the very moment that an audit was attempted would you fail that one audit. That would only result in a reduction of your audit score by 1. If your Node is unreachable at the time of a Daily Audit check, the audit will be re-queued for several hours later. A maximum of three tries will be performed.

How do the audits work?

The Chainpoint Network Core servers will connect with every registered Node with a public URI configured. If the Node is reachable on the public Internet, some data about the Node will be collected and a determination will be made as to whether the Node has passed or failed the audit. That information will be collected by Core and passed down to the Node, for display in the Node UI, when the next audit occurs.

What happens if my Node can't be reached at the public URI expected?

It will fail that audit.

What is checked as part of the audit?

The audit process tries to verify the proper functioning of some of the following:

  • Is the Node publicly available at the registered IP address?
  • Is the NTP time on the Node within acceptable tolerances when compare to global NTP time?
  • Does the Node have the required TNT balance associated with its Ethereum address?
  • Can the Node correctly answer a cryptographic challenge that verifies that it has a current and complete copy of the Chainpoint Calendar?
  • Is the Node running at least the minimum version of the Node software?
  • Is the Node fully capable of accepting hashes, generating proofs, and verifying proofs against the Chainpoint Calendar.

Node Registration

Can I register a Node at any time?

Yes, it is now possible to register a Node at any time. There are no longer any limits placed on how many Nodes can join the network and there are no longer "registration events".

How much TNT balance is required to register a Node?

Currently, you need a minimum balance of 5000 TNT assigned to the Ethereum address you are trying to register your Node with.

What are the current TNT rewards?

A single node will receive 1,500 TNT every thirty minutes. The Node that will receive this reward is chosen once every thirty minutes from the queue of eligible Nodes. The Chainpoint Network Queue Rules can be found online. Only one Node is chosen for each thirty minute reward period.

When I try to register my Node I see an Error “Upgrade Required” (status code 426)?

To register, you must run the latest supported version of the Node software. Please upgrade and try again.

When I try to register my Node I see an Error “TNT address ETH_ADDRESS does not have the minimum balance of 5000 TNT for Node operation” (status code 403)?

The Ethereum address associated with your Node does not have the minimum required TNT balance. Please assign TNT to this address before trying again.

When I try to register my Node I see an Error “the Ethereum address provided is already registered” (status code 409)?

Registration requires each Node to have a unique Ethereum address. Please create a new address, send the proper minimum balance of TNT to the address, and try again.

When I try to register my Node I see an Error “the public URI provided is already registered” (status code 409)?

Registration requires each Node to provide a unique IPv4 address. Please ensure that the public URI in your .env file is unique to your Node, and try again.

When I try to register my Node, I see errors with status code 429, what does this mean?

The 429 status code indicates that your have exceeded the permissible rate limits for our API. This will clear according to the rate limit rules automatically over time for your IP address.

When I try to make down my Node, I see errors similar to ERROR: network ... has active endpoints Makefile:33: recipe for target 'down' failed, what does this mean?

This is a Docker/Docker Compose issue that has been reported to occasionally happen in other Docker Compose use-cases. It seems to be due to a stale Docker network connection.

Please see the following bug comment for a potential solution.

https://github.com/chainpoint/chainpoint-node/issues/83

Installation/Setup

How much RAM does my Node server need?

Nodes should have at least 1GB of RAM available. Servers with less than 1GB of RAM are not supported. Even servers with 1GB of RAM will likely need a swap file configured to avoid RAM starvation. See other answers related to RAM on this page.

Can I run more than one Node on a single server using a single IP address?

No. We do not allow Nodes to register that do not have a unique public IP address specified in their configuration. We do not allow Nodes to register with DNS names (which may mask the use of a single server to host multiple Nodes).

Running more than one Node on a single server is not aligned with our mission to provide an efficient infrastructure for anchoring hashes of data to public blockchains at scale.

Nodes that attempt to run more than one instance of the Node on a single server may not pass the daily end-to-end API functionality audits.

How do I edit the .env file?

One of the simplest tools for editing files is called nano. Check out the following links for some potentially helpful information.

How do I use SSH?

SSH is an essential tool when logging into remote servers. These days its hard to do it without SSH. The following guide from Digital Ocean is pretty helpful in getting started. Using SSH is a deep topic, but don't be afraid you can learn the essentials for logging in to a server securely in a little while.

How do I make sure my system time is accurate?

Please see the NTP configuration section of the main README to learn how to sync your system clock with NTP.

How do I upgrade a Node?

Node's are periodically updated. The process of upgrading a Node is relatively simple.

# cd into your Node directory
cd ~/chainpoint-node

# Upgrade & Restart Node
make upgrade

# check the logs to see that everything is running ok
# and type 'control - c' when done watching logs
make logs

How do I move an existing registered Node to a new server?

Here are the steps in the process, along with which server (old|new) to run each step on:

  • [old] Run the make print-auth-keys task which will print your ETH address and the HMAC auth keys and backup this data safely somewhere.
  • [new] Startup and SSH to the new server and run the Node installation script on that new server.
  • [new] Edit the ~/chainpoint-node/.env file and configure it with the same NODE_TNT_ADDRESS= as the old server and set the CHAINPOINT_NODE_PUBLIC_URI= to the URI of the new server (http://x.x.x.x)
  • [new] Configure the new server to load the HMAC key on Node start by following the instructions to restore the HMAC to the new machine. This will use the same ETH address and HMAC as the old server.
  • [new] Start the new server with make up. This will update your Core registration with the new URI of your Node.
  • [new] View the new server logs with make logs
  • [new] Ensure the new server logs don't provide any ERROR entries. If it does, search in this FAQ and the main README for likely solutions.
  • [new] Use a web browser and visit the IP address of the new Node in your browser to confirm it is publicly available. The default password for the UI is the ETH address of the Node.
  • [old] If all of the above steps are verified, destroy the old Node server if you choose.

TNT Rewards, Balances and Credits

Is it possible to receive a TNT reward if my Node has not received any hashes?

Yes. Nodes are not required to have received hashes in order to be eligible for rewards.

Can I check the health of my Node in the audit system?

Yes! As of version 1.4.0 of the Chainpoint Node software there is a Node UI interface available that will provide you with results of recent audits and other health data.

Has my Node been selected to receive a TNT reward?

Check the Etherscan.io page for Token Transfers for your Node's address. If you have received any TNT rewards you will see an IN transfer of Tierion Network Token.

https://etherscan.io/address/0xYOUR_ETHEREUM_ADDRESS_HERE#tokentxns

Nodes will also log rewards to the Node console logging output.

Operating and Monitoring a Node

I see an error like ERROR : App : Startup : Error: Node URI Health Check Failed for URI?

When a Node (v1.4.1+) starts, it will attempt to make an HTTP request to itself using the public URI configured in the .env file. It does this to verify that your Node is actually listening and available on port 80 of the URI you specified. If it cannot reach itself, it will exit with a warning message in the Node logs. It does this to ensure that the Node operator did not make a mistake in the config of the Node, mismatching the actual IP address of the Node with the configured one. In this case it is better to "fail fast" in case of misconfiguration since a Node misconfigured this way will silently fail all audits since it will be unreachable from Core.

I am seeing WARNING : Orphan container messages in the logs.

We utilize two docker-compose.yaml files, one for the main application, and one that is only used if ntpd is not running on your system. In such a case we'll start an ntpd daemon in a docker container for you. When shutting down the main Node application Docker Compose will complain about this orphan container (which is not managed by the primary config). This warning can be safely ignored. This issue has been fixed by the Docker team and Upgrading docker-compose on your Node (or setting up a new Node using the official installation script) will resolve this problem.

I am seeing Range Error, Array Buffer allocation failed... messages in the logs. What gives?

This may be memory related.

You might want to increase the RAM on your server and/or add a Swap file. See https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

I am seeing Killed or Error 137 in my Node logs.

This likely means that your Node has been killed by the Linux OOM (Out Of Memory) reaper. See https://bobcares.com/blog/error-137-docker/

You might want to increase the RAM on your server and/or add a Swap file. See https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

Has my Node received any hashes?

You can scan your logs for an entry that shows aggregation events. Aggregation is what happens when one or more hashes come in, and new Merkle tree is built.

[sudo] sudo docker-compose logs -t | grep -i 'aggregation'

How can I backup or restore my private Node HMAC Authentication Key?

Documentation on the backup/restore of HMAC Auth keys can be found in the README.

How can I re-import my private Node Authentication Key if I've moved to a new machine or wiped my data?

Documentation on the backup/restore of HMAC Auth keys can be found in the README.

How can I escape from viewing make logs?

Press the control + c keys at the same time.

I see an error like ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket. Help?

If you see an error such as:

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable

This likely means that you tried to run a Docker command but your local user doesn't have permissions to control Docker or docker-compose. Try adding sudo at the front of your command.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.