⚠️ Under Construction – Work in Progress
We are actively developing PolkaBind. Expect missing features, breaking changes, and placeholder documentation. Stay tuned for updates as we enhance core functionality.
Project Status
PolkaBind is an evolving library. Current features may change, and new capabilities will be added over time. We encourage community feedback and contributions to help shape the library.
Purpose & Goals
- Purpose: Provide a Rust-based UniFFI library for the Polkadot/Substrate ecosystem so that native iOS, Android, and desktop apps can integrate with Polkadot without custom FFI or manual SCALE encoding.
- Goals:
- Expose essential wallet functions: import existing wallet, derive accounts, query balances, build & sign transfers, submit extrinsics.
- Make Polkadot integration as simple as adding a single package to any Swift or Kotlin project.
- Maintain a single source of truth in Rust, ensuring consistent cryptography and SCALE encoding across all platforms.
- Offer an upgrade path to on-device light-client support via SmolDOT in future releases.
Positioning vs. SubXT & SmolDOT
Library |
Purpose |
Key Differences |
SubXT |
High-level Rust library for Polkadot/Substrate that wraps JSON-RPC calls and SCALE encoding. |
- Designed primarily for Rust backends and CLI tools.
- Requires a remote RPC endpoint (unless built with light-client feature).
- Ergonomic Rust API; not natively consumable by Swift/Kotlin without FFI glue.
|
SmolDOT |
Rust-based, no-std light-client for Polkadot/Substrate; can sync headers, verify finality, and run in-app. |
- Provides a fully trust-minimized client on the device (no external node required).
- Lower-level API—developers handle SCALE decoding and extrinsic construction manually (unless wrapped by SubXT).
- Larger dependency footprint (libp2p, consensus code) when targeting mobile platforms.
|
PolkaBind Lib |
Rust → UniFFI bindings exposing a minimal, wallet-focused Polkadot API for Swift, Kotlin, Python, etc. |
- Wraps SubXT (by default) to expose importWallet, getBalance, buildSignedTransfer, submitExtrinsic, subscribeEvents—all via UniFFI.
- Optional future feature: compile with SmolDOT for on-device light-client support.
- Delivers a single package per target language—no extra FFI or bridging required by app developers.
|
Roadmap
Phase |
Timeline |
Objectives |
Phase 0: Initialization |
Q2 2025 |
- Set up PolkaBind GitHub organization.
- Create initial Rust crate with UniFFI UDL.
- Publish v0.1.0:
importWallet & getBalance (RPC).
|
Phase 1: Core Wallet APIs |
Q3 2025 |
- Implement buildSignedTransfer and submitExtrinsic.
- Expose subscribeEvents (e.g.,
balances.Transfer ) via UDL.
- Publish Swift & Kotlin packages (v0.2.0).
- Work in Progress—APIs may change.
|
Phase 2: SmolDOT Integration |
Q4 2025 |
- Add
--features light-client to compile SubXT with SmolDOT backend.
- Expose on-device finality methods:
syncHeaders() , verifyBlock() .
- Publish v0.3.0: “RPC + Light-Client” universal library.
|
Phase 3: Ecosystem Growth |
2026 |
- Launch documentation portal at polkabind.dev/docs.
- Invite community contributions for staking, governance, parachain support.
- Release v1.0.0: Stable API for production use.
|
Showcase App: SPEEM Mobile (built on PolkaBind) – a reference wallet demonstrating PolkaBind.getBalance(…)
, PolkaBind.transfer(…)
, and more.
See speemapp/speem.
Developer Information
Lead Developer: Wassim Mansouri
“Building a unified, cross-platform Polkadot library—one bound at a time!”