Polkassembly Logo

Create Pencil IconCreate
OpenGov
View All Small Spender

LunoKit — Unified Account Connection Infrastructure for Polkadot SDK + EVM Chains

inSmall Spender
3 days ago
Deciding

1. Overview

1.1 Proposal Details

Proponents / TeamLunolab(Cris, Brain)
Treasury TrackSmall Spender
Beneficiary Address14pGVuuBxbN9dVNGh2a6dNqAEP7f48z7ks5vH9WNXKakUm7Z
Requested Amount$65,580 USDC ( Retroactive + Milestone-based)
Retroactive Amount$14,880 USDC
Milestone-based Amount$50,700 USDC
Funding Period6 months (April 2026 – September 2026);
Websitehttps://www.lunolab.xyz/
Repositorieshttps://github.com/Luno-lab/LunoKit
Docshttps://docs.lunolab.xyz/
Live Demohttps://demo.lunolab.xyz/

1.2 Project Summary

LunoKit aims to build a customizable UI theme and developer-friendly Web3 account connection infrastructure for the Polkadot ecosystem. Previously, we received a grant from the Web3 Foundation and completed the delivery of all milestones within three months. It unifies wallet connection state management, account abstraction, chain switching, and session recovery, while also providing a rich set of UI components and multi-chain account support, greatly reducing the integration threshold for DApps built on Polkadot SDK chains.

As a frontend development library based on React + TypeScript, LunoKit also provides over 20 Hooks, including account state management, chain switching, connection control, and on-chain data subscription, with support for data caching. Developers can focus on core business logic while LunoKit handles the account module.

LunoKit’s capabilities span three layers:

  1. Connection & account fundamentals: multi-wallet connectivity, unified connection state management, a unified signer interface, and network/chain configuration and switching (covering both Polkadot SDK chains and EVM/PVM chains).

  2. Developer interfaces (Hooks): 20+ composable Hooks covering connection control, account state, chain switching, and selected on-chain subscription and caching capabilities.

  3. Ready-to-integrate UI components: components such as Connect Button, Account Panel, and Network Switcher, with support for theme tokens and branding configuration (appInfo) to help ecosystem projects maintain consistent UI.

Its modular architecture is composed of three packages:

  • @luno-kit/core: connectors, chain configuration, account management, and a unified signer interface

  • @luno-kit/react: the React integration layer and Hooks

  • @luno-kit/ui: UI components, theming system, and branding configuration (appInfo)

1.2 Why LunoKit is needed

In any blockchain ecosystem, account connection is foundational entry-layer infrastructure for every dApp: users must connect a wallet and sign before they can stake, swap, participate in governance, and more. The quality of this entry layer directly impacts ecosystem-wide usability, consistency of user experience, and developer onboarding cost.

Today, the ecosystem commonly faces the following practical challenges:

  • Reinventing the wheel and hidden costs: multi-wallet compatibility, connection state management, network switching, and session recovery are highly repetitive across projects, with development and maintenance costs fragmented across teams.
  • Compatibility and regression burden: as wallet ecosystems evolve continuously, behavioral differences and edge cases (disconnects, network changes, permission updates, etc.) keep introducing regression-testing overhead, creating significant long-term maintenance pressure.
  • Fragmented experience: inconsistent implementations of connection flows, network switching, error handling, and session recovery across dApps reduce predictability for users when moving between apps, which in turn hurts the overall experience and confidence.
  • Delivery efficiency for new teams: for hackathons and early-stage teams operating on short timelines, repeatedly implementing the entry layer adds extra development and regression workload, increasing costs and extending delivery cycles.

LunoKit is positioned as an open-source, reusable, configurable, and long-term maintainable connection infrastructure layer. It helps ecosystem projects reduce repetitive work, improve consistency, and focus more of their resources on business innovation and the product itself.

