Commit graph

819 commits

Author SHA1 Message Date
lightclient
cc22e0cdf0
p2p/discover: fix update logic in handleAddNode (#29836)
It seems the semantic differences between addFoundNode and addInboundNode were lost in
#29572. My understanding is addFoundNode is for a node you have not contacted directly
(and are unsure if is available) whereas addInboundNode is for adding nodes that have
contacted the local node and we can verify they are active.

handleAddNode seems to be the consolidation of those two methods, yet it bumps the node in
the bucket (updating it's IP addr) even if the node was not an inbound. This PR fixes
this. It wasn't originally caught in tests like TestTable_addSeenNode because the
manipulation of the node object actually modified the node value used by the test.

New logic is added to reject non-inbound updates unless the sequence number of the
(signed) ENR increases. Inbound updates, which are published by the updated node itself,
are always accepted. If an inbound update changes the endpoint, the node will be
revalidated on an expedited schedule.

Co-authored-by: Felix Lange <fjl@twurst.com>
2024-05-28 21:30:17 +02:00
Felix Lange
af0a3274be
p2p/discover: fix crash when revalidated node is removed (#29864)
In #29572, I assumed the revalidation list that the node is contained in could only ever
be changed by the outcome of a revalidation request. But turns out that's not true: if the
node gets removed due to FINDNODE failure, it will also be removed from the list it is in.
This causes a crash.

The invariant is: while node is in table, it is always in exactly one of the two lists. So
it seems best to store a pointer to the current list within the node itself.
2024-05-28 18:13:03 +02:00
Chen Kai
5361160fd7 use id to send
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-05-27 15:16:48 +08:00
Chen Kai
526ee8ad9e revert
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-05-27 14:48:30 +08:00
Chen Kai
3ab51ce84f revert utp async
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-05-27 09:32:04 +08:00
gitglorythegreat
64b1cd8aaf
p2p: fix typos (#29828) 2024-05-24 11:33:19 +02:00
Aaron Chen
61b3d93bb0
p2p/enode: fix TCPEndpoint (#29827) 2024-05-23 23:17:51 +02:00
Felix Lange
cc9e2bd9dd
p2p/enode: fix endpoint determination for IPv6 (#29801)
enode.Node has separate accessor functions for getting the IP, UDP port and TCP port.
These methods performed separate checks for attributes set in the ENR.

With this PR, the accessor methods will now return cached information, and the endpoint is
determined when the node is created. The logic to determine the preferred endpoint is now
more correct, and considers how 'global' each address is when both IPv4 and IPv6 addresses
are present in the ENR.
2024-05-23 14:27:03 +02:00
Felix Lange
6a9158bb1b
p2p/discover: improved node revalidation (#29572)
Node discovery periodically revalidates the nodes in its table by sending PING, checking
if they are still alive. I recently noticed some issues with the implementation of this
process, which can cause strange results such as nodes dropping unexpectedly, certain
nodes not getting revalidated often enough, and bad results being returned to incoming
FINDNODE queries.

In this change, the revalidation process is improved with the following logic:

- We maintain two 'revalidation lists' containing the table nodes, named 'fast' and 'slow'.
- The process chooses random nodes from each list on a randomized interval, the interval being
  faster for the 'fast' list, and performs revalidation for the chosen node.
- Whenever a node is newly inserted into the table, it goes into the 'fast' list.
  Once validation passes, it transfers to the 'slow' list. If a request fails, or the
  node changes endpoint, it transfers back into 'fast'.
- livenessChecks is incremented by one for successful checks. Unlike the old implementation,
  we will not drop the node on the first failing check. We instead quickly decay the
  livenessChecks give it another chance.
- Order of nodes in bucket doesn't matter anymore.

I am also adding a debug API endpoint to dump the node table content.

Co-authored-by: Martin HS <martin@swende.se>
2024-05-23 14:26:09 +02:00
thinkAfCod
0159c17f46 fix: handle utp packet in async 2024-05-20 10:48:58 +08:00
thinkAfCod
b12bed8bde fix: cache node id and add logs
fix: cache node info
2024-05-19 00:07:37 +08:00
thinkAfCod
a5fe113247 fix: connId repeats 2024-05-16 20:41:07 +08:00
qcloud
ec5865f6e3 fix: contentLookup and traceContentLookup 2024-05-16 09:43:16 +08:00
fearlessfe
0819e81eea chore: add more info in err log 2024-05-16 09:43:16 +08:00
Chen Kai
86247e1ea8
Merge branch 'ethereum:master' into portal 2024-05-08 11:32:47 +08:00
fearlessfe
bb0714d9a5 fix: panic 2024-05-06 23:53:09 +08:00
Kiarash Hajian
905e325cd8
p2p/discover/v5wire: add tests for invalid handshake and auth data size (#29708) 2024-05-06 13:17:19 +02:00
Chen Kai
e660629a78
Merge branch 'ethereum:master' into portal 2024-05-03 11:39:35 +08:00
Aaron Chen
8c3fc56d7f
p2p/simulations/adapters: use maps.Clone (#29626) 2024-04-29 19:44:41 +02:00
Chen Kai
a2efff93b1
Merge branch 'ethereum:master' into portal 2024-04-25 17:43:53 +08:00
Undefinedor
a13b92524d
eth/protocols/eth,p2p/discover: remove unnecessary checks (#29590)
fix useless condition
2024-04-25 08:40:29 +02:00
Chen Kai
ab764c159d
Merge branch 'ethereum:master' into portal 2024-04-21 20:26:14 +08:00
bugmaker9371
98f504f69f
p2p/discover: fix test error messages (#29592) 2024-04-21 11:13:36 +02:00
Chen Kai
3014734c46 fix:fix minor warn issues
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-04-19 20:19:53 +08:00
fearlseefe
e97bca61ec fix: gossip in hive test 2024-04-18 20:01:03 +08:00
fearlseefe
2e2f44b615 feat: remove unused file 2024-04-17 18:29:33 +08:00
fearlessfe
9c0a5ccb74 feat: beacon start up 2024-04-17 18:29:33 +08:00
Chen Kai
79c769e635
Merge branch 'ethereum:master' into portal 2024-04-16 08:15:57 +08:00
Seungbae Yu
67422e2a56
p2p/nat: fix typos in comments (#29536) 2024-04-15 14:58:17 +02:00
Chen Kai
56462f1df9
Merge branch 'ethereum:master' into portal 2024-04-15 15:20:58 +08:00
Abirdcfly
b179b7b8e7
all: remove duplicate word in comments (#29531)
This change removes some duplicate words in in comments
2024-04-15 08:34:31 +02:00
Chen Kai
eb3206b1e1 feat:beacon network test
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-04-15 09:37:39 +08:00
Chen Kai
c203f9ac8e
Merge branch 'ethereum:master' into portal 2024-04-09 20:02:33 +08:00
Bin
0bbd88bda0
all: use timer instead of time.After in loops, to avoid memleaks (#29241)
time.After is equivalent to NewTimer(d).C, and does not call Stop if the timer is no longer needed. This can cause memory leaks. This change changes many such occations to use NewTimer instead, and calling Stop once the timer is no longer needed.
2024-04-09 08:51:54 +02:00
Chen Kai
6edb2a29b3 feat:add lc bootstrap and update range
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-04-07 15:28:59 +08:00
Chen Kai
f82ef2e241
Merge branch 'ethereum:master' into portal 2024-04-05 19:24:51 +08:00
cui
9dfe728909
p2p/discover: using slices.Contains (#29395) 2024-04-04 12:24:49 +02:00
cui
2e0c5e05ba
p2p/dnsdisc: using clear builtin func (#29418)
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-04-04 12:19:48 +02:00
Chen Kai
bc7987bd91
Merge branch 'ethereum:master' into portal 2024-04-03 10:37:51 +08:00
Ng Wei Han
dfb3d46098
p2p: add inbound and outbound peers metric (#29424) 2024-04-02 21:18:28 +02:00
Chen Kai
5122e5a826 fix:resume udp timeout
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-03-30 10:59:31 +08:00
Chen Kai
766d2d8ece
Merge branch 'ethereum:master' into portal 2024-03-29 10:09:47 +08:00
cui
3754a6cc92
p2p/dnsdisc: using maps.Copy (#29377) 2024-03-28 12:07:38 +01:00
Chen Kai
66de3b2898
Merge branch 'ethereum:master' into portal 2024-03-27 09:46:17 +08:00
fearlessfe
923ec257b4 feat: change method params
ContentLookup and TraceContentLookup method
2024-03-27 09:46:03 +08:00
Aaron Chen
723b1e36ad
all: fix mismatched names in comments (#29348)
* all: fix mismatched names in comments

* metrics: fix mismatched name in UpdateIfGt
2024-03-26 21:01:28 +01:00
Chen Kai
021ce2ece9 Merge branch 'master' into portal1 2024-03-25 17:14:10 +08:00
fearlessfe
6e23955304 feat: refactor storage interface 2024-03-25 17:09:04 +08:00
Martin HS
14cc967d19
all: remove dependency on golang.org/exp (#29314)
This change includes a leftovers from https://github.com/ethereum/go-ethereum/pull/29307
- using the [new `slices` package](https://go.dev/doc/go1.21#slices) and
- using the [new `cmp.Ordered`](https://go.dev/doc/go1.21#cmp) instead of exp `constraints.Ordered`
2024-03-25 07:50:18 +01:00
Chen Kai
7d720104d3
Merge branch 'ethereum:master' into portal 2024-03-22 21:19:56 +08:00
Martin HS
d9bde37ac3
log: use native log/slog instead of golang/exp (#29302) 2024-03-22 13:17:59 +01:00
Chen Kai
7c6d0d318d
Merge branch 'ethereum:master' into portal 2024-03-22 10:21:00 +08:00
Chen Kai
317997f25f feat:beacon rpc
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-03-22 10:20:49 +08:00
Martin HS
14eb8967be
all: use min/max/clear from go1.21 (#29307) 2024-03-21 13:50:13 +01:00
Martin HS
33a2d825f7 all: update to go version 1.22.1 (#28946)
Since Go 1.22 has deprecated certain elliptic curve operations, this PR removes
references to the affected functions and replaces them with a custom implementation
in package crypto. This causes backwards-incompatible changes in some places.

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-03-20 15:37:23 +08:00
fearlessfe
2b6c5eb292 feat: add cli and fix typ error 2024-03-19 19:40:32 +08:00
Martin HS
ab49f228ad
all: update to go version 1.22.1 (#28946)
Since Go 1.22 has deprecated certain elliptic curve operations, this PR removes 
references to the affected functions and replaces them with a custom implementation
in package crypto. This causes backwards-incompatible changes in some places.

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-03-18 17:36:50 +01:00
Chen Kai
71bc26db8c feat:update readme
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-03-15 21:08:16 +08:00
Chen Kai
e145ffabdd
Merge branch 'ethereum:master' into portal 2024-03-13 13:07:46 +08:00
Felix Lange
758fce71fa
p2p: fix race in dialScheduler (#29235)
Co-authored-by: Stefan <stefan@starflinger.eu>
2024-03-12 19:23:24 +01:00
fearlessfe
27b5139364 feat: add test 2024-03-12 12:40:34 +08:00
fearlessfe
d44009c198 feat: finish traceContentLookup 2024-03-12 12:40:34 +08:00
fearlessfe
6ef3b11b69 feat: define traceContentLookupRes 2024-03-12 12:40:34 +08:00
Chen Kai
12cbf8de50
Merge branch 'ethereum:master' into portal 2024-03-11 21:40:26 +08:00
Kero
3dc549b3d7
p2p/simulations/adapters: fix error messages in TestTCPPipeBidirections (#29207) 2024-03-10 20:01:26 +01:00
Chen Kai
69ed1c63e2 Merge branch 'master' into portal1 2024-03-08 16:29:34 +08:00
fearlseefe
e52ff169cf fix: validate empty receipts 2024-03-08 15:42:33 +08:00
thinkAfCod
3ef0db3662 chore: log when put/get local storage 2024-03-06 21:40:27 +08:00
Chen Kai
5fa84e3566 fix:fix hive rpc bug
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-03-06 21:34:13 +08:00
thinkAfCod
e144a53def chore: log when put/get local storage 2024-03-06 21:18:54 +08:00
Undefinedor
a6d6e8ac41
rpc: remove deprecated method "Notifier.Closed" (#29162) 2024-03-05 14:44:23 +01:00
Chen Kai
2dd60032f1
Merge branch 'ethereum:master' into portal 2024-03-05 10:44:21 +08:00
yzb
a732ad0364
p2p: remove unused argument 'flags' (#29132) 2024-03-04 10:16:05 +01:00
Chen Kai
d5ca1a8880 fix:update utpgo and change discv5 resp timeout
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-29 20:16:49 +08:00
Chen Kai
1942fef8fe
Merge branch 'ethereum:master' into portal 2024-02-29 20:09:50 +08:00
yzb
db4cf69166
all: replace fmt.Errorf() with errors.New() if no param required (#29126)
replace-fmt-errorf

Co-authored-by: yzb@example.cn <yzb@example.cn>
2024-02-29 11:56:46 +02:00
cui fliter
dbc27a199f
all: fix function names in docs (#29128)
Signed-off-by: cui fliter <imcusg@gmail.com>
2024-02-29 11:29:06 +02:00
Chen Kai
2d9017e6a4 fix:fix hive
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-28 20:16:45 +08:00
Chen Kai
43a1863f67
Merge branch 'ethereum:master' into portal 2024-02-26 22:01:07 +08:00
Qt
26724fc2aa
p2p, log, rpc: use errors.New to replace fmt.Errorf with no parameters (#29074) 2024-02-26 11:25:35 +02:00
Chen Kai
3c5dbf1fd8 fix:fix hive test bug
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-25 17:59:39 +08:00
fearlessfe
3a5754f43a fix: Content and Enrs ssz error 2024-02-24 13:11:40 +08:00
Chen Kai
00fcda62fa feat: fix discovery test
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-24 11:04:21 +08:00
Chen Kai
a8ba15d62c fix:add justseen node
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-23 06:43:56 +08:00
Chen Kai
12169d3848 feat:add accept ssz test
Signed-off-by: Chen Kai <281165273grape@gmail.com>
2024-02-22 16:31:34 +08:00
fearlessfe
bcb5d28724 feat: add gossip rpc and do some refactor
1. add gossip rpc method
2. use uint256.Ummarshal method to unmarshal uint256 bytes
2024-02-18 10:24:08 +08:00
fearlessfe
5e657f8423 fix: rpc routing table info 2024-02-18 10:24:08 +08:00
Chen Kai
9461701b0e Merge branch 'master' into portal1 2024-02-12 20:00:57 +08:00
zoereco
2ab365f6d8
all: fix docstring names (#28923)
* fix wrong comment

* reviewers input

* Update log/handler_glog.go

---------

Co-authored-by: Martin HS <martin@swende.se>
2024-02-07 21:10:49 +01:00
Chen Kai
507832ca5e
Merge branch 'ethereum:master' into portal 2024-02-06 20:01:09 +08:00
fearlessfe
8651f5b4af fix: protal protocol type error 2024-02-06 16:46:36 +08:00
fearlessfe
17d1601eec fix: remove unused file 2024-02-06 16:46:36 +08:00
fearlseefe
4cc6cde8c6 feat: add test for message 2024-02-06 16:46:36 +08:00
fearlseefe
8e2253ef6d fix: add log and add static ip 2024-02-06 16:46:36 +08:00
Dimitris Apostolou
8fd43c8013
all: fix typos in comments (#28881) 2024-02-05 22:16:32 +01:00
Chris Ziogas
19af9008f1
p2p: fix accidental termination of portMappingLoop (#28911) 2024-02-05 22:00:46 +01:00
fearlessfe
35b3ac43af feat: add docker file and do some optimize 2024-02-04 14:23:22 +08:00
fearlessfe
c5bf27aaec fix: some portal-hive test err
1. add history prifix for json rpc method
2. fix deleteEnr and recursiveFindContent in rpc-compact test
2024-01-29 18:46:51 +08:00
fearlessfe
3936f0bbee feat: add rpc methods 2024-01-28 15:29:42 +08:00
fearlessfe
c3b1fe2382 feat: add history prefix in portal api 2024-01-28 15:29:42 +08:00