Historique des blocs calculés

Voici un petit script pour obtenir des visualisations (un peu crado) sur l’historique des blocs calculés :

using HTTP, JSON, Pipe, Plots, Interact, Mux

# define url and query
url = "https://subsquid.gdev.coinduf.eu/graphql"
header = Dict("Content-Type" => "application/json")
query = """
query Query {
  blocks(orderBy: height_ASC) {
    validator
    height
    timestamp
  }
}
"""
body = Dict("operationName" => "Query",
  "query" => query,
  "variables" => Dict())

# get validators
validators = @pipe HTTP.post(url, header, JSON.json(body)) |>
  String(_.body) |>
  JSON.parse |>
  _["data"]["blocks"] |>
  getindex.(_, "validator")

# set of validator except genesis which is nothing
s = @pipe Set(validators) |> delete!(_, nothing)

# map validator to height
h = @pipe 1:length(s) |> zip(s, _) |> collect |> Dict

# plot it
x = 1:length(validators)-1
y = map(x->h[x], validators[2:end])
plot(x, y, linewidth=0, marker=:dot, size=(1900,1080), legend=false)

on voit ici :
3. les blocs calculés par cgeek
2. les blocs calculés par vit
1. les blocs calculés par moi
et on distingue bien les moments ou vit et moi rejoignons, et où cgeek fait une pause

Comme ça fait beaucoup de points, on peut réduire et n’afficher qu’une fenêtre, en mode interactif :

plotlyjs()
w = 300 # width
b = 142000 # block
window = b:b+w # window
plot(x[window], y[window], linewidth=0, marker=:dot, size=(1900,1080), legend=false, ylims=(0,4))

ici on voit le bloc où vit arrête de calculer, 142207

1 Like

Un indicateur intéressant serait de calquer en plus les périodes de présence parmi les autorités, afin de révéler les problèmes de création de blocs. A priori vit et moi en avons eu.

C’est aussi possible que la VRF ne soit pas très robuste à faible nombre d’autorités, je crois avoir entendu elois parler d’un truc comme ça. Mais il faudrait plus de validateurs pour que quand un bloc primaire n’est pas fourni, on puisse quand même avoir un bloc secondaire.

1 Like

J’ai reproduit sur la chaîne actuelle pour voir depuis combien de temps @Pini ne calculait plus.

On voit aussi le court moment où j’ai été offline.

Ah en effet je ne calcule plus rien et ne suis même plus visible sur la télémétrie. Désolé pour le manque de suivi :confused:

Ça doit coïncider avec le moment où j’ai passé mon reverse proxy en double stack IPv4 + IPv6. Pour ce faire il a fallu que je stoppe et supprime mes conteneurs, afin de pouvoir re-créer le réseau associé. J’étais tellement sûr de moi que je n’ai pas vérifié les logs des conteneurs duniter-v2s. Voici ce que ça dit :

