Troubleshooting

Node Installation

1) Has your trust anchor account been set in veriscope_ta_node/.env?

Trust anchor accounts are managed by the http-api.js script which loads it from .env. Ensure you have your trust anchor account (TRUST_ANCHOR_ACCOUNT) and private key (TRUST_ANCHOR_PK) set. If you plan to manage multiple accounts for testing purposes, you can swap these accounts in the .env file and restart ta-node-1 as follows:

sudo systemctl restart ta-node-1
Example 1. veriscope_ta_node/.env file
#DO NOT INCLUDE "0x" prefix in TRUST_ANCHOR_PK
TRUST_ANCHOR_PK=9b................17
TRUST_ANCHOR_PREFNAME="Singapore VASP"
TRUST_ANCHOR_ACCOUNT=0x........60
`WEBHOOK_CLIENT_SECRET`=abcdefg*

HTTP="http://localhost:8545"
WS="ws://localhost:8545"
WEBHOOK="http://localhost:8000/webhook"
HTTP_API_PORT=8080
TEMPLATE_HELPER_PORT=8090

CONTRACTS=/opt/veriscope/veriscope_ta_node/artifacts/

#veriscope testnet
TRUST_ANCHOR_MANAGER_CONTRACT_ADDRESS="0x........06"
TRUST_ANCHOR_STORAGE_CONTRACT_ADDRESS="0x........66"
TRUST_ANCHOR_EXTRA_DATA_GENERIC_CONTRACT_ADDRESS="0x.......4c"
TRUST_ANCHOR_EXTRA_DATA_UNIQUE_CONTRACT_ADDRESS="0x........a8"

#redis
REDIS_URI=redis://127.0.0.1:6379
LOG_LEVEL=info

SIGN_MESSAGE="VERISCOPE"
Do not include "0x" prefix in TRUST_ANCHOR_PK

2) Is your trust anchor account loaded in the web-app the same as in veriscope_ta_node/.env?

When running Step 2 of the installation script (Nethermind), the trust anchor account in .env is overwritten. By refreshing the Load TA Account in the web-app, your trust anchor account in the veriscope_ta_node/.env will be loaded in the web-app.

3) Is Nethermind running? Is your Nethermind Node in fedstats? And has it completed syncing?

In order to receive blockchain events or post transactions, your Nethermind client must be running. You can confirm this by

sudo systemctl status nethermind
 ● nethermind.service - Nethermind Ethereum Daemon
      Loaded: loaded (/etc/systemd/system/nethermind.service; disabled; vendor p>
      Active: active (running) since Thu 2021-11-25 21:25:19 UTC; 1 weeks 0 days>
    Main PID: 1419555 (Nethermind.Runn)
       Tasks: 72 (limit: 4631)
      Memory: 1.2G
      CGroup: /system.slice/nethermind.service
              └─1419555 /opt/nm/Nethermind.Runner -c /opt/nm/config.cfg

 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: eth_blockNumber          >
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: eth_chainId              >
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: eth_getLogs              >
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: ------------------------->
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: TOTAL                    >
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: ------------------------->
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]:
 Dec 03 19:59:50 pcf Nethermind.Runner[1419555]: 2021-12-03 19:59:50.0323|>
 Dec 03 19:59:54 pcf Nethermind.Runner[1419555]: 2021-12-03 19:59:54.0361|>
 Dec 03 19:59:54 pcf Nethermind.Runner[1419555]: 2021-12-03 19:59:54.0361|>
 Dec 03 19:59:58 pcf Nethermind.Runner[1419555]: 2021-12-03 19:59:58.0401|>
 Dec 03 19:59:58 pcf Nethermind.Runner[1419555]: 2021-

The service should show as active.

To confirm your web-app, http-api and (synched) Nethermind Node are all connected, you should be able to fetch account balance in the web-app.

4) How can I check Nethermind’s liveness?

In the Nethermind directory you can find config.cfg where there are a number of custom configurations you can set. For example Health checks.

 $ pwd
 /opt/nm
 $ tree -L 1
 .
 ├── Data
 ├── NLog.config
 ├── Nethermind.Cli
 ├── Nethermind.Launcher
 ├── Nethermind.Runner
 ├── VaspTestnet.json
 ├── config.cfg
 ├── git-hash
 ├── keystore
 ├── logs
 ├── nethermind_db
 ├── plugins
 └── static-nodes.json

Open the config.cfg and add the following:

  "HealthChecks": {
    "Enabled": true,
    "WebhooksEnabled": true,
    "UIEnabled": true,
    "Slug": "/api/health",
    "MaxIntervalWithoutProcessedBlock ": 15,
    "MaxIntervalWithoutProducedBlock": 45
  }
The Slug parameter /api/health

Restart Nethermind and try the following. It should show as status Healthy.

 $ curl localhost:8545/api/health
 {"status":"Healthy","totalDuration":"00:00:00.0034157","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network. Peers: 3.","duration":"00:00:00.0030673","status":"Healthy","tags":[]}}}

For more information, see Nethermind’s documentation on Node Health.

5) Logging

Both the web-app and NodeJS logs to files in the following directories:

  • webapp: /opt/veriscope/veriscope_ta_dashboard/storage/logs

$ pwd
/opt/veriscope/veriscope_ta_dashboard/storage/logs
$ ls
laravel.log
  • nodejs: /opt/veriscope/veriscope_ta_node/logs

$ pwd
/opt/veriscope/veriscope_ta_node/logs
$ ls
blockchain-data.combined.log  http-api.error.log
blockchain-data.error.log     shyft-template-helper.combined.log
http-api.combined.log         shyft-template-helper.error.log

6) 503 when loading blockchain data

If when loading any of the blockchain data like so

$ node -e 'require("./blockchain-data").getAllAttestations()'

…​you may notice 503 errors in the logs. 503 is returned when the WEBHOOK_CLIENT_SECRET in both .env files may not be set. If you need to recreate the secret you can do so via the set-up script, step 10.

10) Regenerate webhook secret

This will overwrite WEBHOOK_CLIENT_SECRET in both .env files for veriscope_ta_dashboard and veriscope_ta_node.

Postman Collection

Why I can’t get any response?

You haven’t imported the environment file or you’ve imported it but haven’t selected it from the dropdown menu.

How can I debug a request or find the used URL?

Open the Postman’s console to find requests' parameters and URL.

Where can I learn more about InterVASP Messaging Standard 101 (IVMS101)

IVMS101 (the interVASP Messaging Standard) is an internationally recognized standard that helps with language encodings, numeric identification systems, phonetic name pronunciations, and standardized country codes (ISO 3166). For general information about IVMS, please visit InterVASP.org.