Commit Graph

155 Commits

Author SHA1 Message Date
Csaba Kiraly 01488104e5 add "traditional" targetID based findNode message
This patch adds a findNode message sending the actual
target ID as in traditional Kademlia lookup. This in
contrast to the actual findNode message that send information
about the distance only, leading to more secure but slower lookups.

Having both primitives allows us to select which to use per use case.

Current naming is findNode for the distance based message and
findNodeFast for the message added in this patch.
2022-03-22 15:18:44 +01:00
Csaba Kiraly 6408cf4e3f
Merge pull request #26 from status-im/fix-bootstrap
Fix bootstrap in tests
2022-03-22 15:10:12 +01:00
Csaba Kiraly 4362c83a56 log improvements 2022-03-22 11:53:55 +01:00
Csaba Kiraly 50df73da1b fixup: tests: expose startup delay parameter 2022-03-22 11:53:55 +01:00
Csaba Kiraly d14222e8d1 tests: add back test after bootnode dies
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 0431587765 test_providers: add optional delay during bootstrap
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 7bef1e105f fix bootstrap: add node after successful handshake
Previous version was very conservative about adding nodes to the
routing table, requiring a full request/response message exchange
initiated by us.
Here we also add the node as 'seen' if the whoareyou/handshake
exchange was successful.
This significantly speeds up bootstreap from 0

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 4d7e773c42 fix tests: make bootstrap nodes async 2022-03-22 11:53:55 +01:00
Eric Mastro d785aa4642 update codecov path to be informational 2022-03-22 11:00:26 +11:00
Csaba Kiraly 9a01791e11 feat: Swap ENR to libp2p SignedPeerRecords
Swap all instances of Record with SignedPeerRecord.

Allow for `SignedPeerRecord`s to be updated by updating the first multiaddress in the `PeerRecord`. This also increments the `seqNo` in the `PeerRecord` only if the address was actually updated.
2022-03-22 11:00:26 +11:00
Eric Mastro b843c8823c feat: merge add/get providers with discv5
Merge the add/get providers messages with the discovery v5 messages inside of the discovery v5 code. Discovery v5 uses RLP encoding, while the add/get providers uses protobufs, as per the libp2p spec. The merge of these two uses RLP on the outer wrapper of the message, and a protobuf-encoded blob on the “inside” for the add/get providers messages only. Eventually this needs to change so that we use protobufs only.

There is still some code in the libp2pdht/dht directory, which is being read from the discovery v5 directory. Eventually these two should merge as well.
2022-03-17 14:56:54 +11:00
Eric Mastro cbcaf926a1 feat: Swap PeerRecord for SignedPeerReocrd (PR comments)
- Add example addresses in tests
- Change bootnode private key in tests
- bump libp2p to get access to SignedPeerRecord.encode
2022-03-10 17:00:33 +11:00
Eric Mastro 35026762b4 feat: Swap PeerRecords with SignedPeerRecords
Providers now add/get SignedPeerRecords to/from the DHT.

Changed the PeerId calculation to use the public key of the discovery node.
2022-03-09 15:03:16 +11:00
Eric Mastro 4a2a6878b4 Remove nim development compiler version from CI 2022-03-08 13:55:53 +11:00
Eric Mastro 422511b961 chore: Add codecov yml settings
Specify `informational: true` to prevent CI failure with a reduction in code coverage. We are not at a point yet to need this.
2022-03-08 13:55:53 +11:00
Csaba Kiraly b65e0aa7ef comment out test instead of using skip()
after calling skip(), the test was still
executed and failed. Better to disable the
whole test.
2022-03-07 15:11:31 +11:00
Csaba Kiraly e8a8c28848
Merge pull request #16 from status-im/build/add-ci-action-2
Add CI Actions
2022-03-06 16:07:47 +01:00
Eric Mastro 0d0da71b65
build: Add CI Actions
Add CI workflow to run tests.

Add code coverage workflow that publishes results to CodeCov.

Add CI and coverage badges to README.

Bump asynctest to allow for `setupAll` and `teardownAll`.

Add local coverage nimble task.

Combine tests in to a testAll file.
2022-03-04 18:04:50 +11:00
Eric Mastro 55a43b2d89 chore: bump asynctest, use all/each test harness nouns
Using `setupAll`/`setupEach` and `teardownAll`/`teardownEach` for test harnesses.
2022-02-25 14:06:43 +11:00
Eric Mastro acd03ff831 feat: reorg project to add nimble build system
Project has been updated to use nimble as a build system. All required dependencies have been added.

