Le Runtime est l’exécutable qui contient l’ensemble des règles du protocole onchain, c’est-à-dire toutes les règles que chaque nœud doit exécuter au risque de forker.
Dès que l’on souhaite faire évoluer le protocole, c’est le Runtime qui doit être mis à jour. La procédure est assez simple :
- des développeurs modifient le code en local pour prendre en compte les modifications du protocole et produisent le Runtime (un fichier .wasm) ;
- sur la blockchain, un client pousse ce fichier .wasm dans un bloc, ce qui met à jour le Runtime pour tous les nœuds du réseau.
Là où la gouvernance entre en jeu, c’est sur ce point 2°.
Dans Duniter v1, le processus équivalent consistait à mettre son nœud à jour (mise à jour logicielle physique, à froid). C’était donc la « loi de la majorité » qui s’appliquait, par rapport aux membres forgerons.
Dans Duniter v2 c’est pareil, sauf que la mise à jour logicielle se fait à chaud. Pas besoin de mettre à jour Duniter, le logiciel est directement dans la blockchain. Mais alors, il faut définir les droits d’accès à cette fonction de mise à jour du Runtime : car si tout le monde peut le faire, ce serait une faille béante de sécurité.
On peut avoir un admin, mais alors toute la sécurité de la blockchain dépend de lui. On peut aussi restreindre l’appel à l’acceptation de N membres de la toile, N membres des forgerons actuels, etc., bref on fait ce qu’on veut mais il faut faire un choix.
Des idées ?