Qui a mis Cesium sur une site IPFS ? :)

Je me met à découvrir tout le potentiel d’IPFS…
Je l’expérimente sur https://www.CopyLaRadio.com

Puis surement pour relier les noeuds g1sms.fr qui pourront y gérer leurs wallets et transactions ainsi répartir et alléger la charge sur duniter :wink:

Ce qui serait génial ce serait de mettre la base elastic search Cesium+ dans IPFS
@kimamila vu que Cesium s’héberge sur IPFS, ça pourrait fournir une architecture unique à l’ensemble et une version en production maîtrisée aux travers de portails IPFS loadbalancé par exemple.

@kimamila voila où je voudrai ranger Cesium+ https://docs.textile.io/concepts/contacts/
Peut-être avec un script de copie qui synchronise les 2 espaces au départ?

Je pense qu’on peut mettre que des fichiers statiques dans IPFS, car ils sont incrémentés par une vérification de hash. Du coup, avoir une base de données qui évolue rapidement, ça me semble compliqué.

2 Likes

Il existe une surcouche qui fait office de liens dynamiquement mis à jour (IPNS) qui par des publish permet de mettre à jour la référence à la dernière version d’une structure de donnée.

IPFS, c’est la réunion de git, emule, torrent avec un stockage des données par hash. So Unhosted.

1 Like

Les DApp s’y développent, s’y installent et y meurent si elles ne sont plus pinée par une gateway

Oula… comme l’explique @moul, un système de fichier de remplace pas une base de données, et encore moins une API de requetage.

Il faut bien se rappeler qu’IPFS ne gère pas les mises à jour.
Eventuellement, y mettre un backup pourquoi pas, mais tu n’auras pas l’accès en mode requete (par clé, recherche full text, etc.)

1 Like

Le nom DApp porte a confusion.
C’est juste l’hébergement du logiciel qui est décentralisée, et éventuellement les fichiers que les utilisateurs peuvent y envoyer, mais il n’y a aucune application avec des comptes utilisateurs, des droits d’accès, etc.
Si tu fais tout en fichier avec IPFS (par exemple, les profiles, les annonces de gchange, etc.), alors il n’y a aucun modération possible, aucun anti-spam, etc.
C’est le meilleur moyen de plomber les noeuds IPFS avec tout un tas de donnée de spam… AMHA
A moins que des fonctions de modérations soient possibles.

Bref, @Frederic_Renault a mon avis ne t’emballe pas trop, les BDD ne sont pas prête de mourir.
Par ailleurs les noeuds Cs+ sont déjà P2P, mais avec des fonctions anti-spam, une vérification des signateures (et hash) de chaque document, et une API de requetage bien plus rapide que les accès IPFS. :slight_smile:

3 Likes

Je pense que c’est LaPingvino (mastodon) (twitter) qui l’a fait. Il en a parlé sur le chat. :slight_smile:

2 Likes

Effectivement, je pensais aussi que IPFS se limitait à du stockage de fichier et l’hébergement de sites statiques. Sa couche IPNS apporte le moyen de publier un ensemble de données mis à jour sur IPFS, mais est lent et ne permet pas l’usage temps réel. Mais c’est sans compter sa couche libp2p qui permet une communication inter nœud instantanée. La couche Textile.io apporte une interface unifiée à toutes ces couches…
Concernant les DApp, effectivement elles dépendent souvent d’une connexion websocket dans le Web2.0, mais plus si on instancie un noeud IPFS dans le navigateur. Go sur les serveurs, JS sur les clients, tout devient décentralisé.
Concernant le Spam, c’est celui qui spam qui se pollue, on ne mettra pas de pin à sa data.

Je continue mon exploration…

Concrètement, comme fais tu pour :

  • faire une recherche full text sur les profiles (usage dans Cs: recherche dans l’annuaire)
  • avoir un count() sur une ensemble de données ? (usage dans Cs: tous les graphs)
  • faire tourner le tout sur une téléphone ? Faut il un noeud IPFS sur le téléphone ?
