Skip to content

jnicoulaud-ledger/app-ethereum

 
 

Repository files navigation


app-ethereum

Ethereum wallet application for Ledger Blue, Nano S 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 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.

About

Ethereum wallet application for Ledger devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 74.0%
  • Python 18.9%
  • JavaScript 3.9%
  • Makefile 2.7%
  • Other 0.5%