Skip to content

Latest commit

 

History

History
73 lines (48 loc) · 3.04 KB

README.md

File metadata and controls

73 lines (48 loc) · 3.04 KB

Consumption Tracker

Overview

The program is designed to fetch weight utilization data from a predefined set of parachains. The obtained weight information is then stored in the out directory as multiple CSV files.

Output Structure

Each parachain has its own dedicated output file, and these files are updated every time a new block is finalized and the weight consumption data is successfully queried.

Data structure

The data stored is the 2D weight consumption per each dispatch class. The data is stored in the CSV file within the following sequence:

block_number timestamp normal_dispatch_ref_time operational_dispatch_ref_time mandatory_dispatch_ref_time normal_proof_size operational_proof_size mandatory_proof_size
... ... ... ... ... ... ... ...

The percentages themselves are stored by representing them as decimal numbers; for example, 50.5% is stored as 0.505 with a precision of three decimals.

Building & Running

To compile the Corespace Weigher project run the following command from the root of the repo:

cargo build --release

This will output binaries: tracker and server

The tracker binary is responsible for tracking the actual consumption data of parachains. This program will read the parachains.json file to obtain the list of parachains for which it will track consumption data by listening to the latest blocks from the specified RPC nodes.

The server binary provides a web interface that can be used for registering a parachain for consumption tracking, as well as for querying all the consumption data.

Watchdog 🐕

WebSocket connections can be closed due to underlying networking issues. In such cases, the tracking of parachain data would stop. For this reason, a script called 'watchdog' is introduced to ensure the tracker attempts to create a new connection whenever the current one is broken.

./scripts/watchdog.sh

Web API

Registering a parachain

A basic example of registering a parachain:

curl -X POST http://127.0.0.1:8000/register_para -H "Content-Type: application/json" -d '{
    "para": ["Polkadot", 2000]                                                 
}'

Querying consumption data

A basic example of querying the consumption of a parachain with the paraID 2000 that is part of the Polkadot network:

curl http://127.0.0.1:8000/consumption/polkadot/2000

Local development

For local development, you can run the entire suite of tests using the command below. It's important to run tests sequentially as some of them depend on shared mock state. This approach ensures that each test runs in isolation without interference from others.

cargo test -- --test-threads=1