Création de compte membre avec Silkaj et API python

J’avais pas encore lu ça… je vais m’y mettre :wink:

OK,

Mon serveur Duniter était mal configuré… Il me manquait

duniter wizard network
duniter webrestart

Je crois maintenant que l’interface BMA est active?!
Désormais, je peux créer des portefeuilles

./silkaj generate_auth_file --auth-scrypt -p g1-test.madeinzion.org:10900

Mais le Salt et le mot de passe sont demandées en mode interactif. J’ai essayé de les passer en paramètre “–salt monportefeuille --password monmotdepasse” (compatible avec les commandes Duniter) sans succès… [EDIT] Ajouté dans mon fork: GitHub - zicmama/silkaj: Command line client for Duniter

Quelqu’un pourrait m’expliquer la différence entre auth-file / auth-seed / auth-wif?

En tout cas, j’ai crée 2 portefeuilles sur G1-test
4qR1sQP5iC7FavnktE8BZytZqqxv5srwBBGQbVJxnY7y
5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR

./silkaj transaction --auth-file -file=authfile.1 --amount=1 --output=4qR1sQP5iC7FavnktE8BZytZqqxv5srwBBGQbVJxnY7y --comment=“TEST 1” -p g1-test.madeinzion.org:10900
╒═══════════════╤══════════════════════════════════════════════╕
│ amount (g1-test) │ 1.0 │
├───────────────┼──────────────────────────────────────────────┤
│ amount (UD g1-test) │ 0.04364906154517678 │
├──------------───────┼──────────────────────────────────────────────┤
│ from │ 5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR │
├───────────────┼──────────────────────────────────────────────┤
│ to │ 4qR1sQP5iC7FavnktE8BZytZqqxv5srwBBGQbVJxnY7y │
|──-─────────────┼──────────────────────────────────────────────┤
│ comment │ TEST 1 │
╘═══════════════╧══════════════════════════════════════════════╛
Do you confirm sending this transaction? [yes/no]: yes
the account: 5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR don’t have enough money for this transaction

Serait-il possible de m’envoyer un peu de monnaie (ou de certifier un des comptes) que je puisse faire des transferts?

Merci

On ne certifie pas des comptes, mais des identités. Aucun de tes portefeuilles simples n’est lié à une identité.

Il te faut créer une document identité lié à un portefeuille, et le publier sur le réseau.

Je ne sais pas comment faire avec Silkaj, par contre, c’est possible avec l’api python, en modifiant ce script d’exemple :

https://github.com/duniter/duniter-python-api/blob/master/examples/create_and_publish_identity.py

Sinon tu install Cesium Desktop sur ta machine, tu le configures pour g1-test, puis tu crées un compte “membre”. Cesium va alors créer un nouveau portefeuille lié avec ton UID de membre. Et nous pourrons certifier ton identité.

Hope it helps.

2 Likes

Je t’ai envoyé 100 GT pour que tu puisses t’amuser avec. :slight_smile:

1 Like

Lequel veux-tu que nous certifions? N’oublies pas la demande d’adhésion :slight_smile:

@vit, j’ai trouvé un problème dans le code de l’exemple qui passait mal les paramètres de ScryptParams. Et je me retrouve à faire du python et demander des pull sur github :wink:

python3.5 ./send_membership.py
Creating a client session outside of coroutine
client_session: <aiohttp.client.ClientSession object at 0x7f01fb10c860>
Enter your passphrase (salt):
Enter your password:
Enter your UID: LibreBankSMS
{
“signature”: “ySf38T1djc1S6XRIEjYN25+Z+/5GHqMClrmu/xkpU1/0/929T/uJ9g7fJIbO4dquNdGYlEY5tK+yqUKa4P5rCw==”,
“membership”: {
“version”: “10”,
“currency”: “g1-test”,
“issuer”: “9LxrNDRo5ueHEBBYreexFYJHtPrsKx5tvWutGrcVmXC3”,
“membership”: “IN”,
“date”: 0,
“sigDate”: 0,
“raw”: “Version: 10\nType: Membership\nCurrency: g1-test\nIssuer: 9LxrNDRo5ueHEBBYreexFYJHtPrsKx5tvWutGrcVmXC3\nBlock: 133520-0000C03C9AF0728224E3F6CE9AAD75BF3002B9702237CD2B127261B4C191FB38\nMembership: IN\nUserID: LibreBankSMS\nCertTS: 133520-0000C03C9AF0728224E3F6CE9AAD75BF3002B9702237CD2B127261B4C191FB38\n”
}
}

