11
votes

Je veux construire un système décentralisé et ressemblant à des reddit à l'aide de P2P. Quelle bibliothèque P2P existante devrais-je le baser?

Je veux construire un système décentralisé et ressemblant à des reddit à l'aide de P2P. Fondamentalement, je tiens à conserver les capacités de base de Reddit, mais faites-la décentraliser, de la rendre plus robuste et à l'abri de la censure. Cela permettra également aux gens de développer différents clients pour correspondre à la manière dont ils veulent le parcourir.

Pourriez-vous recommander de bonnes bibliothèques P2P pour baser mon travail? Ils doivent être open-source, plate-forme inter-plate-forme, robuste et facile à utiliser. Je ne me soucie pas beaucoup de la langue, je peux m'adapter.


13 commentaires

Vous devriez vérifier les tables de hachage distribuées, plusieurs implémentations de qualité de production. Peut-être que vous n'aurez pas besoin de beaucoup plus ... aussi: j'aime beaucoup votre idée;)


Merci! J'aime aussi l'idée, mais cela ressemble à une tâche très difficile ... Si vous êtes intéressé à m'aider, vous pouvez vous abonner à reddit / r / décentralisé. Je vais essayer de recruter plus de personnes lorsque l'idée devient plus claire.


Je vous avertit que les solutions historiquement distribuées ont gagné très peu de traction et que le marché est saturé de clones RedDit. Donc, vous devrez essayer de l'essayer de le promouvoir et de vous inscrire suffisamment d'utilisateurs initiaux pour maintenir l'élan. Bonne chance!


Je devrais ajouter que vos utilisateurs n'utiliseront probablement aucun type de script romain, alors ce que vous faites, assurez-vous que Unicode fonctionne correctement. Peut-être également fournir une fonctionnalité pour les personnes à filtrer ce qu'elles voient et recherchent par le personnage d'utilisation?


Pourquoi pensez-vous que la solution décentralisée n'a pas eu de traction? Y a-t-il quelque chose d'intrinsèquement mal à leur sujet, ou sont-ils simplement plus difficiles à construire que des solutions centralisées?


J'ai trouvé cette question à rechercher la même idée. Le plus gros problème auxquels vous ferez face est que les gens essaient de giber le système. Étant centralisé, Reddit peut facilement s'assurer qu'un utilisateur reçoit un vote par commentaire et par courrier et que les modérateurs contrôlent des sous-évaluations. Une version décentralisée, par définition, n'aurait personne avec l'autorité. Cela ne dit pas que c'est impossible, mais c'est un problème supplémentaire que vous devrez examiner.


@Cerin: Je suis d'accord! C'est pourquoi je souhaite baser mon système de sélection de liaison sur des recommandations personnalisées plutôt que sur la démocratie. Le système sélectionnera des liens basés sur l'apprentissage de ce que l'utilisateur aime et quels utilisateurs qu'il fait confiance, et non sur le nombre de voix compte.


Je travaille précisément sur cette partie du système pour le moment, le développant comme une couche sur RedDit, avec l'idée de remplacer RedDit par un système P2P lorsque la couche supérieure est prête.


@STICTATIC_RTTI, idée intéressante. Concentrez-vous sur les algorithmes d'apprentissage en ligne. Vowpal Wabbit pourrait être un bon endroit pour commencer.


Une solution possible pour limiter le spam du vote est de le rendre coûteux de manière informatique à voter. S'il faut 1 seconde pour faire un vote au lieu de 1 milliseconde, il s'agit de 1000 fois moins de spam à craindre;)


@Martin: Ce n'est pas une mauvaise idée. Comment voudriez-vous le mettre en œuvre?


Hashcash EN.Wikipedia.org/wiki/HashCash est un tel système d'email, je ' D Mise en œuvre exactement comme ça.


C'est une bonne lecture sur des réseaux sociaux décentralisés 8ballen. com / ...


3 Réponses :


6
votes

Disclaimer: Avertissement, auto-promotion ici !!!

Avez-vous apprécié le dernier ? C'est probablement suffisant pour ce que vous voulez faire. D'autre, nous travaillons sur un nouveau cadre P2P appelé Chaupal , mais ce n'est pas encore opérationnel.

Modifier

