Giter Site home page Giter Site logo

joltwallet / jolt_wallet Goto Github PK

View Code? Open in Web Editor NEW
54.0 7.0 10.0 20.46 MB

A new wallet for managing your crypto.

Home Page: https://www.joltwallet.com/

License: MIT License

Makefile 0.94% C 91.95% Python 3.28% C++ 1.73% CMake 1.00% XSLT 0.81% Objective-C 0.30% Shell 0.01%
nano cryptocurrency hardware-wallet esp32 esp-idf

jolt_wallet's Introduction

Jolt


Jolt

Crypto in your pocket.

Updates

GitHub repo size

Table of Contents

Introduction

Jolt is a hardware wallet built on Espressif's IoT Development Framework for the ESP32 chip. For more information about ESP32, see the ESP32 Website.

Development

If you'd like to develop, build, and/or run Jolt please follow the guide that best matches your native platform.

Disclaimer: Just a friendly reminder to please note this project is still under continouus and heavy development, which means things may break or change from time to time. But that doesn't mean we want it to break! So we ask if you do encounter any issues, to please file them and one of us will try to respond as quickly as possible. Additionally, not all security features are currently enabled, such as hardware encryption or secure boot; without these features, private keys could be extracted with physical access to the device.

FAQs

Checkout our extensive FAQs for more information - FAQs

Roadmap

To see the latest on what we've done, what we're planning, and where we're headed click here.

Known Issues

  • App loading only works when set to release mode or stack protection is disabled.

Environment setup

For all commands, we need to source some environment variables and generate the build files so we can take further action.

source export.sh  # On initial setup this may error, that's fine
mkdir -p build/ && cd build && cmake .. -G Ninja

GNU Make may be used instead of Ninja. If a build system is not specified, Ninja will be used.

Many of these options change either how the default sdkconfig is generated, or how the make/ninja filed is generated. To be safe, delete both the build/ directory and the sdkconfig.* files in the project root.

Setup toolchain and other depdencies

# Go into the build directory
cd build/

# Install system dependencies
ninja system_dependencies

# Install toolchain (and system dependencies)
ninja toolchain

# Re-initialize some env vars
cd .. && source export.sh

Vanilla build

idf.py build

Compressed build

This will also build the compressed build/jolt_os.bin.gz file

idf.py compress

Unit Testing

This will build JoltOS with additional testing functionality and override the default GUI with a unit-testing menu

# From the project directory
rm -rf build/  # Make sure the previously generated make/ninja file is gone
idf.py tests

The tests target generates a slightly different build file, so clear the build/ directory before running.

Specifying different sdkconfig defaults

JoltOS supports different hardware configurations. These hardware differences get applied over the defaults via the TARGET_BOARD-specific sdkconfig.defaults files in the sdkconfigs/ directory. Delete your generated sdkconfig file and generate a hardware-specific configuration via:

TARGET_BOARD=my_hardware_name idf.py defconfig

The TARGET_BOARD environment variable is only used for sdkconfig generation.

Environment setup (Legacy GNU Make)

[deprecated]

Prerequisites

Install the prerequisites specified in the ESP-IDF docs. The rest of the ESP-iDF steps are handled below.

Setup toolchain and other dependencies

Setup the build environement by running the following command.

make install

Export variables

Finally, run the command below. This must be done in every new bash instance.

source export.sh

Flashing

Note: final sdkconfig.defaults overrides can be applied via a file sdkconfigs/sdkconfig.personal. Useful things like device port can be set in this file.

Default JoltOS

make flash monitor -j

Unit Test GUI

The following flashes the on-device debug menu along with some developer commands.

make test-menu - j

Unit Test Functions

The following command will flash JoltOS unit tests and a unit-test menu accessible via the UART console.

make tests -j

Other hardware targets

JoltOS supports other esp32-based hardware; These generally only differ in supported functionality and pinout. To set the target board, set the env var TARGET_BOARD prior to generating sdkconfig. For example:

TARGET_BOARD=dstike make menuconfig

To load the sdkconfigs/sdkconfig.defaults.dstike to override some of the definitions in sdkconfigs/sdkconfig.defaults.

Support

If you would like to get in touch, please write to us at: [email protected]

jolt_wallet's People

Contributors

brianpugh avatar jamescoxon avatar jon-battista avatar jonbattista avatar naelsondouglas avatar pyup-bot avatar smaili avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jolt_wallet's Issues

GPL License Compliance Issue?

A cool project, well done.

However, I have to say that I'm not happy to see a GPL copyleft license there. The license makes it impossible or hard to reuse parts of the code on anything else.

