All Projects → oopsmonk → iota_esp32_wallet

oopsmonk / iota_esp32_wallet

Licence: MIT license
IOTA Wallet application on ESP32

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to iota esp32 wallet

Iota.lib.cpp
IOTA C++ Library
Stars: ✭ 84 (+147.06%)
Mutual labels:  iota
Iota
Fast [co]product types with a clean syntax. For Cats & Scalaz.
Stars: ✭ 175 (+414.71%)
Mutual labels:  iota
poketto-ios
📱👛 xDai Mobile Wallet for iOS
Stars: ✭ 19 (-44.12%)
Mutual labels:  wallet
Entangled
enTangle'd is an amalgamation of all things Tangle
Stars: ✭ 107 (+214.71%)
Mutual labels:  iota
Tangleid
Secure self-sovereign identity built on IOTA/Tangle
Stars: ✭ 141 (+314.71%)
Mutual labels:  iota
Legacy Wallet Use Trinity Wallet Instead
IOTA Wallet
Stars: ✭ 2,123 (+6144.12%)
Mutual labels:  iota
Iotalk
iotalk is a privacy-minded messaging system built on the IOTA Tangle. Messages are encrypted so only the intended recipient can read them.
Stars: ✭ 67 (+97.06%)
Mutual labels:  iota
argent-x
ArgentX browser extension for StarkNet - made with ❤️ by Argent
Stars: ✭ 419 (+1132.35%)
Mutual labels:  wallet
Hornet
HORNET is a powerful IOTA fullnode software
Stars: ✭ 168 (+394.12%)
Mutual labels:  iota
QWallet
Blockchain Wallet for Coin & ERC20 Tokens
Stars: ✭ 11 (-67.65%)
Mutual labels:  wallet
Awesome Iota
A community driven list of useful IOTA blogs, articles, videos and tools.
Stars: ✭ 109 (+220.59%)
Mutual labels:  iota
Nelson.cli
WE HAVE MOVED TO A NEW REPOSITORY
Stars: ✭ 139 (+308.82%)
Mutual labels:  iota
Dweb.page
Your Gateway to the Distributed Web
Stars: ✭ 239 (+602.94%)
Mutual labels:  iota
Cryptocurrency Cli
💰 Cryptocurrency Portfolio On The Command Line 💰
Stars: ✭ 99 (+191.18%)
Mutual labels:  iota
ETH Wallet Kotlin
(Deprecated) 不再维护,新项目参考https://github.com/snailflying/ETHWallet
Stars: ✭ 20 (-41.18%)
Mutual labels:  wallet
Iri
IOTA Reference Implementation
Stars: ✭ 1,188 (+3394.12%)
Mutual labels:  iota
Bee
A framework for IOTA nodes, clients and applications in Rust
Stars: ✭ 176 (+417.65%)
Mutual labels:  iota
walletconnect-test-wallet
Test Wallet (Web)
Stars: ✭ 163 (+379.41%)
Mutual labels:  wallet
leaderboard-example
IOTA Proof of Concept Application example. With tutorial.
Stars: ✭ 64 (+88.24%)
Mutual labels:  iota
Goshimmer
GoShimmer implementation of Coordicide
Stars: ✭ 244 (+617.65%)
Mutual labels:  iota

This repo has been moved to iotaledger/esp32-client-sdk

IOTA ESP32 Wallet

This is an IOTA Wallet application using IOTA CClient library on ESP32 microcontroller.

Commands

System commands

  • help: Show help
  • version: Show version info
  • restart: Restart ESP32
  • free: Show remained heap size
  • stack: Show stack info
  • node_info: Show IOTA node info
  • node_info_set: Set IOTA node URL and port number

IOTA Client commands

  • seed: Show IOTA seed
  • seed_set: Set IOTA seed
  • balance: Get balance from given addresses
  • account: Get balances from current seed
  • send: Send valued or data transactions
  • transactions: Get transactions from a given address
  • gen_hash: Generate hash from a given length
  • get_addresses: Generate addresses from given index.
  • get_bundle: Get a bundle from a given transaction tail.
  • client_conf: Show current MWM, Depth, and Security level
  • client_conf_set: Set MWM, Depth, and Security level.

Block Diagram

Demonstration video

Requirements

ESP32 build system setup

Please follow documentations to setup your toolchain and development framework.

Linux:

Windows:

Notice: We use the ESP-IDF v4.0.1, make sure you clone the right branch of ESP-IDF

git clone -b v4.0.1 --recursive https://github.com/espressif/esp-idf.git
./install.sh
source ./export.sh

Update esp-idf from previous version

cd esp-idf
git fetch 
git checkout v4.0.1 -b v4.0.1
git submodule update --init --recursive
./install.sh
source ./export.sh