1 Like

carson [5:40 PM]
Textile supports search for a very specific set of things (contacts and metadata), but full text search and more complex contextual search is pretty far off from what I’m aware of.

oui. Si on veut profiter de la décentralisation totale. Mais on peut utiliser IPFS derrière une API http (sans profiter de la couche instantanée internoeud).

Pour le moment, je teste la partie serveur (go) contrôlée en ligne de commande… Apparemment la couche de textile js est encore en développement, mais ils sont bien motivés pour m’aider à faire une interface pour les jukebox lecteurs enregistreurs de webradio que je met en libre: https://www.copylaradio.com/

Ce que je bricole là sera parfait pour arriver à créer des wallets et partager leur gestion par un essaim de serveurs G1sms/G1billet :wink:

J’avoue que pour ce qui est de la partie client, je suis moins au point…

1 Like

voila @SimonLefort je suis ici aussi. je l’ai fait d’abord par le façon le plus simple imaginable… mais enfin si un app est Unhosted, ça marche en ipfs sans rien changer. juste ipfs add -r avec ou se trouve Cesium tout compilé, et voila, ça marche déjà :smiley:

3 Likes

Hop!! Hop!
Voilà publié la même version du code de Cesium que https://cesium.madeinzion.org dans mon swarm privé IPFS.

https://ipfs.copylaradio.com/ipfs/QmYTg4cQ9rGZjkoSVbcctNqhBRTMSt8W9jM7HFb1oCMGGi/#/app/home

Il va rester « pinné » plus longtemps que sur la gateway ipfs.io
Par contre, je ne comprends pas pourquoi il n’arrive pas à se connecter à g1.madeinzion.org ??

Tu peux filer le lien ifps pour qu’on le teste ? Il est utilisable tel quel dans les paramètres de cesium ?

Voilà son ID QmYTg4cQ9rGZjkoSVbcctNqhBRTMSt8W9jM7HFb1oCMGGi
Mais actuellement, il est installé dans l’essaim privé que j’ai sous la main… donc seulement accessible depuis ma passerelle https://ipfs.copylaradio.com/ipfs/

Ce cas de figure garanti une meilleure performance, permet de valider le code (HASH), assure le backup (load-balancing). Faudra que je l’installe dans l’IPFS Globlal pour voir comment ça fonctionne, mais il faut ajouter une autre gateway à ajouter à celles de ipfs.io ou cloudflare-ipfs.com

Tu me dis s’il y a moyen de te rejoindre, je tente :wink:

J’aime bien les voies de traverse.

Ca va apparaitre… bientôt… Au travers des petites box qui enregistrent copylaradio.com
Musique, Films et Monnaie Libre sans plus aucun intermédiaire entre le spectateur et l’'artiste.

Pas seulement, des données structurées aussi, les fichiers sont qu’un “exemple” de données structurées.

Mais c’est vrai,

mais, non,

car il y’a IPNS, naming service, qui permet en gros d’accéder à un hash d’un noeud qui lui alias vers un hash de fichier ou dossier (t’accede tjs au meme hash, alors que le contenu incrémente de version).

