• Stars
    star
    178
  • Rank 214,989 (Top 5 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ethereum wallet application for Ledger devices

app-ethereum

Ethereum wallet application for Ledger Blue, Nano S, Nano S Plus and Nano X
ยซ Explore the docs ยป

Report Bug ยท Request Feature ยท Request New Network


Table of Contents

About the project

Ethereum wallet application framework for Nano S, Nano S Plus and Nano X.
Ledger Blue is not maintained anymore, but the app can still be compiled for this target using the branch blue-final-release.

Documentation

This app follows the specification available in the doc/ folder.

To compile it and load it on a device, please check out our developer portal.

Plugins

We have the concept of plugins in the ETH app.
Find the documentations here:

Testing

Testing is done via the open-source framework zemu.

Requirements

Build the applications required by the test suite

  1. Add your BOLOS SDKs path to:

    • NANOS_SDK and NANOX_SDK
  2. Go to the tests folder and run ./build_local_test_elfs.sh

    •   cd tests
        # This helper script will build the applications required by the test suite and move them at the right place.
        yarn install
        ./build_local_test_elfs.sh

Running all tests

With Makefile

  1. Then you can install and run tests by simply running on the root of the repo:
    •   make test
    • This will run make install_tests and make run_tests

With yarn

  1. Go to the tests folder and run:
    •   yarn test

Running a specific tests

  1. Go to the tests folder and run:
    •   yarn jest --runInBand --detectOpenHandles {YourTestFile}
  2. For example with the send test:
    •   yarn jest --runInBand --detectOpenHandles src/send.test.js

Adding tests

Zemu

To add tests, copy one of the already existing test files in tests/src/. You then need to adapt the buffer and tx variables to adapt to the APDU you wish to send.

  • Adapt the expected screen flow. Please create a folder under tests/snapshots with the name of the test you're performing.
  • Then adapt the ORIGINAL_SNAPSHOT_PATH_PREFIX with the name of the folder you just created.
  • To create the snapshots, modify the SNAPSHOT_PATH_PREFIX and set it to be equal to ORIGINAL_SNAPSHOT_PATH_PREFIX.
  • Run the tests once, this will create all the snapshots in the folder you created.
  • Put back your SNAPSHOT_PATH_PREFIX to snapshots/tmp/.

Finally make sure you adapt the expected signature!

Update binaries

Don't forget to update the binaries in the test folder. To do so, compile with those environement variables:

make DEBUG=1 ALLOW_DATA=1

Then copy the binary to the tests/elfs folder (in this case, compiled with SDK for nanoS):

cp bin/app.elf tests/elfs/ethereum_nanos.elf

Repeat the operation for a binary compiled with nanoX SDK and change for ethereum_nanox.elf.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag enhancement.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/my-feature)
  3. Commit your Changes (git commit -m 'feat: my new feature)
  4. Push to the Branch (git push origin feature/my-feature)
  5. Open a Pull Request

Please try to follow Conventional Commits.

More Repositories

1

ledger-live-desktop

โ›”๏ธ DEPRECATED - Ledger Live (Desktop)
JavaScript
954
star
2

ledgerjs

โ›”๏ธ MOVED to monorepo "ledger-live"
TypeScript
574
star
3

ledger-live

Mono-repository for packages related to Ledger Live and its JavaScript ecosystem.
JavaScript
410
star
4

ledger-live-mobile

โ›”๏ธ DEPRECATED - Ledger Live (Mobile)
JavaScript
381
star
5

ledger-nano-s

Ledger Nano S, a personal security device from Ledger (blockchain / bitcoin / ethereum / FIDO)
277
star
6

app-monero

Monero wallet application for Ledger Nano S & X
Python
267
star
7

ledger-wallet-chrome

Ledger Wallet Chrome application
JavaScript
162
star
8

satstack

Bitcoin full node with Ledger Live
Go
148
star
9

ledger-javacard

Ledger Unplugged - Java Card implementation of Ledger Bitcoin Hardware Wallet
Java
140
star
10

ledger-live-common

โ›”๏ธ DEPRECATED - Common ground for the Ledger Wallet apps
TypeScript
135
star
11

speculos

Ledger Nano/Blue apps emulator
C
129
star
12

app-bitcoin

Bitcoin wallet application for Ledger Blue and Nano S
C
118
star
13

blue-loader-python

Python Loader for Ledger Blue (all), Nano S (all) and Nano X (developer units)
Python
114
star
14

openpgp-card-app

OpenPGP Card Application
C
110
star
15

nanos-secure-sdk

Secure (ST31) SDK for Ledger Nano S
C
94
star
16

app-bitcoin-new

Modern Bitcoin Application based on PSBT and Descriptors
C
93
star
17

ledger-wallet-api

High level API to the Ledger Wallet Chrome app
HTML
82
star
18

lib-ledger-core

C++
79
star
19

app-ssh-agent

Simple SSH and GPG agent for Ledger Blue and Nano S
C
78
star
20

udev-rules

udev rules to support Ledger devices on Linux
Shell
76
star
21

app-passwords

Password Manager application for Ledger Blue and Nano S
C
74
star
22

ledger-wallet-ripple

JavaScript
65
star
23

ledger-u2f-javacard

Java Card FIDO U2F authenticator for Ledger Unplugged
Java
63
star
24

btchip-python

Ledger HW.1 Python API
Python
60
star
25

ledger-wallet-ethereum-chrome

Ledger Wallet Ethereum Chrome application
JavaScript
55
star
26

ledger-sample-apps

Sample Applications for Ledger Nano S and Ledger Blue
C
54
star
27

ledgerjs-examples

LedgerJS examples
JavaScript
53
star
28

ledger-manager-chrome

Ledger Manager Chrome application
Scala
50
star
29

android-u2f-bridge

Generic support for USB U2F tokens on Android
Java
49
star
30

ledger-dotnet-api

.NET API for Ledger
C#
48
star
31

xpub-scan

Tool to perform master public key analysis
TypeScript
45
star
32

ledger-blue

Ledger Blue, a personal security device from Ledger (blockchain / bitcoin / ethereum / FIDO)
41
star
33

ledger-device-rust-sdk

Rust SDK for Ledger device applications
Rust
38
star
34

wallet-api

Wallet API Monorepo
TypeScript
38
star
35

ledgerctl

A library to control Ledger devices
Python
37
star
36

bolos-enclave

BOLOS community enclave for SGX & simulator
C
34
star
37

ledger-wallet-ios

Ledger Wallet iOS application
Swift
34
star
38

app-u2f

FIDO U2F Application for Ledger Blue and Nano S
C
33
star
39

app-boilerplate

Boilerplate application for Ledger Nano S/X
C
33
star
40

recover-whitepaper

33
star
41

developer-portal

MDX
32
star
42

app-boilerplate-rust

Rust boilerplate application for Ledger Nano S/S+/X
Python
31
star
43

bolos-tee

Implementation of Ledger BOLOS for TEE applications
C
29
star
44

ledger-dev-doc

DEPRECATED - please use https://github.com/LedgerHQ/developer-portal
Python
28
star
45

nanos-ui

UI application for Ledger Nano S
C
26
star
46

blue-devenv

DEPRECATED - Development Environment for Ledger Blue and Nano S
26
star
47

OUTDATED_ledger-wallet-android

OUTDATED โ€“ for Ledger Live mobile, the correct repository is here =>
Scala
26
star
48

solidity-exercise

A RPG multiplayer game that will be used for interviews and internal workshops.
Solidity
22
star
49

app-streaming

Develop apps without any constraints
C
22
star
50

ledger-app-builder

Docker image to compile app for the Ledger Nano S.
Dockerfile
22
star
51

ledger-secure-os

C
20
star
52

rust-app-demo

(DEPRECATED) Proof of concept setup for a Rust App on Nano
Rust
19
star
53

nanox-secure-sdk

This repository has been replaced by https://github.com/LedgerHQ/ledger-secure-sdk/. Please read the new repository README for more information.
C
19
star
54

app-xrp

Ripple wallet application for Ledger Blue and Nano S
C
18
star
55

connect-kit

TypeScript
16
star
56

rust-app-password-manager

Rust
15
star
57

ui

โ›”๏ธ MOVED to monorepo "ledger-live"
TypeScript
15
star
58

app-starknet

Official Ledger Starknet application (Rust implementation)
Python
15
star
59

ledger-wallet-webtool

A utility application used to deploy utility functions to Ledger users
JavaScript
14
star
60

ledger-fresh-management

This is where product topics are discussed for Ledger Fresh
14
star
61

nanos-nonsecure-firmware

Non Secure (STM32) Firmware for Ledger Nano S
C
14
star
62

cargo-ledger

(Moved in the ledger device rust SDK --> https://github.com/LedgerHQ/ledger-device-rust-sdk). Load code on a Ledger device with a `cargo` subcommand
Rust
14
star
63

live-app-sdk

TypeScript
13
star
64

ledger-live-wagmi-connector

Wagmi JS lib Connector for Ledger Live Dapp Browser
TypeScript
13
star
65

lascar

Mirror of lascar (https://github.com/Ledger-Donjon/lascar)
Python
13
star
66

app-starknet-zondax

Starknet application for Ledger Nano S, SP, X
Rust
13
star
67

moosig

Fun with MuSig2 and Ledger devices ๐ŸŽต
Python
13
star
68

nanos-nonsecure-firmware-releases

Non Secure (STM32) Firmware releases for Ledger Nano S
12
star
69

blue-secure-sdk

Secure (ST31) SDK for Ledger Blue
C
12
star
70

web3allowlist

Allowlist data for Web3Checks
Python
12
star
71

lib-ledger-core-node-bindings

C++
12
star
72

btchip-c-api

Ledger HW.1 C APIs
C
12
star
73

resigner

The hottest miniscript signing server
Python
12
star
74

innovation-contracts-solidity

Collection of smart contracts written in Solidity
Solidity
11
star
75

app-plugin-boilerplate

C
10
star
76

ledger-nano-piv

Hackathon project, not production ready (yet)
Rust
9
star
77

ledger-repl

DEPRECATED, this project moved to https://github.com/LedgerHQ/ledger-live โ€“ this repository will be archived once we migrated the website too
JavaScript
9
star
78

btchip-doc

Ledger HW.1 firmware documentation
HTML
9
star
79

ledger-javacard-eligibility

Java Card applet to test features and performance of a Hierarchical Deterministic Bitcoin Hardware Wallet implementation
Java
9
star
80

ledger-asset-dapps

Python
9
star
81

device-sdk-ts

โœจ A library enabling applications to communicate with Ledger devices.
TypeScript
8
star
82

app-age

Rust
8
star
83

passwords-backup

JavaScript
8
star
84

ledger-starter-iso

Ledger Starter ISO recipe
Python
8
star
85

vanadium-legacy

Unlimited power for apps
C
8
star
86

lib-ledger-core-react-native-bindings

Java
8
star
87

ledger-app-otherdime

Offchain private key exchange as an attestation demonstration for Ledger Blue and Nano S
C
8
star
88

app-recovery-check

C
7
star
89

app-exchange

Exchange application to SWAP and SELL with Ledger Live
C
7
star
90

CTF

C
7
star
91

ragger

Small wrapper around Speculos, LedgerWallet & LedgerComm to ease instrumentation
Python
7
star
92

app-security-key

C
7
star
93

wallet-connect-live-app

TypeScript
7
star
94

btchip-js-api

Ledger HW.1 JavaScript APIs
JavaScript
7
star
95

starknet-wallet-contracts

Python
7
star
96

ethereum-plugin-sdk

C
7
star
97

bitcoin-lib-grpc

A modular gRPC service to interact with the Bitcoin protocol. โ‚ฟ
Go
7
star
98

blue-nonsecure-firmware

Non Secure (STM32) Firmware for Ledger Blue
C
7
star
99

ledger-fresh-web

Frontend of Ledger fresh, our open source web wallet based on the account abstraction
TypeScript
7
star
100

ledgercomm

Library to communicate with Ledger Nano S/X and Speculos
Python
7
star