Utilisation, bug, installation Silkaj

Quand je regarde le réseau avec Silkaj, tous les nœuds à jours sont indiqués en 1.7.19 ? Bug de Silkaj ? (Je suis en version 0.6.5 qui est dans les packages Debian, je n’ai pas installé depuis pip3.)

$ silkaj -p duniter.moul.re:80 net -d
(...)
20 peers ups, with 0 members and 20 non-members at 14:33:46
|        domain         |   port |      ip4       |    ip6    |  pubkey  |  member  |  gen_time  |   block |    hash     |  version  |
|-----------------------+--------+----------------+-----------+----------+----------+------------+---------+-------------+-----------|
|  remuniter.cgeek.fr   |  16120 | 88.174.120.187 |           |  TENGx…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|    duniter.tcit.fr    |  10901 |  94.23.43.191  |   ::1…    |  HmoPm…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| …niter.g1.1000i100.fr |    443 |   82.64.0.18   |           |  2sZF6…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|  maison.donnadieu.fr  |  49136 | 192.168.101.6  | fd92:9e1… |  5EHep…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| …r.normandie-libre.fr |  10902 |  82.64.35.65   |           |  8t6Di…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |

Wow, je suis impressionné que tu aies réussi à faire fonctionner cette commande sur la Ğ1. Elle échoue tout le temps. J’ai prévu de la supprimer par la remplacer par un autre code.

Tu peux mettre duniter.moul.re. Silkaj s’occupe de mettre par défaut le port 443 et tu bénéficieras d’une connexion chiffrée.

C’est un bug côté silkaj qui met le même numéro de version à tous les nœuds. Regarde les nœuds de guenoel dans les deux vues réseau.

@Moul, j’avais essayé sans mettre le port mais ça plante :

$ silkaj -p duniter.moul.re diffi 
Traceback (most recent call last):
  File "/usr/bin/silkaj", line 25, in <module>
    manage_cmd()
  File "/usr/lib/python3/dist-packages/silkaj/cli_tools.py", line 85, in manage_cmd
    cli(obj={})
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/silkaj/cli_tools.py", line 133, in cliDiffi
    difficulties()
  File "/usr/lib/python3/dist-packages/silkaj/commands.py", line 111, in difficulties
    diffi = get_request("blockchain/difficulties")
  File "/usr/lib/python3/dist-packages/silkaj/network_tools.py", line 158, in get_request
    ep = EndPoint().ep
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3/dist-packages/silkaj/network_tools.py", line 101, in __init__
    ep["domain"], ep["port"] = ctx.obj["PEER"].rsplit(":", 1)
ValueError: not enough values to unpack (expected 2, got 1)

Peut-être parce que je suis encore en 0.6.5. Ça marche avec le port 80 ou 443.

Je suis pas sûr de bien comprendre ce que tu regardes avec silkaj diff du coup ? La vue s’actualise mais je vois rien bouger ?

$ silkaj -p duniter.moul.re:443 diffi

Minimal Proof-of-Work: 83 to match `00000[0-C]*`
Difficulty to generate next block n°285803 for 15/22 nodes:
|       uid        |        match         |   Π diffi   |   Σ diffi |
|------------------+----------------------+-------------+-----------|
|       deem       | 00000000000000000000 | 8.0 × 10^87 |      1168 |
|       moul       | 00000000000000000000 | 2.2 × 10^44 |       586 |
|     charles      | 00000000000000000000 | 3.9 × 10^25 |       338 |
|     Guenoel      | 000000000000000[0-5] | 1.2 × 10^19 |       250 |
|  MarcelDoppagne  |   0000000000[0-3]*   | 1.3 × 10^13 |       172 |
|     art15te      |   0000000000[0-5]*   | 1.1 × 10^13 |       170 |
|     Attilax      |   0000000000[0-8]*   | 7.7 × 10^12 |       167 |
|     pafzedog     |     00000[0-7]*      | 8.4 × 10^6  |        88 |
|    b_presles     |     00000[0-8]*      | 7.3 × 10^6  |        87 |
| jeanlucdonnadieu |     00000[0-A]*      | 5.2 × 10^6  |        85 |
|     ofontes      |     00000[0-A]*      | 5.2 × 10^6  |        85 |
|      bherfa      |     00000[0-B]*      | 4.2 × 10^6  |        84 |
|     Granxis8     |     00000[0-B]*      | 4.2 × 10^6  |        84 |
|      Petrus      |     00000[0-B]*      | 4.2 × 10^6  |        84 |
|      jytou       |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|     gerard94     |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|      elois       |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|    Matograine    |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|       poka       |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|    KumaNinja     |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|     DYves62      |     00000[0-C]*      | 3.1 × 10^6  |        83 |
|     ji_emme      |     00000[0-C]*      | 3.1 × 10^6  |        83 |