All nim-eth mirrored files were added to a private folder in the libp2pdht module. A libp2pdht/discv5 module was added to alias the nim-eth modules (which will change over time).

Test have been updated to use status-im/asynctest. This PR uses a branch of asynctest that supports async suite before/after. This seemed like the only the tests would work without throwing gcsafe errors.

All tests working.
2022-02-25 09:10:43 +11:00
Eric Mastro 617a98bd01 Initial commit with nimble initialised repo
# Conflicts:
#	README.md
2022-02-25 09:10:43 +11:00
Csaba Kiraly f530a24a25 moving all RLP enoding from messages to messages_encoding 2022-02-24 12:39:17 +01:00
Csaba Kiraly aca6febd34 fixup: fix trace message 2022-02-24 12:36:29 +01:00
Csaba Kiraly 7dd0ff1bb6 fixup: fix trace messages 2022-02-23 22:12:32 +01:00
Csaba Kiraly db4ccc8bee just reordering 2022-02-23 22:12:32 +01:00
Csaba Kiraly 6dcdaf6173 moving encode and decode to the same level 2022-02-23 22:12:32 +01:00
Csaba Kiraly 043f195e19 separating message structures and encoding 2022-02-23 22:12:32 +01:00
Csaba Kiraly b6943d3382 adding minimal readme 2022-02-23 22:12:32 +01:00
Csaba Kiraly e6cea68326 tests: give more time to bootstrap 2022-02-23 22:12:32 +01:00
Csaba Kiraly 0b301fdeae moving test under dht folder 2022-02-23 22:12:32 +01:00
Csaba Kiraly 811389c863 moving code under dht folder 2022-02-23 22:12:32 +01:00
Csaba Kiraly bef2b711e5 just a comment 2022-02-23 22:12:32 +01:00
Csaba Kiraly b118a34043 tests: make all tests work 2022-02-23 22:12:32 +01:00
Csaba Kiraly 77d93d71bd tests: generate PeerRecords from NodeId
this is just for the testing
2022-02-23 22:12:32 +01:00
Csaba Kiraly 54fde4e09e test fix: init nodes correctly 2022-02-23 22:12:32 +01:00
Csaba Kiraly 19792de3dc adding GetProviders support 2022-02-23 22:12:32 +01:00
Csaba Kiraly f78dafb798 add some trace messages 2022-02-23 22:12:32 +01:00
Csaba Kiraly 57a339d326 quick fix local lookup 2022-02-23 22:12:32 +01:00
Csaba Kiraly 31d99ad56e adding protobuf encoding 2022-02-23 22:12:32 +01:00
Csaba Kiraly af168a8a24 fixup 2022-02-23 22:12:32 +01:00
Csaba Kiraly be5d911cda partial tests (AddProvider) 2022-02-23 22:12:32 +01:00
Csaba Kiraly 43a27ed997 exposing ProvidersProtocol and underlying Discovery 2022-02-23 22:12:32 +01:00
Csaba Kiraly 86328cd17e adding base for test_discovery
based on discv4 version
2022-02-23 22:12:32 +01:00
Csaba Kiraly 722fbba547 adding addProvider messaging and calls 2022-02-23 22:12:32 +01:00
Csaba Kiraly ca3f634239 import eth/[rlp, keys, async_utils, net/utils] directly from eth 2022-02-23 22:11:27 +01:00
Csaba Kiraly f5d3a9f381 cleaning up imports and dependencies 2022-02-23 22:03:37 +01:00
Csaba Kiraly cdd5d6cd34 protocol: introduce sendResponse
This completes the Request/Response semantics.
2022-02-23 22:02:59 +01:00
Csaba Kiraly 70a06b5c44 rename protocol.sendMessage to sendRequest
This is a request part of a Request/Response, generating
also a reques ID. So call it what it is.
2022-02-23 22:02:51 +01:00
Csaba Kiraly d4af5b8a44 protocol.sendMessage: allow destination as (NodeId, Address) 2022-02-23 22:02:41 +01:00
Csaba Kiraly a7d8082fc7 transport.sendMessage: avoid passing address twice
Node already has the address, so it does not make sense to
pass it as a separate parameter.
2022-02-23 22:02:31 +01:00