Großartiges Hardware Wallet für Bitcoin zu einem kleinen Preis
AKTUALISIEREN: Sehen Sie sich hier das Update 2024 an
In diesem Beitrag präsentieren wir eine Anleitung, wie man ein Hardware Wallet für weniger als 15 € bekommt, das voll funktionsfähig und einfach zu bedienen ist, ohne sperrig oder minderwertig zu sein. Der Prozess ist ziemlich zugänglich. Sie benötigen lediglich eine leicht erhältliche Arduino-Entwicklungsplatine, und indem Sie den schrittweisen Anweisungen folgen, können wir erfolgreich unser eigenes Gerät erstellen.
Die empfohlene Platine ist eine TTGO T-Display, die weniger als 15 € bei AliExpress kostet, aber mit Angeboten kann der Preis auf 10 € (oder sogar etwa 5 € auf AliExpress für neue Benutzer) sinken. Die 4-MB-Version ist geeignet; wir haben den CH9102F verwendet, aber beide sollten funktionieren, einschließlich des TELEC
Okay, mit diesem kleinen Board und nichts anderem, flashen wir die Blockstream JADE-Software. Es handelt sich um ein BITCOIN-ONLY-Wallet, aber es ist eines unserer Favoriten. Es gibt die Möglichkeit, eine Kamera und Batterie hinzuzufügen, aber um Kosten und Komplexität zu minimieren, verwendet dieser Leitfaden es ohne Kamera oder Batterie, ähnlich wie ein Ledger Nano S.
Es ist wichtig zu beachten, dass die Software, die dieses Hardware Wallet (JADE) antreibt, Open Source ist und es uns ermöglicht, sie auf jedem kompatiblen Gerät zu installieren. Als spezielle Empfehlung erweist sich das TTGO T-Display als ausgezeichnete Wahl und bietet eine optimale Balance zwischen Leistung und Praktikabilität für diesen Zweck.
Flashing und Software-Signierung:
Rufen Sie zunächst die Blockstream Jade GitHub Seite auf: https://github.com/Blockstream/Jade. Alle Schritte werden in diesem Beitrag erklärt, aber Sie möchten möglicherweise auch die offizielle Quelle überprüfen. Es wird empfohlen, Linux-basierte Systeme zu verwenden, aber es ist auch mit Windows oder macOS möglich, dieselben Befehle werden verwendet. Linux wird aufgrund früherer Probleme mit dem Zufallszahlengenerator von Windows bevorzugt.
Vergewissern Sie sich, dass git und python installiert sind. Wenn Sie sich nicht sicher sind, führen Sie den folgenden Befehl aus:
sudo apt install git python3-pip python3-venv
Erstellen Sie dann den Ordner “esp”, falls er noch nicht vorhanden ist:
mkdir esp
Führen Sie nun die folgenden Befehle aus:
cd ~/esp git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git
cd ~/esp/esp-idf && git checkout e088c3766ba440e72268b458a68f27b6e7d63986 && ./install.sh esp32
Führen Sie schließlich diesen Befehl aus, um die Umgebungsvariablen einzurichten:
. $HOME/esp/esp-idf/export.sh
Das Firmware kompilieren:
Jetzt ist es an der Zeit, das Firmware zu kompilieren. Klonen Sie das Jade-Repository
git clone --recursive https://github.com/Blockstream/Jade.git $HOME/jade
Jetzt müssen wir sicherstellen, dass wir das Gerät kennen, das wir verwenden, und die Datei sdkconfig.defaults entsprechend konfigurieren. Wir müssen nach unserer Datei in diesem Ordner suchen:
Suchen Sie die folgende Datei, und kopieren Sie sie aus dem Unterordner configs des JADE-Ordners in den Stammordner (/jade/).
Jetzt sollten wir die Originaldatei sdkconfig.defaults löschen (oder anders benennen) und die gerade kopierte Datei umbenennen und sie “sdkconfig.defaults” nennen.
Führen Sie dann den folgenden Befehl im Terminal aus:
cd $HOME/jade
Wenn Sie cmake nicht installiert haben, führen Sie auch diesen Befehl aus:
sudo apt install cmake
Führen Sie schließlich diesen Befehl aus, um die Firmware zu flashen:
idf.py flash monitor
Die Firmware wird nun geflasht, und das Gerät ist betriebsbereit. Sie können es mit Sparrow, Electrum oder Blockstream Green verbinden.
Aber… wie Sie sehen können, erscheint es nicht als normales JADE, wenn Sie Blockstream Green verwenden; es wird als DEV in Rot angezeigt. In der Theorie kann es auf diese Weise verwendet werden, aber es fehlt der Secure Boot. Um eine zusätzliche Sicherheitsebene hinzuzufügen, wird empfohlen, den Secure Boot zu aktivieren.
Sicheres Starten
Um den Secure Boot zu implementieren und das Gerät als reguläres JADE zu konfigurieren, müssen wir die Datei sdkconfig.defaults ändern. Zuerst müssen wir diese Zeile zur Datei hinzufügen:
CONFIG_LOG_DEFAULT_LEVEL_NONE=y
Dann sollten wir den Debug-Modus löschen:
Außerdem, wenn Sie die Bluetooth-Funktionalität entfernen möchten (was für diese Art von Hardware Wallet ohne Batterie sinnvoll sein könnte), fügen Sie diese Zeilen hinzu:
CONFIG_APP_NO_BLOBS=y
CONFIG_MBEDTLS_ECP_RESTARTABLE=y
CONFIG_MBEDTLS_CMAC_C=yCO
Und löschen Sie die folgenden Einträge:
CONFIG_BT_ENABLED=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
#CONFIG_BT_NIMBLE_ROLE_CENTRAL is not set
#CONFIG_BT_NIMBLE_ROLE_BROADCASTER is not set
#CONFIG_BT_NIMBLE_ROLE_OBSERVER is not set
CONFIG_BT_NIMBLE_NVS_PERSIST=y
#CONFIG_BT_NIMBLE_SM_LEGACY is not set
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
#CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED is not set
Fügen Sie dann für die Secure Boot-Konfiguration diese Zeilen hinzu:
CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE=y
CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
CONFIG_SECURE_BOOT_SIGNING_KEY="PATH TO YOUR SIGNING KEY"
CONFIG_SECURE_BOOT=y
CONFIG_SECURE_FLASH_ENC_ENABLED=y
CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
CONFIG_ESP32_REV_MIN_3=y
Und löschen Sie diese:
CONFIG_EFUSE_VIRTUAL=y
Löschen Sie in diesem Fall auch make sure that CONFIG_ESP32_REV_MIN_3=y is not already present with REV_MIN_1
und belassen Sie nur die Option REV_MIN_3.
In der Zeile “Path to your signing key” müssen Sie den Pfad zu einem noch nicht generierten Signierschlüssel angeben:
CONFIG_SECURE_BOOT_SIGNING_KEY="hideyourkeys-v2.pem"
Speichern und schließen Sie die Datei.
Jetzt ist es an der Zeit, die Signierschlüssel zu generieren. Führen Sie im Terminal den folgenden Befehl aus (beachten Sie, dass Sie Ihre Datei genauso benennen sollten wie in der zuvor modifizierten sdkconfig.defaults-Datei, wir haben sie hideyourkeys-v2 genannt):
espsecure.py generate_signing_key --version 2 ~/jade/hideyourkeys-v2.pem
Die Schlüsseldatei befindet sich im gleichen Jade-Verzeichnis. Wenn Sie einen anderen Pfad gewählt haben, stellen Sie sicher, dass er mit der sdkconfig.defaults-Datei übereinstimmt und der relative Pfad in dieser Datei korrekt ist. Führen Sie jetzt den folgenden Befehl aus, um die Build-Konfiguration einzurichten:
idf.py menuconfig
Das folgende Menü wird angezeigt:
Im Menü gehen Sie zu den Sicherheitseinstellungen, aktivieren Sie den sicheren Start des Hardware im Bootloader, wählen Sie die Version aus, speichern und schließen Sie. Auch die anderen Funktionen (Aktivieren der Flash-Verschlüsselung beim Booten oder Überprüfen, ob die Flash-Verschlüsselung beim Start aktiviert ist) sollten markiert sein. All diese Optionen sollten standardmäßig markiert sein. Falls dies nicht der Fall ist, laden Sie unser Handbuch für Hardware Wallets herunter, kopieren Sie die Konfigurationsdatei im Anhang A, ersetzen Sie sie in der Datei sdkconfig.defaults und löschen Sie alle vorherigen sdkconfig-Dateien im Jade-Ordner.
Beachten Sie, je nach dem Gerät, das Sie verwenden, können Sie möglicherweise Secure Boot V1 oder V2 auswählen. Es ist vorzuziehen, V2 zu verwenden, falls verfügbar. Unsere Geräte unterstützen Secure Boot V2 (genauso wie ein handelsüblicher Blockstream Jade), aber für den Fall, dass Sie diese Anleitung mit einem anderen ESP32-Gerät befolgen, das nur Secure Boot V1 unterstützt.
Nun ist es an der Zeit, das Gerät anzuschließen. Sobald das Gerät angeschlossen ist, starten Sie:
idf.py bootloader
Sie erhalten dann eine ähnliche Ausgabe wie diese:
Aber der Bootloader wird auch einen Befehl bereitstellen, den wir ausführen sollten. Er sollte ähnlich diesem sein. Entfernen Sie den Port (-p (PORT)) und die Baudrateninformationen (-b (460800)) bevor Sie ihn ausführen:
/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size 2MB --flash_freq 40m 0x1000 build/bootloader/bootloader.bin
Hinweis: Wir haben festgestellt, dass Sie in einigen Fällen möglicherweise nicht die oben stehende Aufforderung erhalten. In einem solchen Fall könnten Sie möglicherweise den Schritt ausführen, indem Sie den folgenden Befehl ausführen: idf.py bootloader bootloader-flash
Führen Sie nun, ohne das Gerät auszustecken, Folgendes aus:
idf.py build
Bei Erfolg werden im Terminal zwei Befehle zum Flashen des Builds angezeigt (beachten Sie, dass der fettgedruckte Pfad auf Ihrem Computer unterschiedlich sein kann):
/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin
“
or run "idf.py -p (PORT) flash
Jetzt sollten Sie einen der beiden vorherigen Befehle aus der Build-Ausgabe ausführen. Wir empfehlen, den ersten zu verwenden, und den Port und die Baudrate manuell zu löschen (fett markiert), es sei denn, Sie kennen diese Werte:
/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin
Jetzt wird das Gerät geflasht, aber es bleibt im Bootloader-Modus:
Um das Gerät neu zu starten und den Bootloader-Status zu verlassen, führen Sie aus:
idf.py monitor
Das Gerät wird neu gestartet und sollte nicht mehr als Entwicklungsgerät in Blockstream Green erscheinen. Es ist sehr wichtig zu warten, bis das Gerät neu gestartet ist, bevor Sie es herausziehen, da das Gerät sonst unbrauchbar wird. Dies kann einige Minuten dauern.
Vor- und Nachteile
NACHTEILE:
- Es ist mühsam und erfordert etwas Bastelei, aber wenn man die Schritte befolgt, dauert es weniger als 5 Minuten.
- Keine Kamerafunktion oder Batterie, funktioniert wie ein Ledger Nano S, nur eingesteckt.
- Die Aktualisierung ist mühsamer als beim Original (obwohl Sie nur vier Befehle eingeben müssen).
VORTEILE:
- Sehr kompakt und billig Hardware Brieftasche, nicht schäbig, wenn ein Fall verwenden.
- Eine ausgezeichnete Bitcoin-Wallet für einen sehr geringen Preis.
- Es ist eine gute Alternative für ein Backup-Gerät.
Um das Erscheinungsbild zu verbessern, stehen verschiedene Gehäuse auf AliExpress zur Verfügung, die zwischen 4 € und 8 € kosten. Wenn Sie einen 3D-Drucker haben, gibt es online Modelle, indem Sie nach “ttgo t-display case” suchen.
Firmware aktualisieren
Falls Sie die Firmware aktualisieren müssen, schließen Sie das Gerät an und führen Sie die folgenden Befehle aus:
cd $HOME/jade
git pull
idf.py build
python jade_ota.py --noagent
Das Gerät zeigt eine Update-Meldung an, die bestätigt werden muss, genau wie bei einem normalen JADE.
Werkseinstellungen zurücksetzen
Wenn Sie einen Werksreset durchführen möchten (um beispielsweise ein neues Wallet einzurichten und das aktuelle zu löschen), drücken Sie beide Tasten, wenn das Blockstream JADE-Logo erscheint, und Sie erhalten die Option, einen Werksreset durchzuführen.
Fazit
Unserer Meinung nach ist dies die zugänglichste Möglichkeit, eine voll funktionsfähige Hardware Wallet für Bitcoin zu haben. Es ist nicht die einfachste Lösung, aber es ist ein vernünftiger Ansatz zu einem fairen Preis.
Wenn Sie Fragen oder Probleme haben, können Sie uns gerne per E-Mail unter [email protected] kontaktieren. Sie möchten vielleicht auch unser Handbuch für Hardware Wallets und unser Hardware Wallet überprüfen, falls Sie diese Anleitung überspringen möchten.