Mais qu’est ce que c’est metamask ?

Metamask est un plugin chrome qui permet de gérer des adresses Ethereum et d’effectuer des transactions directement dans le navigateur.
En fait, vous restez maître de vos adresses, mais vous faites confiance à un nœud public pour recevoir des transactions.
Rendez vous ici pour le télécharger: metamask


Lorsqu’on accède au plugin, les adresses sont « locked », comme c’est le cas pour n’importe quel nœud Ethereum, vous pouvez les débloquer en entrant votre mot de passe.

Une fois débloqué, vous pouvez effectuer des transactions directement depuis le plugin.

Vous pouvez également choisir sur quel réseau vous souhaitez travailler (mainNet ou testNet):

Utiliser Metamask en javascript

Ce qui est intéressant pour nous, c’est qu’on va aussi pouvoir utiliser le plugin directement dans nos applications javascript.

la communauté Ethereum a développé une librairie permettant de se connecter à n’importe quel noeud (local) via l’api JsonRPC.
Metamask exploite cette librairie et injecte un objet web3 pret à être utilisé dans le navigateur.

 

 

Web3 est très bien documenté, vous pouvez retrouver la liste des fonctions disponible sur le git d’Ethereum.
Notez que vous pouvez accéder à de nombreuses fonction même sans être connecté à un nœud (la fonction sha3 par exemple).

 

 

Créons un petit script pour signer un message.
j’utilise le calback de la fonction getAccounts() pour être sur que les adresses soient présentes. On risque en effet d’obtenir une erreur en utilisant directement web3.eth.accounts.

 

 

l’appel à la fonction sign provoque l’ouverture d’un popup dans Metamask, qui nous demande si nous souhaitons signer le message:

 

 

Résultat: notre message signé s’affiche dans la console.