A probe scheduler is started in each region and takes care of orchestrating, spawning and executing all probes in this region. For each endpoint, multiple independent probes are started. All the measurements are sent by the probes to a single raw BigQuery Database.
Each endpoint needs to serve the default JSON-RPC scheme provided by the ethereum foundation (https://github.com/ethereum/execution-apis). In general we can say that each EVM compatible chain can be supported. The probe scheduler and the probes are implemented in Rust.
In the BigQuery Database there are multiple queries in place which are getting executed once per day to calculate the data for the previous day. These transformation queries are creating several intermediate tables and transforming the data into their
The final form of the data is queried by Looker Studio and enriched by metadata to produce the final tables.
This probe measures the time it takes to query the actual balance of a wallet for a given erc20 token. The wallet and the token are predefined per chain.
The measurement starts after the provider is initialized and stops after the request finished and the result is parsed in the representative data types.
Requests are performed using ethers.rs.
For websocket: initialization of the connection is not part of the measurement.
This probe measures the time it takes to query the actual balance of a wallet for the native chain token. The wallet is predefined per chain.
The measurement starts after the provider is initialized and stops after the request finished and the result is parsed in the representative data types.
Requests are performed using ethers.rs.
For websocket: initialization of the connection is not part of the measurement.
This probe measures the time it takes to query the actual block number of the chain. The wallet is predefined per chain.
The measurement starts after the provider is initialized and stops after the request finished and the result is parsed in the representative data types.
Requests are performed using ethers.rs.
For websocket: initialization of the connection is not part of the measurement.
This probe performs a http request towards the RPC endpoint with an empty body.
The measurement starts after the client is initialized and stops after we receive a response from the server.
Requests are performed using reqwest.
This probe performs a websocket request towards the RPC endpoint. It queries the client version with the following request body:
{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}
The measurement starts after the client is initialized and stops after we receive a response from the server.
Requests are performed using tokio-tungstenite.
All probes in a region are executed in parallel. Each probe subscribes to receive new blocks from the provider and waits until it receives 10 blocks. This probe measures the timestamp at which each block was received by the probe.
This probe only works for websocket connections.
Requests are performed using ethers.rs.
All probes in a region are executed in parallel. Each probe subscribes to receive new mempool transactions from the provider for the next 30 seconds. This probe measures the timestamp at which each transaction was received by the probe.
This probe only works for websocket connections.
Requests are performed using ethers.rs.
For this probe, we are querying the (actual_block_number * 0.99) and measure the time it takes to query the balance of a wallet for a given erc20 token. The wallet and the token are predefined per chain.
The measurement starts after the provider is initialized and stops after the request finished and the result is parsed in the representative data types.
Requests are performed using ethers.rs.
For websocket: initialization of the connection is not part of the measurement.