In addition, we have set our 2026 roadmap to focus on EVM account support: enabling dApps to integrate Substrate accounts and EVM accounts within a single, unified connection module through LunoKit—reducing the cost of implementing and maintaining two separate sets of connection logic and UI/state systems in multi-account environments. As more Solidity-based dApps emerge within the Polkadot ecosystem, demand for “dual-account / multi-account login” is expected to grow further. This model has already been validated in practice (for example, some dApps within Bifrost and Hydration support both account types). LunoKit aims to standardize and componentize these capabilities to reduce repetitive development effort across the ecosystem.

1.3 Ecosystem Adoption

The following list is not exhaustive; it only includes some representative online product integration cases that are still in continuous operation.

Snowbridge(Integrating)Bridge between Ethereum and Polkadothttps://app.snowbridge.network/
PotataoDEXhttps://app.potatao.io/
EnergyWebEnergy Web X apphttps://staking.energywebx.com/stake
FintradexNon-custodial orderbook exchangehttps://fintradex.io
RelaycodeThe Developer Toolkit for Polkadothttps://relaycode.org

2. Team

Lunolab is composed of two core members with extensive blockchain development backgrounds. Since joining the ChainX team in 2020, they have been active in the Web3 field, participating in the incubation and development of multiple public chains and application projects.

Cris has over 5 years of Web3 product experience, focusing on cross-chain protocol design and user experience optimization. He led the product design of ChainX, worked as a product manager responsible for OmniBTC’s frontend product design and project management, and from 2023–2025 served as the product lead of BEVM/GEB, overseeing chain-level functionality design and developer tool planning.

Brain is a senior blockchain frontend developer. He joined the ChainX frontend team in 2020, began leading the frontend system development of OmniBTC in 2022 (including OmniSwap and OmniLending), and from 2023–2025 was fully responsible for the frontend architecture of BEVM/GEB, covering explorer, wallet, and developer tools, accumulating deep experience in blockchain frontend development.

  • 2020 – ChainX Team
  • June 2022 – OmniBTC (incubated within ChainX, now closed, social media X)
    OmniBTC was a cross-chain DeFi platform that included two core products:
    • OmniSwap: A cross-chain trading aggregator supporting 40+ public chains and 20+ cross-chain bridges, with a cumulative trading volume exceeding $2 billion.
    • OmniLending: A cross-chain lending platform with peak TVL of over $10 million.
  • June 2023 – June 2025, BEVM (incubated within ChainX, later renamed GEB)
    BEVM was a public chain developed with the Substrate technology stack, aiming to be a Bitcoin Layer 2 compatible with EVM smart contracts, with over 990,000 on-chain addresses.
FieldContent
NameCris Sun
RoleProduct Lead(PM/UX/DX)
GitHubhttps://github.com/Gintma
Xhttps://x.com/crislee51255358
Tg@Crislee123
FieldContent
NameBrain Wu
RoleLead Engineer
GitHubhttps://github.com/wbh1328551759
Tg@wwwwwwbh

3. Work Completed

After completing all milestones of the Web3 Foundation Web3 Grant, Lunokit continued ongoing development and maintenance of the product based on real production integration needs and ecosystem feedback, resulting in a set of additional deliverables that have been completed and can be publicly verified. This section is intended to fully list the scope and evidence trail of this “completed work,” making it easy for the community to directly verify the actual output.

3.1 Work Completed Deliverables

PRThemeKey Deliverables (Detailed)Verification
PR #92Network presets expansion + Stability & UX improvementsFresh parachain presets: Polkadot ( Coretime, Collectives, People), Kusama (AssetHub, People, Coretime), Westend (AssetHub)

3 new wallet connectors with full TypeScript support: Enkrypt, Fearless, Mimir;

Tree-shakable exports to bundle only what you use (e.g., import chains/connectors as needed);

UI/UX polish: chain search bar;

Stability fix: resolved auto-connect race condition by adding a grace delay
https://github.com/Luno-lab/LunoKit/pull/92/changes
PR #98Multi-API compatibility modes + Wallet-only mode + New hooksFlexible Integration Modes: use LunoKit with Dedot (default), PAPI, or @polkadot/api;