And, I'm afraid, there is more. Because ESP32's WiFi and Bluetooth stacks are not open, GPL cannot legally be used on the firmware application provided to users. That's because GPL applies to the project as the whole and any of your (or someone else's) customers, by the right given by GPL, may request source codes of the full project, which obviously cannot be provided due to the closed binaries used.

Do you have plans to change the license to something else?

Corrupt Heap

Occasionally getting this and with a corresponding reset:
โ›[0;32mI (25304) nano_parse: get_block: "{\n \"type\": \"state\",\n \"account\": \"xrb_3b5q31tnccx51ypey56tp844wsiwt61hkusks5rcatkws4mo7srw9ownnhki\",\n \"previous\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n \"representative\": \"xrb_3b5q31tnccx51ypey56tp844wsiwt61hkusks5rcatkws4mo7srw9ownnhki\",\n \"balance\": \"100000000000000000000000000000\",\n \"link\": \"D772256202C9C640808B4EF1F43F26D80DD661018F7FFCCAF19B0C0FFC2981EE\",\n \"link_as_account\": \"xrb_3ouk6oj17kg8a41apmqjyizkfp1ftsii55uzzm7h58re3zy4m1hghwqrxase\",\n \"signature\": \"BEA09C1D8FEA7746665EC159DD5690DB61311ACEA779CB9957B452001915398277F1EE9AE596372B6071DA3A713E8F4122F1381925822B9779E21D863F6F9805\",\n \"work\": \"01aad332fa7bdaf6\"\n}\n"โ›[0m CORRUPT HEAP: multi_heap.c:370 detected at 0x3ffdf9bc abort() was called at PC 0x40088563 on core 0

sys/select.h: No such file or directory

Folks,
I'm trying to install your code on a MacBook Pro running macOS 10.13.5, Xcode 9.4.1, following your instructions

At the final step: MacOS/ESP32/10. Verify the setup..., I get the following error:

/Users/pedropaulocf/JOLT/esp-idf/components/lwip/include/lwip/port/lwipopts.h:42:24: fatal error: sys/select.h: No such file or directory
compilation terminated.
make[4]: *** [CMakeFiles/websockets.dir/lib/core/alloc.c.o] Error 1
make[3]: *** [CMakeFiles/websockets.dir/all] Error 2
make[2]: *** [all] Error 2
make[1]: *** [build] Error 2
make: *** [component-libwebsockets-build] Error 2

it looks like a relatively recent Espressif IDF change is the source of the error. On my old copy of esp-idf the folder idf/components/newlib/platform_include/sys/ doesn't exist.

E (482) esp_image: Image length 1068192 doesn't fit in partition length 1048576

I had this error, whose I already fixed.

I'm posting it here just to keep things registered.

`

I (481) esp_image: segment 6: paddr=0x00114c78 vaddr=0x400c0000 size=0x00000 ( 0) load

E (482) esp_image: Image length 1068192 doesn't fit in partition length 1048576

E (487) boot: Factory app partition is not bootable

E (493) boot: No bootable app partitions in the partition table

user code done

`

Initial Update

The bot created this issue to inform you that pyup.io has been set up on this repo.
Once you have closed it, the bot will open pull requests for updates as soon as they are available.

Building error on Ubuntu

I'm using Ubuntu 18.04 LTS and I followed all the steps on the documentation, but I'm having this error when building the code.

NOte: I didn't set any button mapping (they are all on default values) and my ES32 is conected without any button or device attached to the pins.

I recorded the full error output on this asciinema and I'm pasting the last lines here:

  • AR build/xtensa-debug-module/libxtensa-debug-module.a
    LD build/joltwallet.elf
    /home/naelsondouglas/esp/jolt_wallet/build/main/libmain.a(console.o):(.literal.cpu_status+0x4): undefined reference to vTaskGetRunTimeStats' /home/naelsondouglas/esp/jolt_wallet/build/main/libmain.a(console.o):(.literal.task_status+0x4): undefined reference to vTaskList'
    /home/naelsondouglas/esp/jolt_wallet/build/main/libmain.a(console.o): In function cpu_status': /home/naelsondouglas/esp/jolt_wallet/main/syscore/console.c:93: undefined reference to vTaskGetRunTimeStats'
    /home/naelsondouglas/esp/jolt_wallet/build/main/libmain.a(console.o): In function task_status': /home/naelsondouglas/esp/jolt_wallet/main/syscore/console.c:44: undefined reference to vTaskList'
    collect2: error: ld returned 1 exit status
    /home/naelsondouglas/esp/esp-idf/make/project.mk:405: recipe for target '/home/naelsondouglas/esp/jolt_wallet/build/joltwallet.elf' failed
    make: *** [/home/naelsondouglas/esp/jolt_wallet/build/joltwallet.elf] Error 1

Is there anyting wrong I'm doing?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.