Skip to content

gemwalletcom/core

 
 

Repository files navigation

Gem Wallet Core

Rust GitHub release License: MIT Unit Tests Docker Build iOS Tests Android Build Telegram GitHub Repo stars

Introduction

Gem Wallet Core is the core engine powering Gem Wallet, a fully open source, secure and decentralized crypto wallet designed for Bitcoin, Ethereum, Solana, BNB Chain, Base, Sui and much more. Built in Rust, it ensures high performance, safety, and reliability.

Gem Wallet Features:

  • 🚀 High-Performance: Completely native UI and Core is written in Rust for speed and safety.
  • 🔐 Secure: Utilizes strong cryptographic standards.
  • 🛠 Extensible: Designed to support additional features and integrations.
  • 🤝 Open Source: Community-driven and actively maintained.

Gem Wallet Core serves as the backbone for both backend and frontend apps, handling various tasks, including:

  • Transaction indexing and push notifications
  • Asset price, charts and alerts
  • Fiat on and off-ramps
  • ENS, Solana and more name resolution
  • NFTs
  • Native and cross-chain swaps
  • Native BNB Chain and Sui staking
  • More ...

Running API

Install dependencies

Run just install to install rust, typeshare

Setup DB

  • Create a new database api and grant privileges to username role
  • Run diesel migration run to create tables and do migrations

Run API locally: cargo run --package api

Gemstone

Cross platform Rust library for iOS and Android with native async networking support.

iOS

Download Gemstone-spm.tar.bz2 from the releases page.

Unzip and add it to your project as a local Swift Package.

Android

Add the following to your libs.versions.toml file:

[versions]
gemstone = "<latest_version>"

[libraries]
gemstone = { module = "com.gemwallet.gemstone:gemstone", version.ref = "gemstone" }

Add the following to your build.gradle.kts file:

dependencies {
    api(libs.gemstone)
}
allprojects {
    repositories {
        maven {
            url = uri("https://maven.pkg.github.com/gemwalletcom/core")
            credentials {
                username = <github_username>
                password = <github_token>
            }
        }
    }
}

Contributing

We welcome contributions! To get started:

  • Look for issues with the help wanted labels.
  • Fork the repository.
  • Create a new branch (feature-xyz).
  • Commit your changes and push.
  • Open a Pull Request.

License

This project is licensed under the MIT License.

Community & Support

Made with ❤️ by the Gem Wallet community.