Gdev runtime 600

Il ne restait plus qu’un forgeron, qui a finalement disparu. Tout le monde a dû oublier de renouveler les certifs, session keys et tout, et puis il y a l’incohérence du storage.

Si on relance une gdev, autant le faire avec le DU temporel. Les autres MR ont besoin d’une migration triviale, pas d’un reset. Donc si tu valides la MR !178 je propose qu’on sorte le runtime 600 dès qu’elle est mergée.

Edit: Je vais peut-être ajouter à gcli une fonction notification d’expiration par Discourse ou mail.

1 Like

OK, j’essaie de reviewer la MR!178 en priorité. Est-ce que tu sais préparer le reset ? Je n’ai pas l’impression que Hugo soit dans le coin pour le faire.

1 Like

C’est surtout la création du genesis qui m’inquiète, je vais voir si j’y arrive.

Problème : il manque blocs.json dans Index of /inputs/ .

@poka

Pourtant je le vois bien : https://g1-migrator.axiom-team.fr/inputs/blocs.json

Peut-être qu’il a disparu le temps de sa génération, et qu’il faut réessayer de temps en temps.

Ce n’est pas un oubli. C’était juste mipossible.

1 Like

Il est vide et a été modifié en juillet alors que les autres datent d’aujourd’hui…

1 Like

J’essaie de faire tourner py-g1-migrator chez moi mais il y a bien une erreur pour blocs.json :

dex find main_blocks -p medianTime -o json -f blocs.json

Error: DeserError: missing field `wrong` at line 1 column 130741: '{"version":10,"number":0,"currency":"g1", [...]'

(nœud synchro depuis des chunks téléchargés, bloqué et arrêté à 85%)

Dex semble aussi être bugué sur l’export des identités. Pour avancer, soit un dev Rust se penche sur le code de dex, soit un dev Python implémente l’import direct des index leveldb dans le code Python de py-g1-migrator.

Mon script d’intégrité peut servir et je peux aider si besoin :

C’est bon, il suffisait d’ajouter une valeur par défaut au champ wrong du bloc, pour qu’il tolère son absence dans la bdd. Files · tuxmain/default-wrong · Pascal Engélibert / duniter-core · GitLab

Par contre rien ne dit que ça marchera encore dans un an. Dex casse facilement à la moindre erreur, il ne compile qu’avec une version de duniter-core datant de 2021, le script python est de bric et de broc… Il serait plus prudent de préparer un truc robuste et conçu pour être tolérant aux erreurs, qui lise directement dans la bdd pour minimiser les dépendances.

2 Likes

Comme il faut utiliser docker pour compiler le runtime je veux bien que quelqu’un termine la release. J’ai créé la branche release/runtime-600. Les instructions sont dans docs/dev/launch-a-live-network.md.

Le gdev.json auquel il manque le runtime : https://txmn.tk/g1/gdev/gdev.json

Je peux (essayer de) m’en occuper, par contre avant j’aimerais merger MR!180 à propos de Blake2_128Concat.

edit : pour info, je m’y mets seulement maintenant. Je vais prendre mon temps.

3 Likes

Le runtime-600 est disponible dans les releases. :rocket: (merci à @Pini pour le déblocage de la CI)

Ne reste plus qu’à générer la spec, mais j’ai quelques soucis sur :

D’abord j’ai renommé le préfixe “smiths” en “smith”, car il y avait une erreur, mais ensuite il y a plus gênant :

docker run -v $HOME/duniter-v2s/resources:/var/lib/duniter/resources -e DUNITER_GENESIS_CONFIG=/var/lib/duniter/resources/gdev.json --rm duniter/duniter-v2s:runtime-600 -- build-spec -lerror --chain=gdev_live --raw > name-raw.json
Error: Input("Identity 'Nounoursgt8946' not exist")

Un soucis avec py-g1-migrator ?

1 Like

J’avais fait quelques changements ad hoc dans py-g1-migrator, je viens de pusher dans tuxmain/gdev.

1 Like

Je pense avoir réussi à générer les raw-spec, voici deux fichiers :

  • le genesis configuration file : gdev.json.zip (2,1 Mo)
  • les raw-spec dérivées du fichier précédent et qui intègrent le runtime-600 : gdev-raw.json

Si j’en crois la documentation, je devais vous partager ce gdev-raw.json, je n’ai pas encore bien compris pourquoi, je verrai ça demain (à vous lire, ou à continuer de lire la doc :slight_smile: )