Wallet-only mode: adopt LunoKit’s wallet connection without changing the existing blockchain API stack;

New hooks: usePapiSigner (PAPI-compatible signers from connected wallets), useEstimatePaymentInfo (fee estimation before sending);

Seamless migration: minimize code changes when migrating existing PAPI / @polkadot/api projects to LunoKit
https://github.com/Luno-lab/LunoKit/pull/98/changes
PR #114 + PR #118 + PR #128Connection stability + AssetList + Stronger CSS isolationImproved connection stability: fixed account persistence so the selected account reliably restores after disconnect/reconnect;

AssetList component: token & NFT list with comprehensive asset info, powered by Subscan integration

Enhanced CSS isolation: improved component style isolation to avoid interfering with host app styles;
https://github.com/Luno-lab/LunoKit/pull/114/changes https://github.com/Luno-lab/LunoKit/pull/118/changes https://github.com/Luno-lab/LunoKit/pull/128/changes
PR #136UI branding + Hardware wallets + Transaction control + DX improvementsUI customization (appInfo): appInfo prop for Connect Modal to fully customize branding and app information (including Terms/Privacy entry points);

Hardware wallet support: OneKey and Ledger connectors;

Enhanced transaction control: useSendTransaction adds waitFor (inBlock vs finalized) and rawReceipt for deeper insights;

Developer experience: useApi supports generics, cacheMetadata defaults improved, and QueryClientProvider removed from LunoKitProvider for more flexible setups
https://github.com/Luno-lab/LunoKit/pull/136/changes
PR #141 + PR #148 + PR #150 + PR #152UI configuration improvements + Theme fix + H160 address compatibility + Modal mountingCustom wallet list grouping; Theme fix: backdrop-blur parameter;

H160 address compatibility: formatting & balance queries for 20-byte addresses;

Custom modal mounting nodes for flexible modal integration
https://github.com/Luno-lab/LunoKit/pull/141/changes https://github.com/Luno-lab/LunoKit/pull/148/changes https://github.com/Luno-lab/LunoKit/pull/150/changes https://github.com/Luno-lab/LunoKit/pull/152/changes
New Live DemoConfigure wallet/modal/theme tokens, preview components, and export codehttps://github.com/Luno-lab/LiveDemo

Verification

  • Public code verification: all PR commit histories above are publicly accessible and reviewable.

  • Functional verification: Docs / examples / live demo can be used to validate connection flows, component previews, theming configuration, and integration-ready code export.

  • Ecosystem usage verification: production integrations can be validated via the listed live applications (e.g., Snowbridge, Potatao, etc.).

3.2 Retroactive Budget & Cost Breakdown

This section covers only the work listed in the “Work Completed Deliverables” roadmap section (PR-based evidence). To align with OpenGov’s milestone-oriented funding approach and to reduce immediate treasury outflow, we structure the retroactive request as a partial reimbursement by applying a conservative, discounted hourly rate to the already completed and publicly verifiable work.

Budget Summary (Labor)

ContributorRoleHoursRate (USD/h)Cost (USD)
BrainCore Development & Engineering248307,440
CrisProduct, UI/UX, Documentation & Integration Support (incl. partial dev)248307,440
Total-496-14,880

Rationale

  • The work covered here is already completed and publicly verifiable (PR-based evidence, demos, and integrations).

  • We are intentionally requesting reimbursement at 30 USD/hour, which is below typical market rates for senior Web3 engineering and product/UI work, to keep the proposal cost-effective and aligned with milestone-oriented funding expectations.

3. Development Roadmap

We will deliver LunoKit’s heterogeneous-chain support (Polkadot SDK + EVM) and other content through monthly milestones from April to September 2026. Each milestone has clear scope, measurable success criteria, and public verification anchors (PRs/commits, release tags, docs, examples, and demo updates).