Il suffirait alors soit de maintenir une liste de noeud de confiance seulement, ou bien faire un compagnon IPFS à côté de DUniter (opt-in) qui déclarerait cette capacité dans sa fiche de pair.
Alors le champs des possibles s’ouvrirait à

  • la synchro de la blockchain par IPFS (gestion type torrent, reel p2p, load-balancing
  • chaque noeud peux être une gateway IPFS (voir même en autarcie)
  • attachement de n’importe quoi dans une transaction par son hash (acte de propriété, média, elements d’identité)
  • comme dis, hébergement des données Cesium+, y compris privées, qui peuvent être gérées par clés et confiance à tel ou tel noeud (à voir, IPNS peux en fait linker plusieurs hashs de noeud à des références différentes, à l’aide de plusieurs pairs de clés de noeud)

“C’est juste l’hébergement” oui, mais décentralisé, voir morcelé / responsabilité-partagée, et crypté (par défaut) avec garantie d’inaltérabilité des statics client sans pb de piratage par DNS. Hébergement pouvant être de la données structurée (pas que des fichiers, voir IPLD).

Si si, le nom DApp va bien, mais comme dans Ethereum, IPFS ne fourni que des fichiers/données statiques (ou versionnées) et c’est la blockchain et les smart-contract qui font le métier/validation/modération, toute la logique que tu veux.

La DApp Cesium içi, serait un lot de fichier statiques qui font l’application, dans laquelle du JS fait des appels à l’API DUniter GraphQL par exemple, ou même à un autre noeud sur une API d’annonces (gchange) et/ou une API pour ci, une API pour là.

Dans IPFS aprés, lorsque tu structure ton arbre de données, tu peut très bien te créer des données “index” qui ne sont que des liens vers d’autres données (qui n’est donc pas dupliquée) mais partage une liste sous un certain ordre/filtre. C’est ensuite ton hash de noeud qui est mis a jour régulièrement (ajout/modif/suppr) avec les nouveaux indexs. L’app client n’a plus qu’a demander à tel ou tel noeud par son hash d’avoir l’index “ordre alpha des pseudo” ou encore “rangé par clé pub” ou encore “la liste des message adressé à clépub” ou encore “les annonces commençant par A”.

Par un réseau de confiance des noeud compatibles, du genre ActivityPub, les noeuds IPFS peuvent se parler (et même parler à un client) via des events pubsub (ils ont fait un orbit.chat en exemple…)


… plus j’avance dans la lecture des messages, plus je vois que @Frederic_Renault à déjà répondu :sweat_smile:


Enorme ce qu’ils ont fait! Je connaissait pas ce framework…

1 Like

Je viens de me rendre compte qu’il suffit d’écrire le hash du répertoire dans un fichier du répertoire pour chainer les data dans leur historique.

IWALLETS=$(su $YOU -c "ipfs add -rq './wallets' | tail -n 1")
echo $IWALLETS > './wallets/hashchain'
NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")

Cette fonction appelée à chaque publication IPFS mémorise l’état précédent. Et chaque node publie l’état actuel à tous les nodes du swarm avec son propre ID. On récupère l’état de chacun en parcourant la liste du swarm.

for NODEWALLETS in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
do
    count=$((count+1))
    su $YOU -c "ipfs get --output=./wallets_$NODEWALLETS/ /ipns/$NODEWALLETS"
done

On ouvre la chaine avec:

MAILLON=$(ipfs cat /ipfs/$(ipfs cat /ipns/$NODEWALLETS/hashchain)/hashchain)

puis on remonte la chaine…

MAILLON=$(ipfs cat /ipfs/$MAILLON/hashchain)

Du coup si les noeuds IPFS du swarm sont cohérents (partagent les bonnes clefs de chiffrage), ils se fabriquent et partagent un répertoire de leur filesystem comme une base de donnée! G1sms+ est bâti la dessus

2 Likes

Cesium1.3.11 dans IPFS est toujours en ligne !!!

Le hash de son code est gravé dans le marbre: QmdMEfCqihSKm2HTbGf4fMVnfttYoaq4rPgY9GxDmthuoN

Pour qu’il disparaisse, il faut que tous en retire le « pin » et lance leur « garbage collector »

@kimamila, tu pourrai officialiser la version que tu certifies en PROD en la publiant dans IPFS et publiant son HASH. En exploitant qq noeuds ipfs sur le réseau public, on peut maintenir une clef IPNS… Actuellement, mon réseau ipfs est en essaim privé. Mais je crois que @pytlin (d’autres?) ont des instances publiques en ligne??

2 Likes