โš ๏ธHardware and Status Description

Hardware minimum recommendation

We encourage participants to prepare the system as below:

  • Node: 2 CPUs, 2GB Ram, 40GB SSD. 5Gbps Egress network bandwidth.

*A Massbit node requires a blockchain data source node (ETH or DOT full or archive node) to be created.

  • Gateway: 4 CPUs, 4GB Ram, 80GB SSD. 5Gbps Egress network bandwidth.

Status Description

In the dashboard, there are many statuses to show the status of nodes and gateways operating in the system of MassBit Route.

  • After a new node/gateway is created on the web Portal and the installation script is successfully executed on your server, the node/gateway status changes from โ€œCreatedโ€ to โ€œInstalled.โ€

  • After all of the software required is installed, the new Node/Gateway will send a request to Fisherman Scheduler for performance check. Depend on the zone of the new node, the Scheduler will forward performance check request to the workers in the same zone to perform the checks. The node's status will be shown as "Verifying".

  • If all of the performance checks passes on the new node/gateway, the status is shown as "Verified"

  • Once a node/gateway is approved, the node status shows as โ€œApproved.โ€

  • Approved nodes are qualified for staking with unofficial Massbit tokens. You can obtain testnet tokens from the faucet channel on Massbit Route Discord

  • After nodes are selected to participate in Testnet, the reward will be calculated based on the time the nodes maintain โ€œStakedโ€ status in the Massbit network.

  • Nodes and gateways maintain โ€œStakedโ€ status while it correctly handles blockchain API calls to the blockchain data sources.

  • If a node/gateway experience issues and results in a performance downgrade or stop responding, a Fisherman component will flag the node and the status changes to โ€œReported.โ€

What performance criteria is required for a node/gateway to be "Verified" and remain "Staked"?

  • Fisherman worker is a component that keeps track of whether a node or gateway is qualified to join the MassBit network, and whether the node/gateway can remain with โ€œStakedโ€ status and serves dAPI traffic.

  • There are several workers placed in different geolocation in each zones.

  • What performance checks are performed by Fisherman workers?

  • Round trip time (On both Massbit Node and Gateway)

    • Check if the node is reachable, and the Route Trip Time to the node/gateway is low

    curl --location --request GET 'https://$PROVIDER_IP/_rtt' \
    --header 'Content-Type: application/json'
    • Worker configuration

    
    "response_duration": 500,     #RTT must be below this threshold in ms
    "success_percent": 50,        #50% of the request must be successful
    "number_for_decide": 5        #number of request to measure RTT

  • Benchmark (On both Massbit Node and Gateway)

    • Check if the node/gateway can respond correctly and quickly

    • Worker configuration

    "benchmark_duration": 15000      #total benchmark duration is 15 secs
    "benchmark_rate": 10             #number of request/sec sent to node/gateway
    "response_threshold": 500        
    "judge_histogram_percentile": 95 #95% of the requests sent must be below 500ms latency
  • Latest Block (Only for Massbit Node)

    • Check if the node can return the latest block data and whether the latest block returned is correct

      Massbit node with Ethereum datasource

      curl --location --request POST 'https://$PROVIDER_IP' \
      --header 'x-api-key: $PROVIDER_API' \
      --header 'Content-Type: application/json' \
      --header 'Host: $PROVIDER_ID.node.mbr.massbitroute.net' \
      --data-raw '{
          "jsonrpc": "2.0",
          "method": "eth_getBlockByNumber",
          "params": [
              "latest",
              false
          ],
          "id": 1
      }'
      • Verify parameter

      "request_timeout": 5000  #request timeout in ms
      "late_duration":  1200   #number of blocks allowed to be behind

      Massbit Node with Polkadot datasource

      curl --location --request POST 'https://$PROVIDER_IP' \
      --header 'x-api-key: $PROVIDER_API' \
      --header 'Content-Type: application/json' \
      --header 'Host: $PROVIDER_ID.node.mbr.massbitroute.net' \
      --data-raw '{
          "jsonrpc": "2.0",
          "method": "chain_getBlock",
          "params": [],
          "id": 1
      }'
      • Verify parameter

      "request_timeout": 5000    #request timeout in ms
      "max_block_missing": 200   #number of blocks allowed to be behind

Last updated