3.1 Milestone 1 — April 2026 (Core Foundations)

Objective: Introduce a robust type system and configuration layer in @luno-kit/core to support both Substrate and EVM chains under a unified connection model while maintaining strict type safety.

NoTaskRationalePriority
1Multi-track type system design (Core)Introduce ChainType discriminated unions. Use TypeScript narrowing to strictly separate SubstrateAccount and EvmAccount at compile time.Critical
2Polymorphic connector adapter (Core)Refactor the BaseConnector contract. Implement EvmConnector as an adapter wrapping Wagmi-standard connectors (MetaMask, WalletConnect).Critical
3Config system upgrade v2 (Core)Add a createConfig entrypoint in Core. Allow a single config object to define both environments; Internally create Wagmi config, backfill connectors, and initialize state subscriptions.High
5Polkadot VaultAdd a Polkadot Vault walletHigh

Success Criteria

  • @luno-kit/core can automatically detect configuration and load the corresponding heterogeneous connector instances.
  • When calling createConfig, IDE autocomplete and compile-time inference correctly narrow types based on chainType (Substrate vs EVM).
  • Developers can integrate Polkadot Vault into their dapp by modifying a few lines of code in the configuration file.

Public Deliverables / Verification Anchors (published upon milestone completion)

  • Core API type definitions documenting the complete multi-track type system.

  • createConfig implementation in packages/core (core initialization logic).

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 1 scope.

3.2 Milestone 2 — May 2026 (React State Pipeline + Hooks Namespace Support)

Objective: Establish a bi-directional state synchronization pipeline and upgrade core hooks to support a namespace parameter with compile-time type narrowing and safe behavior across heterogeneous environments.

NoTaskRationalePriority
1Bi-directional state sync pipeline (React)Use Zustand + Immer as the global store; Subscribe to Wagmi state and map it into LunoKit’s state machine so external changes (e.g., chain switch) reflect in real time.Critical
2Core hooks refactor (I) — Connection & AccountRefactor hooks such as useConnect, useDisconnect, useAccount, useAccounts, useBalance, useStatus, useActiveConnector, etc. Add namespace support and implement overloads so IDE infers Substrate vs EVM return types from namespace string literals.Critical
3Core hooks refactor (II) — Chain & UtilsRefactor useChain, useChainId, useSwitchChain, useClient, useSigner to route providers appropriately in heterogeneous environments.Critical
4Substrate-specific hook compatibilityUpdate useSs58Format, usePapi, etc. Add context guards so when namespace is EVM, hooks degrade safely (e.g., return null) rather than crashing.High

Success Criteria

  • 15+ core hooks support namespace with strict type narrowing, enabling seamless switching between ecosystems.

  • Substrate-only hooks degrade gracefully in EVM mode (no runtime errors).

Public Deliverables / Verification Anchors (published upon milestone completion)

  • Updated @luno-kit/react implementation with namespace-aware hooks and overload-based type narrowing.

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 2 scope.

  • Docs updates describing the namespace model and recommended usage patterns.

3.3 Milestone 3 — June 2026 (UI heterogeneous-Chain Adaptation)

Objective: Upgrade UI components to handle dual ecosystems cleanly, improve guidance when both Substrate and EVM connectors coexist, and implement reliable activeNamespace restoration behavior.

Design Reference

Figma: https://www.figma.com/design/NRI1vLxg6qquNNdXmSxhlv/Lumo-Connect-v0.2.0?node-id=4001-2&p=f&t=CluGbjfRWkN6b0s1-0

