Commit graph

831 commits

Author SHA1 Message Date
thinkAfCod
1ae723db49 fix: fix test case 2024-06-03 14:30:21 +08:00
thinkAfCod
ba87b9da66 fix: fix memory leak 2024-06-03 14:30:21 +08:00
Chen Kai
7b4b081ff4 Revert "fix: close conn after read"
This reverts commit c6766840d4.
2024-06-01 08:21:17 +08:00
Chen Kai
3a133719f8 Revert "fix: upgrade utp version for using sync pool to get buffer"
This reverts commit 210a81d4b3.
2024-06-01 08:21:17 +08:00
Chen Kai
2826476c80 Revert "fix: test case and upgrade utp-go version"
This reverts commit 02b87d96e4.
2024-06-01 08:21:17 +08:00
thinkAfCod
02b87d96e4 fix: test case and upgrade utp-go version 2024-05-31 14:02:18 +08:00
thinkAfCod
210a81d4b3 fix: upgrade utp version for using sync pool to get buffer 2024-05-31 14:02:18 +08:00
thinkAfCod
c6766840d4 fix: close conn after read 2024-05-31 14:02:18 +08:00
Felix Lange
94a8b296e4
p2p/discover: refactor node and endpoint representation (#29844)
Here we clean up internal uses of type discover.node, converting most code to use
enode.Node instead. The discover.node type used to be the canonical representation of
network hosts before ENR was introduced. Most code worked with *node to avoid conversions
when interacting with Table methods. Since *node also contains internal state of Table and
is a mutable type, using *node outside of Table code is prone to data races. It's also
cleaner not having to wrap/unwrap *enode.Node all the time.

discover.node has been renamed to tableNode to clarify its purpose.

While here, we also change most uses of net.UDPAddr into netip.AddrPort. While this is
technically a separate refactoring from the *node -> *enode.Node change, it is more
convenient because *enode.Node handles IP addresses as netip.Addr. The switch to package
netip in discovery would've happened very soon anyway.

The change to netip.AddrPort stops at certain interface points. For example, since package
p2p/netutil has not been converted to use netip.Addr yet, we still have to convert to
net.IP/net.UDPAddr in a few places.
2024-05-29 15:02:26 +02:00
thinkAfCod
c7e93e70cc fix: find node info 2024-05-29 20:26:30 +08:00
lilasxie
153f8da887
p2p/nodestate: remove unused package (#29872) 2024-05-29 12:11:18 +02:00
bugmaker9371
daf4f72077
p2p/simulations: remove stale information about docker adapter (#29874) 2024-05-29 12:09:58 +02:00
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