Alléluia après environ 5h de dev sur ces 3 jours, j’ai réussi a établir une connexion WS2P a partir de zéro depuis un programme Rust 


Honnêtement je pensais que ce serait plus simple, Rust étant très bas niveau il m’a fallu un paquet de dépendances pour y arriver 
Alors c’est expérimental mais ça m’entraine, je voulais le faire pour plusieurs raisons :
- M’assurer de l’interopérabilité du protocole WS2P actuel (on savais que c’était évidemment vrai en théorie mais la on à la preuve par la pratique).
- Pratiquer en Rust car j’ai envie d’apprendre a maitriser ce langage.
- Je vais avoir besoin de ws2p pour un projets en cours mais j’en parlerai quand ce sera plus avancé.
- Ça me permet de vérifier si la crate duniter-keys dev par @nanocryk fonctionne bien, et la réponse est oui

- Ce programme expérimental va me permettre de vérifier la conformité de la RFC WS2p v1, je compte checker tout les types de requêtes dans les semaines qui viennent

La crate duniter-keys m’a générée la clé publique 3fBoNtSDbko7J1ch6xWu7RpbQBxz1eWt7C2fNZEsUZ9j, pour les tests j’ai ajouté cette clé a ma liste des privilégiés sur mon seul noeud membre G1 accessible en ws2p public en clair. Ci-dessous les log de mon programme, qui traite successivement les messages CONNECT, ACK puis OK. Après les OK on voit que je reçoit des fiches de peer puis des head, je n’ai pas codé le traitement de ces messages,une fois la connexion établie mon programme se contente d’écouter passivement et de logger tout ce qu’il reçoit.
EDIT : en regardant les log de plus près je vois que j’ai aussi reçu une certification et une requête BLOCKS_CHUNK (demande d’un groupe de blocs). J’ai coupé avec ctrl+C au bout de 10 secondes environ, ws2p est plus bavard que ce que je pensais.
$ cargo run
Compiling ws2p-exp v0.1.0 (file:///home/elois/dev/duniter/nodes/rust/ws2p-exp)
Finished dev [unoptimized + debuginfo] target(s) in 7.1 secs
Running `target/debug/ws2p-exp`
pubkey : 3fBoNtSDbko7J1ch6xWu7RpbQBxz1eWt7C2fNZEsUZ9j
Send: "{\"auth\":\"CONNECT\",\"pub\":\"3fBoNtSDbko7J1ch6xWu7RpbQBxz1eWt7C2fNZEsUZ9j\",\"challenge\":\"b60a14fd-0826-4ae0-83eb-1a92cd59fd5308535fd3-78f2-4678-9315-cd6e3b7871b1\",\"sig\":\"oliroRA5Aa/MDUC8qmWuMn6O+IUAh8cV5R8I12sNltCp/h4jnil6nKGr0233FOqTzHOEIfXvBU0saZ/N4344Bg==\"}"
Recv: Text(
"{\"auth\":\"CONNECT\",\"pub\":\"D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx\",\"challenge\":\"252cfd85-0c12-4665-947e-320f41d501db7608907c-c3af-4ee3-945b-159b5ebb96ad\",\"sig\":\"in/QsJCuZX6eWlk/ZfDp+Kka7d41/nah5+BHVg+DbOKxKIp6SlKRNNZPb8riadZZRL3JCt4NET6NG00fdNVkAQ==\"}"
)
Send: "{\"auth\":\"ACK\",\"pub\":\"3fBoNtSDbko7J1ch6xWu7RpbQBxz1eWt7C2fNZEsUZ9j\",\"sig\":\"I2t/KIZJTu8UknB8NYGYW0qiap6hspuZWYx7pJBFCG0iVyswybHoYGc/ncsyGKYE0Aa5HbsztAvJgUWfob5ZBA==\"}"
Recv: Text(
"{\"auth\":\"ACK\",\"pub\":\"D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx\",\"sig\":\"famL+eQ1dW1/4IzNTdWoozUGaXC0p14kCggAhVd2OTfqOjOiJkreI0ugnL98t0Y35DN5qdGiZEgu5EYcT+JkAw==\"}"
)
Send: "{\"auth\":\"OK\",\"sig\":\"fNWxk3bxgVJqFX7NpYbjifOUX152zRtVkCPWlqFcPaeqcDPxxYW52Wcht69lgMmP3y46L8iEe9czmOpPtTBqCg==\"}"
Recv: Text(
"{\"auth\":\"OK\",\"sig\":\"w+oNGgnx6gDGUa+Za4+QiHEIF19FlktmRwvVaj3eGG61bKxHzKfBESmSjkCiORCKuIAS4VwthWRsAZU1FTqZDg==\"}"
)
Received OK
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"5jfUpXPWAiBXNVG49tjQYA7R3VFX2oG2aPiskR5PE8Mc\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"WS2P 813abae6 2.8.235.28 20900\"],\"signature\":\"gTjjjqIFwfw1j3qQLoDr9+tavghWPj1OsOQrI1sXhYgOEy7gd+PwSHAMFLOAeh1jUSJzRgTw4Qx2qG2vDsDAAg==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"FkyYZ15dJC2GvShLqyWH38BV913CEp6WuhnRfvbRAWin\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"BMAS g1.guimik.fr 443\",\"BASIC_MERKLED_API g1.guimik.fr 82.241.192.14 443\",\"WS2P e9bc630f g1.guimik.fr 443 /ws2p\"],\"signature\":\"3R7Ly3gogQ+dBS37eGSj2ZSwKT5NtT1WU5Z3OxgOiEhapIO86FXR1z6D9GXcAwWAYrWD+WAj6Xgh5MT5uoQXCw==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"CERTIFICATION\",\"certification\":{\"pubkey\":\"Ep1DeihHkcW95XukYXwigB6sfdNefD317y3d6wp3komT\",\"block_number\":93615,\"sig\":\"3DjqzBANk3+X/vSeB1d2zhWL8RCeLxLzTjLx7oh+mTVntpS5gAQok7xSo0opQP3HMVzlTu9XHgvgkhysfvfDAQ==\",\"idty_issuer\":\"2RvAe3UZdjDM88FUT87LFx6nETnA9MJt6a3yshamjtwz\",\"version\":\"10\",\"currency\":\"g1\",\"buid\":\"93615-0000064A14C4EA2CD09BE4EBA346E3552D250F48FED2DC02FA593B374535AB0E\",\"idty_uid\":\"JohannaT\",\"idty_buid\":\"90121-000005D534F98B2D6827C2C1B0DE1DB92F979BED5AE9DC99D8E689E49DF20678\",\"idty_sig\":\"OcI1xcvoZoRqX7PPfAFUVnx9JChjc5inU9LcdPlLhfiop+3nJ9pmg45KZLHX2LBHnGVzcG/3bNmnrMdsLz2FCg==\"}}}"
)
unknow message
No response
Recv: Text(
"{\"reqId\":\"e79a6be4-d7d1-4fe9-862a-b2f88f219b3c\",\"body\":{\"name\":\"BLOCKS_CHUNK\",\"params\":{\"count\":50,\"fromNumber\":93616}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx\",\"blockstamp\":\"93614-0000059138371434A187267C35A1FB9BB4E358837788694F6B56E876DC52B6B2\",\"endpoints\":[\"MONIT_API g1-monit.librelois.fr 443\",\"BASIC_MERKLED_API g1-monit.librelois.fr 10901\",\"WS2P c1c39a0a g1-monit.librelois.fr 443 /ws2p\",\"BMATOR 3k2zovlpihbt3j3g.onion 80\",\"WS2PTOR 1be86653 3k2zovlpihbt3j3g.onion 20901\",\"WS2PTOR 53844c91 txeyf3zs65sq2g3v.onion 80\",\"WS2PTOR d0a2cfcc toefa6zlbcyvqzlg.onion 20901\",\"WS2PTOR 1be86653 3k2zovlpihbt3j3g.onion 80 ws2p\",\"WS2PTOR d0a2cfcctoefa6zlbcyvqzlg.onion 10902\"],\"signature\":\"A67uq1Kq4gJO0rdzIbZbY20Riy6c+VKd89CWwHGtWbqS+oCtWCvTK9SBHLfP4RYf5tVzIeRMcEEMUGnKk6yLDg==\",\"status\":\"UP\",\"statusTS\":1518211314,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"DA4PYtXdvQqk1nCaprXH52iMsK5Ahxs1nRWbWKLhpVkQ\",\"blockstamp\":\"93612-00000488F156889BF728F659FF4AC3C8BBD942B7BB59FA97EADBF656A9E28755\",\"endpoints\":[\"BASIC_MERKLED_API s0.cco.ovh 37.59.48.28 2001:41d0:8:6b1c:: 10901\",\"BASIC_MERKLED_API s2.cco.ovh 37.59.44.69 10901\"],\"signature\":\"+HPoUP2J2gb6BL5Mz7Cy1xYeCJfSXui8N2DcM5jN9+sHHdVXHuM8fGFte/Ti8L0JiuvL38vUmPhZt7/a57+XCw==\",\"status\":\"UP\",\"statusTS\":1518210814,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"GfKERHnJTYzKhKUma5h1uWhetbA8yHKymhVH2raf2aCP\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"BASIC_MERKLED_API 37.172.180.136 2a02:8389:2200:600:b496:bdc:27cd:42f9 10901\",\"BMAS duniter.moul.re 443\",\"WS2P 632b3f50 165.227.164.19 20892\"],\"signature\":\"yGkOcA4pn/mEnXstbEUnCADI6D6hwZXpOVG1nuFOYnv8hdTtI5jlZD6ZvFtwpRsbPon3yjVDQ7noePZU6XnyDQ==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"9UCGiboriR5rDuszGWYBKo4NgnydPrwHxQWNqeoxmsyY\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"BASIC_MERKLED_API duniter.veniro.fr 82.251.247.134 fe80::7c0b:eaff:fe36:6782%eth0 10901\",\"WS2P 956f29d6 duniter.veniro.fr 20901\"],\"signature\":\"IrHjmMI4njp/wOHpeNWdiKyc1oXGrWEf/entS9YKRr1Pc8y8S7M5MIRE/T1PSjtfjll6OCtfZHRjpHh0QXhtCA==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"5gJYnQp8v7bWwk7EWRoL8vCLof1r3y9c6VDdnGSM1GLv\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"BASIC_MERKLED_API g1.imirhil.fr 80\",\"WS2PTOR cb06a19b g1.aerisryzdvrx7teq.onion 53012 /\",\"BMATOR g1.aerisryzdvrx7teq.onion 80\",\"BASIC_MERKLED_API g1.imirhil.fr 443\",\"WS2P cb06a19b g1.imirhil.fr 53012 /\"],\"signature\":\"hinon04aH0pYQKmvYiqza75zfZjk4rxJ3mNu7G8ceEeLh5TnFpwFj71mTRubEva8c+EU8dHkRKtOQSnEiHJfDQ==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"PEER\",\"peer\":{\"version\":10,\"currency\":\"g1\",\"pubkey\":\"7v2J4badvfWQ6qwRdCwhhJfAsmKwoxRUNpJHiJHj7zef\",\"blockstamp\":\"93585-00000155B3C518CB990EBAEDC2C1D0637BA9DC299AE550616769C01163396832\",\"endpoints\":[\"BMAS g1.monnaielibreoccitanie.org 443\",\"BASIC_MERKLED_API g1.monnaielibreoccitanie.org 443\",\"WS2P b48824f0 g1.monnaielibreoccitanie.org 20901\"],\"signature\":\"OrV3XzHd+GPkzUHnu+hzxC/mCBFNJtVr5DmJWvfp3jEUgRHoDt2Qz7Rv2dTeztjUlwgN818H4Clx0W0AhxzAAQ==\",\"status\":\"UP\",\"statusTS\":1518202490,\"member\":false}}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93008-000001B3A727A9F4C58A6B8126AFE7F7642A9F12DD6DFBD05D7D32A40FD26BFD:451a34fb:duniter:1.6.14:1\",\"sig\":\"5x33JNlb1Mw4DdwQVDp2jn9Q/UMKY7I0/9vT7szPgyVI2gDjbZqKsoRMKZYAjk2Ncnt0Ymw8ORgAOO8TlWX7Bg==\"}]}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93009-0000023058365FA06C43113DBCF858D6279D7ADAB0BB1B8292F93F91086BC73D:451a34fb:duniter:1.6.14:1\",\"sig\":\"u7XvyqonTbDlOGC+fCzvG8XlVO/pS/9CHlvU8Tg/Nm773QGRTLXG7HNWzxhaWu6L6LdPkGB5h9nWQ1iPtGsJCQ==\"}]}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93010-000004A5F2E4873840D27CA68333FD7F852A6C6B15527CA416CE8F3886A31FE3:451a34fb:duniter:1.6.14:1\",\"sig\":\"7gm5gVWlMRhWXtjJ1ISLTZZzJA0TNvKjyTFu5f3PYCaQZ1S81M4rSfdkKOHnQftTNWOau/FWL8YmaLGNqqzVDQ==\"}]}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93011-0000013BDB7B0C966281D981CBCC5ABC84CA1BEC36B8CD361979487250CE8865:451a34fb:duniter:1.6.14:1\",\"sig\":\"DHPp8Ip+ddsGrilqr7+1N3fzWlZkkZo7H0YygtTS8Arp1g0xu6k+qajotRhOCP1aISm95JdkcOdQGZItVuAEDA==\"}]}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93012-000004B0A4C3E13853FD78B5F405699325A70EF595E300862A893A285EA4B664:451a34fb:duniter:1.6.14:1\",\"sig\":\"7kujkdV7A/f+BCKr/m+7pZSgBok4pCsupK4HS/MO/8iTnoOs/LbdfNPh1NDXCMbeHiFevH3ke9koOdnVo7yhDw==\"}]}}"
)
unknow message
No response
Recv: Text(
"{\"body\":{\"name\":\"HEAD\",\"heads\":[{\"message\":\"WS2P:HEAD:1:7AQzQb475tEzCkSLKD4HffeQbckizJWFvubhYA2rfwgt:93013-000000AFCEDB64828190A23D51021D18949E06A4DE4FCA6D247B6A32EA674F2D:451a34fb:duniter:1.6.14:1\",\"sig\":\"dbu8whxKecyvSlB3K+xoYeDdOlpUVP/q7sJffR7dIoGUHLzrhye+sjN9sNg6ySbht7Oe3XtakcTT3lHSiBBdBQ==\"}]}}"
)
unknow message
No response
Et bien sûr la preuve sur la vue réseau de mon noeud membre :