
Nonces durables : signature à deux appareils sur Solana
SSP est un portefeuille 2 sur 2. Chaque transaction a besoin de deux signatures : une de la Wallet, l'extension de navigateur sur votre ordinateur, et une du SSP Key sur votre téléphone. C'est tout l'intérêt de ce design — un voleur qui dérobe un appareil ne peut toujours pas déplacer vos fonds. Mais cela introduit un problème très humain. L'ordinateur construit et signe une transaction en une fraction de seconde. Le téléphone, lui, ne cosigne peut-être que deux ou trois minutes plus tard, car une personne doit prendre le téléphone, regarder la demande et appuyer sur approuver.
Sur Solana, cet intervalle est un problème. Cet article explique pourquoi, et comment SSP le résout sans rien stocker de fragile.
Le blockhash qui expire
Toute transaction Solana normale transporte une donnée appelée blockhash récent. C'est l'empreinte d'un bloc récent de la chaîne, et elle remplit deux fonctions à la fois. Elle prouve que la transaction a été créée récemment et empêche que la même transaction signée soit rejouée pour toujours.
Le piège est dans le mot récent. Un blockhash n'est valable que pendant environ 150 blocs. Sur Solana, les blocs arrivent vite, donc 150 blocs ne représentent qu'environ 60 à 90 secondes. Passée cette fenêtre, le réseau rejette purement et simplement la transaction — non pas parce qu'il y a un souci avec les signatures, mais parce que le blockhash est périmé.
Mettez maintenant le flux de signature de SSP face à cette horloge. La Wallet construit la transaction, fixe un blockhash frais et signe. L'utilisateur est ensuite notifié sur son téléphone. S'il répond dans les 90 secondes, parfait. S'il est en réunion, si le téléphone est dans une autre pièce, ou s'il veut simplement lire la transaction posément, le blockhash meurt en silence. La signature de la Wallet reste cryptographiquement valable, mais la transaction à laquelle elle était attachée ne vaut plus rien. Tout doit être reconstruit et resigné de zéro.
Pour un portefeuille à un seul signataire qui signe et diffuse d'un seul souffle, la fenêtre de 90 secondes est généreuse. Pour un portefeuille 2 sur 2 où un humain se tient entre les deux signatures, c'est une course que l'utilisateur ne cesse de perdre.
Ce qu'est un nonce durable
Solana a une réponse intégrée à cela, et elle est antérieure à SSP : le nonce durable. L'idée est de remplacer le blockhash qui expire par une valeur qui n'expire pas.
Un nonce durable vit dans son propre petit compte sur la chaîne — un compte de nonce. Ce compte appartient au système, ne contient que 80 octets de données, et l'une de ces données est la valeur du nonce elle-même : un substitut à longue durée de vie pour un blockhash. Une transaction peut être construite pour utiliser la valeur du compte de nonce à la place d'un blockhash récent. Comme cette valeur ne vieillit pas, la transaction reste valable aussi longtemps qu'il le faut — minutes, heures, jours.
Rien n'est gratuit, cependant, et un nonce a besoin d'une protection contre le rejeu. Cette protection est une règle : toute transaction qui utilise un nonce durable doit porter une instruction précise, nonceAdvance, comme toute première instruction. Quand la transaction atterrit enfin, nonceAdvance consomme la valeur de nonce actuelle et fait tourner le compte vers une nouvelle. Le nonce est à usage unique. La transaction que vous avez signée lundi peut attendre jusqu'à mercredi, mais une fois exécutée, ce nonce précis ne pourra plus jamais autoriser une autre transaction. Si vous voulez lire la propre description du mécanisme par Solana, la documentation sur les nonces de transaction durables est la source primaire.
Ainsi, un nonce durable achète du temps sans acheter un risque de rejeu. C'est exactement la propriété dont a besoin un portefeuille à deux appareils.
La trouvaille de SSP : un compte de nonce que vous n'avez jamais à stocker
Un compte de nonce durable reste un compte, et sur Solana tout compte a une adresse. L'approche naïve consiste à créer un compte de nonce à une adresse aléatoire, puis à se souvenir soigneusement de cette adresse pour toujours — l'écrire dans le stockage local du portefeuille, la sauvegarder, espérer qu'elle survive à une réinitialisation de l'appareil. C'est une chose fragile de plus à perdre.
SSP refuse de la stocker. À la place, le programme multisig de SSP pour Solana inclut une instruction nommée provision_nonce, et elle crée le compte de nonce à une adresse dérivée. L'adresse provient d'une recette déterministe : elle est calculée à partir du compte multisig lui-même, de l'étiquette de texte fixe "nonce" et du programme système de Solana. Le même multisig en entrée, la même adresse de nonce en sortie — à chaque fois.
Cela compte à cause de ce que le reste de cette série a déjà établi. Le multisig de SSP pour Solana dérive l'adresse du multisig de l'ensemble des membres, et dérive l'adresse du coffre du multisig. (Si ces dérivations vous sont nouvelles, l'article multisig auto-initiant de Solana les parcourt.) Le compte de nonce rejoint maintenant la même famille : c'est lui aussi une pure dérivation. N'importe quel appareil SSP — votre ordinateur, votre téléphone, un portefeuille fraîchement réinstallé — peut recalculer l'adresse du compte de nonce de zéro. Il n'y a pas d'adresse secrète à perdre, parce qu'il n'y a aucune adresse stockée.
Quelques notes pratiques découlent de ce design. provision_nonce est sans permission (permissionless) : n'importe qui peut payer le petit loyer (environ 0,00144 SOL) pour faire exister le compte de nonce, et celui qui paie en devient l'autorité initiale — en pratique le paymaster du relais de SSP. Cette autorité peut être réaffectée plus tard sans que l'adresse du compte ne change jamais, donc l'adresse que vous dérivez aujourd'hui reste correcte même si la clé opérationnelle derrière elle tourne. L'emplacement du compte de nonce est ancré à votre multisig, pas à celui qui l'a financé.
Le flux de signature serein
Assemblez les pièces et la course disparaît. La Wallet construit une transaction qui utilise le compte de nonce dérivé au lieu d'un blockhash récent, place nonceAdvance comme première instruction et signe. Une notification push part vers le téléphone. L'utilisateur approuve quand il est prêt — aucune horloge ne court contre lui. Le SSP Key ajoute la seconde signature, et la transaction entièrement signée est diffusée. Comme elle a été construite sur un nonce durable, elle est encore valable, et nonceAdvance fait tourner le nonce pour que la transaction ne puisse pas être rejouée.
Il y a une contrainte de plus qui mérite d'être nommée. Solana plafonne une seule transaction à 1232 octets. Une transaction multisig doit faire tenir la liste des membres et les instructions de dépense dans cette limite, c'est pourquoi SSP utilise le format compact de transaction versionnée de Solana et transmet les données aussi serrées que possible. Le nonce durable ne change pas le budget de taille ; il ne change que le budget de temps.
Tout dériver, ne rien stocker
C'est le fil qui traverse toute la série Multisig sur Solana, à la façon SSP. L'adresse du multisig, le coffre qui détient vos fonds et maintenant le compte de nonce qui donne à deux appareils le temps de s'accorder — aucun n'est une valeur que SSP doit sauvegarder et protéger. Chacun est recalculé à la demande à partir d'entrées que le portefeuille connaît déjà. Il y a moins à sauvegarder, moins à fuiter et moins à mal tourner lors d'une réinitialisation d'appareil. Les conceptions de multisig qui s'appuient sur cette idée, comme l'approche du multisig à signataire unique de SSP, tendent à être celles qui ont le moins de pièces mobiles susceptibles de casser.
Une note finale dans le même esprit d'honnêteté que le reste de la série : le programme multisig de SSP pour Solana est actuellement déployé sur le devnet uniquement, et attend un audit de sécurité externe avant toute publication sur le mainnet. La conception décrite ici — y compris provision_nonce et son compte de nonce dérivé — est réelle et lisible dans le programme open source, mais ce n'est pas encore une infrastructure de production. Si le modèle à deux appareils de SSP lui-même vous est nouveau, l'article d'introduction qu'est-ce que le multisig 2 sur 2 est l'endroit où commencer.
Le nonce durable est un petit et vieux morceau de la plomberie de Solana. La contribution de SSP est de faire de son adresse une chose de plus que vous n'avez jamais à retenir.


