Zum Inhalt springen
DIY Wallet
DE

Die Firmware bauen

Den Quellcode der Firmware auf den Pi laden und dort kompilieren.

  • 120 Min.
  • Auf dem Pi
Teile und Optionen

Die Firmware wird auf dem Pi selbst kompiliert. So geht der Code, der auf deiner Wallet läuft, nie als fertiges Programm über ein anderes Gerät.

Was die DIY-Version ändert

Der Quellcode stammt aus der Firmware der OneKey Classic 1S, plus ein paar Änderungen, damit sie auf einem Pi läuft. Diese Änderungen sind wichtig, denn die Version dieser Firmware, die auf einem normalen Computer läuft, wurde für Entwickler zum Testen gemacht, nicht zum Aufbewahren von Geld:

  • Zufall aus dem Chip. Die unveränderte Version erzeugt auf jedem Computer dieselbe Wiederherstellungsphrase, weil ihre Zufallszahlen aus einer festen Formel stammen. Die DIY-Version liest sie direkt aus dem Hardware-Zufallszahlengenerator im Chip des Pi, der elektronisches Rauschen misst. Sie prüft jedes Byte mit den Gesundheitstests aus NIST SP 800-90B, beim Start und laufend, und verdichtet mit SHA-256 viermal so viele Bytes, wie sie verwendet. Fehlt der Generator oder fällt er durch einen Test, hält die Wallet an, statt eine Phrase zu erzeugen.
  • Kein Zugriff von außen. Die unveränderte Version nimmt Verbindungen aus dem ganzen Netzwerk an. Die DIY-Version nur von Programmen auf dem Pi selbst.
  • Debug-Schnittstelle aus. Über die Debug-Schnittstelle lässt sich die Wiederherstellungsphrase auslesen. Der Befehl zum Bauen weiter unten schaltet sie ab.
  • Bildschirm und Tasten. Sie zeichnet auf den 1,3-Zoll-Bildschirm und liest den Joystick, statt ein Fenster auf einem Desktop zu öffnen.
  • Speicher an diese Platine gebunden. Die gespeicherte Wallet ist mit einem Schlüssel verschlüsselt, der auch von der Seriennummer dieses Pi abhängt.

Alle Änderungen an OneKeys Code stehen auf einer Seite, die du vollständig lesen kannst: die DIY-Änderungen auf GitHub.

Die Werkzeuge zum Bauen installieren

Auf dem Pi
sudo apt update
sudo apt install -y git build-essential python3-venv protobuf-compiler libprotobuf-dev

Den Quellcode herunterladen

Das lädt etwa 600 MB herunter.

Auf dem Pi
git clone --depth 1 --branch diy https://github.com/rayston92/firmware-classic1s.git ~/wallet
cd ~/wallet
git submodule update --init --recursive --depth 1

Prüf, ob du genau den Code hast, für den diese Anleitung geschrieben wurde:

Auf dem Pi
git log -1 --format=%H

Es sollte 287341b8338d00c16da8700258944ac97e44114f ausgeben. Wenn etwas anderes erscheint, hat sich der Zweig geändert, seit diese Anleitung geprüft wurde. Lies nach, was sich geändert hat, bevor du weitermachst.

Python einrichten

Beim Bauen erzeugen ein paar Python-Werkzeuge Code. Leg sie in einen eigenen Ordner:

Auf dem Pi
python3 -m venv ~/wallet-venv
. ~/wallet-venv/bin/activate
pip install "nanopb==0.4.*" protobuf mako munch click requests typing_extensions

Kompilieren

Auf dem Pi
cd ~/wallet/legacy
EMULATOR=1 DIY_HAT=1 DEBUG_LINK=0 BITCOIN_ONLY=1 ./script/cibuild

BITCOIN_ONLY=1 lässt alle Coins außer Bitcoin weg, wie du es unter Deine Variante gewählt hast.

Auf einem Pi Zero 2 W dauert das eine Weile, vermutlich ein bis zwei Stunden (auf einem echten Pi wurde es noch nicht gemessen). Währenddessen laufen Zeilen durch, die mit CC beginnen. Warnungen sind normal; fertig ist es, wenn die Eingabezeile wieder erscheint. Lass deinen Computer bis dahin nicht in den Ruhezustand gehen: Schließt sich das SSH-Fenster, bricht das Kompilieren ab. Dann meldest du dich wieder an und startest denselben Befehl noch einmal, er macht dort weiter.

Wenn du dich später erneut anmeldest, führ . ~/wallet-venv/bin/activate aus, bevor du wieder baust.

Kontrollpunkt

Auf dem Pi
ls -lh firmware/onekey_emu.elf

Du solltest eine Datei sehen, etwa 5 MB7 MB groß. Das ist die Firmware deiner Wallet.

Fertig? Weiter zu Schritt 5Auf dem Pi installieren

Zuletzt mit dem Quellcode abgeglichen am