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.

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 ».

../../_images/mn-view.png

Saisie de l’adresse IP et de l’information du protocole

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.

../../_images/mn-collateral.png

Saisie de l’adresse IP et de l’information du protocole

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.

../../_images/mn-enabling.png

Saisie de l’adresse IP et de l’information du protocole

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 ».

../../_images/faq-multisig-create.png

Choix de x signatures sur y, pour un portefeuille multi-signature

Après génération et confirmation de votre graine de récupération, il vous sera affiché l’adresse xpub de ce portefeuille.

../../_images/faq-multisig-xpub.png

Clé xpub du premier 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.

../../_images/faq-multisig-share-xpub.png

Saisie de la valeur xpub du second portefeuille dans le 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.

../../_images/faq-multisig-partially-signed.png

Transaction multi-signature « 2 sur 2 » partiellement signée dans Dash Electrum

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.

../../_images/faq-multisig-fully-signed.png

Transaction multi-signature « 2 sur 2 » entièrement signée dans Dash Electrum

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).

../../_images/sweep-secret.png

Adresse publique et clé privée correspondante, produite par le générateur de portefeuille papier Dash

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.

../../_images/sweep-privkey.png

Saisie de la clé privée

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.

../../_images/sweep-broadcast.png

Diffusion de la transaction de récupération

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.

../../_images/faq-cold-xpub.png

Clé publique maître d’un nouveau portefeuille hors ligne

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.

../../_images/faq-cold-watching.png

Clé publique maître d’un nouveau portefeuille hors ligne

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&gt;($after|tonumber) and .timestamp&lt;($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.

../../_images/payrequest.png

Page de requête de paiement 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.

../../_images/payreq_window.png

Portefeuille en attente de paiement

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