Effective amendment monitoring is crucial for node operators, validators, exchanges, and any entity depending on XRPL. Proper monitoring allows detection of imminent changes, planning of updates, and quick response to problems.
In this section, we explore the available tools for monitoring amendment status: the feature RPC command, interpretation of status fields, blockchain explorers, and advanced techniques for tracking an amendment's progression across the network.
These tools are indispensable for maintaining a robust and responsive XRPL infrastructure.
RPC feature Command
Basic Usage
The feature command is the primary tool for querying amendment status on a rippled node.
Syntax:
# List all amendmentsrippledfeature# Query a specific amendmentrippledfeature<amendment_hash># Enable voting (admin only)rippledfeature<amendment_hash>accept# Disable voting (admin only)rippledfeature<amendment_hash>reject
Example for Subscriptions:
Response Format
Complete response:
Field Interpretation
count
Type: number
Meaning: Number of UNL validators currently voting for the amendment.
Example: "count": 28 means 28 validators have included this amendment in their recent validations.
Usage: Compare with threshold to know if the 80% threshold is exceeded (count > threshold).
enabled
Type: boolean
Meaning: Is the amendment activated on the network?
true: The amendment is activated and its rules are applied
false: The amendment is not yet activated
Example: "enabled": false means Subscriptions is not yet active.
Usage: Determines if new features are available.
majority
Type: number (XRPL Time) or null
Meaning: Timestamp (in seconds since 2000-01-01 00:00:00 UTC) when the amendment first exceeded the 80% threshold (count > threshold).
Present: The amendment exceeded the threshold and is in stability period
null: The amendment has not exceeded the threshold
Example: "majority": 806021535
Human date conversion:
Usage: Calculate when the amendment will be activated (majority + 2 weeks).
name
Type: string
Meaning: Human-readable name of the amendment.
Example: "name": "Subscriptions"
Usage: Human identification of the amendment (the hash is hard to memorize).
supported
Type: boolean
Meaning: Does this node support the amendment (does it have the implementation code)?
true: The node can apply the amendment rules
false: The node does not recognize or does not support the amendment
Example: "supported": true
Usage: Know if the node is up to date. If supported: false and the amendment has a majority, urgent upgrade is needed.
threshold
Type: number
Meaning: Absolute number calculated as floor(validations * 0.8). To reach majority, count > threshold (strictly greater) is required.
Calculation: threshold = floor(validations * 0.8)
Example: "threshold": 28 with 35 validations
To exceed 80%: count > 28, so minimum 29 votes required
Actual percentage: 29/35 = 82.9% > 80% ✓
Usage: Know how many additional votes are needed to reach majority (count must be > threshold).
validations
Type: number
Meaning: Total number of trusted validators (UNL) for the node.
Example: "validations": 35
Usage: Calculate current support percentage: (count / validations) * 100
Activation ETA Calculation
Formula
When an amendment has a majority, you can calculate when it will be activated:
In seconds:
Calculation Script
JavaScript:
Python:
Automated Monitoring
Continuous monitoring script:
Ledger Explorers
XRPL Explorers
Several web explorers allow visualizing amendment status:
1. Bithomp Explorer
URL: https://bithomp.com/amendments
Features:
List of all known amendments
Real-time status (enabled, majority, voting)
Vote progression graphs
Historical timeline
Example display:
2. XRPL.org Amendment Tracker
URL: https://livenet.xrpl.org/amendments
Features:
Overview of all amendments
Filters by status (enabled, voting, obsolete)
Links to XLS documentation
Activation history
3. XRPScan
URL: https://xrpscan.com/amendments
Features:
Graphical visualization of support
Email notifications for status changes
API for dashboard integration
Pseudo-transaction Visualization
EnableAmendment pseudo-transactions can be visualized in explorers:
Example of tfGotMajority transaction:
Search in Bithomp:
Allows viewing all pseudo-transactions in the ledger.
API and Integration
WebSocket Streaming
Monitor amendment changes in real-time via WebSocket:
# HELP rippled_amendment_votes Number of votes for an amendment
# TYPE rippled_amendment_votes gauge
rippled_amendment_votes{name="Subscriptions",hash="7B73B9E8..."} 28
# HELP rippled_amendment_threshold Vote threshold for majority
# TYPE rippled_amendment_threshold gauge
rippled_amendment_threshold{name="Subscriptions"} 28
# HELP rippled_amendment_enabled Whether amendment is enabled
# TYPE rippled_amendment_enabled gauge
rippled_amendment_enabled{name="Subscriptions"} 0