Ah, pardon, c’est une fonctionnalité introduite en 0.7 alors.

Normalement, la vue se met à jour lors de l’arrivée d’un nouveau bloc. Il est possible que la connexion WebSocket se coupe. J’ai pas de coupure entre un nœud et Silkaj tous deux en local.

Après, y’a un header plus explicite en 0.7.x :

Current block: n°285802, generated on the 2020-01-04 16:48:06
Generation of next block n°285803 possible by at least 15/22 members
Common Proof-of-Work difficulty level: 83, hash starting with `00000[0-C]*`
|       uid        |        match         |   Π diffi   |   Σ diffi |
|------------------+----------------------+-------------+-----------|
|       deem       | 00000000000000000000 | 8.0 × 10^87 |      1168 |

Je t’invite à installer la 0.7.x pour bénéficier des dernières fonctionnalités, vu que tu as l’air de t’en servir assez souvent.

Je ne m’en sers pas souvent, ça fait partie par contre de mes objectifs. :slight_smile:

J’ai écouté ta conférence aux dernières RML et je suis bien tenté d’essayer de l’installer avec Poetry mais je manque de temps libre sans contraintes en ce moment donc je n’ai pas voulu essayer d’installer la nouvelle version avec tout l’environnement de développement alors que la version installée directement depuis apt marchait.

Y’a la solution intermédiaire via pip.
Avec Poetry, c’est pour développer.
Tu auras la dernière version publiée par le projet.
La version de Debian aura toujours du retard.

On dévie mais bon, tant pis…

$ pip3 search silkaj
bash: /usr/local/bin/pip3 : /usr/bin/python3.6 : mauvais interpréteur: Aucun fichier ou dossier de ce type

$ python3 -m pip install silkaj --user
Collecting silkaj