Il y a aussi ce que j'appelle la solution UDP rapide et sale (qui n'est pas si sale après tout, je devrais l'appeler minimal).

  1. Il suffit d'implémenter un serveur avec une adresse publique et commencez à écouter pour UPD.
  2. Les pairs situés derrière les NAT contactent le serveur qui peut lire comment leur adresse IP privée a été traduite en une adresse IP publique à partir des datagrammes reçus.
  3. Vous renvoyez ces informations à la pairs qui peuvent le transmettre à d'autres pairs. Le serveur peut également aider à échanger ces informations entre ses pairs.
  4. Alors que les pairs peuvent communiquer directement (un à un) en envoyant des datagrammes à ces adresses traduites.

    simple, facile à installer, mais ne couvre pas les datagrammes perdus, les replays, l'extérieur, etc. (c'est-à-dire que les trucs typiques de TCP résolvent pour vous au niveau de la pile IP).


5 commentaires

Merci pour votre réponse! Je ne le marierai pas comme accepté immédiatement, car je souhaite offrir une prime pour la question de l'obtenir autant que possible. Sur une note latérale, avez-vous des commentaires / suggestions sur la manière dont on pourrait mettre en œuvre un système décentralisé, basé sur la P2P, à ressembler à Reddit?


Ce que vous voulez réaliser est similaire à Freenet, alors je l'examinerais pour inspiration.


Non, ce que je veux faire est très différent de Freenet. Freenet est fondamentalement une version anonyme du Web. Je m'occupe beaucoup de l'anonymat. Mon objectif est de permettre aux gens d'échanger des liens et des commentaires sur ces liens, de manière décentralisée.


Ce que je voulais dire, c'est que, en ce qui concerne l'architecture sous-jacente (pas ce que l'utilisateur voit ou les fonctionnalités offertes par votre application), vous devez séparer le niveau de communication du niveau d'application, ce qui correspond à ce que Freenet atteint. Vous pouvez sauter la partie anonyme.


Utilisé JXTA moi-même et peut le recommander :)



4
votes

Je n'ai pas eu la chance de l'utiliser, mais Telehash semble avoir été faite pour ce type d'application. Les applications Peer2Peer ont un défi particulier à traiter avec les restrictions de pare-feu ... Depuis que Telehash est basée sur UDP, il convient parfaitement à Trou-poinçon à travers des pare-feu.

Modifier pour le commentaire de static_rtti :

Si la vitesse de code est une exigence libjingle a beaucoup d'efforts qui y vont, mais est principalement orienté vers XMPP . Vous pouvez porter des parties du Code de glace et à moins obtenir le coup de poing sur le trou. Voir le Vue d'ensemble de l'architecture de libjingle pour plus de détails sur leur mise en œuvre.


2 commentaires

Semble bien, merci d'avoir répondu! Je vais enquêter un peu plus quand je comprends le temps.


@Static_RTTI, j'ai répondu ci-dessus.



1
votes

Découvrez COUCHDB. C'est une plate-forme d'application Web décentralisée qui utilise une API HTTP. Les gens l'ont utilisé pour créer des "Couchapps" qui sont décentralisées d'applications basées sur CouchDB pouvant se propager de nature virale vers d'autres serveurs CouchDB. Tout ce que vous avez besoin de savoir pour écrire Couchapps est JavaScript et apprenez l'API CouchDB. Vous pouvez lire ce livre en ligne gratuit pour en savoir plus: http://guide.couchdb.org

La sauce secrète à Couchdb est un protocole de réplication maître à maître qui permet de répandre des informations comme un virus. Quand j'ai assisté à la première Couchconf, ils ont démontré à quel point cela est efficace en lançant une "fête du canapé" (où vous avez une pièce remplie de personnes qui se répliquent à la personne à côté d'eux simulant un réseau ad hoc).

En outre, tout le code qui rend un travail de CouchApp est public par défaut dans des entités spéciales appelées documents de conception.

P.s. J'ai envisagé de faire un projet similaire, mais je n'ai pas beaucoup de temps pour y consacrer pour le moment. Dieu accélère mon garçon!


2 commentaires

Merci, je vais certainement examiner cela.


Aucun problème! Si vous avez des questions, n'hésitez pas à les poser. Je pense vraiment que c'est la solution idéale pour un site Web décentralisé. En outre, il existe des versions mobiles de CouchDB qui peuvent être intégrées aux applications Android et IOS afin que vous puissiez effectuer des sites Web avec vous où que vous soyez. Une dernière chose, je recommande vivement cette discussion de Google Tech sur "Computing terrestre" avec Couchdb: googlecode.blogspot.com/2009/09/...