Fonctions avancées¶
Dash Electrum est basé sur Electrum, un portefeuille Bitcoin. La plupart des fonctions sont identiques, ce qui signifie qu’il n’est pas nécessaire de reproduire toute la documentation Electrum ici même. Les sections suivantes décrivent quelques fonctions avancées couramment utilisées. Pour en savoir plus sur les autres fonctions avancées d’Electrum pour Bitcoin ou Dash, veuillez cliquer sur les liens ci-dessous.
- Documentation Electrum
- Système de version de graine Electrum
- Spécifications de protocole Electrum
- Sérialisation de transactions non signées ou partiellement signées
- Vérification simple de paiement (Simple Payment Verification, SPV)
- Console Python
- Utiliser Electrum à travers Tor
Les masternodes dans Dash Electrum¶
Dash Electrum est compatible avec la création de masternodes, grâce à une interface appelée le Gestionnaire de masternodes. Cette fonctionnalité est disponible depuis la version 70201 du protocole.
Gestionnaire de masternodes¶
Le gestionnaire de masternodes est accessible soit par le menu Portefeuille > Masternodes, soit par la combinaison de touches Ctrl-M. Le gestionnaire affiche l’état de votre ou vos masternode(s). Un portefeuille sans masternode affichera un masternode par défaut dont vous pourrez modifier toutes les informations nécessaires.
Le gestionnaire affiche les données suivantes sur chaque masternode que vous avez configuré :
- Le nom (alias) du masternode.
- L’état du masternode (c’est-à-dire s’il a été activé).
- Le paiement de caution pour le masternode.
- La clé privée déléguée.
- L’adresse IP et le port où votre masternode peut être contacté.
- La version du protocole dont votre masternode relève.
Configuration de masternode¶
Un masternode nécessite une clé « déléguée », qui est connue à la fois de Dash Electrum et du masternode. Votre masternode utilisera cette clé pour signer des messages, et le réseau Dash saura que vous l’avez autorisé à les signer. Une clé déléguée peut être soit une de vos clés Dash Electrum, soit une clé importée. Dans les deux cas, votre masternode et Dash Electrum devront connaître la clé privée.
Pour utiliser une de vos clés Dash Electrum comme clé déléguée, indiquez sa clé privée dans le champ Clé privée du masternode de l’onglet Voir le masternode.
Adresse IP et version de protocole¶
Certaines informations sur votre masternode sont nécessaires. L’adresse IP et le port employés par votre masternode doivent être fournis. Également, la version du protocole sous lequel tourne votre masternode est une donnée requise. Cette information est renseignée automatiquement si vous importez un fichier « masternode.conf ».
Caution¶
Pour démarrer un masternode, vous devez avoir un paiement de 1000 dashs disponible dans votre portefeuille. Vous pouvez chercher les paiements de 1000 dashs dans votre portefeuille en utilisant l’onglet Choisir la caution du gestionnaire de masternodes.
Après recherche, une liste des paiements de caution de 1000 dashs disponibles sera affichée. Choisir l’un d’entre eux entraînera le remplissage des données pour le masternode sélectionné, mais ces modifications ne seront pas enregistrées avant que vous ne cliquiez sur le bouton Enregistrer au coin inférieur droit de l’onglet.
Activer votre masternode¶
Après avoir choisi un paiement de caution et indiqué une clé déléguée, vous pouvez activer votre masternode. Pour ce faire, cliquez sur Activer le masternode dans l’onglet Activer le masternode du gestionnaire de masternodes. Si le bouton Activer le masternode ne peut pas être cliqué, consultez le message dans la barre d”État. Il vous indiquera pourquoi votre masternode ne peut être activé.
L’activation exige votre mot de passe si votre portefeuille est chiffré, car un message doit être signé. Après avoir attendu que Dash Electrum signe et diffuse l’annonce de votre masternode, il vous sera affiché un message détaillant le résultat. L’état de votre masternode sera mis à jour dans le tableau et dans l’onglet Voir le masternode.
Importer un fichier masternode.conf¶
Vous pouvez importer un fichier masternode.conf dans l’onglet Masternode.conf du gestionnaire de masternodes. C’est la façon recommandée de configurer des masternodes, car elle vous permet de configurer des masternodes pour Dash Core ou Dash Electrum de la même façon. Importer un fichier masternode.conf configurera automatiquement un ou plusieurs masternodes dans le gestionnaire de masternodes.
Portefeuilles multi-signatures¶
Ce tutoriel montre comment créer un portefeuille multi-signature « 2 sur 2 ». Une multi-signature 2 sur 2 consiste en 2 portefeuilles distincts (en général sur des machines distinctes, et potentiellement sous le contrôle de personnes distinctes) qui doivent être utilisés ensemble pour accéder aux fonds. Les deux portefeuilles disposent de la même série d’adresses.
- Un cas d’utilisation typique est celui de fonds contrôlés en commun : par exemple, un ami et vous-même gérez ensemble une entreprise et certains fonds ne peuvent être dépensés qu’avec l’accord des deux.
- Un autre cas d’utilisation relève de la sécurité : un des portefeuilles peut être sur votre ordinateur principal, tandis que l’autre est sur une machine hors ligne. Ainsi, vous rendez très difficile à un attaquant ou à un logiciel malveillant de voler vos fonds.
Créer une paire de portefeuilles « 2 sur 2 »¶
Chaque cosignataire doit faire ceci : sélectionner le menu Fichier > Nouveau, puis choisir Portefeuille multi-signature. Sur l’écran suivant, choisir « 2 sur 2 ».
Après génération et confirmation de votre graine de récupération, il vous sera affiché l’adresse xpub de ce portefeuille.
Après génération d’une « graine » (à garder en sécurité !), vous devrez fournir la clé publique maître de l’autre portefeuille. Bien sûr, lorsque vous créez l’autre portefeuille, vous indiquez la clé publique maître du premier portefeuille.
Vous devrez faire ça en parallèle pour les deux portefeuilles. Veuillez noter que vous pouvez cliquer sur Annuler durant cette étape, et réouvrir le fichier plus tard.
Recevoir des fonds¶
Vérifiez que les deux portefeuilles génèrent le même jeu d’adresses. Vous pouvez dès à présent envoyer des fonds à ces Adresses (veuillez noter qu’elles commencent par un « 7 ») depuis n’importe quel portefeuille pouvant envoyer à des adresses de type P2SH.
Envoyer¶
Pour dépenser des fonds depuis un portefeuille « 2 sur 2 », les deux cosignataires doivent signer ensemble une transaction. Pour cela, créez une transaction en utilisation un des portefeuilles (en remplissant le formulaire dans l’onglet Envoyer). Après signature, une fenêtre s’affiche avec tous les détails de transaction.
La transaction doit maintenant être envoyée au second portefeuille. Plusieurs options existent pour cela :
Vous pouvez transférer le fichier sur une clé USB
Vous pouvez enregistrer la transaction partiellement signée dans un fichier (avec le bouton Enregistrer), le transférer sur la machine où se trouve le second portefeuille (par clé USB, par exemple) et le charger là (avec le menu Outils > Charger transaction > Depuis un fichier).
Vous pouvez utiliser des QR-codes
Un bouton avec une icône de QR-code est également disponible. Cliquer sur ce bouton affichera un QR-code contenant la transaction, qui peut alors être scannée dans le second portefeuille (Outils > Charger transaction > Depuis un QR-code).
Avec l’une des deux méthodes ci-dessus, vous pouvez désormais ajouter la seconde signature à la transaction (avec le bouton Signer). Elle sera alors diffusée au réseau.
Récupérer un portefeuille papier¶
Peut-être avez-vous reçu un portefeuille papier en cadeau d’un autre utilisateur Dash, ou bien en avez-vous conservé un dans un coffre. Les fonds sont récupérés depuis un portefeuille papier vers un portefeuille logiciel par l’importation de sa clé privée, qui est une longue série de caractères commençant par le nombre « 7 » ou la lettre majuscule « X ». L’exemple ci-dessous montre une clé privée (au format WIF).
Les fonds des portefeuilles papier sont récupérés dans un portefeuille logiciel Dash Electrum par création d’une transaction utilisant la clé privée, puis l’envoi des fonds à une nouvelle adresse de votre portefeuille logiciel. Cela est nécessaire car il n’est pas possible d’ajouter de nouvelles clés publiques ou privées à une série déjà existante d’adresses déterministes dérivées depuis une phrase « graine ».
Commencez par choisir le menu Portefeuille > Clés privées > Récupérer. Le dialogue Récupérer des clés privées s’affichera, où vous pourrez coller votre ou vos clé(s) privée(s). Une adresse non utilisée contrôlée par votre portefeuille logiciel Dash Electrum apparaîtra dans le champ inférieur, et elle peut être éventuellement modifiée en cliquant sur la bouton Adresse. Une fois que vous avez collé votre clé privée, cliquez sur le bouton Récupérer.
Dash Electrum prépare alors la transaction en utilisant la clé privée que vous venez d’importer, afin de dériver l’adresse publique pour l’entrée de transaction et choisir comme sortie l’adresse de votre portefeuille, puis le message est signé. Cliquez sur Diffuser pour envoyer la transaction vers la blockchain. Le solde apparaîtra alors dans votre portefeuille, à l’adresse spécifiée. L’adresse du portefeuille papier que vous venez de récupérer se retrouve avec un solde nul.
Chambre froide¶
Cette section montre comment créer d’une part un portefeuille hors ligne qui détient vos dashs, et d’autre part un portefeuille en ligne et en lecture seule, lequel sera utilisé pour consulter son historique ou pour créer des transactions devant être signées avec le portefeuille hors ligne avant d’être diffusées par celui en ligne.
Création d’un portefeuille hors ligne¶
Créez un portefeuille sur une machine hors ligne, en suivant le processus habituel (Fichier > Nouveau). Après création du portefeuille, allez sur Portefeuille > Clés publiques maîtres.
La clé publique maître de votre portefeuille est la chaîne affichée dans cette fenêtre surgissante. Transférez cette clé sur votre machine en ligne.
Création d’une version en lecture seule de votre portefeuille¶
Sur votre machine en ligne, lancez Dash Electrum puis choisissez Fichier > Nouveau/Restaurer. Donnez un nom au portefeuille puis choisissez Utiliser des clés publiques ou privées. Collez votre clé publique maître dans le champ. Cliquez sur Suivant pour achever la création de votre portefeuille. Une fois terminé, vous devriez voir une fenêtre vous informant que vous ouvrez un portefeuille en lecture seule.
L’historique de transactions de votre portefeuille en chambre froide devrait être affiché.
Créer une transaction non signée¶
Allez sur l’onglet Envoyer de votre portefeuille en ligne et en lecture seule, entrez les données de transaction puis cliquez sur Envoyer. Une fenêtre apparaîtra vous informant de l’ajout des frais de transaction. Continuez. Dans la nouvelle fenêtre qui s’affiche, cliquez sur Enregistrer et enregistrez le fichier de transaction quelque part sur votre ordinateur. Fermez la fenêtre et transférez le fichier de transaction sur votre ordinateur hors ligne (par exemple avec une clé USB).
Signer votre transaction¶
Sur votre portefeuille hors ligne, choisissez le menu Outils > Charger transaction > Depuis un fichier et choisissez le fichier de transaction créé à l’étape précédente. Cliquez sur Signer. Une fois la transaction signée, l’identifiant de transaction est affiché dans le champ correspondant. Cliquez sur Enregistrer, stockez le fichier quelque part sur votre ordinateur puis transférez-le sur votre ordinateur en ligne.
Diffuser votre transaction¶
Sur votre ordinateur en ligne, choisissez le menu Outils > Charger transaction > Depuis un fichier. Choisissez le fichier de la transaction signée. Dans la fenêtre qui s’ouvre, cliquez sur Diffuser. La transaction est diffusée au réseau Dash.
Ligne de commande¶
Dash Electrum a une ligne de commande puissante, disponible quand il tourne sous Linux ou macOS. Cette section détaille quelques principes de base.
Utilisation de l’aide en ligne¶
Pour afficher la liste des commandes Dash Electrum, tapez
electrum help
Pour consulter la documentation d’une commande, tapez
electrum help <command>
Mots magiques¶
Les arguments passés dans les commandes peuvent être l’un des mots magiques suivants : ! ? : -.
Le point d’exclamation ! est un raccourci signifiant « le montant maximal disponible ». Veuillez noter que les frais de transaction seront calculés et déduits du montant. Exemple
electrum payto Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq !
Un point d’interrogation ? signifie que vous souhaitez que le paramètre soit demandé. Exemple
electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq ?
Utilisez un deux-points : si vous souhaitez que le paramètre demandé soit occulté (non affiché dans votre terminal). Veuillez noter que vous serez interrogé deux fois dans cet exemple, d’abord sur la clé privée, puis sur le mot de passe de votre portefeuille
electrum importprivkey :
Un paramètre remplacé par un trait d’union - sera lu depuis l’entrée standard (dans un « pipe »)
cat LICENCE | electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq -
Alias¶
Vous pouvez employer des alias DNS au lieu d’adresses Bitcoin, dans la plupart des commandes
electrum payto ecdsa.net !
Formatage de sorties avec jq¶
Les sorties de commande sont soit de simples chaînes, soit des données structurées JSON. Un outil très utile est le programme « jq ». Installez-le ainsi
sudo apt-get install jq
Les exemples suivants l’utilisent.
Signer et vérifier un message¶
Vous pouvez utiliser une variable pour stocker la signature puis la vérifier
sig=$(cat LICENCE| electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq -)
Et
cat LICENCE | electrum verifymessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq $sig -
Afficher les montants de vos entrées non dépensées¶
La commande listunspent retourne une liste d’objets dictionnaire, avec différents champs. Supposons que nous voulions extraite le champ value de chaque enregistrement. Cela peut être fait avec la commande jq
electrum listunspent | jq 'map(.value)'
Choisir seulement les transactions entrantes dans l’historique¶
Les transactions entrantes ont un champ « value » positif
electrum history | jq '.[] | select(.value>0)'
Filtrer les transactions par date¶
La commande suivante sélectionne les transactions qui ont été horodatées après une date donnée
after=$(date -d '07/01/2015' +"%s")
electrum history | jq --arg after $after '.[] | select(.timestamp>($after|tonumber))'
De manière analogue, nous pouvons exporter les transactions sur une période de temps donnée
before=$(date -d '08/01/2015' +"%s")
after=$(date -d '07/01/2015' +"%s")
electrum history | jq --arg before $before --arg after $after '.[] | select(.timestamp>($after|tonumber) and .timestamp<($before|tonumber))'
Chiffrer et déchiffrer des messages¶
D’abord nous avons besoin de la clé publique d’une adresse du portefeuille
pk=$(electrum getpubkeys Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq| jq -r '.[0]')
Chiffrage
cat | electrum encrypt $pk -
Déchiffrage
electrum decrypt $pk ?
À noter : cette commande demande le message chiffré, puis le mot de passe du portefeuille.
Exporter les clés privées et récupérer des fonds¶
La commande suivante exportera les clés privées de toutes les adresses du portefeuille qui contiennent des dashs
electrum listaddresses --funded | electrum getprivatekeys -
Cela renverra une liste de listes de clés privées. Dans la plupart des cas, vous souhaiterez plutôt une liste simple. Cela est faisable en ajoutant un « filer » jq, comme suit
electrum listaddresses --funded | electrum getprivatekeys - | jq 'map(.[0])'
Enfin, utilisons cette liste de clés privées comme entrée de la commande de récupération
electrum listaddresses --funded | electrum getprivatekeys - | jq 'map(.[0])' | electrum sweep - [destination address]
Utilisation en chambre froide de la ligne de commande¶
Cette section vous montrera comment signer une transaction en utilisant la ligne de commande d’un portefeuille Dash Electrum hors ligne.
Créer une transaction non signée¶
Avec votre portefeuille en ligne (en lecture seule), créez une transaction non signée
electrum payto Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq 0.1 --unsigned > unsigned.txn
La transaction non signée est stockée dans un fichier nommé « unsigned.txn ». Veuillez noter que l’option –unsigned n’est pas nécessaire si vous utilisez un portefeuille en lecture seule.
Vous pouvez l’afficher ainsi
cat unsigned.txn | electrum deserialize -
Signer la transaction¶
Le format de sérialisation de Dash Electrum contient la clé publique maître nécessaire et la clé de dérivation utilisée par le portefeuille hors ligne pour signer la transaction. Donc, nous avons seulement besoin d’indiquer la transaction sérialisée au portefeuille hors ligne
cat unsigned.txn | electrum signtransaction - > signed.txn
La commande vous demandera votre mot de passe puis enregistrera la transaction signée dans « signed.txn ».
Diffuser la transaction¶
Envoyez votre transaction au réseau Dash, en utilisant la diffusion
cat signed.txn | electrum broadcast -
En cas de succès, la commande renverra l’identifiant de la transaction.
Comment accepter Dash sur un site web avec Dash Electrum¶
Ce tutoriel vous montrera comment accepter Dash sur un site web avec des requêtes de paiement signées en SSL. Il a été mis à jour pour Dash Electrum 2.6.
Pré-requis¶
- Un serveur web qui diffuse du HTML statique
- Un certificat SSL (signé par une autorité de certification)
- Electrum en version >= 2.6
Création d’un portefeuille¶
Créez un portefeuille sur votre serveur web
electrum create
Vous pouvez aussi utiliser un portefeuille en lecture seule (restauré depuis un xpub) si vous souhaitez conserver les clés privées en dehors du serveur. Une fois votre portefeuille créé, démarrez Dash Electrum en tant que daemon
electrum daemon start
Ajout de votre certificat SSL à la configuration¶
Vous devriez disposer d’une clé privée et d’un certificat public pour votre nom de domaine. Créez un fichier contenant seulement la clé privée
-----BEGIN PRIVATE KEY-----
your private key
-----BEGIN END KEY-----
Configurez le chemin vers votre fichier de clé privée avec « setconfig »
electrum setconfig ssl_privkey /path/to/ssl.key
Créez un autre fichier contenant votre certificat et la liste des certificats dont il dépend, jusqu’au certificat racine. Votre certificat doit être au sommet de la liste, et le certificat racine à la fin
-----BEGIN CERTIFICATE-----
your cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
intermediate cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
root cert
-----END CERTIFICATE-----
Configurez le chemin « ssl_chain » avec « setconfig »
electrum setconfig ssl_chain /path/to/ssl.chain
Configurer un répertoire de requêtes¶
Ce répertoire doit être servi par votre serveur web (par ex. Apache)
electrum setconfig requests_dir /var/www/r/
Par défaut, Dash Electrum affichera les URL locales, commençant par « file:// ». Afin d’afficher les URL publiques, nous devons définir une autre variable de configuration, url_rewrite. Par exemple
electrum setconfig url_rewrite "['file:///var/www/','https://electrum.org/']"
Créer une requête de paiement signée¶
electrum addrequest 3.14 -m "this is a test"
{
"URI": "dash:Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq?amount=3.14&r=https://electrum.org/r/7c2888541a",
"address": "Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq",
"amount": 314000000,
"amount (DASH)": "3.14",
"exp": 3600,
"id": "7c2888541a",
"index_url": "https://electrum.org/r/index.html?id=7c2888541a",
"memo": "this is a test",
"request_url": "https://electrum.org/r/7c2888541a",
"status": "Pending",
"time": 1450175741
}
Cette commande renvoie un objet JSON avec deux URL
- request_url est l’URL de la requête BIP70 signée.
- index_url est l’URL de la page web affichant la requête.
Veuillez noter que request_url et index_url utilisent le nom de domaine défini dans url_rewrite. Vous pouvez consulter la liste actuelle de requêtes avec la commande listrequests.
Ouverture de la page de requête de paiement dans votre navigateur¶
Ouvrons index_url dans un navigateur web.
Cette page affiche une demande de paiement. Vous pouvez ouvrir l’URI « dash: » dans un portefeuille, ou bien scanner le QR-code. La ligne en bas affiche le temps restant avant que la requête n’expire.
Cette page peut déjà être utilisée pour recevoir des paiements. Cependant, elle ne détectera pas qu’une requête a été payée ; pour cela, nous devons configurer les websockets.
Ajout du support des websockets¶
Obtenez SimpleWebSocketServer ici
git clone https://github.com/ecdsa/simple-websocket-server.git
Définissez websocket_server et websocket_port dans votre configuration
electrum setconfig websocket_server <FQDN of your server>
electrum setconfig websocket_port 9999
Puis redémarrez le daemon:
electrum daemon stop
electrum daemon start
Désormais, cette page est entièrement interactive : elle se mettra à jour à la réception du paiement. Veuillez noter que des ports supérieurs pourraient être bloqués sur certains pare-feu du client, il est donc plus sûr, par exemple, de faire une inversion proxy de la transmission websockets en utilisant le port standard 443 sur un sous-domaine supplémentaire.
Interface JSONRPC¶
Les commandes au daemon Dash Electrum peuvent être envoyées avec JSONRPC. Cela est utile si vous souhaitez utiliser Dash Electrum dans un script PHP.
Veuillez noter que le daemon utilise par défaut un numéro de port aléatoire. Pour utiliser un numéro de port stable, vous devez définir la variable de configuration « rpcport » (et redémarrer le daemon)
electrum setconfig rpcport 7777
Avec ce réglage, on peut opérer des requêtes avec curl ou PHP. Par exemple
curl --data-binary '{"id":"curltext","method":"getbalance","params":[]}' http://127.0.0.1:7777
Requête avec des paramètres nommés
curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}' http://127.0.0.1:7777
Création d’une requête de paiement
curl --data-binary '{"id":"curltext","method":"addrequest","params":{"amount":"3.14","memo":"test"}}' http://127.0.0.1:7777