Now, you can test your develop environment via the hello_world project.

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
idf.py menuconfig
idf.py build
idf.py -p /dev/ttyUSB0 flash && idf.py -p /dev/ttyUSB0 monitor

The output would be something like:

I (0) cpu_start: App cpu up.
I (184) heap_init: Initializing. RAM available for dynamic allo
cation:
I (191) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (197) heap_init: At 3FFB2EF8 len 0002D108 (180 KiB): DRAM
I (204) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (210) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (216) heap_init: At 40089560 len 00016AA0 (90 KiB): IRAM
I (223) cpu_start: Pro cpu start user code
I (241) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...

You can press Ctrl + ] to exit the monitor and ready for the next setup.

Building and flashing Wallet application to ESP32

Step 1: cloning wallet repository

git clone --recursive https://github.com/oopsmonk/iota_esp32_wallet.git

Or (if you didn't put the --recursive command during clone)

git clone https://github.com/oopsmonk/iota_esp32_wallet.git
cd iota_esp32_wallet
git submodule update --init --recursive

Step 2: initializing components

The init.sh helps us to generate files and switch to the right branch for the components.

Linux:

cd iota_esp32_wallet
bash ./init.sh

Windows: TODO

Step 3: Wallet Configuration

In this step, you need to set up the WiFi, SNTP, IOTA node, and SEED.

idf.py menuconfig

# WiFi SSID & Password
[IOTA Wallet] -> [WiFi]

# SNTP Client
[IOTA Wallet] -> [SNTP]

# Default IOTA node
[IOTA Wallet] -> [IOTA Node]

# Default IOTA SEED 
[IOTA Wallet] -> [IOTA Node] -> () Seed

You can check configures in sdkconfig file.

Please make sure you assigned the seed(CONFIG_IOTA_SEED), Here is an example for your wallet configuration:

CONFIG_SNTP_SERVER="pool.ntp.org"
CONFIG_SNTP_TZ="CST-8" 
CONFIG_IOTA_SEED="YOURSEED9YOURSEED9YOURSEED9YOURSEED9YOURSEED9YOURSEED9YOURSEED9YOURSEED9YOURSEED9"
CONFIG_IOTA_NODE_DEPTH=3
CONFIG_IOTA_NODE_MWM=14
CONFIG_IRI_NODE_URL="nodes.iota.cafe"
CONFIG_IRI_NODE_PORT=443
CONFIG_IOTA_NODE_ENABLE_HTTPS=y
CONFIG_WIFI_SSID="MY_SSID"
CONFIG_WIFI_PASSWORD="MY_PWD"

The CONFIG_SNTP_TZ follows the POSIX Timezone string

Step 4: Build & flash

idf.py build
idf.py -p /dev/ttyUSB0 flash && idf.py -p /dev/ttyUSB0 monitor

Output:

I (5149) tcpip_adapter: sta ip: 192.168.11.149, mask: 255.255.255.0, gw: 192.168.11.1
I (5149) esp32_main: Connected to AP
I (5149) esp32_main: IOTA Node: nodes.thetangle.org, port: 443, HTTPS:True

I (5159) esp32_main: Initializing SNTP: pool.ntp.org, Timezone: CST-8
I (5169) esp32_main: Waiting for system time to be set... (1/10)
I (7179) esp32_main: Waiting for system time to be set... (2/10)
I (9179) esp32_main: The current date/time is: Mon Jun 15 17:25:08 2020
IOTA> 
IOTA> node_info
=== Node: nodes.thetangle.org:443 ===
appName IRI 
appVersion 1.8.6 
latestMilestone: HQKJKH9QFEILIVFRVKINXDURQHPRZGWEXCQXIDZURDCAHWHYIIVSGSXMVYAAVNAGQJDDIDSLMMPIA9999
latestMilestoneIndex 1445037 
latestSolidSubtangleMilestone: HQKJKH9QFEILIVFRVKINXDURQHPRZGWEXCQXIDZURDCAHWHYIIVSGSXMVYAAVNAGQJDDIDSLMMPIA9999
latestSolidSubtangleMilestoneIndex 1445037 
neighbors 24 
packetsQueueSize 0 
time 1592213225856 
tips 6153 
transactionsToRequest 0 
IOTA> 

help for more details.
Ctrl + ] to exit.

Troubleshooting

CONFIG_IOTA_SEED is not set or is invalid:

I (329) esp32_main: iota wallet system starting...
E (329) esp32_main: please set a valid seed in sdkconfig!
I (329) esp32_main: Restarting in 30 seconds...
I (1329) esp32_main: Restarting in 29 seconds...

CONFIG_MAIN_TASK_STACK_SIZE is too small, you need to enlarge it:

***ERROR*** A stack overflow in task main has been detected.
abort() was called at PC 0x4008af7c on core 0
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].