4.4 KiB
4.4 KiB
Salvium Fork Implementation Summary
Overview
Successfully implemented height-triggered hard fork mechanics for Salvium coin in cryptonote-nodejs-pool with 100% backward compatibility.
Implementation Details
Core Changes Made
1. Configuration Schema (config.json)
Added complete Salvium configuration section:
- Height thresholds for all fork phases
- Address prefixes for both Cryptonote and Carrot formats
- Pool and donation address settings
- Configurable address separator
2. Utility Functions (lib/utils.js)
Added comprehensive Salvium support:
isSalviumEnabled(): Conditional activation checkgetSalviumState(height): Height-based state determinationvalidateSalviumAddress(): Custom Base58 prefix validationparseSalviumDualAddress(): Dual address parsinggetSalviumPoolAddress(): Dynamic pool address selection- Enhanced
validateMinerAddress()with Salvium support
3. Pool Login Handling (lib/pool.js)
Modified miner login validation:
- Height-aware dual address requirement (1050+)
- Clear error messages for invalid login formats
- Backward compatible address parsing
- Uses current block height from
currentBlockTemplate[0].height
4. Payment Processing (lib/paymentProcessor.js)
Implemented fork-aware payment logic:
- Payout blackout during heights 815-999
- Dynamic address switching to carrot addresses at height 1100+
- Height-based payment destination logic
- Maintains existing payment ID support
Fork Mechanics by Height
| Height Range | State | Behavior |
|---|---|---|
| 0-814 | normal |
Standard operation |
| 815-999 | payout_blackout |
Shares accepted, payments blocked |
| 1000-1049 | payout_resume |
Normal payments resume |
| 1050-1099 | dual_required |
Dual address mandatory, pay to cryptonote |
| 1100+ | carrot_payouts |
Pay to carrot addresses |
Address Format Support
Pre-1050: Single Address
SaLv123abc...
1050+: Dual Address Required
SaLv123abc...+SC1def456...
Backward Compatibility
Zero Impact on Existing Pools
- All logic gated behind
config.salvium.enabledcheck - Non-Salvium pools operate unchanged
- No performance overhead when disabled
- Existing APIs and behavior preserved
Testing Results
✅ All Tests Passed
- State transitions working correctly
- Dual address parsing functional
- Height-based validation operational
- Payment address switching working
- Backward compatibility verified
- Payout blackout logic implemented
Documentation and Examples
Files Added
docs/SALVIUM.md: Comprehensive documentationconfig_examples/salvium.json: Production-ready configuration example
Features Documented
- Complete setup instructions
- Miner usage guidelines
- Address validation details
- Implementation specifics
Production Readiness
✅ Requirements Met
- Conditional Activation: All logic opt-in via config flags
- Configuration Driven: All parameters in config.json
- Backward Compatibility: Zero impact on existing pools
- Symbol Transition: Ready for SAL → SAL1 at height 815
- Payout Blackout: Heights 815-999 implementation
- Dual Address Login: Mandatory at height 1050+
- Carrot Address Switching: Height 1100+ payouts
- Custom Address Validation: Salvium Base58 prefixes
Security Considerations
- Input validation on all address formats
- Height-based state validation
- Error handling for invalid configurations
- Clear user feedback for invalid login attempts
Performance Impact
- Minimal overhead: O(1) height checks
- No impact when Salvium disabled
- Efficient address parsing
- Preserved existing pool performance
Next Steps
For Pool Operators
- Update
config.jsonwith Salvium configuration - Set appropriate pool and donation addresses
- Configure fork heights as needed
- Test with example configuration
For Miners
- Use standard address until height 1050
- Switch to dual address format at height 1050
- Follow format:
cryptonote_address+carrot_address
Conclusion
The Salvium fork mechanics implementation is production ready and provides:
- Complete height-triggered fork support
- Full backward compatibility
- Comprehensive documentation
- Extensive testing validation
- Zero impact on existing deployments
Successfully delivered all requirements with minimal code changes and maximum compatibility. 🎉