{"id":47916016,"url":"https://github.com/karpeleslab/libwallet","last_synced_at":"2026-05-24T01:01:26.410Z","repository":{"id":284364117,"uuid":"954457377","full_name":"KarpelesLab/libwallet","owner":"KarpelesLab","description":"Multi-chain mobile wallet library with TSS support — Ethereum, Bitcoin, Solana, NFTs","archived":false,"fork":false,"pushed_at":"2026-05-23T05:40:06.000Z","size":2192,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-05-23T07:11:39.461Z","etag":null,"topics":["android","bitcoin","cryptocurrency","ethereum","go","golang","gomobile","ios","nft","solana","threshold-signatures","wallet"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KarpelesLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-25T05:40:40.000Z","updated_at":"2026-05-23T05:40:09.000Z","dependencies_parsed_at":"2025-03-25T14:39:50.232Z","dependency_job_id":"4102e69f-5178-4ef5-8a68-fddfc9b37e62","html_url":"https://github.com/KarpelesLab/libwallet","commit_stats":null,"previous_names":["ellipx/libwallet","karpeleslab/libwallet"],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/KarpelesLab/libwallet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarpelesLab%2Flibwallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarpelesLab%2Flibwallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarpelesLab%2Flibwallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarpelesLab%2Flibwallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KarpelesLab","download_url":"https://codeload.github.com/KarpelesLab/libwallet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarpelesLab%2Flibwallet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33417489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","bitcoin","cryptocurrency","ethereum","go","golang","gomobile","ios","nft","solana","threshold-signatures","wallet"],"created_at":"2026-04-04T05:37:21.156Z","updated_at":"2026-05-24T01:01:26.344Z","avatar_url":"https://github.com/KarpelesLab.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libwallet\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/KarpelesLab/libwallet)](https://goreportcard.com/report/github.com/KarpelesLab/libwallet)\n[![Coverage Status](https://coveralls.io/repos/github/KarpelesLab/libwallet/badge.svg?branch=master)](https://coveralls.io/github/KarpelesLab/libwallet?branch=master)\n[![pub package](https://img.shields.io/pub/v/libwallet.svg)](https://pub.dev/packages/libwallet)\n\nA comprehensive cryptocurrency wallet library written in Go, providing a modular framework for building secure cryptocurrency wallets with multi-chain support.\n\nThe core concept is to use TSS (Threshold Signature Scheme) for crypto signatures in order to store keys in multiple locations and enable recovery without compromise on security.\n\n## Overview\n\nlibwallet offers a complete set of tools for managing cryptocurrency wallets, supporting multiple networks, assets, and account types. The library implements secure key management, transaction signing, asset tracking, and blockchain interaction through a well-defined API structure.\n\nA number of features are still under development and this library is expected to evolve further.\n\n## Supported Networks\n\n| Network | Type | Curve | Features |\n|---------|------|-------|----------|\n| Ethereum \u0026 EVM chains | evm | secp256k1 (ECDSA) | Balance, transfers, NFTs, Web3 |\n| Bitcoin, Litecoin, Dogecoin, etc. | bitcoin | secp256k1 (ECDSA) | Balance, address derivation |\n| Solana | solana | ed25519 (EdDSA) | Balance, SOL transfers, SPL tokens, NFTs |\n\nEVM chains include Ethereum, Polygon, BNB Chain, and any EVM-compatible network. Bitcoin-type chains include Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Monacoin, Namecoin, and Electra Protocol.\n\n## Features\n\n- **Multi-chain Support**: EVM chains, Bitcoin-family chains, and Solana\n- **Secure Key Management**: TSS (Threshold Signature Scheme) with support for both ECDSA (secp256k1) and EdDSA (ed25519) curves\n- **Transaction Handling**: Create, sign and broadcast transactions across supported networks\n- **Asset Management**: Track native balances, ERC-20/SPL tokens, and NFTs\n- **Account Management**: HD address derivation for ECDSA chains, direct pubkey addressing for Ed25519 chains\n- **Web3 Integration**: Ethereum JSON-RPC provider for decentralized applications\n- **Price Quotes**: Currency conversion for displaying asset values in fiat\n- **Backup \u0026 Recovery**: Secure wallet backup and restore functionality\n\n## Requirements\n\n- Go 1.23 or later\n- Access to blockchain RPC endpoints\n- Mobile platform build tools for iOS/Android compilation (optional)\n\n## Installation\n\n```bash\ngo get github.com/KarpelesLab/libwallet\n```\n\n## Mobile Platform Support\n\nlibwallet supports both iOS and Android platforms via gomobile:\n\n```bash\n# Build for iOS (macOS only)\nmake ios\n\n# Build for Android\nmake android\n```\n\n## Testing\n\n```bash\ngo test ./...\n```\n\n## Package Structure\n\n| Package | Description |\n|---------|-------------|\n| **wltbase** | Core infrastructure, database handling, and environment management |\n| **wltwallet** | Wallet creation, TSS key generation (ECDSA \u0026 EdDSA), signing |\n| **wltnet** | Network connections, RPC calls, chain-specific balance/asset queries |\n| **wltacct** | Account management and address derivation |\n| **wltasset** | Asset and balance tracking |\n| **wlttx** | Transaction creation, signing, and broadcasting |\n| **wltnft** | Non-fungible token operations |\n| **wltobj** | Core value types (Amount, TimeId) |\n| **wltcontact** | Contact management for frequently used addresses |\n| **wltquote** | Price quote services for currency conversion |\n| **wltsign** | Signature handling and key descriptions |\n| **wltcrash** | Crash reporting and error tracking |\n\n## Database\n\nAll data is stored in a single **SQLite** database (`sql.db`) using GORM, including configuration, cached data with automatic expiration, and all wallet/account/transaction state.\n\n## Dart / Flutter\n\nA pure Dart client is published on pub.dev as [`libwallet`](https://pub.dev/packages/libwallet). It communicates with the Go library via direct FFI (no sockets), using `NativeCallable.listener` for Go→Dart callbacks. Source lives in [dart/](dart/).\n\n```yaml\ndependencies:\n  libwallet: ^0.3.1\n```\n\n```dart\nimport 'package:libwallet/libwallet.dart';\n\nfinal client = LibwalletClient.initialize('/path/to/data');\nfinal wallets = await client.wallets.list();\n```\n\nThe Dart package's build hook downloads the matching native binary from the GitHub Release for the target platform at install time — no Go toolchain needed for consumers.\n\n## Managed Release\n\nReleases are fully automated. A single `v{X}.{Y}.{Z}` tag triggers both the Go library release (with native binaries) and the Dart package publish.\n\n**To cut a new release:**\n\n1. Update the Dart package version in `dart/pubspec.yaml` (must match the tag)\n2. Update `dart/CHANGELOG.md`\n3. Commit and push: `git commit -am \"bump to 0.2.1\" \u0026\u0026 git push`\n4. Tag and push: `git tag v0.2.1 \u0026\u0026 git push --tags`\n\n**What happens automatically:**\n\n- **Build workflow** (`.github/workflows/build.yml`) compiles:\n  - gomobile artifacts (iOS `.xcframework`, Android `.aar`)\n  - c-shared libraries for Dart FFI (Android arm64/arm/x64, iOS arm64, macOS arm64/x64, Linux x64)\n  - Creates a GitHub Release with all binaries as assets\n- **Publish Dart workflow** (`.github/workflows/publish-dart.yml`) then:\n  - Verifies the tag version matches `dart/pubspec.yaml`\n  - Waits for the GitHub Release binaries to be uploaded\n  - Publishes the Dart package to pub.dev via OIDC (no credentials stored)\n\nThe Dart package version and native library version are always locked together — consumers always get matching binaries.\n\n## License\n\nCopyright 2025 Karpeles Lab Inc - See [LICENCE.md](LICENCE.md) for details.\n\nThis library is provided under the Karpeles Lab Non-Commercial License, which allows free use for:\n- Personal projects\n- Educational institutions\n- Small projects with fewer than 10,000 monthly active users\n\nFor commercial use or projects exceeding the user limit, contact mark@klb.jp for licensing options.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarpeleslab%2Flibwallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarpeleslab%2Flibwallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarpeleslab%2Flibwallet/lists"}