Skip to content

LedgerHQ/app-solana

 
 

Repository files navigation

Build Status

Solana app for Ledger Wallet

Overview

This app adds support for the Solana native token to Ledger Nano S hardware wallet.

Current Features:

  • Pubkey queries
  • Parse, display and sign all Solana CLI generated transaction formats
  • Blind sign arbitrary transactions (Enabled via settings)

Prerequisites

For building the app

$ docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest

Build

Build the app in the container. The BOLOS_SDK variable is used to specify the target SDK, allowing to compile the application for each Ledger device. See Ledger Application Builder for more details.

# E.g. for Nano S
$ sudo docker run --rm -ti -v "$(realpath .):/app" --user $(id -u $USER):$(id -g $USER) ghcr.io/ledgerhq/ledger-app-builder//ledger-app-dev-tools:latest
bash$ BOLOS_SDK=$NANOS_SDK make

Clean

Within the running development container

bash$ BOLOS_SDK=$NANOS_SDK make clean

Working with the device

See Ledger Application Builder for more details.

Load

$ sudo docker run --rm -ti  -v "$(realpath .):/app" --privileged -v "/dev/bus/usb:/dev/bus/usb" --user $(id -u $USER):$(id -g $USER) ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest
bash$ BOLOS_SDK=$NANOS_SDK make load

Delete

Within the running development container

bash$ BOLOS_SDK=$NANOS_SDK make delete

Test

Unit

Run C tests:

bash$ make -C libsol

Ragger

Make sure that you have already built the application for the specific device.

Run Ragger tests:

# Install python test suite dependencies
bash$ pip install -r "tests/python/requirements.txt"

# Run test suite for the specific device, e.g. nanos
bash$ pytest tests/python/ --tb=short -v --device nanos -k ""

To regenerate golden snapshots, use --golden_run option.

Integration

First enable blind-signing in the App settings

bash$ cargo run --manifest-path tests/Cargo.toml

Packages

No packages published

Languages

  • C 79.9%
  • Rust 10.8%
  • Python 4.2%
  • C++ 3.4%
  • Makefile 0.7%
  • Shell 0.7%
  • CMake 0.3%