An open API service indexing awesome lists of open source software.

https://github.com/nicolocarcagni/swallet

A modern, non-custodial desktop wallet for the SOLE cryptocurrency, built with Python, GTK4, and libadwaita.
https://github.com/nicolocarcagni/swallet

cryptography gtk4 gtk4-python3 unisalento wallet

Last synced: 3 months ago
JSON representation

A modern, non-custodial desktop wallet for the SOLE cryptocurrency, built with Python, GTK4, and libadwaita.

Awesome Lists containing this project

README

          

# SOLE Wallet

SOLE Wallet is a native, non-custodial desktop client for the SOLE cryptocurrency network. Built with Python 3, GTK4, and libadwaita, it adheres to modern GNOME human interface guidelines to provide a native Linux desktop experience.

The application allows users to generate and manage local wallets, view their balance and transaction history, and broadcast new transactions directly to the network without relying on third-party custodial services. Private keys are encrypted locally using AES-GCM and never leave the device.

## Architecture

At its core, SOLE Wallet is a thin client that interfaces directly with a remote or local SOLE Go node via a REST API. It handles UTXO (Unspent Transaction Output) management and cryptographic signing natively in Python.

When a user initiates a transfer, the wallet queries the Go node for available UTXOs to cover the amount. It then constructs the transaction, substitutes the appropriate public key hashes for spending, and signs the payload locally via ECDSA (P-256). The fully serialized, byte-perfect transaction is then converted to a hex string and broadcast to the node's `/tx/send` endpoint. The node reconstructs the transaction, verifies the signature against the consensus rules, and propagates it to the network.

## Building and Installation

This project is packaged exclusively as a Flatpak and uses the Meson build system. Dependencies are managed strictly via an offline, reproducible manifest generated by `flatpak-pip-generator`.

To build the application from source, you will need `flatpak`, `flatpak-builder`, and the GNOME SDK installed on your system.

1. Clone the repository
```bash
git clone https://github.com/nicolocarcagni/Swallet.git
cd Swallet
```

2. Generate the Python dependencies
If you modify `requirements.txt`, you must regenerate the Flatpak dependency manifest before building. Use the provided generator script:
```bash
python3 build-aux/flatpak-pip-generator.py -r requirements.txt --output python3-requirements
```

3. Build and install via Flatpak Builder
Compile the application and install it for the local user:
```bash
flatpak-builder --user --install --force-clean build-dir io.github.nicolocarcagni.Swallet.json
```

Alternatively, you can open the project in GNOME Builder and hit the "Run" button to compile and execute it within a sandboxed environment.

## Running

If installed via the command line, you can launch the application by running:
```bash
flatpak run io.github.nicolocarcagni.Swallet
```