Skip to content
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

is aqua + trust graph are capable of this now (and how to do it): trust overlay traverse #23

Open
dzmitry-lahoda opened this issue Oct 13, 2021 · 3 comments

Comments

@dzmitry-lahoda
Copy link

dzmitry-lahoda commented Oct 13, 2021

  1. define trust overlay for some subset of nodes in any network (image fluence and some corp nodes)
  2. trust overlay is ability to define my trust over nodes i do not manage (via dht?)
  3. start traversing these nodes from some relay (breadth first)
  4. also traverse the nodes these nodes trust by some metric (trust value is larger than value or depth of recursion).
  5. so even if overlay was not set explicitly, there is trust set by node managers, and my particles goes to this node
  6. decrement counter of maximal debt (or increment increasing counter)
  7. stop when some count of nodes or depth was traversed
  8. for counters it may be ok to introduce increments and comparison to a number, not generics math, as specific features of aqua for such scattering and counting
  9. also return random stream(some kind of sampling) of some value from dht which was set (this is goal of algorithm - traverse and set dht value in trusted nodes). .
  10. return values to ui
  11. as soon as it happens, traverse random paths depth first or start from returned nodes to validate values were really set set
  12. also may allow to add access to particle ttl into particle, so that can burn time during traversing and stop when it probably burned to much, and return, instead of direct debt or other limitation.
  13. how other way check particle worked well? do co callbacks during traverse? is it not good to jump on each recursion call to initial node? can we make co function call relative to some nodes (so it returns not to peer, but to some node at first, like accumulate some part of stream and push than that part into function, or string* -> ()).

In the end we get replica set id is set onto overlay of trust and trusted nodes of that overlay with specific service and node for discovery. And we know the quality of that overlay and can alert on it.

For now for sure can just make function which traverses kademalia, while it should traverse trust graph, I think.

@dzmitry-lahoda dzmitry-lahoda changed the title is aqua + trust graph are capable of this now (and how to do it) is aqua + trust graph are capable of this now (and how to do it): trust overlay traverse Oct 13, 2021
@alari
Copy link
Member

alari commented Oct 13, 2021

We call this use case "subnetworks". You can use TG + AquaDHT for that in conjunction, it will work for relatively small subnetworks (that fit into a predefined number of AquaDHT keys). More complex cases require advanced network traversing algos, like Kademlia. Full support for Kademlia in Aqua is planned, yet now it's blocked with fluencelabs/aquavm#149

@dzmitry-lahoda
Copy link
Author

thanks, i see. and another thing.

If I have node A, B, C. Node A and C are above some threshold to be trusted. B is not trusted enough. But for some reason I can reach from A to C only via A (A->B->C). If my particle will jump from A to C via B. So B will return response claiming it reached C. Imagine deeper jumps or more nodes, than somehow if B was node through which many responses passed, somehow need to validate (or has some value) which allows me to evaluate how trusted that traverse was.

so not sure about this, need to think more.

@alari
Copy link
Member

alari commented Oct 13, 2021

These intermediary nodes need no additional trust, as they don't make computations beyond the Op.noop() call for traversal, and they can't modify the results of previous computations as they're signed, and they can't affect the script. So not sure that trust needs to be checked there at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants