Rust

Kaspa Next Generation (Kaspa NG)

github

ALPHA RELEASE

Resources

NOTE: The online web application is currently rather large and may require a bit of time to load. We will be working on optimizing the application to reduce load times.

Project Status

  • Rusty Kaspa p2p node - STABLE
  • Kaspa NG desktop application - STABLE
  • Kaspa NG web application - STABLE
  • Visualizer - STABLE
  • Metrics - STABLE
  • Wallet - FUNCTIONAL • DEVELOPMENT
  • Mobile UI - DEVELOPMENT
  • Chrome Extension - DEVELOPMENT

Kaspa NG - In Depth

The Wallet

The wallet is under development but is functional. It is built using the Rusty Kaspa SDK and is interoperable with the Rusty Kaspa CLI wallet.

The wallet currently supports standard BIP32 (HD) accounts compatible with the Kaspa ecosystem wallets such as "kaspawallet" that use 12 or 24-word mnemonics. The wallet also supports multiple accounts (via BIP44 account derivation), the ability to create and switch between multiple wallets as well as other features such as instant transfers between wallet accounts.

Various other features have also been developed and tested as a part of the Rusty Kaspa Wallet Framework, but are not yet integrated into the Kaspa NG user interface (targeted for completion in Q1-Q2 2024). This includes:

  • Creation and import of multiple private keys in a single wallet
  • Multisig Support
  • Legacy wallet import (KDX and wallet.kaspanet.io)
  • Ability to easily export and move wallets between web and desktop applications

Upon completion and testing of the legacy compatibility, we will be migrating wallet.kaspanet.io users to the Kaspa NG infrastructure and Kaspa NG will offer an option to import KDX wallets.

Wallet Security

The key concern during the wallet development has been the supply chain vulnerabilities (hostile code injections in libraries used by developers without them realizing that they are introducing sleeping malware in their software or such malware coming in at a later date during updates). Many users have lost their funds due to these vulnerabilities including most recently Solana and Ledger Wallet ecosystem users.

To address this, Kaspa NG is developed 100% in Rust without any dependencies on web technologies or languages such as JavaScript. The native desktop application is self-contained relying strictly on Rust dependencies that cannot passively activate hostile code.

The web version of Kaspa NG also follows these principles and is built as a single Web Assembly binary. It runs as an isolated application in a web browser and on mobile devices, and does not use DOM, external JavaScript, or any web technologies.

All private in-memory data is always kept encrypted and is only temporarily decrypted to allow transaction signing or other secure operations, following which the memory containing the sensitive data is wiped.

DDoS resilience

To mitigate the potential of DDoS attacks, the software and the public node infrastructure have been designed with decentralization in mind as follows:

  • The public node infrastructure is comprised of multiple disjoined DDoS-mitigated nodes.
  • Both web and desktop applications (as well as later the Chrome extension) can connect to any Rusty Kaspa p2p node directly. Thus anyone can put up a public node and make it available internally within their organization or for public access.
  • Anyone can download or build Kaspa NG locally and sync directly with the Rusty Kaspa p2p network.

Architecture

As mentioned above. Kaspa NG is developed in Rust. The software embeds into itself the Rusty Kaspa project and the wallet functionality is based on the Rusty Kaspa Rust SDK.

When built, the project produces a single monolithic binary that can:

  • run as a desktop application (default)
  • run as a Rusty Kaspa p2p daemon (started with the --daemon command line option)
  • run as Rusty Kaspa CLI wallet (started with the --cli command line option)

If you need to access the wallet in the headless environment, you can run Kaspa NG as a p2p node and separately as a CLI wallet connecting to that node.

In addition to Rusty Kaspa, there are two key frameworks extensively used in this project:

  • WORKFLOW-RS - a multiplatform library that among other things provides platform-neutral WebSocket and RPC abstractions. This library powers WebSocket RPC channels used by the Rusty Kaspa infrastructure.

  • EGUI framework that provides platform-neutral user interface capabilities.

Public Node Infrastructure

As an integral component of the Kaspa NG web application deployment, we have built a public node infrastructure accessible both from the Kaspa NG web and desktop applications.

This infrastructure can also be accessed using Rusty Kaspa RPC SDK available in Rust, JavaScript, and TypeScript. It is a major complementary enhancement to the existing gRPC interface as it allows streamlining web application integrations.

If you are a node provider or would like to contribute to the Kaspa ecosystem, please reach out to us on Kaspa Discord. Node providers can get exposure by publishing a URL to their business in the Settings / Remote Node Connectivity panel.

Kaspa NG funding

If you are a Kaspa investor, please consider donating to this project. The funds will be used to cover operational costs and further the project's functionality.

Please note that we are currently starting a strategic fundraiser on the Kaspa Discord. If you have any questions, please join the Kaspa Discord and ask in the #votes-and-funding-discussions channel.

 
kaspa:qq2efzv0j7vt9gz9gfq44e6ggemjvvcuewhzqpm4ekf4fs5smruvs3c8ur9rp  
 
 
We greatly appreciate your support!