-
Notifications
You must be signed in to change notification settings - Fork 30
Add garlic64 and garlic32 encoding in py-multiaddr #96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- Added the general test-suite for garlic64 in test_protocols.py
- Added the general test-suite in test_protocols.py - Added the garlic32 addrs test cases in test_multiaddr.py
Added the newsfragment file here also. |
@lla-dane : Great, thank you so much Abhinav. Appreciate your efforts. We plan to test this important addition in some of the py-libp2p examples (locally) before we do the final review + merge. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ APPROVED - Excellent Implementation
Both garlic64 and garlic32 protocols are fully implemented and working correctly.
Key Findings:
- ✅ Garlic64: Perfect match with Go reference implementation
- ✅ Garlic32: Perfect match with Go reference implementation
- ✅ Protocol Registration: Correct codes (446, 447)
- ✅ Test Coverage: Comprehensive (291 tests passing)
- ✅ Go Compatibility: Exact algorithmic match
Implementation Quality:
- Custom Base64 encoding with characters (garlic64)
- Base32 encoding with proper validation (garlic32)
- Excellent error handling and edge case coverage
- Production-ready code with proper documentation
Ready for merge! 🚀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ APPROVED - Excellent Implementation
Both garlic64 and garlic32 protocols are fully implemented and working correctly.
Key Findings:
- ✅ Garlic64: Perfect match with Go reference implementation
- ✅ Garlic32: Perfect match with Go reference implementation
- ✅ Protocol Registration: Correct codes (446, 447)
- ✅ Test Coverage: Comprehensive (291 tests passing)
- ✅ Go Compatibility: Exact algorithmic match
Implementation Quality:
- Custom Base64 encoding with dash-tilde characters (garlic64)
- Base32 encoding with proper validation (garlic32)
- Excellent error handling and edge case coverage
- Production-ready code with proper documentation
Ready for merge! 🚀
📄 I2P Usage in libp2p Projects - Research SummaryBased on online research, here's what I found about libp2p projects that use I2P: ❌ Limited Real-World UsageCurrent Status:
🔍 Specific Findings:1. js-libp2p-i2p Project:
2. IPFS I2P Discussions:
3. Community Interest:
🎯 Why Limited Adoption?Technical Challenges:
Ecosystem Factors:
🚀 Future PotentialEmerging Interest:
📊 Current RealityProduction Usage:
SummaryWhile the technical capability exists (as demonstrated by the garlic64/garlic32 protocol support we just reviewed), real-world libp2p projects using I2P are extremely rare. The integration is more theoretical than practical at this point. This research was conducted to understand the current state of I2P adoption in libp2p projects and provide context for the garlic64/garlic32 protocol implementation. |
- Combined garlic64/garlic32 tests with ipcidr tests - Updated imports to include all required codecs - Maintained all test functionality from both branches
Hi @lla-dane thanks for your PR. /home/luca/Informatica/Learning/PNL_Launchpad_Curriculum/Libp2p/py-multiaddr/
├── docs/
│ ├── examples.rst # Main examples documentation
│ ├── index.rst # Main documentation index
│ └── _build/html/ # Built HTML documentation
└── examples/
├── dns/
│ └── dns_examples.py # DNS resolution examples
├── dnsaddr/
│ └── dnsaddr.py # DNSADDR examples
├── quic/
│ └── simple_quic_usage.py # QUIC protocol examples
├── thin_waist/
│ └── thin_waist_example.py # Thin waist address examples
└── decapsulate/
└── decapsulate_example.py # Decapsulate examples run Same for |
Will do this in a coming PR. |
@lla-dane : Great, thanks Abhinav. Doing a final review + merge. The PR looks great, overall. Appreciate your efforts. |
Tracks: multiformats/multiaddr#181
WIP PR implementing garlic64 and garlic32 codec support in py-multiaddr.
Garlic64 go implementation:
Garlic-32 go implementation: