Die Firmware bauen
Den Quellcode der Firmware auf den Pi laden und dort kompilieren.
- 120 Min.
- Auf dem Pi
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
sudo apt update
sudo apt install -y git build-essential python3-venv protobuf-compiler libprotobuf-devDen Quellcode herunterladen
Das lädt etwa 600 MB herunter.
git clone --depth 1 --branch diy https://github.com/rayston92/firmware-classic1s.git ~/wallet
cd ~/wallet
git submodule update --init --recursive --depth 1Prüf, ob du genau den Code hast, für den diese Anleitung geschrieben wurde:
git log -1 --format=%HEs 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:
python3 -m venv ~/wallet-venv
. ~/wallet-venv/bin/activate
pip install "nanopb==0.4.*" protobuf mako munch click requests typing_extensionsKompilieren
cd ~/wallet/legacy
EMULATOR=1 DIY_HAT=1 DEBUG_LINK=0 BITCOIN_ONLY=1 ./script/cibuildBITCOIN_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
ls -lh firmware/onekey_emu.elfDu solltest eine Datei sehen, etwa 5 MB7 MB groß. Das ist die Firmware deiner Wallet.