Background
The original ic-py development team has ceased maintenance of the project. Having maintained a close relationship with the former team—we were jointly supported by the same incubator, now disbanded—I have secured consent from the core developers and the repository owner to continue development. Special thanks to @marc0olo and @eduard-galindo for their ongoing support.
Future maintenance of ic-py will primarily be conducted in my repository. Updates will be submitted to the main repository via pull requests and subsequently released on PyPI.
Current Issues and Approach
Based on feedback gathered from GitHub issues and forum discussions, I have identified and structured existing issues into clear milestones prioritized by urgency and complexity. My immediate focus is addressing known security vulnerabilities and simpler tasks with fewer dependencies or blockers.
Related Discussions:
Roadmap & Milestones
Guiding Principles
- Resolve all known security vulnerabilities.
- Modernize and fully support the Candid type system.
- Maintain alignment with agent-rs’s feature set and release schedule.
Milestone 1
Completed
-
Endpoint upgrade
- Issue: ic-py was pointing at legacy endpoints and needed to switch to v3
- References:
- Solution: Updated ic-py’s default endpoints to the latest BN v3 addresses and established maintenance tracking for future roadmap changes
-
Timeouts & error classification
Milestone 2
Completed
- IC certificate verification
- Issue:
request_status_rawandrequest_status_raw_asyncdid not verify certificates, allowing a malicious node to tamper with update responses - References:
- DFINITY forum: Unmaintained IC agents containing vulnerabilities
- GitHub issue #109
- PR #56 • issue #76
- Solution:
- Mirrored agent-rs’s certificate-checking logic (agent-rs implementation)
- Resolved Python–BLS compatibility by bridging Rust BLS crate via FFI
Certificate verification enabled by default in update_rawandupdate_raw_asyncmethods
Certificate verification implemented in pollandpoll_asyncmethods
- Issue:
Milestone 3
Completed
- Candid type-system enhancements
- Issue: Missing support for the latest Candid features (e.g. composite queries, new primitives)
- References:
- Solution:
Migrated from Python ANTLR4 implementation to Rust-based candid-parsercrate for significant performance improvements (multiple times faster parsing speed)
Implemented comprehensive DIDLoader interface with support for recursive type definitions and service interface parsing
Added comprehensive test suite (test_candid_comprehensive.py,test_did_loader_comprehensive.py,test_parser.py)
Full support for all Candid primitives, composite types (Record, Variant, Vec, Opt), and recursive types
Milestone 4
Completed
-
Expanded API surface
High-level wrappers for ICP Ledger (ledger.py)
Complete NNS Governance interface implementation (governance.py- 1510 lines)
Cycles Wallet operations (cycles_wallet.py)
Canister Management interface (management.py)
Comprehensive example code library (ledger, governance, cycles_wallet, management, simple_counter examples)
High-level wrappers for ICRC-compliant ledgers (ckBTC, ckETH, ckUSDc, etc.)
Out-of-the-box helpers for interacting with Bitcoin, Ethereum, and other canisters
-
Code optimization
Simplified canister.pyfrom 1322 lines to ~112 lines (90%+ reduction)
Improved code structure and maintainability
Better error handling and dynamic method binding support
Milestone 5 (Next Release)
-
Automatically fetch the .did file from the canister (if available)
-
Replica-signed queries
- Issue: Query calls currently do not support replica-signed responses for enhanced security
-
Certificate Verification Security Enhancement in Low-level Functions
- Issue: The
request_status_rawandrequest_status_raw_asyncmethods currently return certificates but do not verify them, posing a security risk
- Issue: The
-
HTTP Endpoint Update to Latest API
- Issue: Query and read_state operations are still using v2 endpoints and need to be updated to the latest API version
- References:
Other long-standing bugs
-
Dynamic HTTP provider & routing
- Implement latency-based, adaptive routing between boundary nodes
- Support more flexible selection of endpoints at runtime
-
Ongoing alignment & optimization
- Keep pace with agent-rs’s feature roadmap
- Targeted performance tuning, stricter type checks
- Define additional milestones once Milestones 1–3 are complete
Feel free to suggest improvements or features here. Your feedback will help refine the roadmap and guide ongoing development.
Let’s collaborate to enhance ic-py and empower more developers to build reliable ICP applications!