Création d'un client pour iOS

Bonjour à toutes et tous. Je viens de commencer à créer un client pour iOS et je ne trouve pas de documentation sur la génération de transactions, la création de profils utilisateurs, l’obtention des certifications, des portefeuilles, l’utilisation de data.duniter.fr ou quoi que ce soit d’autre en fait… J’ai commencé en étudiant le code source de cesium, mais ce n’est pas très pratique. Alors quelqu’un pourrait peut-être m’orienter vers la doc développeur ? Ou peut-être G1 est-elle similaire à d’autres cryptomonnaies et dans ce cas je peux utiliser leur doc ?
Merci de votre aide !

PS: https://github.com/jfoucher/cesium-ios

1 J'aime

Bienvenu à toi !

Tu pourras trouver ma conférence à la RML13 sur comment gérer les transactions.
Si ça t’aide bien, un don est apprécié.

La documentation de l’API BMA et celle du protocole.

Pour l’API ElasticSearch (data) je ne trouve plus la documentation.


Si tu n’utilises pas le code de Césium, Il serait préférable que tu n’appelles pas du même nom ton application que celle de Césium.

Pourquoi ne travailles-tu pas sur l’intégration de Césium sur iOS ? Il me semble avoir vu quelque chose passer à ce sujet. Veux-tu une application native ?


Pourquoi iOS, vois-tu un avenir pour un client de monnaie libre sur cette plateforme ultra-fermée ?

1 J'aime

Bonjour Moul, merci pour l’accueil
La doc est exactement ce qu’il me fallait, merci !
Par contre il me semble que tes deux liens envoient vers le même document.
Pas de soucis pour l’api data, je me débrouillerai bien.

Je note pour le nom, je trouverai autre chose. En plus Cesium apparemment est un gros truc de GIS on ne trouve que ça quand on cherche sur Google :slight_smile:
J’ai un peu plongé dans le code de Cesium et c’est très gros et un peu obsolète (Angular 1) donc je préfère avoir quelque chose de plus léger même si toutes les fonctionnalités ne seront pas disponibles dans l’appli. De plus, je sais d’expérience que la performance et l’expérience utilisateur ne seront pas au rendez-vous avec une appli hybride. Et enfin j’ai envie d’apprendre Swift !

Pourquoi iOS, et bien tout simplement parce que j’ai un iPhone et que j’ai envie de pouvoir m’en servir pour envoyer et voir mes transactions. Personnellement je pense que la diffusion de la monnaie libre est justement plus importante et qu’il serait souhaitable que cela soit disponible sur toutes les plateformes.

Merci encore pour les liens vers les docs, et bonne fin de journée

2 J'aimes

Corrigé.

L’auteur de Césium a prévu de réécrire une version 2 de Césium avec Angular 8, si ça te tente de créer de “zéro” une application multi-plateforme.
Sinon, libre à toi de faire tes choix.

2 J'aimes

@jfoucher bonne initiative, surtout si tu as envie d’apprendre le Swift !

Oui, je vois mais ça ressemble un peu trop à ce que je fais au boulot :smiley:

Exact, je cherchais un projet à faire en Swift, mais bon là j’ai peut-être été un peu ambitieux !!

Pour ceux que cela intéressent, j’ai travaillé hier sur l’adaptation de Cesium sur iOS (une merge request est ouverte sur le Git de Cesium).

Vous pouvez installer et tester un premier build via ce lien TestFlight: https://testflight.apple.com/join/9mfTVNPW

A noter que les images des splashscreens ont été faites très rapidement et peuvent donc apparaître déformées sur certains appareils.

Pour le reste tout fonctionne comme sur l’app Android, scan de QRCode inclus.

2 J'aimes

Ah bonne nouvelle ça je vais tester de suite !
Sinon j’ai pas mal avancé sur mon appli native (affichage des profils, des transactions, etc…)
Mais j’ai un problème pour créer et envoyer une transaction. Je fais un post sur {node}/tx/process avec le json suivant par exemple:

{"transaction":"Version: 10\nType: Transaction\nCurrency: g1\nBlockstamp: 225707-000001A536FAAA3FAB8F7AA12BE00520F8F0740C49F11E6FEB94F0F8D344454D\nLocktime: 0\nIssuers:\nEEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq\nInputs:\n490:0:T:FC4F40EA49C82CC337407AA6FF4E2BB53D86FB990C48F7F9373C54FB3291B119:1\nUnlocks: \n0:SIG(0)\nOutputs:\n1:1:SIG(CkuPX2gLqdb3aEmdY3oFQXa5nzEJ4JsGP1Gw9FPQyyX9)\n48:1:SIG(EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq)\nComment: Comment\niMHup7T6eISehvZhFHXQXSECCwN9xhXUHNikgcFpex63Odfmf4RGFMM+h3iUuQPnlgshLMv1ePqfN1iC2XK5Cw==\n"}

