Contractless/docs/OTHER_TOOLS.md

5.1 KiB

Other Tools

This page covers additional Contractless CLI tools that do not fit into the wallet, transaction, mempool, validation, storage, or fee-specific guides.

On Windows, add .exe to each command name.

When a tool asks for a wallet path, press <Tab> to search and auto-complete files and folders.

average_block_time_checker

Calculates the average time between block timestamps for a local range of block files.

This is a local file inspection tool. It does not contact a node. It reads block files from the directory you provide, extracts the timestamp from each block file, sorts those timestamps, and calculates the average difference between consecutive timestamps.

Usage:

./average_block_time_checker <start_block> <stop_block> <directory>

Example:

./average_block_time_checker 30000 35000 ./blocks/testnet

Expected output:

The average time between timestamps is 15.21 seconds.

If the range does not contain enough block files to compare timestamps, the tool prints:

Not enough data to calculate an average time difference.

Use this for local difficulty/block-timing checks, especially when reviewing how close a range of blocks stayed to the intended block target.

lookup_difficulty

Asks a configured node for the current network difficulty.

Usage:

./lookup_difficulty

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

Expected output:

{
  "difficulty": 1806884765625000
}

The tool contacts configured peers and stops at the first peer that returns a readable difficulty response or a text error.

lookup_height

Asks a configured node for its current chain height.

Usage:

./lookup_height

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

Expected output:

{
  "height": 31445
}

This is a quick way to confirm what height a reachable peer reports.

lookup_network_info

Asks a configured node for a compact network status snapshot.

Usage:

./lookup_network_info

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

Example output:

{
  "version": 1,
  "network": "testnet",
  "time": 1783657720,
  "wallet_prefix": "cltc",
  "height": 31445,
  "next_block_difficulty": 1806884765625000,
  "total_block_transactions": 31540,
  "total_mempool_transactions": 2,
  "largest_tx_fee": 100000000
}

Fields:

version

The protocol/network info version returned by the peer.

network

The peer's configured network name, such as testnet or mainnet.

time

The peer's current UTC timestamp as a Unix timestamp.

wallet_prefix

The wallet suffix/prefix used by that network, such as cltc.

height

The peer's current chain height.

next_block_difficulty

The next block difficulty currently reported by the peer.

total_block_transactions

The number of transactions the peer reports from confirmed block data.

total_mempool_transactions

The number of transactions currently in the peer's mempool.

largest_tx_fee

The largest transaction fee currently known from the peer's mempool data. This value is raw atomic units.

lookup_node_time

Asks a configured node for its current UTC time.

Usage:

./lookup_node_time

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

Expected output:

{
  "timestamp": 1783657720,
  "time": "04:28:40 UTC"
}

Use this to confirm that a node is responding and to compare node time against expected UTC time. Correct system time matters for block timestamps and transaction validation.

server_owner_block_ip

Sends a signed request to block an IP address from the server-side connection layer.

This is an administrative tool. It is intended for the node/server owner, not normal wallet users. The request signs the exact IP string with the selected wallet, then sends the signed payload to a configured peer.

Usage:

./server_owner_block_ip <ip>

Example:

./server_owner_block_ip 203.0.113.10

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

The node returns a text response indicating whether the request was accepted or rejected. If no configured peer can be reached, the tool prints:

failed to connect

Use this carefully. Blocking the wrong IP may prevent a valid peer from connecting to the node receiving the request.

server_owner_unblock_ip

Sends a signed request to remove a previously blocked IP address from the server-side connection layer.

This is the administrative counterpart to server_owner_block_ip.

Usage:

./server_owner_unblock_ip <ip>

Example:

./server_owner_unblock_ip 203.0.113.10

Interactive prompts:

Please enter the path to your wallet file:
What is your wallet decryption key?

The node returns a text response indicating whether the request was accepted or rejected. If no configured peer can be reached, the tool prints:

failed to connect