Création de compte membre avec Silkaj et API python

Cool :wink:

Je viens d’installer silkaj 0.4.0 et duniter-server-v1.6.14
Lancé Duniter par “duniter webstart”

Lancé un tunnel ssh pour me connecter à distance à l’interface sur localhost.
autossh -f -N fred@g1-test.madeinzion.org -L9220:localhost:9220

Démarré ma synchro avec g1-test.duniter.org:443
Voila la pubkey de mon node 6d6ygKDSdxeTXYwSy4DgWwpB9Vi9nWMYXwiB8JzdYGf6

J’ai installé un serveur nginx, VOILA!
Maintenant, il faut que je crée un ou plusieurs portefeuille sur G1-Test avec de la monnaie libre dedans et que je fasse des tests de payements entre eux.

Comment ouvrir un premier portefeuille (un cesium à qui je change le noeud)?
Y-a-t’il des portefeuilles déjà fait avec qui faire des transactions?
Y-a-t-il une documentation qq part qu’il faudrait que je lise?

Merci
Bon week end :wink:

Houla alors les portefeuilles n’ont aucun rapport avec cesium ni avec un noeud !
Un portefeuille c’est juste un couple de clés asymétrique, tu peut en générer autant que tu veut a la volée :wink:

Le mieux pour tes tests je pense, c’est que tu créer un compte membre sur g1-test et qu’on te certifient comme ça tu créera de la monnaie pour tes tests :wink:

Pour envoyer des transactions oui, il te faut lire la doc de l’API BMA :

L’envoi d’une transaction ce fait avec l’url /tx/process
mais d’abord il te faut créer toi même le document transaction en allant chercher les sources du compte émétteur et en en sélectionnant suffisamment pour atteindre ou dépasser le montant demandé (ce qui dépasse est alors à renvoyer a l’émetteur), pour ça tu doit récupérer toutes les sources disponibles de l’émetteur avec l’url tx/sources/[pubkey]

Avec silkaj, pas besoin de connaitre tout ça ceci dit. Il faut alors se référer à la doc de silkaj :slight_smile:

@elois, j’ai pas pu rejoindre le XMPP que tu m’as indiqué.
node.js et json c’est pas mon fort (encore).

J’arriverai mieux à discuter avec silkaj de crois
@Inso, justement y’a-t’il une doc utilisateur pour Silkaj?

Je n’ai trouvé que “–help” et ./silkaj transaction --auth-scrypt --amount=X --output=GfKERHnJTYzKhKUma5h1uWhetbA8yHKymhVH2raf2aCP --comment=“Thanks for Silkaj” (qui lance une transaction)

A. Comment le faire interagir avec G1-Test plutôt que G1?

 1. silkaj network -p localhost:10901
  renvoi "Wrong node gived as argument"

 2. Comment configurer un seveur pour participer au POW?

B. Comment je génère un portefeuille ( couple de clés asymétriques )
./silkaj generate_auth_file --auth-scrypt ?
Que signifient les différents “auth-types” ?

C. Comment faire une demande pour devenir membre co-créateur sur G1-test?

Un petit résumé des différentes actions à réaliser seraient les bienvenues,
je voudrais pas pourrir la blockchain avec mes lignes de commandes…

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: https://github.com/zicmama/silkaj

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 « J'aime »

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

1 « J'aime »

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 « J'aime »

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 : https://github.com/duniter/duniter/blob/master/doc/HTTP_API.md
Documentation format des documents du Protocol V10 : https://github.com/duniter/duniter/blob/master/doc/Protocol.md

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.