2 Likes

Je sors d’une pause complète sur Duniter et je me relance à plein temps. J’ai quelques trucs à faire avant de travailler avec vous sur une nouvelle ĞDev (ou ĞTest, à définir).

Je note ce point pour la prochaine visio, je pense que ce serait bien d’en parler ensemble.

1 Like

Je pense avoir déroulé correctement le tuto, j’ai une GDev en local basée sur le gdev-raw.json joint ci-avant mais qui plante sur la génération du block#0. C’est peut-être mon environnement qui n’est pas correct, mais bon, à toutes fins utiles je vous poste les logs ici :

Résumé
2023-09-01 21:46:18 Generating node key file '/var/lib/duniter/node.key'...
2023-09-01 21:46:18 Node peer ID is '12D3KooWSGzoaTu3WubUaU3syGTG5xMbX3ZAZwFVxNsXZZawoPoW'.
2023-09-01 21:46:18 Starting duniter with parameters: --bootnodes /dns/duniter-rpc/tcp/30333/p2p/12D3KooWKiyqmbKVJMsgDWiq4ni56czNQEkPY9LxyGrc74TJURwu --node-key-file /var/lib/duniter/node.key --rpc-cors all --rpc-methods Unsafe --validator --chain /var/lib/duniter/gdev-raw.json -d /var/lib/duniter --unsafe-rpc-external --unsafe-ws-external
2023-09-01 21:46:18 12D3KooWSGzoaTu3WubUaU3syGTG5xMbX3ZAZwFVxNsXZZawoPoW
2023-09-01 21:46:19 2023-09-01 19:46:19 Duniter    
2023-09-01 21:46:19 2023-09-01 19:46:19 ✌️  version 0.3.0-unknown    
2023-09-01 21:46:19 2023-09-01 19:46:19 ❤️  by Axiom-Team Developers <https://axiom-team.fr>, 2021-2023    
2023-09-01 21:46:19 2023-09-01 19:46:19 📋 Chain specification: Ğdev    
2023-09-01 21:46:19 2023-09-01 19:46:19 🏷  Node name: elderly-tree-8901    
2023-09-01 21:46:19 2023-09-01 19:46:19 👤 Role: AUTHORITY    
2023-09-01 21:46:19 2023-09-01 19:46:19 💾 Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2023-09-01 21:46:19 2023-09-01 19:46:19 ⛓  Native runtime: gdev-600 (duniter-gdev-1.tx1.au1)    
2023-09-01 21:46:21 2023-09-01 19:46:21 🔨 Initializing Genesis block/state (state: 0x2b3a…9feb, header-hash: 0xe22f…5586)    
2023-09-01 21:46:21 2023-09-01 19:46:21 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2023-09-01 21:46:22 2023-09-01 19:46:22 👶 Creating empty BABE epoch changes on what appears to be first startup.    
2023-09-01 21:46:22 2023-09-01 19:46:22 🏷  Local node identity is: 12D3KooWSGzoaTu3WubUaU3syGTG5xMbX3ZAZwFVxNsXZZawoPoW    
2023-09-01 21:46:22 2023-09-01 19:46:22 👶 Starting BABE Authorship worker    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Operating system: linux    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 CPU architecture: aarch64    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Target environment: gnu    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Memory: 15987MB    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Kernel: 5.15.49-linuxkit    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Linux distribution: Debian GNU/Linux 11 (bullseye)    
2023-09-01 21:46:22 2023-09-01 19:46:22 💻 Virtual machine: no    
2023-09-01 21:46:22 2023-09-01 19:46:22 📦 Highest known block at #0    
2023-09-01 21:46:22 2023-09-01 19:46:22 Running JSON-RPC HTTP server: addr=0.0.0.0:9933, allowed origins=None    
2023-09-01 21:46:22 2023-09-01 19:46:22 Running JSON-RPC WS server: addr=0.0.0.0:9944, allowed origins=None    
2023-09-01 21:46:22 2023-09-01 19:46:22 〽️ Prometheus exporter started at 127.0.0.1:9615    
2023-09-01 21:46:22 2023-09-01 19:46:22 ***** Duniter has fully started *****    
2023-09-01 21:46:22 2023-09-01 19:46:22 💔 The bootnode you want to connect to at `/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWG9QffS4Atii6zD1AwRcs1MurFa2CfacJJmvmuT6scxKN` provided a different peer ID `12D3KooWSGzoaTu3WubUaU3syGTG5xMbX3ZAZwFVxNsXZZawoPoW` than the one you expect `12D3KooWG9QffS4Atii6zD1AwRcs1MurFa2CfacJJmvmuT6scxKN`.    
2023-09-01 21:46:22 2023-09-01 19:46:22 💔 The bootnode you want to connect to at `/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWG9QffS4Atii6zD1AwRcs1MurFa2CfacJJmvmuT6scxKN` provided a different peer ID `12D3KooWSGzoaTu3WubUaU3syGTG5xMbX3ZAZwFVxNsXZZawoPoW` than the one you expect `12D3KooWG9QffS4Atii6zD1AwRcs1MurFa2CfacJJmvmuT6scxKN`.    
2023-09-01 21:46:22 2023-09-01 19:46:22 discovered: 12D3KooWHn9jUkD8w1v8QQHWrFkNcURCWznaE4cawqvGkzp8o1Rj /ip4/172.31.0.3/tcp/30333/ws    
2023-09-01 21:46:24 2023-09-01 19:46:24 🙌 Starting consensus session on top of parent 0xe22ff1acaee778d304f6c40a103c34e1035d7b0a4a9bbd82f2d8a45adaa25586    
2023-09-01 21:46:24 2023-09-01 19:46:24 panicked at 'attempt to divide by zero', /rustc/8796e7a9cfd4c5c4f1de15ec1c53994ddf288665/library/core/src/ops/arith.rs:488:1    
2023-09-01 21:46:24 2023-09-01 19:46:24 1 storage transactions are left open by the runtime. Those will be rolled back.    
2023-09-01 21:46:24 2023-09-01 19:46:24 1 storage transactions are left open by the runtime. Those will be rolled back.    
2023-09-01 21:46:24 2023-09-01 19:46:24 ❗️ Inherent extrinsic returned unexpected error: Error at calling runtime api: Execution failed: Execution aborted due to trap: wasm trap: wasm `unreachable` instruction executed
2023-09-01 21:46:24 WASM backtrace:
2023-09-01 21:46:24 
2023-09-01 21:46:24     0: 0x183875 - <unknown>!rust_begin_unwind
2023-09-01 21:46:24     1: 0x3ec0 - <unknown>!core::panicking::panic_fmt::h57b56b1dc717ba48
2023-09-01 21:46:24     2: 0x3e81 - <unknown>!core::panicking::panic::h152edf3fad35a2e6
2023-09-01 21:46:24     3: 0x4d389 - <unknown>!pallet_universal_dividend::<impl frame_support::traits::hooks::OnTimestampSet<<T as pallet_timestamp::pallet::Config>::Moment> for pallet_universal_dividend::pallet::Pallet<T>>::on_timestamp_set::h2e09a490fdd6972a
2023-09-01 21:46:24     4: 0x90d0f - <unknown>!frame_support::storage::transactional::with_storage_layer::h4adf8ad53c5109ae
2023-09-01 21:46:24     5: 0x170b0 - <unknown>!<gdev_runtime::RuntimeCall as frame_support::traits::dispatch::UnfilteredDispatchable>::dispatch_bypass_filter::hb9eaa75132fb4db0
2023-09-01 21:46:24     6: 0x16d34 - <unknown>!<gdev_runtime::RuntimeCall as sp_runtime::traits::Dispatchable>::dispatch::hf53c3c69d77eb11d
2023-09-01 21:46:24     7: 0x10be9d - <unknown>!<sp_runtime::generic::checked_extrinsic::CheckedExtrinsic<AccountId,Call,Extra> as sp_runtime::traits::Applyable>::apply::hbb50cd1564d3614b
2023-09-01 21:46:24     8: 0xc3833 - <unknown>!frame_executive::Executive<System,Block,Context,UnsignedValidator,AllPalletsWithSystem,COnRuntimeUpgrade>::apply_extrinsic::h218aa786580ca1c3
2023-09-01 21:46:24     9: 0xd49b1 - <unknown>!BlockBuilder_apply_extrinsic
2023-09-01 21:46:24 . Dropping.    
2023-09-01 21:46:24 2023-09-01 19:46:24 panicked at 'Timestamp must be updated once in the block', /usr/local/cargo/git/checkouts/substrate-7b26ec960e31aff5/7f8b8db/frame/timestamp/src/lib.rs:179:13    
2023-09-01 21:46:24 2023-09-01 19:46:24 Proposing failed: Import failed: Error at calling runtime api: Execution failed: Execution aborted due to trap: wasm trap: wasm `unreachable` instruction executed
2023-09-01 21:46:24 WASM backtrace:
2023-09-01 21:46:24 
2023-09-01 21:46:24     0: 0x183875 - <unknown>!rust_begin_unwind
2023-09-01 21:46:24     1: 0x3ec0 - <unknown>!core::panicking::panic_fmt::h57b56b1dc717ba48
2023-09-01 21:46:24     2: 0x5bc67 - <unknown>!<pallet_timestamp::pallet::Pallet<T> as frame_support::traits::hooks::OnFinalize<<T as frame_system::pallet::Config>::BlockNumber>>::on_finalize::hb1347f4ecbebc228
2023-09-01 21:46:24     3: 0xc4bc5 - <unknown>!frame_executive::Executive<System,Block,Context,UnsignedValidator,AllPalletsWithSystem,COnRuntimeUpgrade>::idle_and_finalize_hook::h467a73fab6393a5b
2023-09-01 21:46:24     4: 0xc4cb4 - <unknown>!frame_executive::Executive<System,Block,Context,UnsignedValidator,AllPalletsWithSystem,COnRuntimeUpgrade>::finalize_block::ha93eb503968fad45
2023-09-01 21:46:24     5: 0xd4a63 - <unknown>!BlockBuilder_finalize_block
2023-09-01 21:46:24     

