Choix du préfixe SS58 pour nos blockchains substrate

Toute blockchain substrate doit définir un chain ID unique qui permet de l’identifier parmi toutes les blockchains substrate.

Ce chain ID sert aussi de préfixe pour le format SS58, un format pour les adresses des comptes:

Ce format gère la notion de checksum, et ajoute une notion de préfixe, qui permet de s’assurer qu’une adresse donnée n’est valable que sur une seule blockchain.

Il reste possible d’utiliser un même trousseau de clés pour plusieurs blockchains, mais l’adresse qui sera dérivée de la clé publique sera différente en fonction du réseau.

Je recommande que nous adoptions le format SS58 pour la Ğ1, cela à de nombreux avantages:

  1. C’est un format d’adresse reconnu et géré par de nombreux outils autour de l’écosystème substrate et polkadot.
  2. De nombreuses bibliothèques dans la plupart des langages (Js, Python, etc), gèrent ce format.
  3. Ça permet d’avoir un checksum qui est intégré au sein même de l’adresse, donc les erreurs de saisies ne sont plus possibles.
  4. L’encodage est également en base 58, donc l’affichage sera similaire.

Il nous faut choisir un préfixe pour la Ğ1, ainsi que au moins 2 autres pour 2 monnaies de test, de préférence les 3 préfixes doivent être consécutifs.

Une fois que nous auront fait notre choix, quelqu’un devra soumettre une PR sur ce dépôt pour officialiser notre demande de réservation de préfixe: https://github.com/paritytech/ss58-registry

Ça permet aussi d’avoir à un seul endroit la liste de la plupart des projets qui utilisent substrate, des teckos regardent cette liste, c’est donc aussi pour nous un moyen de communication.

Pour le site web à indiquer, ce serait bien qu’on ait d’ici là un ou plusieurs article·s sur duniter-v2s sur le site duniter.org. Si des gens veulent bien m’aider là-dessus ce serait génial, je répondrais à toutes leurs questions par visio/tel si besoin :slight_smile:

7 Likes

J’ai fait un test rapide, avec tout le reste par défaut j’ai trouvé tous les préfixes qui donnent une adresse préfixée par g1 :

3682, 3938, 4194, 4450, 4706, 4962, 5218, 5474, 5730

(je n’en ai pas trouvé donnant G1)

4 Likes

J’ai commencé à réfléchir à un version en français pour le site duniter.fr. Dès que c’est prêt, je compte vous faire relire puis traduire en anglais pour duniter.org. J’ai suivi la plupart des discussions même si je n’y ai pas participé directement, et pense donc pouvoir faire un bon premier jet.

1 Like

3682, 3683, 3684 sont libres. Ca fait la g1 et les deux monnaies de test. Et comme 3682 est le plus petit nombre que tu nous propose, ça place g1 le plus haut dans la liste.

3 Likes

Hum, finalement je me dis que d’avoir toutes les adresses ğ1 préfixées par g1 ce n’est une bonne idée, ça fait un peu sectaire genre on met des ğ et g1 partout.

Je préférerais qu’on choisisse un préfixe, non pas en fonction de préfixe d’adresse que ça génère une fois encodé en ss58, mais en fonction de la valeur symbolique du préfixe en lui-même.

Par exemple, la monnaie moonbeam a choisie 1284 car c’est c’est le nombre de millisecondes que met la lumière (un « rayon » de lune) pour parcourir la distance lune-terre.

On pourrait trouver un nombre qui est un sens particulier vis-à-vis de la TRM ou de l’histoire de la Ğ1 :slight_smile:

Par exemple la masse monétaire moyenne cible en DU ?

On peut aussi choisir un préfixe au hasard parmi ceux disponibles, ça n’a aucune importance techniquement, il faut juste en choisir 1 par monnaie, et qu’ils soient consécutifs entre les différentes monnaies d’un même « projet ».

C’est juste que je trouve qu’on place déjà des g et g1 un peu partout, alors si c’est en plus au début de chaque adresse, ça fait un trop « too mutch ». Surtout que généralement les utilisateurs lisent les premiers caractères de l’adresse pour vérifier que c’est la bonne, donc ils vont lire « g1 » tout le temps :stuck_out_tongue:

1 Like

J’aime bien l’idée, puisque c’est une valeur fixe induit par les paramètres immuables du bloc 0, donc intimement liée à la blockchain.

Le seul bémol, c’est que les trois monnaies doivent avoir une valeur différente, que fait-on si on a besoin qu’une monnaie de test ait la même valeur que la monnaie de prod ?

1 Like

puisque les trois choisit doivent être consécutif, la proposition d’élois ne s’applique qu’à la monnaie de prod, si j’ai bien compris.

3 Likes

Oui c’est ça :slight_smile:

1 Like

La différence entre trouver un préfixe parlant en brut et non en base58, c’est que plutôt que d’avoir un symbole lisible par tout le monde, on aura un symbole lisible uniquement par les informaticiens… Ça me semble pertinent pour une monnaie de geeks ou de dev, mais en prod ça va rester une private joke de développeurs.

Si les gens remarquent que toutes les adresses commencent par un truc du genre ek7f, ils vont forcément se demander « mais pourquoi, qu’est-ce que ça veut dire ??? », et on va leur répondre, rien, mais une fois décodé par l’ordinateur ça fait une date fondatrice de la G1, tu sais pas compter en base 58 ? Et pour reconnaître les adresses G1, les gens vont apprendre ce préfixe ss58 par cœur, mais pas sa signification. Si jamais plusieurs ML Substrate apparaissent et font pareil, il faudra apprendre par cœur les préfixes associés à chaque monnaie…