Mais la seule réponse que j’ai du serveur est la suivante :

["ucode": 1002, "message": Cannot read property 'length' of undefined]

Alors peut-être que ma transaction est malformée, ou que la signature n’est pas bonne, mais ce message d’erreur me semble vraiment bizarre…

Si vous avez le coup d’oeil pour voir ce qui cloche dans ma transaction Merci !!!

Pas mal l’appli, c’est exactement comme le site en fait.

J’en profite pour te remonter un bug qui est aussi présent sur l’appli web.
Quand on scroll l’arrière-plan reste en place
32

Tu as des outputs en base 1, la Ğ1 n’accepte pas encore la base 1.
Exprime tes sorties (outputs) en base 0.

Autrement, je pense que le format doit être au format le plus brut possible (raw), tu as des accolades de json autour.

Avec ce super outil j’ai modifié ton document pour obtenir le suivant.
Juste la signature qui n’est pas bonne :

Version: 10
Type: Transaction
Currency: g1
Blockstamp: 225707-000001A536FAAA3FAB8F7AA12BE00520F8F0740C49F11E6FEB94F0F8D344454D
Locktime: 0
Issuers:
EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq
Inputs:
490:0:T:FC4F40EA49C82CC337407AA6FF4E2BB53D86FB990C48F7F9373C54FB3291B119:1
Unlocks:
0:SIG(0)
Outputs:
1:1:SIG(CkuPX2gLqdb3aEmdY3oFQXa5nzEJ4JsGP1Gw9FPQyyX9)
48:1:SIG(EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq)
Comment: Comment
iMHup7T6eISehvZhFHXQXSECCwN9xhXUHNikgcFpex63Odfmf4RGFMM+h3iUuQPnlgshLMv1ePqfN1iC2XK5Cw==
1 J'aime

Super, merci pour le tuyau sur l’outil !
tu m’as mis sur la piste, en fait il y avait un espace avant le retour à la ligne après les Outputs…
Bon maintenant j’ai “Wrong unit base for outputs” mais ça correspond plus à ce que tu as dit, et au moins il ya du progrès.
Mais en gros les bases on s’en fout on les met tout le temps à 0 ou quoi ?

Pour l’instant on gère la base zéro uniquement.
Mais, à terme il faut savoir gérer les autres bases.
La June-test est déjà en base 1.
Dans ma conférence j’explique ça.
C’est pour gérer la rotation des nombres, sinon ça devient trop grand en base de données du fait de la création monétaire.

Oui oui bien sûr, en swift c’est pas compliqué à gérer il y a des types faits pour ça. C’est le nombre de zero à droite en fait si je suis clair dans mes maths :stuck_out_tongue:

C’est bizarre de pas laisser mettre n’importe quel base, je suis curieux de savoir quels endroits ça affecte dans le code…
Bon en tous cas en base 0 ça passe un grand merci !

La transaction est quelque part la dedans : https://g1.nordstrom.duniter.org/tx/history/EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq

Ce sont les nœuds et la blockchain qui font foit sur la base courante des sources.
Il est possible de transformer des sources d’une base inférieure vers la base courante.
Par contre, il n’est pas possible d’utiliser une base supérieure à la base courante.

1 J'aime

Au passage, on a une monnaie de test.
C’est plus pratique pour faire des tests sur l’envoi de documents.

1 J'aime

Bon c’est toujours pas très clair pour moi, mais en effet j’ai vu pas mal de code dans césium qui correspond à ce que tu dis. Je sais ou aller voir sur mon appli le jour ou ça se mettre à plus marcher en tous cas !
Et pour la monnaie de test tu as raison ça peut être pas mal

Bien joué @bpresles ! :slight_smile:
J’ai accepté la merge request à l’instant : impecable, merci !

Pour le livrable ios, à l’avenir, pourras t on voir ensemble ?

J’ai commencé un VagrantFile pour faire un build automatiquement depuis une VM OSx (car je n’ai pas de machine OSx opérationnelle… seule une trop vielle).

Pourras tu le tester ? et l’améliorer ? :slight_smile: le script à executer sur la VM est build-ios.sh (une doc est ici, à mettre à jour si besoin)

Il y a également un build-osx.sh pour créer l’application de bureau pour OSx.

Merci de ton aide !

1 J'aime

@jfoucher Je connais ce bug, mais difficile de corriger sans avoir d’IOS sous la main.
As tu soumis un bug sur le gitlab ?

@bpresles une idée ?

Le bug est aussi présent par exemple sur firefox en mode responsive. C’est de là que vient la capture d’écran d’ailleurs.

2 J'aimes