edit : je ne comprends pas encore très bien, mais j’arrive à lancer en mode debug donc je devrais finir par trouver.

edit 2 : je fais une pause, je pense que c’est dans service.rs où il manque la création de l’inherent.

Quelle commande as-tu utilisé pour le lancer ? En fonction du sealing qu’on choisit il branche différemment dans service.rs et peut ne pas créer les inhérents. Je ne pense pas que service.rs soit le problème.

Sans préciser le sealing, donc je suis en mode “automatique”. Mais effectivement je passe bien dans la création de l’inherent, le problème est ailleurs.

edit : l’erreur “Timestamp must be updated once in the block” n’est qu’un symptôme, l’erreur se produit en fait dans reeval_ud parce que count_uds_beetween_two_reevals vaut zéro.

edit 2 : si je trace les valeurs dans la pallet UD :

let count_uds = T::MomentIntoBalance::convert(
    T::UdReevalPeriod::get() / T::UdCreationPeriod::get(),
);
if_std! {
    println!("ud_reeval_period = {:?}", T::UdReevalPeriod::get());
    println!("ud_creation_period = {:?}", T::UdCreationPeriod::get());
    println!("count_uds = {:?}", count_uds.clone());
}
ud_reeval_period = 15778800
ud_creation_period = 86400000
count_uds = 0

