Widget de suivi Bitcoin
Open-sourceLe contexte
Je voulais un moyen simple de vérifier le solde d'une adresse Bitcoin ou d'un portefeuille complet directement depuis l'écran d'accueil de mon iPhone, sans dépendre d'une app tierce qui aurait accès à mes clés. Le projet a démarré comme une vraie app iOS native en SwiftUI, avec son propre widget WidgetKit — et elle fonctionne très bien dans le simulateur Xcode.
C'est en essayant de l'installer sur mon téléphone que les choses se sont compliquées : avec un identifiant Apple gratuit (pas de compte Developer), la signature d'une app expire au bout de 7 jours. Plutôt que de m'arrêter là, j'ai cherché une autre voie : Scriptable, une app de scripting JavaScript téléchargée depuis l'App Store, donc déjà signée, capable d'afficher ses propres widgets. Le même besoin, sans aucune des contraintes de signature.
Ma démarche
Ne pas sacrifier la rigueur pour la simplicité de déploiement. Passer à un script ne devait pas vouloir dire bâcler la partie technique la plus sensible : calculer les adresses d'un portefeuille à partir d'une clé publique étendue (xpub/ypub/zpub), qui repose sur de la cryptographie à courbe elliptique (BIP32). J'ai embarqué deux librairies JavaScript reconnues et auditées plutôt que de réécrire ce calcul moi-même, puis validé l'ensemble bit à bit contre les vecteurs de test officiels de la spécification Bitcoin (BIP32 et BIP84) — la dérivation reproduit exactement les adresses publiées dans la norme.
Rester lisible malgré la contrainte technique. Un widget n'a pas d'écran de réglages : tout passe par un simple champ texte. J'ai itéré plusieurs fois sur la façon de configurer le suivi de la plus-value (calcul optionnel basé sur un prix d'achat moyen) pour que le widget explique lui-même, quand il n'est pas encore configuré, exactement quoi taper — plutôt que de renvoyer vers une documentation externe.
Captures avec l'adresse publique du bloc de genèse de Bitcoin (2009), utilisée comme démonstration — pas mon portefeuille personnel.
Ce que ce projet m'a appris
La partie la plus intéressante n'a pas été d'écrire du JavaScript — je ne sais pas coder, ce projet a été réalisé intégralement avec l'aide de l'IA — mais de devoir changer de plateforme technique en cours de route face à une contrainte réelle (le sideload avec un compte gratuit) sans revenir sur l'exigence de départ.
Mobilisé : JavaScript (Scriptable) · Swift / SwiftUI / WidgetKit (version native) · Cryptographie BIP32/secp256k1 · Codage assisté par IA