Bitmessage

De WikiOpenTruc
Révision datée du 25 décembre 2017 à 12:01 par D630A (discussion | contributions) (Contenu)
Aller à : navigation, rechercher

P2P, décentralisé, chiffré

Top language : python


Technique

  • sauf erreur, la propagation est par flooding. Tout le monde reçoit tout (enfin du moins de son voisinage), mais seul ceux qui ont les clés décodent. (... tel quel, ça pose(rait) un gros problème de scalabilité, mais des améliorations sont envisagées sur ce point).
  • l'envoi d'un message passe par une PoW (pour éviter spam et attaques sybil)
  • l'envoi d'un message est précédé d'une demande de clé au destinataire (vérifier les détails)
  • les messages ont une durée de vie de 48h, donc pas de blockchain qui s'allonge à l'infini

Additionally to the publicly readable data like the offers there are data stored which need to remain private. There are trade process messages which are stored in a kind of mailbox in case the peer is offline. Those data are encrypted and signed and also sent to every node for storage. Only the receiver (who has the private key) can decrypt the data. A similar approach is used in Bitmessage.


Install

Sur raspberry 3.

... /home/pi# lsb_release -a
Description:	Raspbian GNU/Linux 9.3 (stretch)

apt-get update ; apt-get upgrade ; apt-get dist upgrade ; as usual

apt-get install python ; déjà installé ici

apt-get install openssl ; déjà installé ici

apt-get install libssl-dev ; ~ 10Mo consommés

apt-get install git ; déjà installé ici

apt-get install python-msgpack ; 228 Ko

apt-get install python-qt4 ; 59.4 Mo

On note l'intérêt d'avoir des paquets déjà présents dans les distros de base.


Docs (si vous voulez savoir ce que font ces paquets) :


download du code source :
git clone https://github.com/Bitmessage/PyBitmessage $HOME/PyBitmessage

360 fichiers, 14.1Mo.
NB : a priori, rien n'oblige à procéder via git clone
un download classique fonctionne a priori tout aussi bien.

Mais bon, avec git on peut évidemment faire éventuellement plus de choses.


Contenu

  • 153 fichiers *.py , 1 fichier *.cpp

Le fichier cpp s'occupe de la PoW. Serait-il pas plus judicieux de ne pas effectuer la PoW en cpp, mais plutôt en python, quitte à abaisser la difficulté ? Pas trivial. Je présume qu'un utilisateur malveillant pourrait alors ne pas passer par le prouveur python, mais passer par un prouveur rapide, et cela sur une preuve facile (abaissée), donc pas top. Faudrait une astuce pour obliger à passer par le prouveur python ? comment faire ? pas évident même si le code était fermé, encore moins évident avec un code ouvert ?


Contributions possibles


Soucis possibles

  • il y a des IPs en clair dans le code source. a priori il s'agirait des noeuds de bootstrap. Un attaquant du réseau Bitmessage pourrait cibler ces IPs (attaque DoS ou autre).
  • NB : Les IPs 2017 ne sont pas les mêmes qu'en 2013.
  • on ne peut pas exclure que ces IPs soient des honey pots ?
  • comment pourrait-on contourner ce souci ?


Concurrents

  • scayl ? BTsync ?


Liens


Pages connexes