NoTaskRationalePriority
1Refactor ConnectButton & related components (UI)Upgrade ConnectButton and ConnectModal with ecosystem-grouped rendering logic to improve detection and user guidance when Substrate and EVM plugins coexist.Critical
2Namespace-triggered interaction designIn ChainModal, switching chain can actively change the current namespace. Add EVM-specific 0x address display style and visual identifiers.Critical
3activeNamespace restoration strategyOn refresh, restore last active namespace first; if restoration fails, fall back to the side with an active connection.Critical
4Theme token enhancementsExtend theming tokens (e.g., link text color and related UI text colors) to improve brand consistency and configurability.High
5Mobile UI refinementsOptimize spacing, touch targets, and modal/list layouts to better match mobile usage patterns.High
6Smooth scroll mask / edge-fade effect for listsImprove visual clarity when browsing long lists (addresses, wallets, accounts) by adding a subtle scroll mask/edge fade aligned with the design system.High

Success Criteria

  • UI adapts automatically based on activeNamespace, including icons, address format (SS58 vs 0x), and ecosystem visual indicators.

  • When both ecosystems are available, users can reliably discover, select, and switch between Substrate and EVM wallet contexts without confusion.

  • After page refresh, dual-session restoration behaves correctly and activeNamespace fallback logic prevents “stuck” states.

  • The Manage Wallets component matches the linked Figma design and supports the expected dual-ecosystem management flows.

  • Scrollable lists (wallets/network/addresses) render with a smooth edge-fade/scroll mask effect and maintain performance.

  • Mobile layouts are optimized (touch-friendly sizing, spacing, and modal behavior) without regressions on desktop.

  • New theming tokens (including connect text color) are available and reflected in the demo/configuration flows.

Public Deliverables / Verification Anchors (published upon milestone completion)

  • Updated @luno-kit/ui package implementing heterogeneous-chain adaptations for ConnectButton, ConnectModal, ChainModal, plus the new Manage Wallets component.

  • Demo updates showcasing dual-ecosystem UI flows (including Manage Wallets) aligned with the Figma design reference.

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 3 scope.

  • Demo updates showcasing: mobile refinements, new theme tokens, scroll mask effect, and Ledger multi-account selection UI (published upon milestone completion).

3.4 Milestone 4 — July 2026 (Unified Transaction & Signature Facade)

Objective: Provide a unified transaction and signing interface in React that supports both ecosystems while preserving access to underlying native status/details (Viem vs Dedot).

NoTaskRationalePriority
1Unified transaction/signing facade (React)Define a unified TransactionStatus enum and map EVM (Viem receipt) and Substrate (Dedot finalized) native states into a single model.Critical
2Implement useSendTransaction (React)Provide a unified entrypoint that routes internally by namespace. EVM accepts Viem parameters; Substrate accepts Dedot tx objects. Return unified status plus raw underlying data.Critical
3Implement useSignMessage (React)EVM uses Viem signMessage; Substrate uses signRaw.High
4Ecosystem-aware UI renderingUpgrade components such as AccountDetailsModal to automatically choose rendering logic based on account type.Medium
5EVM wallet integrationMetamask、Subwallet、Talisman、OKX Web3wallet 、Phantom、Coinbase Wallet、Rabby WalletHigh

Success Criteria

  • Developers can send transactions via a unified interface and receive both LunoKit-mapped status and the raw native (Viem/Dedot) status/data.

  • AccountDetailsModal and related components correctly display heterogeneous addresses without formatting errors.

  • Users can use any of the supported EVM wallets to send transactions.

Public Deliverables / Verification Anchors (published upon milestone completion)

  • Unified transaction model/schema with raw-state passthrough.

  • Updated React hooks (useSendTransaction, useSignMessage) and supporting types.

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 4 scope.

  • Demo/docs updates demonstrating unified transaction/signing usage.

3.5 Milestone 5 — August 2026 (Testing & CI Quality Gates)

Objective: Add comprehensive automated testing for core paths across Core and React hooks, ensuring stability for connect/switch/transaction flows in both ecosystems.

