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:
- Blog Ethereum plugins
- Ethereum application Plugins : Technical Specifications
- Plugin guide
- Boilerplate plugin
Testing
Testing is done via the open-source framework zemu.
Requirements
Build the applications required by the test suite
-
Add your BOLOS SDKs path to:
NANOS_SDK
andNANOX_SDK
-
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
- Then you can install and run tests by simply running on the
root
of the repo:-
make test
- This will run
make install_tests
andmake run_tests
-
With yarn
- Go to the
tests
folder and run:-
yarn test
-
Running a specific tests
- Go to the
tests
folder and run:-
yarn jest --runInBand --detectOpenHandles {YourTestFile}
-
- 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 toORIGINAL_SNAPSHOT_PATH_PREFIX
. - Run the tests once, this will create all the snapshots in the folder you created.
- Put back your
SNAPSHOT_PATH_PREFIX
tosnapshots/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
.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/my-feature
) - Commit your Changes (
git commit -m 'feat: my new feature
) - Push to the Branch (
git push origin feature/my-feature
) - Open a Pull Request
Please try to follow Conventional Commits.