python3.5 ./create_and_publish_identity.py
Creating a client session outside of coroutine
client_session: <aiohttp.client.ClientSession object at 0x7f72c64e4748>
Enter your passphrase (salt):
Enter your password:
{
“pubkey”: “5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR”,
“uids”: ,
“signed”:
}

@mamygeek Est-ce que ça a fait la demande d’adhésion de “LibreBankSMS” sur g1-test?
UID = LibreBankSMS
“pubkey”: “5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR”

1 Like

Non, la demande d’adhésion n’a pas été faite…

J’ai bien un entregistrement wot (plusieurs même)
http://g1-test.madeinzion.org:10900/wot/lookup/LibreBankSMS
Il me manque les 5 certifications pour apparaître comme membre.
http://g1-test.madeinzion.org:10900/wot/members

S’il te plaît @Frederic_Renault, peux-tu arrêter de faire des pull-requests sur le dépôt github qui seront refusés ? Est-ce toi zicmama ?

Si tu as un problème avec les exemples de l’api, ouvre une issue avec un maximum d’informations sur ta plateforme, comment tu as installé le package python, les versions, etc… Puis attends nos commentaires.

J’ai fait plusieurs commentaires sur les pull-requests en cascade de “zicmama”, cela ne l’empêche pas de continuer à envoyer des pull-requests inutiles.

@Moul et moi-même ne reproduisons pas ton bug, donc le problème vient de ta config/install, pas du code.

En te remerciant par avance.

Oui c’est moi, désolé… Je ne suis pas vraiment développeur python mais comme j’ai pu éviter l’erreur en modifiant le code comme indiqué, alors je me suis dit que c’était ça. Je ne recommence plus, promis :slight_smile:

Maintenant, est-ce que ma demande d’adhésion est faites sur G1-test?
Question subsidiaire: pour qu’un serveur participe au calcul de la PoW, il faut également qu’il devienne membre? Es-ce la même procédure que pour un utilisateur ou l’API est différente?

Pourquoi n’utilises-tu pas des outils avec interface graphique (Sakia, Cesium Desktop).
Ce serait nettement plus facile pour faire les opérations de base sur g1-test.

Et ça t’éviterait de faire du python :wink:

Pour ton serveur, tu dois fournir tes credentials pour que ta clef publique membre signe les blocs.

bin/duniter wizard key

te permet de le faire. Il faut donner les credentials de la clef publique auquel tu as lié ton identité.

Le problème est que tu as lié ton identité à 3 portefeuilles (trois clef publiques)
http://g1-test.madeinzion.org:10900/wot/lookup/LibreBankSMS

BfsvXfcyxRvzmXG1GGD375rVcqUuLHxagEWNmp4GXBL3
5UEgCzTcM2vEXbsXYoaXbbP17s47kYRUbbHKozEUoDdR
7ifNMZZAyvXRqzY18zgmRt17YCFfmjRDa1u8H4dgzrFv

Puis tu fais une demande d’adhésion sur une quatrième clef publique !
9LxrNDRo5ueHEBBYreexFYJHtPrsKx5tvWutGrcVmXC3

qui elle n’a pas d’identité…

Pour nettoyer tout ça, et que l’on puisse te certifier correctement, il faut que tu révoques 2 identités et n’en garde qu’une.
Puis que tu fasses la demande d’adhésion sur cette identité.

Ensuite seulement nous pourrons savoir le couple UID/clef publique à certifier.

Je cherche à tout faire en mode CLI pour y interfacer un scénario SMS et/ou Vocal

Le problème est que tu as lié ton identité à 3 portefeuilles (trois clef publiques)
http://g1-test.madeinzion.org:10900/wot/lookup/LibreBankSMS

C’est pas exprès :wink: c’est quand j’ai utilisé les codes d’exemple que ça a eu lieu, sûrement en tapant des Salt/Password un peu vite… On peut bien pourrir la blockchain comme ça dis donc (heureusement que je fais ça sur g1-test). Bizarre que Duniter n’envoi pas bouler des requêtes aussi strange?

Pour nettoyer tout ça, et que l’on puisse te certifier correctement, il faut que tu révoques 2 identités et n’en garde qu’une.

