98 lines
2.9 KiB
Markdown
98 lines
2.9 KiB
Markdown
|
|
# Besu Balance Query Script
|
||
|
|
|
||
|
|
Query balances from Besu RPC nodes running on VMID 115-117.
|
||
|
|
|
||
|
|
**Note**: Only RPC nodes (115-117) expose RPC endpoints. Validators (106-110) and sentries (111-114) don't have RPC enabled.
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
```bash
|
||
|
|
npm install ethers
|
||
|
|
```
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
### Basic Usage (with RPC template)
|
||
|
|
|
||
|
|
The script defaults to querying RPC nodes 115-117. It uses a template to generate RPC URLs by substituting `{vmid}` with the VMID:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
RPC_TEMPLATE="http://192.168.11.{vmid}:8545" \
|
||
|
|
node scripts/besu_balances_106_117.js
|
||
|
|
```
|
||
|
|
|
||
|
|
**Note**: The default template is `http://192.168.11.{vmid}:8545` and defaults to VMIDs 115-117 (RPC nodes only).
|
||
|
|
|
||
|
|
### With Custom RPC URLs
|
||
|
|
|
||
|
|
You can also provide explicit RPC URLs (comma-separated):
|
||
|
|
|
||
|
|
```bash
|
||
|
|
RPC_URLS="http://192.168.11.13:8545,http://192.168.11.14:8545,http://192.168.11.15:8545" \
|
||
|
|
node scripts/besu_balances_106_117.js
|
||
|
|
```
|
||
|
|
|
||
|
|
### With Token Addresses
|
||
|
|
|
||
|
|
```bash
|
||
|
|
RPC_TEMPLATE="http://192.168.11.{vmid}:8545" \
|
||
|
|
WETH9_ADDRESS="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" \
|
||
|
|
WETH10_ADDRESS="0xYourWETH10Address" \
|
||
|
|
node scripts/besu_balances_106_117.js
|
||
|
|
```
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
|
||
|
|
- `RPC_TEMPLATE`: Template for RPC URLs with `{vmid}` placeholder (default: `http://192.168.11.{vmid}:8545`)
|
||
|
|
- `RPC_URLS`: Comma-separated list of explicit RPC URLs (overrides template if set)
|
||
|
|
- `VMID_START`: Starting VMID for template (default: `115` - RPC nodes only)
|
||
|
|
- `VMID_END`: Ending VMID for template (default: `117` - RPC nodes only)
|
||
|
|
- `WETH9_ADDRESS`: WETH9 token contract address (default: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`)
|
||
|
|
- `WETH10_ADDRESS`: WETH10 token contract address (optional, skipped if not set)
|
||
|
|
|
||
|
|
## Output
|
||
|
|
|
||
|
|
The script outputs balance information for each RPC endpoint:
|
||
|
|
|
||
|
|
```
|
||
|
|
VMID: 106
|
||
|
|
RPC: http://192.168.11.13:8545
|
||
|
|
chainId: 138
|
||
|
|
block: 12345
|
||
|
|
ETH: 1.5 (wei: 1500000000000000000)
|
||
|
|
WETH9: 0.0 WETH (raw: 0)
|
||
|
|
WETH10: skipped (missing address)
|
||
|
|
---
|
||
|
|
```
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
- Queries native ETH balance
|
||
|
|
- Queries ERC-20 token balances (WETH9, WETH10)
|
||
|
|
- Fetches token decimals and symbol for formatted display
|
||
|
|
- Health checks (chainId, blockNumber)
|
||
|
|
- Concurrent requests (limit: 4)
|
||
|
|
- Request timeout: 15 seconds
|
||
|
|
- Continues on failures, reports errors per endpoint
|
||
|
|
- Exit code: 0 if at least one RPC succeeded, 1 if all failed
|
||
|
|
|
||
|
|
## Container IP Mapping (Reference)
|
||
|
|
|
||
|
|
For the deployed containers, the VMID to IP mapping is:
|
||
|
|
- 106 -> 192.168.11.13 (besu-validator-1)
|
||
|
|
- 107 -> 192.168.11.14 (besu-validator-2)
|
||
|
|
- 108 -> 192.168.11.15 (besu-validator-3)
|
||
|
|
- 109 -> 192.168.11.16 (besu-validator-4)
|
||
|
|
- 110 -> 192.168.11.18 (besu-validator-5)
|
||
|
|
- 111 -> 192.168.11.19 (besu-sentry-2)
|
||
|
|
- 112 -> 192.168.11.20 (besu-sentry-3)
|
||
|
|
- 113 -> 192.168.11.21 (besu-sentry-4)
|
||
|
|
- 114 -> 192.168.11.22 (besu-sentry-5)
|
||
|
|
- 115 -> 192.168.11.23 (besu-rpc-1)
|
||
|
|
- 116 -> 192.168.11.24 (besu-rpc-2)
|
||
|
|
- 117 -> 192.168.11.25 (besu-rpc-3)
|
||
|
|
|
||
|
|
**Note**: Since the IPs don't follow a simple pattern with VMID, it's recommended to use `RPC_URLS`
|
||
|
|
with explicit addresses or create a custom mapping in the script.
|
||
|
|
|