22 votes

What is an Enode ID in Ethereum?

An enode is a way to describe an Ethereum node in the form of a URI. The hexadecimal node ID is encoded in the username portion of the URL, separated from the host by an @ sign. The hostname can only ...
Hudson Jameson's user avatar
14 votes
Accepted

What is an Enode ID in Ethereum?

Expanding on Hudson Jameson's answer: "The hexadecimal node ID is encoded in the username portion of the URL" The username portion is a 512-bit public key that is used to verify communication came ...
linagee's user avatar
  • 6,138
12 votes
Accepted

Why does Ethereum require use of UDP (and not TCP) for discovery?

UDP-based discovery is one of the main paradigms of peer discovery. For example, Universal Plug and Play (UPnP) uses the UDP-based Simple Service Discovery Protocol (SSDP), and BitTorrent has a UDP-...
Richard Horrocks's user avatar
8 votes

Automatic peer discovery in a private blockchain

No, there is no peer discovery methods other than modifying the boot nodes. The IP addresses are configured in the source code of the clients. If the IP changes, the list of the last bootstrap node ...
niksmac's user avatar
  • 9,673
6 votes

How does Ethereum client select which peers to synchronise with?

Only a partial answer for the first couple of sub-questions... How many nodes do we connect to? The maximum number is set to 25 by default, but can be configured using the --maxpeers flag on the ...
Richard Horrocks's user avatar
5 votes
Accepted

Why is Geth trying to connect to private network IP addresses (RFC1918)

I have the same issue but with parity on a Hetzner server. Is this a part of the node discovery protocol? It would only make sense, if geth would be assuming that there are other nodes in the local ...
q9f's user avatar
  • 32.9k
4 votes

Automatic peer discovery in a private blockchain

In a private chain the discovery protocol didn't work. you have one of 2 options use --bootnodes or a static file /static-nodes.json where you store your nodes. Idea : you could write a simple code ...
Badr Bellaj's user avatar
  • 18.8k
3 votes
Accepted

Best Discovery Protocol implementation

You can use implementations of existing clients: Besu - Java implementation Geth - Go implementation Parity1 - Rust implementation 1 At this point, I would be careful to use Parity's implementation ...
import-antigravity's user avatar
3 votes
Accepted

How to get Nodes on local Geth Private Network to Discover Peers OF THEIR PEERS

Bootnodes is a cheap and effective solution to aid the network self-discovery, but they need to catch up with a proper genesis file to isolate your network. When you run geth, the genesis block is ...
M. Riggi's user avatar
  • 301
3 votes

How Geth and Parity resolve timestamps when validating block headers?

I doubt there has ever been an actual case of this happening (don't quote me on that unless you also quote that I said not to quote me on it). In order for a block to be valid by Parity and not valid ...
natewelch_'s user avatar
2 votes

Sharing enodeURLs on a private blockchain

I'd consider using a distributed key-value store such as ETCD (https://coreos.com/etcd/docs/latest/getting-started-with-etcd.html). You could set up an ETCD alongside ethereum and share arbitrary data ...
John Henry's user avatar
2 votes
Accepted

Discovery Protocol Broadcasting

Correct. Ethereum node discovery works by nodes gossiping enode addresses between each other, so you have to connect to at least one node manually. The mainnet/testnets get around this inconvenience ...
natewelch_'s user avatar
2 votes

How Geth and Parity resolve timestamps when validating block headers?

Just brainstorming here but I guess the reason block times are accurate is for the same reason the miners agree on all of the other parameters a block must have. Eg they agree that they pay 3 Eth, at ...
willjgriff's user avatar
  • 1,658
2 votes
Accepted

How many nodes does Geth attempt to connect to by default?

Geth attempts to connect to 25 peers by default, as stated on the CLI commands page. This can be changed with: --maxpeers value Maximum number of network peers (network disabled if set to 0) (...
Shane Fontaine's user avatar
2 votes
Accepted

How to retrieve IP address and Port from Ethereum Node Records (ENR)?

There is also a rust enr-cli library to assist with decoding ENR strings. You can install it via cargo install enr-cli --version 0.1.0-alpha An example of its use is: $ enr-cli -e -...
Age's user avatar
  • 36
1 vote

How to retrieve IP address and Port from Ethereum Node Records (ENR)?

You can use the enr library (written in rust). use enr::Enr; fn main() { let enr_string = "-Iu4QGuiaVXBEoi4kcLbsoPYX7GTK9ExOODTuqYBp9CyHN_PSDtnLMCIL91ydxUDRPZ-jem-...
pd176's user avatar
  • 439
1 vote

Bootnode Discovery with external IPs instead of local ones

So here is how I solved my issue. I host my kubernetes cluster in google cloud, but the same concepts should apply to any provider. First I created the clusters within a predefined VPC with subnets. ...
Fábio's user avatar
  • 111

Only top scored, non community-wiki answers of a minimum length are eligible