La façon la plus simple pour envoyer des bitcoins à quelqu’un est d’entrer l’adresse du destinataire ainsi que le montant associé dans son client Bitcoin[1], puis de propager la transaction dans la blockchain. C’est la base du processus.
Cependant, lorsqu’on a envie de faire une petite donation à son journal en ligne préféré, nous sommes tous fainéants et ouvrir son client, copier l’adresse, la coller dans le champ prévu, voire même spécifier un libellé et une description devient vite rébarbatif !
Heureusement, la plupart des sites proposent un lien cliquable qui peut être associé à l’ouverture de notre client préféré, pré-remplissant pour nous tous ces champs. C’est notamment le cas ici sur BitConseil.
Encore faut-il que ce soit bien implémenté ! Après avoir vu comment associer son portefeuille à ce type de liens, je vais donc dans cet article détailler les spécifications du Schéma d’URI Bitcoin, c’est le côté “développeur” de leur implémentation.
Schéma d’URI
Tout d’abord, petit point sémantique.
Les non-initiés auront peut-être déjà entendu parler de l’URL[2], communément désigné sous le terme d'”adresse web”. Les URL sont en réalité un sous-ensemble des URI[3].
Un URI peut aussi être de type « name » (URN[4]), voire à la fois URL et URN. Si vous désirez en savoir plus, je vous invite à cliquer sur les liens pour vous rendre sur les articles Wikipédia qui leur sont consacrés.
Le Schéma d’URI, quant à lui, définit une structure de nommage dont la syntaxe est laissée aux spécifications du-dit schéma, basées sur un standard[5]. Ces schémas d’URI sont supposés être enregistrés auprès de l’IANA[6], cependant dans la pratique on utilise régulièrement des schémas non enregistrés, ce qui est encore le cas pour le schéma d’URI Bitcoin.
Pour le dire de manière plus simple, le schéma d’URI définit la structure à respecter pour implémenter un lien HTML sur une page web.
Bitcoin Improvement Proposal 0021
Un BIP est un document servant à introduire des fonctionnalités ou informations à Bitcoin. Pour en savoir plus, vous pouvez d’ailleurs lire le tout premier Bitcoin Improvement Proposal, le BIP 0001, qui décrit justement ce qu’est un BIP ! Bien sûr, avant d’être implémentées dans le client Bitcoin de référence (Bitcoin Core), ces propositions doivent encore être vérifiées et acceptées par une majorité des développeurs de la communauté Bitcoin.
Depuis le 5 Février 2012, c’est le BIP 0021 qui définit les spécifications du schéma d’URI de Bitcoin. Ce document étant suffisamment explicite[7], je me base sur ce dernier pour vous expliquer comment mettre en place un lien avec un URI “propre” sur votre site web.
La syntaxe
Commençons par la syntaxe de base, simplifiée pour une lecture humaine. Il est à noter que le schéma d’URI Bitcoin ne déroge pas à la règle et suit bien le standard défini dans la RFC 3986.
bitcoin:<address>[?amount=<amount>][?label=<label>][?message=<message>]
<xxxx> sont des marqueurs de remplacement (placeholders en anglais) tandis que [yyyy] signifie que c’est optionnel.
Explications
Le schéma d’URI commence par “bitcoin:“. Suivant le standard, cela correspond au nom du schéma (signifiant ici le protocole Bitcoin).
Ensuite viennent les paramètres :
- Le seul obligatoire est l’adresse de destination.
- Le montant (amount), le libellé (label) et la description (message) sont donc optionnels.
- Comme tout URI, l’ordre des paramètres optionnels n’a pas d’importance.
Il faut aussi préciser que seul le premier paramètre optionnel doit être introduit par un point d’interrogation “?”, les autres devront quand à eux être introduits par le caractère “&”, comme vous le verrez dans les exemples ci-dessous.
Notez aussi que comme tout URI, certains caractères spéciaux et/ou réservés doivent être encodés[8]. Voici par exemple ce que donne la chaîne “Pâté de foie” une fois encodée :
P%C3%A2t%C3%A9%20de%20foie
Vous pouvez notamment utiliser le petit service d’encodage en javascript disponible sur cette page, au paragraphe “URL Encoding Functions”. Notez qu’il est préférable d’éviter les accents, j’ai eu des problèmes avec Electrum qui n’arrivait pas à décoder ces caractères.
Exemples
Voici quelques exemples pour vous montrer ce que ça donne. Bien entendu, j’utilise ici une de nos adresses de donation 😉 A votre bon coeur !
L’ouverture du portefeuille n’entraîne pas la validation de la transaction ! Vous aurez la possibilité de changer ses critères (adresse, montant, message, etc.) ou même de l’annuler, aucun rique, vous restez maîtres de votre argent !
Adresse seule :
bitcoin:33P6eXmyeC63TCZnT1ugsnw77rNcGwGj6E
Ajoutons un message :
bitcoin:33P6eXmyeC63TCZnT1ugsnw77rNcGwGj6E?message=Une%20petite%20donation%20pour%20BitConseil%20!
Voire un libellé :
bitcoin:33P6eXmyeC63TCZnT1ugsnw77rNcGwGj6E?message=Une%20petite%20donation%20pour%20BitConseil%20!&label=BitConseil
Et même un montant :
bitcoin:33P6eXmyeC63TCZnT1ugsnw77rNcGwGj6E?amount=0.0053&message=Une%20petite%20donation%20pour%20BitConseil%20!&label=BitConseil
Si l’on traduisait le dernier URI il dirait « Envoyer 0.0053BTC (équivalent à 2 euros environ à l’heure où j’écris) à BitConseil avec le message suivant : Une petite donation pour le génial BitConseil ! ».
En pratique
Pour terminer cet article, voici un lien implémentant le schéma d’URI Bitcoin correspondant au dernier exemple, ainsi que son code source HTML.
<a href="bitcoin:33P6eXmyeC63TCZnT1ugsnw77rNcGwGj6E?amount=0.0053&message=Une%20petite%20donation%20pour%20le%20g%C3%A9nial%20BitConseil%20!&label=BitConseil" title="Envie de faire un petit don ?" target="_blank">Donner 0.0053BTC à BitConseil</a>
Et voilà ! Vous savez maintenant (presque) tout sur le schéma d’URI Bitcoin !
Pour conclure, je rajouterai que les fameux QR Codes vous permettant d’effectuer votre don facilement à l’aide de votre téléphone portable sont en réalité bien souvent une représentation graphique de ce même schéma d’URI[9], tout simplement !
Vous savez maintenant comment inclure un lien de paiement ou de donation sur votre site web !
Commentaires