New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A State-based CRDT without Infinite Growth #2571
Comments
Feedback: expand 2-page intro with indirect reciprocity, tragedy of commons, leftist-stuff is OK in foreword, rest needs to be boring & scientifically grounded. Chapter 1, ThesisReady: tragedy, iterative PD, freeriding, single-point-of-failure, tribler attempts at finding mechanisms to build trust |
Thesis (3).pdf
Storyline: tragedy, iterative PD, freeriding, single-point-of-failure, tribler attempts at finding mechanisms to build trust |
Result of quick update session. Stop deleting bad text for one cycle. Create brainfart version of:
|
new .pdf @Captain-Coder ? |
Please see here for the most recent version. |
Comments on recent thesis version. thesis (46).pdf "There are several elephants in the room when translating this high-level concept to an actual implementation." Brainstorm ToDo list: |
The most interresting experiment we could do, is to verify that the multichain can actually be used to reject free riders. The experiment I want to should thus show that with multichain disabled free riding is possible, especially over multiple download sessions. When multichain is enabled the experiment should show that those that could still free-ride before will now be rejected. For example: Start 100 nodes in 4 groups: 40 nodes will download and seed upto ratio 1.9, 20 free ride low (ratio 0.8), 20 free ride medium (ratio 0.5) and 20 free ride heavy (ratio 0.0). Each node has a 200KB/s maximum upload throughput and an unlimited donwload throughput. Sequentially perform 15 downloads of 20MB. 4 nodes will be picked randomly (uniform distribution) to serve as seeds for each download. This should mimic periodic content releases over time. Plot download speed over time for each node, colour by node grouping. If multichain works as advertized, we should see the download throughput of the 3 free rider groups converging towards their respective sharing ratios or lower. Importantly we should see some of the 15 downloads no longer completing. At the same time the other nodes should see a modest increase in throughput. If multichain is disabled (or does not work as advertized) we should see all downloads completing, and all nodes getting roughly equal throughput. This would need tribler to meddle with the workings of libtorrent, which might require some engineering effort. Alternatively it should be possible to run this experiment through hidden tunnels, which are easy to control based on multichain scoring. |
"The following deliberately simple experiment demonstrates our access control decisions. Requests by freeriders are rejected." |
Key objective minimal-validation-experiment: 1 downloader from 1 seeder. Repeated downloads, then gets rejected by the tunnel community proxy. (e.g. 3 GByte freeriding limit, 250MB file downloads, blocked after 12 times) |
Requirement: crawl neighbors (with Quinten). Scientific question: placement of reject policy (during rendezvous proxy setup?) Very future work (do not work on this in 2017 please!): priority-based queuing mechanism, thus give away bandwidth to highest ratio/upload peer and pre-empt low-level contributors. |
Gumby experiments required re-work. Tribler tries to re-use tunnels after first-time usage. But that goes wrong. Second download sees no fresh tunnels are needed, but libtorrent or something can't really use them. Ongoing investigation. Plus Gumby uses the mainline public DHT network for all tunnel activities. Ongoing tribler fix and Gumby PR. How close to operational code? Few weeks.. The current true halves tries to somewhat do a light check on |
@Captain-Coder where is this fuzzy factor exactly? I haven't encountered it so far in the code base or did I miss something? |
@devos50 Yeah seems you're right. I'm quite sure PimV and me agreed to put it in. But apperently we never did. It definately should be in there though, i'm already seeing tons of "not enough outstanding credit" errors in my experiment, even though there is no malicious node and everything works via localhost. I suspect the counters in (hidden_)tunnel_community.py are nog counting the same thing going out as comming in. I'll probably need to fix this for my experiments. |
ToDo: 3 pages of master experiment thesis material.
|
Update: DHT isolation PR needs rebase. Excellent bug hunting, anonymous DHT in Tribler results in identity spamming. Our small exit node community gets abuse blocked by most DHT implementations. We mix introduction IP:ports with exit node IP:ports (exits get DHT blocked, introduction points run their own DHT instance). |
Update: Tribler patch was needed for current Arch Linux support of Tribler, Libtorrent 1.1.1 series and Socks API. We moved to Tx block inside transaction of Trustchain. This binary blob is put straight into the Tribler SQL table Real experimental results: full devel hidden seeding code with DHT isolation (== remove bootstrap nodes). Experiment duration is determined by file size above trustchain counting limit and below 10min tunnel lifetime x amount of swarm downloads. |
Thesis material also include global re-factoring and end-to-end deployment testing+fixes. There are both outgoing and incoming tunnel_extend requests. Both trigger the calculation of scoring function. Major refactoring task of the Tx block and SQL usage. Python type inheritance of Trustchain to both Triblerchain and Tradechain. Our approach is merely code sharing not data sharing or data duplication. Tx block is parsed and optionally split into fields. Dictionary of Tradechain can't be split into fixed fields, thus remains a blob. Not fancy, no realistic alternatives, but required. Raspberry pi, build script of Libtorrent and Tribler core (no GUI). |
Ongoing DHT isolation PR since June 8. Warning: at End of December the phd students of Tribler team will work full-time on fixing the credit mining+payout through tunnels. Key feature for Tribler project, earn credits by donating disk and bandwidth... |
Add to thesis our Tribler publication "Paying the Guard: an Entry-Guard-based Payment System for Tor". Quote from draft thesis:
Your attacker model assumes people deviate from the protocol. Human behavioral studies (including ours) has showed this to be incorrect, the overall majority is honest or follows the default. |
The first step towards proxy/exit node payouts is done: a very basic experiment to perform hidden seeding and downloading (one hop, one circuit, one downloader and one seeder). See https://jenkins.tribler.org/job/pers/job/hidden_seeding_devos50/. (annotations in the graphs above are bugged for some reason) Next step: integration of TriblerChain + implementation of payouts. UPDATE: TriblerChain is running correctly, next to the hidden tunnel community. Left: implementation of payouts. |
solid milestone. Perhaps we want to expand this Jenkins job to annotate the various .PNG file with start,stop, etc time markers. Like unit tests and Allchannels. |
@synctext the graphs above have annotations (the green/blue/red vertical lines) but the text is not visible for some reason. I suspect this has something to do with the way the graphs get rendered on our bbq server. I noticed that annotation texts are quite unreliable in R and they display if I render them on my own machine. While not top priority, we should look into this at some point. |
Additional meeting notes 06-04-2021:
|
In addition to the text, I have made progress on integrating my stuff into a gumby experiment. |
Meeting notes 12-04-2021:
For next week, please finish your first experiments. Post the graphs here. Tentative planning:
|
entry_count.pdf Nothing much to look at but I'm happy the gumby+ipv8+pycharm+postprocessing+custom experiment scenario is now setup. |
Meeting notes 19-04-2021:
|
I found that the experiment with different work loads was becomming to complex. There is too much going on for a first experiment to explain properly. I am already questioning this simple setup. Proposed structure for chapter 5 including experiments |
Meeting notes 26-04-2021:
For next week, finish the storage and P2P experiments. |
Here is this weeks progress. I'm going to ask for a day off work on the 11th (and possebly the 12th) to get some extra work done. |
Meeting notes 03-05-2021:
Suggestions for experiment flow:
|
Much to discuss. Engineering (and experiment integration) on CFRT is done. Done text up to 5.2.1, Experiments done up to 5.3.2 |
Meeting notes 10-05-2021:
|
Meeting notes 17-05-2021:
|
Turns out 90% packet loss is not an unsolvable problem |
Meeting notes 25-05-2021:
Suggestion to organise your introduction:
|
Ready for feedback on chapter 5 |
Feedback on Chapter 5: Major feedback:
Implementation:
BloomCRDT experiments:
CFRT experiments:
Section 5.4:
|
report.pdf |
Meeting notes 31-05-2021:
For next week, please finish the introduction and start working on the conclusion. |
Also as discussed, chapter 5 will not be sent for a separate review but combined with Introduction and Conclusion as a complete draft. |
Intro should be Ok (not spell checked yet), |
Meeting notes 07-06-2021:
For this week, focus on polishing the problem description. Make sure it matches with your experiments, and conclusions. |
Perhaps I'll have time to spellcheck/textidote tomorrow morning before the meeting. |
Meeting notes 14-06-2021: Abstract:
Introduction:
Related work:
Problem description:
Section 4:
Conclusions:
Overall:
|
While we’re waiting for the formal thesis defence procedure to start, I’ve gone through your thesis again, up to Section 4. I think the following feedback should keep you busy 👍 Overall:
Abstract:
Introduction:
Section 2:
Section 3:
|
Additional feedback on Chapter 4 (design):
Section 4.1:
Section 4.2:
Section 4.3:
General:
|
I focused on getting the last experiment to work. It now does and surprise surprise cfrt works way better than stuffing a channel into a torrent. From a user's perspective. I think the tie-in text could be sharper, it was a bit late when I wrote that. I had to go log() on the graph y axis or the cfrt would just be a single line on the 0. I feel this could be formatted better, but I'm unsure what numbers to choose. Also the x axis is clipping on the right, dunno yet how to fix that. The result of focus on the experiment is that some feedback points are still open. Those will be adressed today. |
Meeting notes 16-08-2021:
|
Final thesis on official TUDelft repo 🎊 Scientific highlights from thesis:
|
Goal: upload and download byte accounting, detect freeriders, and refuse service.
Requirement: privacy is a cradinal requirement, only count bytes with a certain accuracy and never leak what is being downloaded or relayed. Side channel attack danger.
The text was updated successfully, but these errors were encountered: