Synchronisation difficile / récupérer les chunks

Il semble que la synchronisation de Duniter pose souvent problème :

Pour contourner une partie du problème, je sers les chunks sur datajune, ce qui permet de les récupérer indépendamment de Duniter pour faire une synchronisation locale. Je mets à jour ces fichiers manuellement de temps en temps, vous pouvez les récupérer avec un script comme celui-ci [edit : fichier commenté ligne par ligne pour expliquer] :

#!/usr/bin/env bash

# url used to guess the current block. You can open it
# in a browser to see the result
DUNITER_URL="https://duniter.coinduf.eu/blockchain/current/"
# url used to download the chunks. You can open it in
# a browser to see the content of this folder
DATAJUNE_URL="http://datajune.coinduf.eu/chunks/"
# number of the first chunk to download.
# Change it to match your needs
START=0
# reads the current block and takes its number
CURRENT=$(curl -s $DUNITER_URL | jq -r ".number")
# divides current block number by the size of a chunk
END=$(expr $CURRENT % 250)

# prints a message telling which chunks are going to be downloaded
echo "copying chunks $START to $END"
# download the range of chunk files between START and END
curl -sSOJ ${DATAJUNE_URL}chunk_[$START-$END]-250.json
# prints a message telling it's finished
echo "done"

Cela peut également servir à des personnes qui souhaitent travailler sur les données de la blockchain sans nœud Duniter.

5 « J'aime »

On debian 9 you should change line 1 to:

#!/bin/bash

And install jq package:

apt-get install jq

1 « J'aime »

I get this error:

copying blocks 190 to 180
curl: (3) [globbing] bad range in column 50
done

You are trying to download the chunks from START (190) to END (180). The current block (CURRENT) is deduced by request to DUNITER_URL which gives the END chunk. If you want to download from the first chunk, change START to 0. I thought this code was easy enough to read to be modified to match your needs but I should comment it a bit :smiley:

Tu devrais utiliser la commande générique /usr/bin/env qui fonctionne où que soit placé bash :

#!/usr/bin/env bash

English : If you have problem with bash path, use the above env command.

Elle peut s’utiliser pour n’importe quel commande comme python par exemple :

#!/usr/bin/env python

En espérant que env soit bien dans /usr/bin dans toutes les distros… :wink:

1 « J'aime »

Tu peux rappeler comment on fait une sync locale ?
Je pensais faire ainsi auparavant mais ça ne semble plus fonctionner:

./target/release/duniter sync ../chunks/

Status: CANNOT_CONNECT_TO_REMOTE_FOR_SYNC