Dans substrate, chaque extrinsic doit se voir assigner une fonction qui calcule le temps d’exécution théorique de l’extrinsic en fonction de ses paramètres d’entrée. Ce temps est quantifié en poids, avec 1 poid = 10^-12 seconde.
Pour créer cette fonction, on code des benchmarks, qui doivent être exécutés sur une machine de référence.
Le jour ou la charge sur la blockchain Ğ1 sera proche de ses capacités maximales, tous les nœuds duniter-v2s devront impérativement avoir des spécifications matérielles supérieures où égales à la machine de référence.
En effet, si un nœud à des spécifications matérielles plus faible, et qu’il lui faut donc plus de temps pour exécuter les blocs, il risque de se désynchroniser du réseau si les blocs sont bien remplis.
Sauf spam, dont il faudra se protéger par des quotas ou/et frais, je pense qu’on aura encore de longues années devant nous avant de s’approcher de la capacité maximale de la nouvelle blockchain Ğ1 qui sera propulsée par Duniter-v2s.
Cependant, on doit quand même faire un étalonnage des poids avant de migrer la Ğ1, et pour cela on doit choisir une machine de référence, donc les capacités fixeront directement les capacités maximales de la blockchain.
J’ai une seule contrainte: il faut que cette machine de référence soit accessible en ssh par les développeurs de duniter-v2s afin qu’ils puissent travailler dessus pour coder et exécuter les benchmarks.
Pour information, voici les spécifications de références utilisées par Polkadot:
On peut partir sur plus modeste, mais la capacité maximale de notre blockchain en sera réduite, et la relation n’est pas forcément linéaire, on ne le saura que quand on aura fait les benchmarks.
Le choix que nous ferons n’a aucune obligation d’être définitif. On peut à tout moment décider de changer de machine de référence, mais les gestionnaires de nœuds devront continuer de se conformer à l’ancienne machine de référence pendant quelques mois, le temps que l’on puisse rejouer tous les benchmarks, vérifier les résultats, puis proposer un runtime upgrade onchain.