Es-ce que je peux utiliser l’exemple “save_revoke_document.py” pour ça? Ou autre chose.

Concernant la validation de mon noeud, il s’agit de lui donner une clefs “membre” du même type que la précédente ou membre de type machine (toujours validée par 5 autres)?

PS: J’ai surement un problème sur mon environnement python, car je ne peux pas lancer sakia non plus (https://github.com/duniter/sakia/issues/778)

Non, il semble qu’il y ait un vrai bug à l’initialisation de sakia. Faut que je regarde, pour le moment j’ai pas eu le temps…

Si quelqu’un veut analyser le bug (qui a l’air assez simple) hésitez surtout pas ! :slight_smile:

Elles ne sont pas en blockchain, uniquement dans la piscine des nœuds.

On peut bien pourrir la piscine alors :wink:
Quel outil (CLI si possible) utiliser pour nettoyer tout ça?

Ah ok, bon ben cool ! Ca va nous aider à améliorer les outils en ligne de commande ! :smiley:

Par contre, il n’existe que la librairie python et l’utilitaire Silkaj (python aussi) pour l’instant.
Les deux utilisent l’api BMA.

Si tu connais un autre langage de script, tu peux l’utiliser pour faire ta propre librairie BMA :

Documentation API BMA : duniter/doc/HTTP_API.md at master · duniter/duniter · GitHub
Documentation format des documents du Protocol V10 : duniter/doc/Protocol.md at master · duniter/duniter · GitHub

Comme les identités sont en piscine, elles vont mourir d’elle même je crois si personne ne les certifie.
Par contre, pour ton compte membre qui dois être unique dans g1-test, tu dois enregistrer le fichier de révocation. Utile en cas de vol de tes identitfiants pour annuler la création de monnaie sur celui-ci.

Tu ne dois avoir qu’un seul compte membre, donc si tu fais tourner un ou plusieurs nœuds, tu utilises ce même compte membre pour le faire.

J’ai compris pourquoi tu as le bug des scrypt_params et pas nous. :tada:
Nous utilisons la branche master dans notre IDE (code + examples).

Toi tu as installé la dernière release 42.2 via pip, or elle a bien le bug qui te bloque !
Ce bug ne bloque pas Sakia qui ce sert de l’api, mais bloque les exemples.

Je vais nettoyer un peu la branche master et on fera une nouvelle release.

Tu vois, tu nous aides déjà à améliorer les outils ! :grin:

4 Likes

Je fais la mise à jour avec pip.
pip install -U duniterpy

Mais ça fini mal ;(

Collecting duniterpy
Using cached duniterpy-0.42.3.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File “”, line 1, in
File “/tmp/pip-build-0CyFJF/duniterpy/setup.py”, line 2, in
import duniterpy
File “duniterpy/init.py”, line 24, in
from . import api, documents, key
File “duniterpy/documents/init.py”, line 1, in
from .block import Block, BlockUID, block_uid
File “duniterpy/documents/block.py”, line 160
fields_parsers = {**Document.fields_parsers, **{
^
SyntaxError: invalid syntax

----------------------------------------

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-0CyFJF/duniterpy/

Je me demande vraiment si je n’ai pas un peu casé mon installation de python entre les installations apt-get / pip / sudo pip / git clone ??

Comment vérifier les PATH, versions et tout ça?

Je te conseille d’utiliser Pyenv pour installer et choisir la version de python dont tu as besoin.

Puis, toujours avec Pyenv, de créer un environnement de dev virtuel, ou pip installera les dépendances.

Ainsi tu ne pourris pas ta machine, les pythons et les libs pip sont dans des dossiers spéciaux de pyenv.

De plus, une fois installé duniterpy dans ton environnement, bien mettre à jour ton dépôt git avec un fetch pour avoir les exemples à jour.

Pour les scripts python, l’interpréteur va les chercher dans PYTHONPATH :

http://apprendre-python.com/page-python-path-pythonpath

Bon courage !

Si tu as un langage de script de prédilection que tu maîtrises ce serait peut-être plus simple pour toi de dev une lib dans ce langage.

Actuellement on a des clients en javascript/python/java et bientôt Rust !

3 Likes

Je suis un mauvais développeur.
Après je sais utiliser des API, automatiser des truc avec bash et bricoler du code en php, js et python maintenant… Mais coder une lib de 0, pas du tout, il me faut un exemple pour partir dessus…