Generating node key file '/var/lib/duniter/node.key'...
12D3KooWDmtJ27oAU8avqSnqFpp6Uo1BrgKbHaHPPYKRL281QJp9
Node peer ID is '12D3KooWDmtJ27oAU8avqSnqFpp6Uo1BrgKbHaHPPYKRL281QJp9'.
Starting duniter with parameters: --name pini-gdev-smith --node-key-file /var/lib/duniter/node.key --public-addr /dns/gdev-smith.pini.fr/tcp/443/wss --listen-addr /ip4/0.0.0.0/tcp/30333/ws --rpc-cors all --rpc-methods Unsafe --validator --no-prometheus --chain gdev -d /var/lib/duniter --unsafe-rpc-external --unsafe-ws-external
2024-01-21 20:05:41 Duniter    
2024-01-21 20:05:42 ✌️  version 0.3.0-6d73d087957    
2024-01-21 20:05:42 ❤️  by Axiom-Team Developers <https://axiom-team.fr>, 2021-2024    
2024-01-21 20:05:42 📋 Chain specification: Ğdev    
2024-01-21 20:05:42 🏷  Node name: pini-gdev-smith    
2024-01-21 20:05:42 👤 Role: AUTHORITY    
2024-01-21 20:05:42 💾 Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2024-01-21 20:05:42 ⛓  Native runtime: gdev-400 (duniter-gdev-1.tx1.au1)    
2024-01-21 20:06:21 🔨 Initializing Genesis block/state (state: 0x4096…cfd1, header-hash: 0xf9bb…0dfc)    
2024-01-21 20:06:24 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2024-01-21 20:06:42 👶 Creating empty BABE epoch changes on what appears to be first startup.    
2024-01-21 20:06:43 🏷  Local node identity is: 12D3KooWDmtJ27oAU8avqSnqFpp6Uo1BrgKbHaHPPYKRL281QJp9    
2024-01-21 20:06:44 🔍 Discovered new external address for our node: /dns/gdev-smith.pini.fr/tcp/443/wss/p2p/12D3KooWDmtJ27oAU8avqSnqFpp6Uo1BrgKbHaHPPYKRL281QJp9    
2024-01-21 20:06:44 👶 Starting BABE Authorship worker    
2024-01-21 20:06:44 💻 Operating system: linux    
2024-01-21 20:06:44 💻 CPU architecture: x86_64    
2024-01-21 20:06:44 💻 Target environment: gnu    
2024-01-21 20:06:44 💻 CPU: Intel(R) Atom(TM) CPU N2800   @ 1.86GHz    
2024-01-21 20:06:44 💻 CPU cores: 2    
2024-01-21 20:06:44 💻 Memory: 3897MB    
2024-01-21 20:06:44 💻 Kernel: 6.1.0-13-amd64    
2024-01-21 20:06:44 💻 Linux distribution: Debian GNU/Linux 10 (buster)    
2024-01-21 20:06:44 💻 Virtual machine: no    
2024-01-21 20:06:44 📦 Highest known block at #0    
2024-01-21 20:06:44 Running JSON-RPC HTTP server: addr=0.0.0.0:9933, allowed origins=None    
2024-01-21 20:06:44 Running JSON-RPC WS server: addr=0.0.0.0:9944, allowed origins=None    
2024-01-21 20:06:44 ***** Duniter has fully started *****    
2024-01-21 20:06:44 discovered: 12D3KooWRf9NS5KqzpdPpBuQ7R38AhHtE6Wq9WZvg9Amqk9cZ9MZ /ip4/172.16.1.8/tcp/30333/ws    
2024-01-21 20:06:44 💔 The bootnode you want to connect to at `/dns/gdev.trentesaux.fr/tcp/30333/p2p/12D3KooWMAnBum4Xq8B6NQZgmmXVJvWkHzdLrJ297np3VbMqnz7t` provided a different peer ID `12D3KooWKxYMcKy8tLhn4qk9oACM2FTMExH3M7Fwes8NBnE8V1H9` than the one you expect `12D3KooWMAnBum4Xq8B6NQZgmmXVJvWkHzdLrJ297np3VbMqnz7t`.    
2024-01-21 20:06:44 💔 The bootnode you want to connect to at `/dns/gdev.trentesaux.fr/tcp/30333/p2p/12D3KooWMAnBum4Xq8B6NQZgmmXVJvWkHzdLrJ297np3VbMqnz7t` provided a different peer ID `12D3KooWKxYMcKy8tLhn4qk9oACM2FTMExH3M7Fwes8NBnE8V1H9` than the one you expect `12D3KooWMAnBum4Xq8B6NQZgmmXVJvWkHzdLrJ297np3VbMqnz7t`.    
2024-01-21 20:06:44 💔 The bootnode you want to connect to at `/dns/gdev.coinduf.eu/tcp/30333/p2p/12D3KooWAVY7T3eqGxyjCPbKfMKrkT55XR6BuBxpW5sEEJYAJu3n` provided a different peer ID `12D3KooWMv9X3ZocyrE82qt22LnDPREhP2j9Tr4rrfBwKZ44LUP3` than the one you expect `12D3KooWAVY7T3eqGxyjCPbKfMKrkT55XR6BuBxpW5sEEJYAJu3n`.    
2024-01-21 20:06:44 💔 The bootnode you want to connect to at `/dns/vit.fdn.org/tcp/30334/p2p/12D3KooWDuzVbBcnnEEKh32R6MUKvQvLENyzLHHUfg4kTyUQq7hp` provided a different peer ID `12D3KooWB3zoZgS9GmzDMJSkgRXd3eiGft5HQAB84GEBj9GpZY9V` than the one you expect `12D3KooWDuzVbBcnnEEKh32R6MUKvQvLENyzLHHUfg4kTyUQq7hp`.    
2024-01-21 20:06:44 💔 The bootnode you want to connect to at `/dns/gdev.coinduf.eu/tcp/30333/p2p/12D3KooWAVY7T3eqGxyjCPbKfMKrkT55XR6BuBxpW5sEEJYAJu3n` provided a different peer ID `12D3KooWMv9X3ZocyrE82qt22LnDPREhP2j9Tr4rrfBwKZ44LUP3` than the one you expect `12D3KooWAVY7T3eqGxyjCPbKfMKrkT55XR6BuBxpW5sEEJYAJu3n`.    

Il semblerait que j’aie perdu des données en cours de route :frowning: Je vais investiguer.

1 Like

J’ai trouvé. Je n’avais pas redémarré le bon projet docker-compose. C’est un ancien projet lié à la Gdev précédente (runtime 401) que j’avais relancé par erreur :person_facepalming:

Je viens de relancer le bon et les noeuds sont en train de rattraper les blocs. Ouf !

EDIT: Ayé je forge à nouveau !

2 Likes

J’aurais dû le voir en lisant les bootnodes !