In Pull Request #820, additional validation is added to check if the bootstrap node should be put into the routing table - if it fails to return itself for finding itself, then it won't be put into the routing table
|
return fmt.Errorf("peer %s failed to return its closest peers, got %d", p, len(peerids)) |
The logic indicates, when querying FIND_NODE for the destination peer, it is expecting the destination node to return at least themselves.
However, the logic in rust libp2p-kad does not include themselves in the response. The result will be, a golang DHT client cannot use a rust DHT client for bootstrapping.
https://github.com/libp2p/rust-libp2p/blob/a579e691c46a8efd2e38ebafca1c59a9b58fc56c/protocols/kad/src/behaviour.rs#L1184
The error shown is
2024-03-22T12:10:47.251-0700 ERROR dht go-libp2p-kad-dht/dht.go:694 connected peer not answering DHT request as expected {"peer": "12D3KooWPRvdxAyaoq6hqBxCZkFknNW7k4aogJtQqWrQENmBEZWx", "error": "peer 12D3KooWPRvdxAyaoq6hqBxCZkFknNW7k4aogJtQqWrQENmBEZWx failed to return its closest peers, got 0
"}
In Pull Request #820, additional validation is added to check if the bootstrap node should be put into the routing table - if it fails to return itself for finding itself, then it won't be put into the routing table
go-libp2p-kad-dht/dht.go
Line 383 in 1b5d0b6
The logic indicates, when querying
FIND_NODEfor the destination peer, it is expecting the destination node to return at least themselves.However, the logic in rust libp2p-kad does not include themselves in the response. The result will be, a golang DHT client cannot use a rust DHT client for bootstrapping.
https://github.com/libp2p/rust-libp2p/blob/a579e691c46a8efd2e38ebafca1c59a9b58fc56c/protocols/kad/src/behaviour.rs#L1184
The error shown is