Chaque jour, nous recevons des centaines de demandes d'utilisateurs pour intégrer de nouveaux jetons et chaînes issus de projets Web3 populaires et obscurs dans le Portefeuille Tangem. L'ajout d'un nouveau réseau blockchain ou jeton dans le portefeuille Tangem suit un processus systématique, nécessitant la coopération entre nos analystes blockchain et nos développeurs assidus.
Dans cet article, nous décrivons le processus de l'analyse et du développement à la phase de test et de correction des bugs. Nous espérons que vous comprendrez pourquoi il vaut la peine d'attendre l'apparition de votre crypto favorite dans votre Portefeuille Tangem, ce qui peut prendre beaucoup de temps.
D'abord, comment Tangem accepte-t-il les demandes de nouveaux jetons et réseaux ?
Acceptation des demandes des utilisateurs pour l'intégration de jetons/réseaux
Les utilisateurs soumettent des demandes pour de nouvelles intégrations de jetons via notre chat public Telegram, X(Twitter) et Discord.
Bien que ce mécanisme de demande semble quelque peu pratique, il pose un défi pour l'équipe de support, car consolider les demandes de jetons de plusieurs plateformes dans un seul fichier devient fastidieux.
Cependant, nous maintenons ce fichier interne, qui organise et classe les jetons les plus demandés en fonction du nombre de soumissions d'utilisateurs.
Ensuite, nous examinons les spécifications techniques de la blockchain la mieux classée et de son écosystème, y compris les éléments suivants :
- Des informations détaillées sur l'architecture, le mécanisme de consensus, la vitesse de transaction, la taille du bloc et toutes les caractéristiques uniques de la blockchain.
- De la documentation sur les capacités des smart contracts, les langages de script et les normes de jetons pris en charge.
- Les protocoles d'intégration et les API pour se connecter à des services externes.
- La compatibilité avec des outils tiers populaires, des portefeuilles ou d'autres services pertinents.
Nous évaluons également la portée de l'intégration souhaitée :
- Des objectifs et des buts clairement définis pour l'intégration.
- Des fonctionnalités ou services spécifiques à intégrer.
- Toute exigence de personnalisation ou paramètres spécifiques pour le processus d'intégration.
Partie I : Analyse du réseau blockchain
Avant d'intégrer le jeton ou la chaîne en haut de notre liste, nous analysons minutieusement les facteurs suivants :
Le réseau demandé est-il un clone d'un réseau déjà existant ?
Un réseau blockchain cloné est une copie ou une réplique d'une blockchain existante. Le clonage fait référence à la création d'une nouvelle blockchain qui partage la même base de code, les mêmes règles et la même structure qu'une blockchain existante. Les blockchains clonées peuvent être utilisées pour créer des versions alternatives de projets existants.
Par exemple, une équipe de développement pourrait cloner une blockchain réussie pour créer une nouvelle crypto-monnaie avec quelques modifications ou améliorations. Ces modifications pourraient inclure des changements dans l'algorithme de consensus, le temps de bloc, la tokenomie ou d'autres paramètres.
L'intégration d'un réseau demandé devient nettement plus facile pour nous s'il s'agit d'un clone. Dans de tels cas, le processus d'intégration peut être plus fluide. Cependant, si le réseau n'est pas un clone, nous passons à l'étape suivante de l'analyse.
Quel est l'algorithme de signature ?
Un algorithme de signature est un ensemble de règles et de procédures pour créer et vérifier des signatures numériques. Les signatures numériques garantissent l'authenticité, l'intégrité et la non-répudiation des transactions. Voici un bref aperçu du fonctionnement d'un algorithme de signature typique :
- Génération de clés : Le processus commence par la génération d'une paire de clés cryptographiques privée et publique. La clé privée est gardée secrète et connue uniquement de l'entité créant la signature, tandis que la clé publique est partagée avec d'autres.
- Signature : Pour créer une signature numérique, l'entité utilise sa clé privée pour effectuer une opération mathématique sur un hashing (une chaîne de taille fixe dérivée du message signé).
- Vérification : Toute personne ayant accès à la clé publique peut vérifier la signature numérique et effectuer une opération mathématique similaire sur le hashing du message reçu. Si le résultat calculé correspond à la signature, cela indique que la transaction a été signée par le propriétaire de la clé privée, confirmant son authenticité.
- Hashing : Une fonction de hashing prend une entrée (ou un message) et produit une chaîne de caractères de taille fixe, qui est le hashing. Le hashing sert de représentation unique du message original.
- Paramètres de l'algorithme : L'algorithme de signature définit les algorithmes mathématiques spécifiques et les paramètres utilisés pour la génération de clés, la signature et la vérification.
Les algorithmes standard incluent RSA (Rivest-Shamir-Adleman), DSA (Digital Signature Algorithm), ECDSA (Elliptic Curve Digital Signature Algorithm) et EdDSA (Edwards-curve Digital Signature Algorithm).
L'algorithme de signature cryptographique utilisé dans les transactions blockchain dépend de la blockchain spécifique. Si les cartes Tangem ne peuvent pas prendre en charge l'algorithme de signature du réseau, nous ne pouvons pas intégrer ce réseau.
Quels sont les nœuds/services APIs du réseau ?
Les nœuds et les APIs (Interfaces de Programmation d'Applications) sont essentiels pour maintenir le réseau, valider les transactions et permettre aux applications externes d'interagir avec le réseau blockchain.
Avoir des nœuds publics ou des APIs de service de la part des développeurs — particulièrement courant dans les réseaux EVM — est un signe prometteur. Cette accessibilité permet souvent aux utilisateurs de se connecter avec des portefeuilles décentralisés. De plus, le processus est plus facile lorsque nos fournisseurs de nœuds premium, tels que GetBlock, offrent déjà ces nœuds/APIs.
Cependant, l'intégration devient plus compliquée lorsque nous devons nous abonner à un nouveau service ou construire nos propres nœuds. Pour garantir la fiabilité, nous engageons au moins deux fournisseurs de nœuds différents pour chaque réseau, atténuant les défis potentiels associés au fait de dépendre d'une seule source.
La combinaison des nœuds et des APIs garantit que le réseau fonctionne correctement et est accessible. Les nœuds maintiennent l'intégrité du registre distribué, tandis que les APIs aident les développeurs à construire des applications qui exploitent les capacités de la blockchain.
Le réseau maintient-il une documentation appropriée ?
Les principaux réseaux blockchain et jetons publient une documentation complète pour aider les développeurs, les utilisateurs et les opérateurs de nœuds à les comprendre et à interagir avec eux efficacement. La documentation fournit des informations adéquates sur l'API, le mécanisme de consensus, les smart contracts, la configuration des nœuds, les directives de sécurité, ainsi que les mises à jour et les migrations.
Les besoins en main-d'œuvre de notre équipe de développement dépendent de cette étape. Malheureusement, la technologie blockchain est relativement nouvelle, et il n'y a pas assez de professionnels techniques qui sont bons pour créer de la documentation pour chaque projet Web3.
Nous rencontrons souvent un défi commun en matière de documentation — typiquement créée pour les utilisateurs et les développeurs de smart contracts — où les détails de la génération de hashing pour la signature ou l'interaction avec l'API sont soit omis, soit insuffisamment expliqués. En conséquence, les développeurs de Tangem doivent passer du temps à étudier le code des implémentations existantes.
Existe-t-il des SDKs et des bibliothèques appropriés ?
Un Kit de Développement Logiciel (SDK) est un ensemble d'outils de développement logiciel qui permettent aux développeurs de créer des applications pour un package logiciel spécifique, une plateforme matérielle, un système informatique ou un système d'exploitation.
Un SDK comprend des bibliothèques, de la documentation, du code exemple, et parfois des outils supplémentaires comme des débogueurs ou des émulateurs.
L'application Tangem est une application native — développée pour un système d'exploitation particulier (par exemple, iOS ou Android) uniquement — donc les SDKs de la plupart des développeurs ne sont pas souvent disponibles.
Même les SDKs JavaScript — construits pour des applications multiplateformes — ne sont pas souvent adaptés pour les cold wallets, car la fonction de signature nécessite qu'une clé privée y soit insérée. Comme vous le savez, la clé privée est générée et stockée dans la puce du Portefeuille Tangem et ne la quitte jamais.
Mais il y a encore de l'espoir si un tel SDK est dans un langage de programmation approprié. Nous pouvons toujours le peaufiner en prenant des morceaux de code de là ou en utilisant des fonctions de codage séparées — par exemple, le calcul/la validation de l'adresse. Dans ce dernier cas, des bibliothèques appropriées peuvent également aider, mais cela prend encore beaucoup de temps.
Une bibliothèque est une collection de code pré-écrit, de routines, de procédures et de fonctions que d'autres programmes peuvent utiliser.
Le réseau blockchain a-t-il des caractéristiques uniques ?
Certains réseaux peuvent avoir des attributs inhabituels — avoir des réserves ou nécessiter de spécifier MEMO lors de l'envoi de fonds — qui nécessiteront de modifier l'interface utilisateur (UI) / l'expérience utilisateur (UX) de l'application Tangem avant que l'intégration ne soit complète.
Parfois, un réseau peut avoir des mécanismes très compliqués pour facturer les commissions. Tangem doit établir des lignes de communication claires pour nos équipes de développement et de support. Nous expliquerons également une équipe de design pour ajuster l'interface utilisateur selon nos directives de style. Ces procédures affectent les coûts de main-d'œuvre et prennent pas mal de temps.
Partie II - Intégration du réseau blockchain
Après avoir analysé et approuvé le réseau ou le jeton demandé, notre équipe de développeurs commence le processus d'intégration selon les étapes suivantes.
1. Trouver une API appropriée
Après avoir trouvé une API appropriée, nous vérifions si nous pouvons obtenir les données nécessaires à la création d'une transaction. Cela implique de créer une structure de données qui encapsule les détails de la transaction, d'ajouter des signatures numériques pour l'authentification et de respecter le format et les règles spécifiques dictés par le protocole blockchain.
2. Encoder l'adresse à partir de la clé publique
Encoder l'adresse à partir de la clé publique signifie transformer une clé publique en un format plus lisible et gérable, connu sous le nom d'adresse. Dans Bitcoin, l'adresse est représentée en encodage Base58 ; dans Ethereum, elle est au format hexadécimal. Les étapes et les algorithmes pour l'encodage des adresses peuvent varier entre les réseaux blockchain — chaque réseau peut avoir ses propres normes pour l'encodage des adresses.
3. Obtenir les données nécessaires de l'API et envoyer une transaction
En plus de recevoir des transactions qui ont déjà été étudiées, nous intégrons également une demande pour envoyer une transaction. Les données nécessaires sont le solde, puis spécifiques à la blockchain : UTXO, nonce, le hashing du bloc frais, et si le compte du destinataire a été créé. Pour des transactions réussies, notre système repose sur l'acquisition de données essentielles et une attention particulière à ces paramètres clés :
- Solde : la quantité de crypto-monnaies ou de fonds disponibles dans le compte d'un utilisateur. Vérifier le solde assure que l'utilisateur a suffisamment de fonds pour initier des transactions.
- UTXO (Unspent Transaction Output) : la crypto-monnaie restante des transactions précédentes qu'un utilisateur peut dépenser dans une nouvelle transaction.
- Nonce : un numéro unique attribué à chaque transaction. Il aide à maintenir l'ordre chronologique des transactions et prévient les attaques de rejeu.
- Le hashing du bloc frais : Le hashing du bloc le plus récent dans la blockchain crée un lien entre une transaction actuelle et l'histoire globale de la blockchain, la rendant résistante aux altérations.
- Statut du compte destinataire : Vérifiez si le compte du destinataire a été créé assure que les fonds sont dirigés vers un compte valide et actif. Cette étape prévient le risque d'envoyer des fonds vers des comptes inexistants ou inactifs.
4. Assembler une transaction
L'assemblage d'une transaction fait référence à la mise en place des composants et informations nécessaires pour créer une transaction complète pouvant être exécutée sur la blockchain. Ce processus implique de collecter et d'organiser des données telles que les détails de la transaction, les informations sur le destinataire, les frais et tout autre paramètre pertinent. L'assemblage de la transaction varie selon les blockchains, mais décrivons un schéma général :
- Nous collectons une transaction non signée à partir des données reçues de l'API et des données saisies par l'utilisateur (adresse du destinataire, montant, frais, etc.).
- Nous calculons le ou les hashing pour signer cette transaction et l'envoyons à la carte Tangem.
- Les signatures sont renvoyées de la carte, et nous les ajoutons à la transaction. Nous encodons la transaction avec les signatures pour l'envoi via l'API.
Alimenter un compte dans le testnet et envoyer des transactions
Nous alimentons le compte dans le testnet et tentons d'envoyer des transactions. Les premières tentatives échouent souvent, et la partie intrigante se déroule lorsque la transaction est rejetée, citant "algorithme de signature incorrect" sans fournir de détails spécifiques.
Pour résoudre ce problème, nous comparons souvent la transaction infructueuse avec des résultats intermédiaires dans des solutions fonctionnelles, allant parfois jusqu'à une analyse octet par octet.
Après avoir réussi à envoyer une transaction, nous finalisons le calcul des frais. Il est à noter que nous fixons souvent des frais fixes lors des premières tentatives.
La dernière étape consiste à traiter diverses fonctionnalités et cas limites. Cela inclut la gestion de paramètres de transaction supplémentaires, l'exploration de scénarios tels que l'envoi à un compte vide (ce qui peut nécessiter une structure de transaction distincte, impliquant souvent une opération préalable pour créer le compte), la gestion des réserves, etc.
Ensuite, l'équipe de design ajoute une représentation visuelle du réseau ou du jeton dans le backend de l'application.
Partie III — Test et lancement d'une mise à jour de l'application contenant le nouveau réseau
Ce long processus d'intégration se termine par le test de la nouvelle mise à jour de l'application, en s'assurant que tous les développements récents sont examinés pour une performance précise. Voici un bref aperçu de la phase de test.
Test unitaire
Nous effectuons des tests unitaires approfondis pour vérifier que les composants individuels de l'application Tangem, en particulier ceux liés à la nouvelle intégration blockchain, fonctionnent correctement de manière isolée.
Test d'intégration
Nous vérifions la qualité de la communication du portefeuille avec la blockchain, la signature des transactions et la gestion des données spécifiques au réseau intégré. Nous nous assurons que la mise à jour de l'application Tangem — contenant le nouveau réseau blockchain intégré — fonctionne correctement sur les plateformes Android et iOS. Nous effectuons également des tests de sécurité pour identifier et traiter les vulnérabilités liées à l'intégration.
Test d'acceptation utilisateur (UAT)
Lorsque la mise à jour de l'application inclut des fonctionnalités majeures du nouveau réseau, nous réalisons un UAT avec un groupe sélectionné d'utilisateurs ou une équipe de test pour recueillir des retours sur l'expérience utilisateur et identifier les éventuels problèmes que nous aurions pu manquer dans les phases de test précédentes.
Correction de bugs et déploiement sur les magasins d'applications
Nous traitons et corrigeons les bugs, les problèmes ou les retours reçus lors des tests. Ensuite, nos équipes de développement, de marketing et de support se préparent pour le lancement officiel. Nous déployons la mise à jour de l'application Tangem sur les magasins d'applications respectifs (Google Play Store pour Android et Apple App Store pour iOS), où vous pouvez télécharger et utiliser l'application.
Surveillance et support
Nous surveillons les performances de l'application après le lancement et sommes prêts à résoudre les éventuels problèmes qui pourraient survenir. Notre équipe de support fournit un soutien rapide aux utilisateurs et répond à leurs demandes liées à l'intégration.
Réflexions finales
Nous sommes ravis de partager un aperçu de la manière dont nous intégrons les réseaux et les jetons dans notre portefeuille, en nous concentrant sur la garantie de la sécurité de vos actifs et une expérience utilisateur conviviale.
Le Portefeuille Tangem prend désormais en charge plus de 30 réseaux blockchain et des milliers de coins et de jetons. Ce nombre ne cesse d'augmenter chaque mois au fur et à mesure que nos équipes de développement et de support grandissent. Nous avons beaucoup réfléchi à notre stratégie d'intégration, en ne considérant pas seulement les détails techniques mais aussi en mettant en avant l'accessibilité.
Nous travaillons également sur des fonctionnalités excitantes comme le staking et une fonctionnalité améliorée de swap inter-chaînes via notre agrégateur — Tangem Express.
Notre feuille de route pour 2024 mettra en lumière plusieurs réseaux blockchain et jetons que nous prévoyons d'intégrer au premier trimestre de l'année prochaine. Si le jeton/réseau que vous désirez n'est pas sur cette carte, vous pouvez rejoindre nos canaux de médias sociaux et faire une demande.
Merci d'avoir choisi le Portefeuille Tangem pour gérer et stocker vos actifs crypto. Restez en sécurité !