NoTaskRationalePriority
1Full integration tests for hooks state flowTest cases for hooks introduced/refactored in Milestone 2, focusing on namespace switching, fallback behavior, and routing correctness.Critical
2Unit tests for polymorphic connectors (Core)Practical tests for EvmConnector connect/disconnect/switch events and createConfig parsing.High
3Transaction testsSimulate signature rejection, RPC errors, and lifecycle transitions for useSendTransaction and useSignMessage.High
4Ledger multi-account selectionEnable account enumeration and selection for Ledger connections,dApps can support selecting among multiple Ledger-derived accounts in a consistent way.High

Success Criteria

  • CI passes for the full test suite; core paths (connect/switch/tx) are covered.

  • Transaction lifecycle states (signature → confirmation) behave consistently across both ecosystems.

  • Coverage targets: Core ≥ 90%, React hooks core-path coverage ≥ 80%.

  • When connecting a Substrate account using Ledger, you can choose which account to import.

Public Deliverables / Verification Anchors (published upon milestone completion)

  • Automated test suite source code (unit + integration tests) and CI configuration updates.

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 5 scope.

  • A test results summary (e.g., CI artifact link or published report) demonstrating pass status and coverage metrics.

3.6 Milestone 6 — September 2026 (Reference DApp + Docs + v0.2 Release)

Objective: Deliver a flagship integrated demo dApp, improve edge-case stability in real browsers, publish complete documentation and migration guides, and ship LunoKit v0.2

NoTaskRationalePriority
1Reference integrated DApp demoBuild example/integrated-dapp demonstrating a full heterogeneous-chain app (assets transfer + interactions across both ecosystems).High
2Edge-environment hardeningOptimize detection priority and stability in real browsers where multiple EVM wallet extensions compete.Critical
3Docs & migration guidesFully update docs portal: complete API reference, namespace best practices, and smooth upgrade guide from v0.1 to v0.2High
4Update Live Demo for EVM supportEnsure developers can directly validate and experiment with the new EVM-related capabilities through an official, always-up-to-date public demo.High

Success Criteria

  • A one-command runnable heterogeneous-chain demo site is available, showcasing dual-ecosystem transaction flows.

  • Official docs cover all new APIs and heterogeneous-chain integration scenarios.

  • The official Live Demo is updated to support and showcase the EVM-related features introduced in v0.2 .

Public Deliverables / Verification Anchors (published upon milestone completion)

  • LunoKit v0.2 release across Core, React, and UI packages.

  • example/integrated-dapp and a new publicly accessible live demo site.

  • Updated developer documentation and migration guide.

  • A versioned release tag (or release notes) and the PR/commit list covering Milestone 6 scope.

3.7 Budget Breakdown

Team Costs

NameRoleCommitment (hours/week)Monthly CostTotal for Project Period
BrainLead Developer20$4,800$28,800
CrisProject Manager & Developer15$3,600$21,600
Subtotal (Team)$50,400

Operational Costs

CategoryCoversTotal (USD)
Operational CostsNotion / Vercel / X Pro$300

Total Requested Funding

ItemAmount
Total Requested Funding$50,700 USDC

Milestone Distribution:

  • Milestone 1 (April 2026): $8,450
  • Milestone 2 (May 2026): $8,450
  • Milestone 3 (June 2026): $8,450
  • Milestone 4 (July 2026): $8,450
  • Milestone 5 (August 2026): $8,450
  • Milestone 6 (September 2026): $8,450

3.8 Milestone scope note:

While the milestone plan describes the deliverables we commit to for funding and verification, we also

expect to ship additional fixes and features beyond the proposal in response to real developer needs and production integration feedback within the ecosystem. We will keep the community informed and ensure the committed milestone deliverables remain the priority.

Comments (0)

PleaseLogin to comment

Requested

USDT
65.58K USDT

Voting Period

Decision Period

3 / 28 days

Confirmation Period

0 / 2 days

Help Center

Report an Issue
Feedback
Terms and Conditions
Github

Our Services

Docs
Terms of Website
Privacy Policy

Polkassembly · Archived 2026 · polkassembly.io

Terms and ConditionsTerms of Website
Privacy Policy