I like the intro, very clear! I also like the narrative cross-referencing the docs, which people will sooner or later need to do as well. I have to admit that I only glanced over the code. This caught my attention: "In the EndPoint specification, it demands the "BE encoded 4-byte" address, which is exactly what's outputted by self.address.packed." Does this mean that Ethereum only supports IPv4? I searched around and…
"bytes address; // BE encoded 4-byte or 16-byte address (size determines ipv4 vs ipv6)"[0]