Automatiser des actions avec des SmartContract via n8n

Précédemment, j'ai édité un article sur comment faire du DCA programmé en DeFi via n8n
Dans ce petit article, je vais encore parler d'automatisation, notamment sur l'appel de fonction d'un SmartContract, le but étant par exemple de pouvoir faire des Claim de façon automatique ou tout simplement récupérer des valeurs pour scruter l'état d'un Pool.
Une fois les informations récupérées, il est possible d'utiliser tous les node n8n pour trier les informations, les stocker dans un gsheet, d'envoyer des mails,....

Pour cela, j'ai concocté des petites fonctions JS à intégrer directement dans le node "Function/Code" de n8n.

Pour rappel, n8n est un outil opensource low-code qu'il est possible de déployer sur un VPS ou être utilisé en tant qu'App Desktop.
L'outil reste un peu techniques mais une fois la prise en main effectuée, le champ d'utilisation tend vers l'infini.

La première étape est donc de télécharger la version Desktop de n8n ou d'utiliser la version auto-hébergé.
Dans les deux cas, il faudra modifier les variables d'environnement de n8n pour ajouter le droit d'installer et d'utiliser n'importe quelle librairie JS.
J'ai expliqué cela dans la précédente vidéo : https://youtu.be/JfSBh7XJhXc

Une fois que cela est fait, il ne reste plus qu'à se baser sur un cas concret.
Je pars sur un exemple avec le réseau FTM et la pool de liquidité FTM-SPIRIT.
Le RPC utilisé pour les tests est le suivant : https://rpc2.fantom.network
Le contrat FTM-SPIRIT est le suivant : 0x912B333dDaFC925f63C9746E5115A2CD5290b59e

L'idée est de récupérer la totalSupply pour l'afficher dans le workflow n8n, ensuite il est possible d'imaginer plein de choses comme l'envoi de mail si cette totalSupply atteint un seuil critique,...

Le workflow au format JSON est donné dans l'article Call_SC.json
Voici à quoi il ressemble :
workflow_sc

Il faut Executer le "Execute Command" afin d'installer la librairie etherjs si ce n'est pas déjà fait.
Puis changer les valeurs du node "Params" avec :

Comme indiqué dans l'image
Screenshot_3

La dernière étape est un peu plus complexe, il va falloir choisir la fonction du SmartContract a appeler.
Cliquer sur le node "Function1" puis
smart-fct
Dans cet exemple, c'est la fonction getreserves qui est appelé, il suffit de changer par celle souhaitée (totalSupply) et ajouter les paramètres entre ["argument1", argument2] si besoin.
smart-fc2

Plus qu'à exécuter le node et avoir le résultat suivant :
smart-fc3

Le résultat est souvent donnée en Hexadecimal, il faudra donc le convertir pour avoir une valeur lisible par tous.
Via par exemple https://www.rapidtables.com/convert/number/hex-to-decimal.html, 0x030f83d7558dd631db56b4 donne bien 3700028295419513930508311 (lue dans l'explorateur blockchaine FTM)

Avec cet exemple, on arrive donc à appeler un SmartContract depuis mon logiciel d'automatisation favoris n8n.

Il est possible de lire plusieurs fonctions, l'appels des fonctions de lecture et d'écriture doivent être fait après la ligne 28 et ne doivent pas sortir de la fonction "main".
Il est même possible de faire des Write sur le SmartContract, pour cela regarder les lignes en commentaire dans la fonction "main".

J'espère que cela vous servira !

N'hésitez pas à me faire des retours

Article précédent