Après on peut trouver autre chose que g1

4 Likes

L’utilisateur n’a pas besoin d’apprendre les prefix, ils sont vérifiés par les applications pour s’assurer que l’utilisateur ne s’est pas trompé de réseau.

Dans la pratique, la majorité des utilisateurs de la Ğ1 n’utiliseront qu’une seule blockchain substrate celle de la Ğ1, ils remarqueront donc effectivement que toutes les adresses commenceront par les mêmes caractères. Il suffit de dire la vérité: c’est un préfixe pour identifier sur quel réseau on se trouve.

Il ne s’agit pas de private joke ou quoi que ce soit, on doit juste choisir un préfixe ss58, qu’il est un sens ou non.

Ça me semble pertinent que les adresses commencent par un préfixe qui fait sens en base58 comme ‹ g1 ›. A la différence de nombreuses blockchains, beaucoup de transactions se font hors ligne (je veux dire, pas dans un contexte de site web foisonnant d’informations). Le fait d’avoir ‹ g1 › en prefixe permet de reconnaitre une adresse même si le contexte donne peu d’informations pour identifier la monnaie.

Ça peut être MN aussi, ou DU, ou 8o . Mais tant qu’à faire, g1 me semble plus parlant. Une petite vanité :innocent:

Cette question pourrait aussi être posée sur le forum d’en face, ça fait partie de l’UX.

7 Likes

Je me souviens quand la G1 a été lancé, la déception que j’avais ressenti lorsque qu’on a appris que le nom de la monnaie et ses paramètres avaient été choisi en huit clos entre dev, sans en parler à l’avance au prémisse de communauté qu’on était (avec le recule je le comprends hein).

Donc oui je suis pour laisser au moins ce choix cosmétique à l’ensemble de la communauté, sur votation via le forum ML par exemple, en laissant le temps.

Souvenirs souvenirs ^^

3 Likes

Alors il faut que quelqu’un s’occupe de lancer ça dès maintenant, @poka ? @HugoTrentesaux ? @matograine ?

J’ai besoin que les prefix soit choisis et entérinés pour pouvoir lancer la 1ère monnaie de test, et j’aimerais bien pouvoir la lancer au mois d’avril, donc il faut poser ces questions à la communauté maintenant, c’est le bon moment :slight_smile:

EDIT: ça implique de commencer à communiquer sur la Ğ1 v2, il faut être clair et honnete sur 2 points:

  1. À ce stade on ne sait pas encore quels seront exactement les changements pour l’utilisateur final ni comment ce passage à la Ğ1 v2 se fera précisément, on communiquera là-dessus dès qu’on en saura plus, mais probablement pas avant cet été.

  2. On n’a pas de date pour le passage à la Ğ1 v2, il reste énormément de travail à accomplir, peut-être courant 2023 si l’on ne rencontre pas trop de difficultés.

6 Likes

Je veut bien aider pour le sondage et son suivit, et essayer de faire en sorte que le plus de monde y répond.

2 Likes

Merci @Candidesk8, on a fortement besoin d’aide pour gérer la communication auprès des utilisateurs, je pourrais le faire si mon temps libre était illimité, mais il est très limité, alors je préfère le consacrer à des taches techniques que peu savent faire :slight_smile:

2 Likes

Fait !

@Candidesk8

2 Likes

Si vous voulez vous amuser à trouver d’autres préfixes, voici le code Python que j’ai utilisé :

import substrateinterface
for i in range(0,16384):
    try:
        if substrateinterface.Keypair.create_from_seed("0"*64, i).ss58_address[0:2] == "g1":
            print(i)
    except:pass

D’abord installer substrateinterface avec pip install substrate-interface.

Edit: il y a aussi des blockchains qui choisissent de partir du ss58 pour trouver le préfixe, comme Basilisk/bX/10041.

1 Like

@elois le sondage donne nettement une préférence pour des clefs publiques commençant par g1.

Donc préfixes 3682, 3683, 3684 par exemple, comme dit au dessus.

1 Like

D’accord merci @matograine pour ce sondage :blush:

J’aimerais bien que quelqu’un d’autre que moi soumette la PR sur le dépôt GitHub - paritytech/ss58-registry: Registry for SS58 account types.
Vous êtes légitime, lancez-vous et proposez un brouillon (par exemple en postant ici un lien vers votre fork git) :slight_smile:

1 Like

Voici le commit pour le registre SS58. (pas encore de PR)

  • J’ai mis g1=3682, g1test=3683, g1dev=3684 arbitrairement mais si vous trouvez un autre nombre (qui donne aussi le préfixe g1) plus joli parmi ceux-là, dites-le : 3682, 3938, 4194, 4450, 4706, 4962, 5218, 5474, 5730
  • On peut aussi aller dans l’autre sens (g1dev=3680, g1test=3681), tant que c’est contigu c’est bon.
  • Pour le site web, https://duniter.org ça vous va ? (il n’a pas été refait comme le .fr)
  • Pour les noms techniques, dans le code de DuniterV2S c’est plutôt gtest et gdev que g1test et g1dev. Est-ce qu’on garde le 1 dans ceux-là ?
  • Pour le symbole, je n’ai pas trouvé la doc mais ça a l’air d’être le symbole genre EUR ou BTC. Or cette question n’a jamais été tranchée, c’est le moment.
  • On peut mettre plusieurs symboles, je ne sais pas ce que ça implique. Peut-être peut-on y mettre des symboles DU et M/N.

Edit: discussion sur le choix du symbole monétaire

Edit: nouvelle discussion sur le choix du symbole monétaire

3 Likes