$ silkaj 
Traceback (most recent call last):
  File "/home/simon/.local/bin/silkaj", line 20, in <module>
    from silkaj.cli_tools import cli
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/cli_tools.py", line 22, in <module>
    from silkaj.tx import send_transaction
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/tx.py", line 24, in <module>
    from silkaj.network_tools import ClientInstance, HeadBlock
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/network_tools.py", line 25, in <module>
    from duniterpy.api.client import Client
  File "/home/simon/.local/lib/python3.7/site-packages/duniterpy/api/client.py", line 9, in <module>
    import jsonschema
  File "/usr/lib/python3/dist-packages/jsonschema/__init__.py", line 12, in <module>
    from jsonschema.exceptions import (
  File "/usr/lib/python3/dist-packages/jsonschema/exceptions.py", line 141, in <module>
    @attr.s(hash=True)
AttributeError: module 'attr' has no attribute 's'

J’ai évidemment supprimé le silkaj installé depuis les dépôts avant.

@matograine avait promis de mettre la solution sur le ticket.
Il fallait installer genre attr ou attrs via pip. Je sais plus.

1 Like

Tu as bien désinstallé Silkaj du dépôt Debian ?

Sinon, essaye de lancer Silkaj depuis :

~/.local/bin/silkaj

Je viens d’essayer mais ça ne résoud pas le problème.

Tu peux installer silkaj dans le dossier $HOME/.local/bin proprement :

pip install --user silkaj

puis ensuite :

~/.local/bin/silkaj

Le plus simple est d’ajouter alors ce chemin ~/.local/bin à ton PATH système.

Sinon je conseille l’utilisation d’un environnement virtuel, voir mon commentaire :

J’ai testé les deux méthodes d’installation et elles fonctionnent.

1 Like

J’ai fini par réussir à installer avec pip.

Le problème venait d’un mélange entre des commandes avec et sans sudo, comme tu l’as pointé sur le gitlab.

Et il y avait un autre problème parce que pip essayait de se lancer avec python 3.6 qui était mal installé sur la machine.

J’ai donc commencé par réinstaller pip :

$ sudo apt remove python-pip --purge
$ sudo apt remove python3-pip --purge
$ sudo apt autoremove
$ sudo apt install python3-pip

Après j’ai réinstallé silkaj avec pip et j’avais toujours le même problème.

$ pip3 search silkaj
silkaj (0.7.3)  - Command line client for Duniter
  INSTALLED: 0.7.3 (latest)

$ silkaj 
Traceback (most recent call last):
  File "/home/simon/.local/bin/silkaj", line 20, in <module>
    from silkaj.cli_tools import cli
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/cli_tools.py", line 22, in <module>
    from silkaj.tx import send_transaction
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/tx.py", line 24, in <module>
    from silkaj.network_tools import ClientInstance, HeadBlock
  File "/home/simon/.local/lib/python3.7/site-packages/silkaj/network_tools.py", line 25, in <module>
    from duniterpy.api.client import Client
  File "/home/simon/.local/lib/python3.7/site-packages/duniterpy/api/client.py", line 9, in <module>
    import jsonschema
  File "/usr/local/lib/python3.7/dist-packages/jsonschema/__init__.py", line 11, in <module>
    from jsonschema.exceptions import (
  File "/usr/local/lib/python3.7/dist-packages/jsonschema/exceptions.py", line 152, in <module>
    @attr.s(hash=True)
AttributeError: module 'attr' has no attribute 's'

J’ai cherché et je suis tombé sur stackoverflow avec une explication. Il y a un truc qui coince entre les packages « attr » et « attrs » que j’avais installé tous les deux.

$ pip3 list
Package             Version  
------------------- --------- 
(...)   
attr                0.3.1    
attrs               19.3.0  

Désinstallation des deux. attrs avait été installé avec sudo en plus…

$ pip3 uninstall attr
Uninstalling attr-0.3.1:
  Would remove:
    /home/simon/.local/lib/python3.7/site-packages/attr-0.3.1.dist-info/*
    /home/simon/.local/lib/python3.7/site-packages/attr.py
    /home/simon/.local/lib/python3.7/site-packages/dry_attr.py
Proceed (y/n)? y
  Successfully uninstalled attr-0.3.1

$ pip3 uninstall attrs
Uninstalling attrs-19.3.0:
  Would remove:
    /usr/local/lib/python3.7/dist-packages/attr/*
    /usr/local/lib/python3.7/dist-packages/attrs-19.3.0.dist-info/*
Proceed (y/n)? y
Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.7/shutil.py", line 566, in move
    os.rename(src, real_dst)
PermissionError: [Errno 13] Permission non accordée: '/usr/local/lib/python3.7/dist-packages/attr/__init__.py' -> '/tmp/pip-uninstall-8zwnp23m/usr/local/lib/python3.7/dist-packages/attr/__init__.py'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 143, in main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/uninstall.py", line 75, in run
    auto_confirm=options.yes, verbose=self.verbosity > 0,
  File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 683, in uninstall
    uninstalled_pathset.remove(auto_confirm, verbose)
  File "/usr/lib/python3/dist-packages/pip/_internal/req/req_uninstall.py", line 224, in remove
    renames(path, new_path)
  File "/usr/lib/python3/dist-packages/pip/_internal/utils/misc.py", line 280, in renames
    shutil.move(old, new)
  File "/usr/lib/python3.7/shutil.py", line 581, in move
    os.unlink(src)
PermissionError: [Errno 13] Permission non accordée: '/usr/local/lib/python3.7/dist-packages/attr/__init__.py'

$ sudo pip3 uninstall attrs
Uninstalling attrs-19.3.0:
  Would remove:
    /usr/local/lib/python3.7/dist-packages/attr/*
    /usr/local/lib/python3.7/dist-packages/attrs-19.3.0.dist-info/*
Proceed (y/n)? 
Your response ('') was not one of the expected responses: y, n
Proceed (y/n)? y   
  Successfully uninstalled attrs-19.3.0

Enfin, réinstallation de silkaj :

$ pip3 install silkaj --user
Requirement already satisfied: silkaj in /home/simon/.local/lib/python3.7/site-packages (0.7.3)
Requirement already satisfied: pynacl in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (1.3.0)
Requirement already satisfied: ipaddress in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (1.0.23)
Requirement already satisfied: duniterpy==0.54.3 in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (0.54.3)
Requirement already satisfied: Click in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (7.0)
Requirement already satisfied: texttable in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (1.6.2)
Requirement already satisfied: tabulate in /home/simon/.local/lib/python3.7/site-packages (from silkaj) (0.8.6)
Requirement already satisfied: cffi>=1.4.1 in /home/simon/.local/lib/python3.7/site-packages (from pynacl->silkaj) (1.13.2)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from pynacl->silkaj) (1.13.0)
Requirement already satisfied: attr>=0.3.1 in /usr/local/lib/python3.7/dist-packages (from duniterpy==0.54.3->silkaj) (0.3.1)
Requirement already satisfied: base58>=1.0.0 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (1.0.3)
Requirement already satisfied: pylibscrypt>=1.7.1 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (1.8.0)
Requirement already satisfied: pypeg2>=2.15.2 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (2.15.2)
Requirement already satisfied: pyaes>=1.6.1 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (1.6.1)
Requirement already satisfied: aiohttp>=3.3.2 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (3.6.2)
Requirement already satisfied: jsonschema>=2.6.0 in /usr/local/lib/python3.7/dist-packages (from duniterpy==0.54.3->silkaj) (3.2.0)
Requirement already satisfied: libnacl>=1.6.1 in /home/simon/.local/lib/python3.7/site-packages (from duniterpy==0.54.3->silkaj) (1.7)
Requirement already satisfied: pycparser in /home/simon/.local/lib/python3.7/site-packages (from cffi>=1.4.1->pynacl->silkaj) (2.19)
Collecting attrs>=17.3.0 (from aiohttp>=3.3.2->duniterpy==0.54.3->silkaj)
  Downloading https://files.pythonhosted.org/packages/a2/db/4313ab3be961f7a763066401fb77f7748373b6094076ae2bda2806988af6/attrs-19.3.0-py2.py3-none-any.whl
Requirement already satisfied: yarl<2.0,>=1.0 in /home/simon/.local/lib/python3.7/site-packages (from aiohttp>=3.3.2->duniterpy==0.54.3->silkaj) (1.4.2)
Requirement already satisfied: chardet<4.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.3.2->duniterpy==0.54.3->silkaj) (3.0.4)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /home/simon/.local/lib/python3.7/site-packages (from aiohttp>=3.3.2->duniterpy==0.54.3->silkaj) (3.0.1)
Requirement already satisfied: multidict<5.0,>=4.5 in /home/simon/.local/lib/python3.7/site-packages (from aiohttp>=3.3.2->duniterpy==0.54.3->silkaj) (4.7.3)
Requirement already satisfied: importlib-metadata; python_version < "3.8" in /usr/local/lib/python3.7/dist-packages (from jsonschema>=2.6.0->duniterpy==0.54.3->silkaj) (1.3.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /home/simon/.local/lib/python3.7/site-packages (from jsonschema>=2.6.0->duniterpy==0.54.3->silkaj) (0.15.6)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from jsonschema>=2.6.0->duniterpy==0.54.3->silkaj) (41.2.0)
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp>=3.3.2->duniterpy==0.54.3->silkaj) (2.6)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata; python_version < "3.8"->jsonschema>=2.6.0->duniterpy==0.54.3->silkaj) (0.6.0)
Requirement already satisfied: more-itertools in /usr/local/lib/python3.7/dist-packages (from zipp>=0.5->importlib-metadata; python_version < "3.8"->jsonschema>=2.6.0->duniterpy==0.54.3->silkaj) (8.0.2)
Installing collected packages: attrs
Successfully installed attrs-19.3.0

J’ai rajouté le chemin pour silkaj dans mon ~/.bashrc et j’ai maintenant la bonne version :

$ whereis silkaj
silkaj: /home/simon/.local/bin/silkaj

$ silkaj --version
silkaj, version 0.7.3
2 Likes

Je viens de retomber sur ce souci. La solution a été pour moi de désinstaller attr :

pip3 install silkaj --user
pip3 uninstall attr
2 Likes