Nakamoto Research

Bitcoin network details
Version v0.3.0
Updated
Author obxium License BY-NC-ND

The Bitcoin network

The original Bitcoin network model from the version 0.1.0 era was a bit more convoluted than the contemporary network model today. Here is a representation of the networking involved in Bitcoin back in 2009:

Early Bitcoin network diagram

This diagram highlights important facets of the early Bitcoin network, its reliance on IRC for peer discovery, and the importance of Satoshi’s seed node in bootstrapping the network. It also shows a decentralized network design from the start, with direct peer-to-peer connections forming the backbone of the system.

Bitcoin version 0.1.0 (2009)

Network model

The network model in the earliest Bitcoin release was much simpler compared to modern implementations.

It still used a peer-to-peer (P2P) architecture, but with fewer node types and simpler communication protocols.

Node types

In version 0.1.0, there was essentially only one node type: a full node that mined, validated, and relayed transactions and blocks.

The concept of lightweight clients didn’t exist yet.

Communication protocol

Bitcoin version 0.1.0 used TCP/IP for communication like modern versions do today.

The default port was TCP/8333, which remains the standard today. The protocol was much simpler in the earlier versions, with fewer message types.

Bootstrapping and peer discovery

The bootstrapping and peer discovery features from early versions differ from contemporary Bitcoin:

Block and transaction propagation

The basic mechanism functioned like today: nodes would announce new blocks and transactions to their peers. The protocol for doing so was less optimized, and had fewer safeguards against potential attacks compared to today.

Network topology

The network was much smaller and less diverse in its early days. Most nodes were likely to be directly connected to a significant segment of the entire network.

Security measures

Early versions had fewer security measures compared to modern implementations.

DoS protection and peer banning mechanisms were more basic.

Network address translation

There was no built-in UPnP support for automatic port forwarding. There was no NAT traversal, so users behind NAT needed to manually configure port forwarding on their routers.

Protocol versioning:

The concept of protocol versioning existed, but with fewer backwards compatibility considerations due to the smaller, more homogeneous network.

Encryption

No version of Bitcoin encrypts peer-to-peer communications.

Evolution in early versions

The early Bitcoin network model, especially in v0.1.0, was a proof of concept that demonstrated the core principles of a decentralized, peer-to-peer digital currency. Its simplicity allowed for rapid development and deployment, but also meant it lacked many of the optimizations and security features found in contemporary Bitcoin implementations.

The bootstrapping and peer discovery mechanisms, particularly the use of IRC, were creative solutions to the challenge of creating a decentralized network from scratch. These features also introduced potential points of centralization and security risks, addressed in later versions as the Bitcoin network grew and matured.

Network actors

Here are some interesting addresses related to key actors in early Bitcoin development.

Satoshi Nakamoto

On January 10, 2009, Hal Finney wrote a public post addressed to Satoshi Nakamoto about an issue he was having with connecting his node:


Hi Satoshi - I tried running bitcoin.exe from the 0.1.0 package, and
it crashed. I am running on an up to date version of XP, SP3. The
debug.log output is attached. There was also a file db.log but it was
empty.

The crash allowed me to start up a debugger, but there were no
symbols. The exception was at address 00930AF7. The displayed call
stack was 942316 called by 508936.

When I have a chance, I'll try building it, although it looks like it
would take me a while to acquire all the dependencies.

Hal

He shared a debug.log file that reveals both his own, and most probably (due to limited number of users at the time) Satoshi Nakamoto’s IP address as part of an error message in the log:

IRC :u4rfwoe8g3w5Tai!n=u4rfwoe8@h-68-164-57-219.lsanca54.dynamic.covad.net QUIT :Read error: 131 (Connection reset by peer)

This line in Finney’s debug.log reveals some fun details:

Examining the entirety of the log demonstrates that Finney’s client can’t connect to a Bitcoin peer, because as shown by the IRC error, Nakamoto’s host has disconnected from IRC (Connection reset by peer), which implies that Nakamoto’s PC was offline or connectivity disrupted while Finney’s client was trying to communicate with Nakamoto’s.

Because there were so few Bitcoin node operators back then, the logical conclusion about this IP address is that was in use by Nakamoto.

Hal Finney

You can find Hal Finney’s IP address and Bitcoin client IRC nickname in the publicly shared debug.log file referenced in the preceding section.

  
  ╭───────────────────────────────────────────────────────────────────────╮
  │ ⚠ THIS CONTENT MAKES NO CLAIMS ABOUT THE IDENTITY OF SATOSHI NAKAMOTO │
  ╰───────────────────────────────────────────────────────────────────────╯