Compiler le firmware
Télécharger le code source du firmware sur le Pi et le compiler sur place.
- 120 min
- Sur le Pi
Le firmware est compilé sur le Pi lui-même. Ainsi, le code qui tourne sur votre portefeuille ne passe jamais par une autre machine sous forme de programme fini.
Ce que change la version DIY
Le code source vient du firmware Classic 1S de OneKey, avec un petit ensemble de modifications pour le faire tourner sur un Pi. Ces modifications comptent, parce que la version de ce firmware qui tourne sur un ordinateur normal a été faite pour les développeurs qui le testent, pas pour garder de l’argent :
- Le hasard vient de la puce. La version non modifiée crée la même phrase de récupération sur chaque ordinateur, parce que ses nombres aléatoires viennent d’une formule fixe. La version DIY les lit directement dans le générateur matériel de nombres aléatoires de la puce du Pi, qui mesure du bruit électronique. Elle contrôle chaque octet avec les tests de santé au démarrage et en continu de la norme NIST SP 800-90B, et condense avec SHA-256 quatre fois plus d’octets qu’elle n’en utilise. Si le générateur est absent ou échoue à un test, le portefeuille s’arrête au lieu de créer une phrase.
- Aucun accès extérieur. La version non modifiée accepte les connexions de tout le réseau. La version DIY, seulement celles des programmes du Pi lui-même.
- Interface de débogage désactivée. L’interface de débogage permet d’extraire la phrase de récupération. La commande de compilation ci-dessous la désactive.
- Écran et boutons. Elle affiche sur l’écran de 1,3 pouce et lit le joystick, au lieu d’ouvrir une fenêtre sur un bureau.
- Stockage lié à cette carte. Le portefeuille enregistré est chiffré avec une clé qui dépend aussi du numéro de série de ce Pi.
Toutes les modifications du code de OneKey tiennent sur une seule page, que vous pouvez lire en entier : les modifications DIY sur GitHub.
Installer les outils de compilation
sudo apt update
sudo apt install -y git build-essential python3-venv protobuf-compiler libprotobuf-devTélécharger le code source
Cela télécharge environ 600 Mo.
git clone --depth 1 --branch diy https://github.com/rayston92/firmware-classic1s.git ~/wallet
cd ~/wallet
git submodule update --init --recursive --depth 1Vérifiez que vous avez exactement le code pour lequel ce guide a été écrit :
git log -1 --format=%HLa commande doit afficher 287341b8338d00c16da8700258944ac97e44114f. Si elle affiche autre chose, la branche a changé depuis la vérification de ce guide. Lisez ce qui a changé avant de continuer.
Préparer Python
La compilation utilise quelques outils Python pour générer du code. Gardez-les dans leur propre dossier :
python3 -m venv ~/wallet-venv
. ~/wallet-venv/bin/activate
pip install "nanopb==0.4.*" protobuf mako munch click requests typing_extensionsCompiler
cd ~/wallet/legacy
EMULATOR=1 DIY_HAT=1 DEBUG_LINK=0 BITCOIN_ONLY=1 ./script/cibuildBITCOIN_ONLY=1 laisse de côté toutes les cryptomonnaies sauf Bitcoin, comme vous l’avez choisi dans Votre configuration.
Cela prend du temps sur un Pi Zero 2 W : probablement une à deux heures (ce n’est pas encore chronométré sur un vrai Pi). Des lignes commençant par CC défilent pendant le travail. Les avertissements sont normaux ; c’est terminé quand l’invite revient. D’ici là, empêchez votre ordinateur de se mettre en veille : si la fenêtre SSH se ferme, la compilation s’arrête. Reconnectez-vous et relancez la même commande, elle reprend là où elle s’était arrêtée.
Si vous vous reconnectez plus tard, lancez . ~/wallet-venv/bin/activate avant de compiler à nouveau.
Point de contrôle
ls -lh firmware/onekey_emu.elfVous devez voir un seul fichier, d’environ 5 Mo7 Mo. C’est le firmware de votre portefeuille.