> For the complete documentation index, see [llms.txt](https://docs.xrpl-commons.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xrpl-commons.org/core-dev-bootcamp/module10/homework1.md).

# Homework 1: Amendment Status Analysis

[← Back to Amendments I: Lifecycle and Core Protocol Impact](/core-dev-bootcamp.md)

***

### Objective

Analyze in detail the status of an amendment on the XRPL Mainnet, interpret the response fields of the `feature` command, calculate the activation timeline, and assess the protocol impact of the amendment.

**Format**: Written report (Markdown or PDF) with screenshots and code used

***

### Task

Connect to a public XRPL node, choose an amendment, analyze its complete status, and document its impact on the protocol.

#### Requirements

1. **Connection and Discovery**
   * Connect to a public XRPL node (`https://xrplcluster.com/` or `https://s1.ripple.com:51234/`)
   * List all amendments with `feature` (HTTP or CLI)
   * Count how many are enabled, in majority, and voting
   * Document the chosen node and its `server_info` response
2. **Amendment Selection**
   * Choose an amendment **not yet activated** (`enabled: false`) but with votes (`count > 0`)
   * If all are activated on Mainnet, use Testnet/Devnet
   * Query the specific amendment: `rippled feature <HASH>`
   * Capture the complete JSON response
3. **Field Analysis**
   * Interpret each response field:
     * `name`: Name and functionality (search for XLS if available)
     * `count`: Number of validators voting for
     * `validations`: Total number of trusted validators
     * `threshold`: Required threshold (floor(validations \* 0.8))
     * Calculate percentage: `(count / validations) * 100`
     * Verify if `count > threshold` (more than 80%)
     * `majority`: Timestamp if threshold exceeded (convert to UTC date)
     * `enabled`: Is the amendment activated?
     * `supported`: Does the node support this amendment?
4. **Timeline Calculation**
   * If the amendment has a `majority`, calculate the activation date:

     ```python
     from datetime import datetime, timedelta

     def calculate_activation(majority):
         ripple_epoch = datetime(2000, 1, 1)
         majority_dt = ripple_epoch + timedelta(seconds=majority)
         activation_dt = majority_dt + timedelta(weeks=2)
         return {
             'majority_date': majority_dt.isoformat(),
             'activation_date': activation_dt.isoformat()
         }
     ```
   * Create a visual timeline showing: Code Release → Vote → Majority → Activation
5. **Protocol Impact**
   * Search for amendment documentation (XLS, GitHub, XRPL.org)
   * Document:
     * New transaction types introduced
     * New ledger entry types
     * Modifications to consensus rules
     * Impact on applications (wallets, exchanges)
   * Assess risks:
     * Risk for non-updated nodes
     * Dependencies with other amendments
     * Contingency plans if bug discovered post-activation
6. **Pseudo-transaction Search** (Optional)
   * If the amendment has a `majority`, search for the `EnableAmendment` transaction with flag `tfGotMajority` (65536)
   * Use an explorer (Bithomp, XRPScan) or the `ledger` API with the estimated ledger number
   * Document: transaction hash, ledger, flags

***

### Deliverable

Your report must include:

* **Connection**:
  * URL of node used
  * Amendment statistics (total, enabled, in majority, voting)
  * Screenshot of `server_info`
* **Amendment Analysis**:
  * Name and hash of chosen amendment
  * Complete JSON of `feature` response
  * Interpretation table of all fields
  * Support percentage calculation
* **Timeline**:
  * Majority date (if applicable)
  * Expected activation date (if applicable)
  * Complete visual timeline
  * Python/JavaScript code used for calculations
* **Protocol Impact**:
  * Transaction types added
  * Ledger entry types added
  * Rule modifications
  * Impact on applications
  * Risk assessment (1 page)
* **Pseudo-transaction** (optional):
  * Hash and ledger of `tfGotMajority` transaction
  * Link to explorer
* **Appendices**:
  * Complete source code used
  * Screenshots
  * References (XLS links, documentation)

***

### Tips

* **Public nodes**: `wss://xrplcluster.com/` or `wss://s1.ripple.com/`
* **Explorers**: <https://bithomp.com>, <https://xrpscan.com>
* **Documentation**: <https://xrpl.org/amendments.html>
* **XLS Standards**: <https://github.com/XRPLF/XRPL-Standards>

**Useful commands**:

```bash
# Via CLI
rippled feature
rippled feature <AMENDMENT_HASH>

# Via HTTP API
curl -X POST https://xrplcluster.com/ \
  -H "Content-Type: application/json" \
  -d '{"method": "feature", "params": [{}]}'
```

**Libraries**:

* JavaScript: `xrpl.js`
* Python: `xrpl-py`

### Additional Resources

* **XRPL Amendments**: <https://xrpl.org/docs/concepts/networks-and-servers/amendments>
* **Known Amendments**: <https://xrpl.org/resources/known-amendments>
* **EnableAmendment**: <https://xrpl.org/docs/references/protocol/transactions/pseudo-transaction-types/enableamendment>

***

Good luck! This exercise will give you a thorough practical understanding of the XRPL amendment system.
