-
Notifications
You must be signed in to change notification settings - Fork 451
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
transitive trust based on blockchain constructs #2894
Comments
Some work on live trust edges based in dispersy MultiChainCommunity, can be found on this branch: |
Live edges rebooted and integrated. Live edges implementation: W.I.P. Visualization of trust based walks (Gumby experiment): |
I spent yesterday creating an R package which allows me to easily make animated png files. This allows me to more easily visualize the evolution of a network in an automated manner. (Plus, animation is great for propaganda purposes) |
Fun update. My animated png R package is now part of the official R package repository: https://CRAN.R-project.org/package=apng |
in R.. epic! |
The first (windowless/window size of 1) integration of UTP in Dispersy is now up and running: https://github.com/qstokkink/gumby/blob/utp_community/experiments/utp/utp_community.py |
solid progress. |
@synctext If I understood your question correctly, you want to know if multiple uTP transfers can be multiplexed over one UDP connection. If so: yes, you can have multiple uTP connections over a single UDP "link". |
When two peers talk, do we have a protocol for indicating this is a single UDP Dispersy message or we now start setting up a uTP connection? |
@synctext It is a single UDP Dispersy message, this makes it backwards compatible and allows it to make use of some of the Dispersy information shipped with it, without compromising the pure uTP protocol. The uTP connections are built on top of this Dispersy message. The extra information we can use, is the member we are exchanging information with. This guarentees that there will be no connection_id collisions, so you will never accidentally (or on purpose) get someone else's data. Closing the connections is done using the normal uTP ST_FIN message. In the worst case it will time-out (implemented with Twisted to avoid rogue threads and the like). The interface for this functionality is as simple as: community.send_utp_message(candidate, data) The implementation will then take care of setting up a connection and closing it once the data (a string) has been sent to the candidate. Another possible use of this, is sending Protocol Buffers messages of arbitrary size (no longer restricted to a single UDP packet). |
nice. |
@synctext Sure, we can hook in progress statistics for the sender and the receiver without any issues whatsoever. Also: I hooked up windowing and retransmissions today. Once I document and clean the code a bit, Dispersy-uTP is ready for shipping. I'm looking forward to the thumbnail implementation 👍 |
nice |
related work |
@synctext Functionally Dispersy can actually do more than that. The only thing we are missing in Dispersy is the fancy Arbiter system (which are pretty much Dispersy communities in disguise)* and TCP connections. However, as far as I can see, the user needs to set up his own TCP NAT rules in ROS; so no fancy TCP puncturing/hole punching in ROS either. As far as docs go: touché, point taken. Their documentation is lightyears better than ours. * Actually, we could even build such a system on top of the communities. |
Alright, the uTP infrastructure has been refactored and documented (reminder: here) and is available for deployment once we need it.
EDIT: Instead, the focus will be to get the live_edges merged into
Here is an overview of how the live edges implementation hijacks the default Dispersy messages (live edge traversal -like teleporting home- is not captured in this diagram): The only reason the last block is not added onto the introduction response, is for fear that the message might get to big for an UDP packet to handle. One further implementation detail, is that the keep-alive timeout is now 60 seconds instead of the original design's 5 seconds: this can be changed at any time. |
I'm starting the roll-out of live edges:
|
While the live edges are being reviewed etc. I will move on to the n-hop-sync. The design is as follows: n-hop-syncExtend functionality of
n-trust-hop-sync
Status
|
Inspiring animations for live edges and graph sampling: https://bost.ocks.org/mike/algorithms/ |
Related work on secure pairing, trust and discovery + remixing: https://github.com/solatis/bitgloom |
More docs and related work on the Privacy+self-sovereign ticket: #3013 (comment) |
Learning trust strategies in reputation exchange networks
|
Here's another (more up-to-date) list of Blockchain identity systems: https://github.com/peacekeeper/blockchain-identity Also people are apparently starting to catch up to our ideas: |
We might have an alternative algorithm to find the non-sybil region of Trustchain by using an NP-hard graph search algorithm. That introduces the trust-mining concept for our internet-of-trust.org work. The maximum k-cluster in a DAG might indicate the largest honest region. phantom algorithm was presented by researcher Yonatan Sompolinsky at BPASE'18 event (.pdf not yet online). His earlier work on DAGchain: "SPECTRE: Serialization of Proof-of-work Events: Confirming Transactions via Recursive Elections". |
University College London: "Decentralizing Public Key Infrastructures with ClaimChains". Very similar design idea to our deployed technology; has Merkle tree and fancy skip list for efficiency. https://claimchain.github.io/
|
This issue has been superseded by other issues. Live edge walking has been in Tribler for over a year now and there are other issues for trustworthy gossip. |
Post-mortem: trust-based walking was a very bad idea. |
Post-mortem2: load-balancing needs to be maintained when doing non-random walks! Trust introduces a strong bias. Destructive and leads to overloading of highly-trusted nodes in a power-law setting or complete neglect of low-trust nodes. |
PhD Thesis direction
By using the learn-by-doing methodology we will create a transitive trust solution.
Specifically we will design, implement, deploy, and incrementally improve transitive trust solution using our own append-only TrustChain solution.
Steps and dependancies:
The text was updated successfully, but these errors were encountered: