Ca permet de très facilement lancer une chaine Duniter, ainsi qu’un Squid associé, et l’orcale de distance, en local avec des données de tests mockés.
Le readme explique bien comment ça fonctionne, c’est très facile vous allez voir. Avec Manu en tout cas on aime beaucoup.
C’était un peu galère sinon de lancer un squid local cohérent avec notre chaine Duniter. Là on a tout.
Pour développer les clients ça va être très utile.
Voici les logs de l’oracle avec un message d’erreur de connection au départ.
A noter que j’ai deux message sur la pool avec les 2 certifications et 3 avec la 3ème.
(.venv) vit@K72Jr:~/Documents/dev/blockchain/duniter-mocks$ docker logs distance-oracle
thread 'main' panicked at /root/distance-oracle/src/api.rs:32:10:
Cannot create RPC client: Rpc(ClientError(Transport(Io(Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }))))
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Waiting 600 seconds before next execution...
INFO [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...
INFO [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...
INFO [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...
Dans la documentation je rajouterai de taper :(non pas la peine !)
uv venv .venv
source .venv/bin/activate
pour ne pas installer les dépendances python sur les dépendances du python système…
As-tu changé les ports dans le docker compose, car déjà occupés ? Ça doit rester à 9944, car c’est à l’intérieur du réseau docker, pas dans le réseau local de l’hôte.
ORACLE_RPC_URL: ws://duniter:9944
Uniquement la partie gauche de la ligne suivante peut être changée, en cas de conflit de ports, car déjà une instance de Duniter v2 qui tourne en local :
ports:
- "9946:9944" # RPC/WS
Tout ça est plutôt bien géré dans le run.sh et ce dernier est plutôt bien documenté. La dépendance substrate-interface est utilisée uniquement avec ./run.sh generate pour le fichier generate.py. Autrement, pas besoin du venv Python, non ?