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

Correctness of DHT #388

Open
RyanKung opened this issue Mar 31, 2023 · 0 comments
Open

Correctness of DHT #388

RyanKung opened this issue Mar 31, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@RyanKung
Copy link
Member

FACT

  1. Chord must be initialized with a ring containing a minimum of r +1 nodes, where r is the length of each node’s list of successors. In fact, to be proven correct, a Chord network must maintain a “stable base” of r + 1 nodes that remain members of the network throughout its lifetime.

  2. The Chord Paper defined the maintenance and use of finger tables, which improve lookup speed by providing pointers that cross the ring like chords of a circle. Because finger tables are an optimization and they are built from successors and predecessors, correctness does not depend on them.

IMPROVEMENTS

  1. Join Operator: Sync successor list from new successor. Add new remote action:
RemoteAction::FetchSuccessorList(Did)

After join operator, call FindSuccessor(did) and FetchSuccessorList(Did) immediately。

  1. Stab Operator: For current implementation, we notify predecessor for successor updating. But on paper HMCC, It defined a new operation that fetch successor's predecessor and successor_list periodically. And instead of notify predecessor, It notify successors.

The loop is guaranteed to terminate before succList is empty, based on the assumption that successor lists are long enough so that each list contains at least one live node.

Screenshot 2023-03-31 at 10 13 33 PM

  1. Rectify operator, In origin Chord paper the operator is so called check_predecessor.

Screenshot 2023-03-31 at 10 18 33 PM


ref: How to Make Chord Correct https://arxiv.org/pdf/1502.06461.pdf

@RyanKung RyanKung added the enhancement New feature or request label Mar 31, 2023
@RyanKung RyanKung self-assigned this May 9, 2023
RyanKung added a commit that referenced this issue Jul 14, 2023
[Feat]: New feature flag: experimental, mark an implementation as experimental, which means that:1) It may not have been thoroughly tested. 2)The corresponding API may be deprecated or adjusted in the future.
[Doc]: Added document for modules.
[Refactor]: Made MessageHandlerEvent context-agnostic.
[Refactor]: Convergent implementation of logging module for wasm and defaut.
Convergent implementation of WASM and NATIVE #453
[Refactor]: Rename relay.sender() to relay.origin_sender()
[Refactor]: Reimplemented node::error::Error::code with #[repr(u32)]
[Fixed] datachannel for wasm and default
[Feat] Implemented messagehandler for correct chord related message.
Correctness of DHT #388 [BUG] DHT Join may not work properly #387
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant