Core Protocol Impact
Introduction
Modification of Consensus Rules
The Rules Object
class Rules {
private:
// Set of all enabled amendments
std::set<uint256> enabledAmendments_;
// Pre-calculation of commonly used rules
bool fixQualityUpperBound_;
bool fixTrustLinesToSelf_;
bool flowCross_;
bool ownerPaysFee_;
// ... etc for each impacting amendment
public:
// Check if an amendment is enabled
bool enabled(uint256 const& amendment) const {
return enabledAmendments_.count(amendment) > 0;
}
// Quick accessors for specific rules
bool fixQualityUpperBound() const { return fixQualityUpperBound_; }
bool flowCross() const { return flowCross_; }
// ... etc
};Impact of Subscriptions on Rules
Changes in Transaction Validation
Validation Phases
Backward Compatibility
Impact on Consensus
LedgerHash Calculation
Consensus on Rules
Management of Unsupported Amendments
Detection of Unsupported Amendment
Amendment Blocked Mode
Prior Warnings
Forward Compatibility: Anticipating Changes
Unsupported vs Obsolete
Design for Forward Compatibility
Backward Compatibility: Supporting Old Ledgers
Historical Rules
Retired Amendments
Special Cases and Edge Cases
Simultaneous Activation of Multiple Amendments
Conflicting Amendments
Network Partition During Activation
Migration Strategies
Progressive Deployment
Read-Only Mode Nodes
Impact on Third-Party Applications
Wallets and Exchanges
APIs and Libraries
Last updated