Normal :slight_smile:

edit 3 : mais ce n’est pas cohérent avec ma genesis config :

  "parameters": {
   ...
    "ud_creation_period": 14400,
    "ud_reeval_period": 100800,

edit 4 : bon c’est ça, mon gdev.json n’est pas bon.

edit 5 : ça avance !

ud_reeval_period = 100800
ud_creation_period = 14400
count_uds = 7
2023-09-02 11:42:48 🙌 Starting consensus session on top of parent 0x65524bd06366df57cb701b2915f0f2493e0e451e4688cb366701924bcb3e1726    
2023-09-02 11:42:48 🎁 Prepared block for proposing at 1 (3 ms) [hash: 0x8d0aa44b92cc2d9759cccb5631599c21c152690f0f9b3cb01a5f33ee8fcfbf4a; parent_hash: 0x6552…1726; extrinsics (1): [0x3683…6a3b]]    
2023-09-02 11:42:48 🔖 Pre-sealed block for proposal at 1. Hash now 0x51a03e27cb7833ca1319697e9ec0a26b9f61c5dc82074f63edac997a76450b1e, previously 0x8d0aa44b92cc2d9759cccb5631599c21c152690f0f9b3cb01a5f33ee8fcfbf4a.    
2023-09-02 11:42:48 👶 New epoch 0 launching at block 0x51a0…0b1e (block slot 282274628 >= start slot 282274628).    
2023-09-02 11:42:48 👶 Next epoch starts at slot 282275228    
2023-09-02 11:42:48 ✨ Imported #1 (0x51a0…0b1e)
1 Like

A post was split to a new topic: Industrialiser le démarrage d’une nouvelle Ğx