this allows us to parse huge mainnet addblock messages. the max we've seen so far is around 45KB. in that case, we previously would require two contiguous, 45KB chunks of memory; one for the mqtt raw bytes, and the other for the message struct returned by msgs::read. with this commit, we still require a 45KB contiguous chunk for msgs::read, but now the network bytes come in broken up into a vector of vectors, which makes room for that 45KB allocation.
sphinx-key
A Lightning Hardware Wallet based on Validating Lightning Signer
build and flash firmware
build factory
cd factory
cargo build --release
Find your port (ls /dev/tty.*)
PORT=/dev/tty.usbserial-1420
espflash $PORT target/riscv32imc-esp-espidf/release/sphinx-key-factory
esptool.py --chip esp32c3 elf2image target/riscv32imc-esp-espidf/release/sphinx-key-factory
build
cd ../sphinx-key
The wifi SSID and password needs to be in env to build the firmware. SSID must be at least 6 characters, and PASS must be at least 8 characters.
SSID=sphinx-1 PASS=sphinx-1234 cargo build --release
install esptool
pip install esptool
flash release
esptool.py --chip esp32c3 elf2image target/riscv32imc-esp-espidf/release/sphinx-key
esptool.py --chip esp32c3 -p $PORT -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size 4MB 0x10000 target/riscv32imc-esp-espidf/release/sphinx-key.bin
monitor
espmonitor $PORT
configure the hardware (or you can use your Sphinx app)
make a seed: ./newseed.sh
make a .env file like:
SSID={my_ssid}
PASS={my_wifi_password}
BROKER={broker_ip_and_port}
SEED={my_seed_hex}
NETWORK=regtest
connect to the sphinxkey network on your computer
cargo run --bin config
This will encrypt your seed and send to the hardware, along with your home wifi information and broker address
other utils
clear NVS storage
espflash target/riscv32imc-esp-espidf/debug/clear
espmonitor $PORT
pingpong test
cargo build --features pingpong
espflash target/riscv32imc-esp-espidf/debug/sphinx-key --monitor
button test
espflash target/riscv32imc-esp-espidf/debug/btn
espmonitor $PORT
dependencies
cargo nightly:
rustup install nightly
rustup component add rust-src --toolchain nightly
rustup default nightly
python 3.7 or higher is required
cargo sub-commands:
cargo install cargo-generate
cargo install ldproxy
cargo install espflash
cargo install espmonitor
cargo generate esp-rs
cargo generate --git https://github.com/esp-rs/esp-idf-template cargo
std support: true
v4.4
esp32c3
nightly
cargo build
espflash notes
espflash save-image esp32-c3 target/riscv32imc-esp-espidf/release/sphinx-key ./test-flash
espflash board-info
esptool.py --chip esp32c3 elf2image target/riscv32imc-esp-espidf/release/sphinx-key
esptool.py --chip esp32c3 -p /dev/tty.usbserial-1420 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size 4MB 0x10000 target/riscv32imc-esp-espidf/release/sphinx-key.bin
espmonitor /dev/tty.usbserial-1420
for ESP-IDF#4.3.2: export CC=$PWD/.embuild/espressif/tools/riscv32-esp-elf/esp-2021r2-8.4.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc