7 minutes de lecture
Aperçu
Une adresse Solana correspond simplement à la clé publique en Base58 d’une paire de clés ; avec une adresse de portefeuille personnalisée (« vanity »), vous pouvez en créer une qui commence et se termine par les caractères de votre choix. Par exemple, l'adresse du jeton MetaDAO METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta commence et se termine par « meta ». Ces adresses personnalisées sont obtenues en générant des candidates à plusieurs reprises jusqu'à ce que l'une d'entre elles corresponde au préfixe, au suffixe ou aux deux choisis.
Une adresse facilement identifiable permet de repérer plus facilement et de faire confiance d'un seul coup d'œil au jeton, au trésor ou au programme d'un projet. Elle renforce l'image de marque et aide les utilisateurs à s'assurer qu'ils interagissent bien avec le bon compte et non avec un faux. En contrepartie, plus le nombre de caractères est élevé, plus la recherche prend du temps.
Qu'est-ce que le meulage ?
Le « grinding » est le processus de génération par essais et erreurs d'une adresse de portefeuille personnalisée Solana. Un « grinder » génère une nouvelle paire de clés, vérifie si son adresse Base58 correspond au préfixe ou au suffixe souhaité, puis répète ce cycle, souvent des millions de fois, jusqu'à ce qu'une correspondance soit trouvée. Il n'existe pas de raccourci ; la vitesse dépend donc entièrement de votre outil et de votre matériel.
Ce guide présente deux méthodes pour en obtenir un. Tout d'abord, vous allez utiliser solana-keygen : un véritable calvaire, la commande intégrée à l'interface CLI de Solana, qui constitue la méthode la plus simple et ne nécessite aucun élément supplémentaire. Vous utiliserez ensuite vanité, un outil open source accéléré par GPU qui traite beaucoup plus vite et permet d'accéder à des enchaînements plus longs.
- Créer une adresse fictive avec la fonction native
solana-keygen : un véritable calvairecommande, aucun outillage supplémentaire requis - Progressez bien plus rapidement (et découvrez des combinaisons plus longues) grâce à l'outil de personnalisation accéléré par GPU
- Présentez les trois méthodes de mouture à l'aide de
vanité, un graine (broyer), un paire de clés (générer une paire de clés), ainsi qu'une paire de clés Doppler (grind-doppler), et découvrez quand utiliser chacune d'entre elles - Comprendre la distinction entre « clé de base » et « paire de clés », et pourquoi elle influe sur la vitesse et la sécurité
Ce que vous ferez
- Créer une adresse fictive avec
solana-keygen : un véritable calvaire - Installer
vanitéet générer une graine de vanité, une paire de clés de vanité et une paire de clés Doppler - Vérifiez le résultat d'une mouture et découvrez quel outil convient à chaque cas d'utilisation
- Respectez les bonnes pratiques en matière de sécurité des portefeuilles pour les clés que vous générez
Ce dont vous aurez besoin
- Un terminal en ligne de commande
- L'interface CLI de Solana est installée
- Rust et Cargo pour installer
vanité - Une introduction aux adresses et aux paires de clés Solana, abordée dans l'article « Comment créer une adresse Solana à l'aide de JavaScript »
Grind avec Solana-Keygen
Vous préférez un tutoriel vidéo ? Suivez les explications de Sahil et découvrez comment créer une adresse personnalisée sur Solana.
solana-keygen a un broyer sous-commande qui génère des paires de clés jusqu’à ce que l’une d’entre elles corresponde à vos critères de recherche. La --commence-par flag prend une PRÉFIXE : COUNT valeur, donc QN : 1 signifie « trouver une adresse qui commence par QN« ».
solana-keygen grind --starts-with QN:1
Vous devriez obtenir une réponse similaire à celle-ci :
Searching with 10 threads for:
1 pubkey that starts with 'QN' and ends with ''
Wrote keypair to QN...mgr.json
L'association .json Le fichier situé dans votre répertoire actuel est un fichier standard de paire de clés Solana. Vous pouvez le définir comme portefeuille par défaut ou le charger dans votre code :
solana config set --keypair ./QN...mgr.json
Chaque caractère supplémentaire complique la recherche de manière exponentielle, puisque le codage Base58 comporte 58 caractères possibles par position. En pratique, un nombre de caractères compris entre deux et cinq constitue une fourchette raisonnable pour solana-keygen. Par ailleurs, vous aurez besoin de la fonctionnalité accélérée par le GPU vanité outil présenté ci-dessous.
Découvrez les différentes options de mouture
Utilisez la commande « help » chaque fois que vous avez besoin d'une référence :
solana-keygen grind --help
Les options les plus utiles sont les suivantes :
--commence-par PRÉFIXE:NOMBREconstateCOMPTEles paires de clés dont l'adresse commence parPRÉFIXE(par exemple,--commence-par QN:2en trouve deux).--se termine par SUFFIX:COUNTcorrespond plutôt à un suffixe.--commence-et-se-termine-par PREFIX:SUFFIX:COUNTcorrespond aux deux extrémités en même temps.--ignorer-la-capsulerend la recherche insensible à la casse (par défaut, elle est sensible à la casse).--use-mnemonicgénère une phrase de récupération au lieu d'un fichier contenant une paire de clés. Attendez-vous à un ralentissement important.--num-threads <NUMBER>définit le nombre de threads de traitement.
Un préfixe ou un suffixe doit être composé de caractères Base58 (A-Z, a-z, 0-9) à l'exception de ceux qui prêtent facilement à confusion : zéro (0), i majuscule (I), O majuscule (O), et le « L » minuscule (l).
Grind avec Vanity
Vanity est un algorithme de recherche hautement performant qui s'exécute sur les processeurs centraux (CPU) et les processeurs graphiques (GPU). Sur une seule carte RTX 4090, il analyse bien plus d'un milliard de candidats par seconde, ce qui rend l'utilisation de motifs plus longs non plus une simple hypothèse théorique, mais une réalité pratique.
Avant de l'exécuter, vous devez comprendre ce qu'il produit réellement.
Graines ou paires de clés ?
vanité peut broyer deux choses fondamentalement différentes :
- Graine: Une courte chaîne de caractères utilisée avec
CréerUnCompteAvecUneGraine. L'adresse est calculée comme suit :base58(SHA256(base + graine + propriétaire)). Il comporte n'a pas de clé privée qui lui soit propre. Il est contrôlé par lebaseun portefeuille qui le valide, ainsi que lepropriétaireprogramme propriétaire du compte. - Paire de clés: une véritable paire de clés ed25519 dont la clé publique correspond à votre modèle. L'adresse peut signer, comme n'importe quel portefeuille.
Cette distinction influe à la fois sur la vitesse et la sécurité. Le calcul par itération de la graine consiste en un hachage SHA-256 pur, sans calculs sur courbes elliptiques ; il est donc environ 20 fois plus rapide que le calcul par itération d’une paire de clés. Ce dernier prend plus de temps, mais permet d’obtenir une clé privée.
Installer un meuble-lavabo
Installez-le avec Cargo. Choisissez la version adaptée à votre configuration matérielle :
# CPU only (default)
cargo install vanity
# NVIDIA GPU (requires the CUDA toolkit / nvcc on the build machine)
cargo install vanity --features=gpu
# AMD, Intel, or Apple GPUs (requires an OpenCL 1.2 ICD loader and headers)
cargo install vanity --features=opencl
Moudre une graine
Utilisation broyer lorsque l'adresse correspond à un élément géré par un programme, tel qu'un système d'émission de jetons, un compte de mise ou un compte de données de programme. Le base (votre portefeuille de signature) et propriétaire (le programme qui sera propriétaire du compte) sont tous deux intégrés à l'adresse dérivée ; vous devez donc les déterminer avant de lancer la génération. Cet exemple génère un jeton appartenant au programme SPL Token :
vanity grind \
--base <YOUR_WALLET_PUBKEY> \
--owner TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA \
--prefix QN \
--num-gpus 1
Le résultat affiche l'adresse obtenue ainsi qu'une graine de 16 caractères (raccourcie pour plus de clarté) :
en utilisant 14 cœurs de processeur et 1 carte graphique
cible : QN | probabilité : 1,748728e-5 | nombre de tentatives prévu : 57 184
correspondance sur le processeur 6 : QNey...qrGn ; [122, ..., 73] -> zynnPwuquKefX73I en 0,003 s ; 6 862 657 tentatives/seconde
Terminé : 34 459 020 tentatives en 1 s à raison de 34 284 098 tentatives/seconde
Vérifiez toujours un résultat avant de l'enregistrer sur la blockchain :
vanity verify --base <YOUR_WALLET_PUBKEY> --owner TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA --seed <SEED>
Pour utiliser la graine sur la blockchain, transmettez-la à créer_un_compte_avec_une_graine; l'adresse ainsi obtenue devient celle du nouveau compte to_pubkey.
Gagner une paire de clés « Vanity »
Utilisation générer une paire de clés lorsque l'adresse elle-même doit signer, par exemple un portefeuille à partir duquel vous allez effectuer une transaction ou l'identifiant d'un programme. Cela génère un tableau JSON contenant une paire de clés Solana standard :
vanity grind-keypair --prefix QN --suffix qn
La sortie affiche la clé publique, la graine (en hexadécimal) et un tableau JSON contenant une paire de clés compatible avec Solana (abrégé pour plus de clarté) :
en utilisant 14 cœurs de processeur et 1 carte graphique
cible : QN...qn | probabilité : 5,198358e-9 | nombre d'essais prévu : 192 368 424
correspondance sur le GPU 0 : QNg83...q5qn en 0,323 s
clé publique : QNg83...q5qn
graine hexadécimale : 0132...36c4
Paire de clés au format JSON (compatible Solana) : [1, ..., 125]
Terminé : 104 422 574 tentatives en 17 s à raison de 6 117 490 tentatives/seconde
générer une paire de clés génère une clé privée réelle. Ne générez jamais une paire de clés destinée à être utilisée pour des opérations de financement sur du matériel que vous ne contrôlez pas. Un GPU loué ou un service de génération tiers a eu accès à la clé privée ; considérez donc toute paire de clés générée en externe comme compromise.
Générer une paire de clés Doppler
grind-doppler produit également une paire de clés réelle et signable, mais recherche un autre type de correspondance. Au lieu d’un préfixe lisible, elle recherche une clé publique dont les octets bruts correspondent à un modèle que les programmes Solana peuvent comparer en utilisant moins de ressources de calcul. L’adresse obtenue semble ordinaire pour un humain ; l’avantage réside uniquement dans les performances.
vanity grind-doppler --segments 1 --num-gpus 1 # find one cheaper-to-check key
vanity grind-doppler --segments 2 --num-gpus 1 # stricter match, much rarer to find
Le résultat affiche la paire de clés (sous forme de tableau JSON compatible avec Solana, identique à celui généré par `grind-keypair`) ainsi qu'une ventilation par segment comprenant les constantes .equ d'assemblage pour chaque segment (abrégées pour plus de clarté) :
en utilisant 14 cœurs de processeur et 1 carte graphique
doppler : >= 1 segment(s) de 32 bits extensible(s) en signe | probabilité : 9,313226e-10 | nombre d'essais attendus : 1 073 741 824
Correspondance sur le GPU 0 : CSvy...YFYHy en 0,398 s
clé publique : CSvy...YFYHy
graine hexadécimale : 4f92c...f09d
paire de clés json (compatible Solana) : [79, ..., 52]
Doppler : 1/4 segment(s) extensible(s) en signe
segment 0 (octets 0-7) : imm32 -904391254 (0xca1815aa) => .equ EXPECTED_KEY_0, 0xca1815aa
segment 1 (octets 8 à 15) : 0xcd61910e9f5edb4e (non extensible en signe) => .equ EXPECTED_KEY_1, 0xcd61910e9f5edb4e
seg 2 (octets 16 à 23) : 0x91f8ae8d74e04ddf (non extensible en signe) => .equ EXPECTED_KEY_2, 0x91f8ae8d74e04ddf
seg 3 (octets 24 à 31) : 0x3423fa148de6ec68 (non extensible en signe) => .equ EXPECTED_KEY_3, 0x3423fa148de6ec68
Terminé : 16 085 250 tentatives en 6 s, soit 2 672 178 tentatives/seconde
Lorsqu'un programme intègre en dur une clé publique spécifique et vérifie si les comptes entrants correspondent à celle-ci (par exemple, un système de contrôle d'accès qui n'autorise que les comptes administrateurs connus), il doit charger cette clé de 32 octets et la comparer à chaque appel. A grind-doppler La clé est structurée de telle sorte qu’une partie de cette charge soit moins coûteuse, ce qui réduit le coût de calcul de chaque comparaison. Le --segments Le paramètre (de 1 à 4) détermine la partie de la clé qui est traitée de cette manière : plus il y a de segments, plus le gain est important, mais le temps de traitement augmente de manière exponentielle.
Cela n'a d'importance que lorsque le calcul sur la chaîne constitue une véritable contrainte, comme dans le cas d'un programme très sollicité où chaque unité de calcul par instruction compte. Pour un portefeuille classique, la création de jetons ou un programme ponctuel, cela ne vous apporte aucun avantage par rapport à générer une paire de clés, alors n'y recourez que lorsque la réduction de la charge de calcul est un objectif délibéré.
Options courantes pour les meubles-lavabos
Ces options s'appliquent à tous les modes de traitement :
| Drapeau | S'applique à | Par défaut | Signification |
|---|---|---|---|
--num-cpus <N> | tout | 0 (tous les cœurs logiques) | Threads de minage sur le processeur |
--num-gpus <N> | toutes (versions GPU) | 1 | Cartes graphiques pour le minage |
--count <N> | tout | 1 | s'arrêter après avoir trouvé N correspondances |
--sans distinction de casse | broyer, générer une paire de clés | désactivé | correspondance sans tenir compte de la casse |
--préfixe / --suffixe | broyer, générer une paire de clés | aucun | cible(s) base58 ; fournir au moins une |
--segments <1-4> | grind-doppler | 1 | Segments pouvant être étendus en signe requis |
Choisissez le bon outil
Utilisez ce guide de décision rapide pour choisir un mode :
| Votre objectif | Utilisation |
|---|---|
| Une courte séquence de deux à cinq caractères, sans aucune configuration supplémentaire | solana-keygen : un véritable calvaire |
| Une adresse lisible qui doit être signée, comme celle d'un portefeuille ou d'un programme | paire de clés « vanity grind » |
| Un modèle intéressant pour une adresse gérée par un portefeuille ou un programme, comme une plateforme d'émission de jetons, un compte de staking ou un compte appartenant à un programme (c'est la solution la plus rapide, et la seule qu'il soit sûr d'externaliser) | polissage esthétique |
| Comparaisons de clés « on-chain » moins coûteuses au sein d'un programme très utilisé | vanity grind-doppler |
Rester en sécurité
Quelle que soit la manière dont vous créez un portefeuille, respectez les bonnes pratiques en matière de sécurité des portefeuilles. Ne placez pas les fichiers de paires de clés dans un système de contrôle de version, ne collez jamais une clé privée ou une phrase de récupération dans un outil non fiable, et n’oubliez pas la règle « phrase de récupération vs paire de clés » : une broyer On peut partager cette graine sans risque, mais un générer une paire de clés Ce n'est pas le cas de la clé privée. Pour une introduction plus approfondie, consultez notre Introduction aux portefeuilles cryptographiques et comment les sécuriser.
Pour conclure
Vous disposez désormais de deux méthodes pour obtenir une adresse personnalisée Solana et, surtout, des connaissances nécessaires pour choisir entre les deux. solana-keygen : un véritable calvaire vous permet d'obtenir un motif court en quelques secondes sans outillage supplémentaire, tandis que vanité permet d'atteindre la vitesse et les séquences plus longues requises par les véritables monnaies et portefeuilles.
Foire aux questions
Qu'est-ce qu'une adresse « vanity » sur Solana ?
Une adresse personnalisée est une adresse Solana qui contient un préfixe ou un suffixe choisi, par exemple une adresse commençant par « QN ». Elle est obtenue en générant successivement des adresses candidates jusqu’à ce que l’une d’entre elles corresponde au modèle recherché. La recherche s’effectuant par force brute, chaque caractère supplémentaire ralentit la recherche de manière exponentielle.
Quelle est la différence entre « solana-keygen grind » et l'outil « vanity » ?
solana-keygen grind est intégré à l'interface CLI de Solana, fonctionne sur votre processeur (CPU) et constitue le moyen le plus simple de trouver des séquences courtes de deux à cinq caractères. L'outil « vanity » bénéficie d'une accélération par GPU et analyse bien plus d'un milliard de candidats par seconde sur un seul GPU haut de gamme, ce qui rend la recherche de séquences plus longues tout à fait réalisable. Il propose également la génération de graines et les paires de clés « doppler », fonctionnalités que solana-keygen n'offre pas.
Dois-je « grinder » une graine ou une paire de clés ?
Utilisez la commande « grind-keypair » pour générer une paire de clés lorsque c'est l'adresse elle-même qui doit signer, comme dans le cas d'un portefeuille ou d'un identifiant de programme. Utilisez la commande « grind » pour générer une graine lorsque l'adresse est gérée par un portefeuille ou un programme, comme dans le cas d'une frappe de jetons, d'un compte de staking ou d'un compte appartenant à un programme. La génération d'une graine est environ 20 fois plus rapide, car il s'agit d'un hachage SHA-256 pur, sans calculs sur courbes elliptiques.
Est-il sans risque de générer une adresse de faux profil sur un GPU loué ?
Une graine générée par « grind » est publique et ne confère aucun contrôle ; vous pouvez donc l'externaliser en toute sécurité en ne partageant que votre clé publique. Une paire de clés générée par « grind-keypair » contient une clé privée ; par conséquent, si vous la générez sur un matériel que vous ne contrôlez pas, la clé privée risque d'être exposée.
Pourquoi le broyage d'un préfixe plus long prend-il autant de temps ?
Base58 utilise 58 caractères possibles par position ; ainsi, le nombre d'adresses à parcourir augmente d'environ 58 fois pour chaque caractère supplémentaire que vous imposez comme contrainte. Un préfixe de deux caractères est trouvé presque instantanément, tandis qu'un préfixe de neuf caractères peut prendre un temps déraisonnable sur un processeur (CPU). C'est pourquoi les motifs plus longs nécessitent une accélération par GPU.
À quoi sert le « grind-doppler » ?
grind-doppler génère une paire de clés signable dont les octets bruts de la clé publique contiennent des segments de 32 bits pouvant faire l'objet d'une extension de signe. Il s'agit d'une optimisation de niche destinée aux auteurs de programmes sBPF optimisés manuellement qui codent en dur une clé attendue et la comparent à celle-ci ; chaque segment pouvant faire l'objet d'une extension de signe permet d'économiser une unité de calcul par comparaison.
Ressources
- dépôt GitHub « vanity »
- Comment créer une adresse dans Solana à l'aide de JavaScript
- Introduction aux portefeuilles cryptos et comment les sécuriser
Nous ❤️ les commentaires !
Faites-nous savoir si vous avez des commentaires ou des suggestions de nouveaux sujets. Nous serions ravis de vous entendre.
