ntoll.org

(Everything I say is false...)

Peer to Peer ~ Concise and Simple

(As with all "concise and simple"
articles I assume no prior knowledge of the subject and keep the length to
less than 1500 words.)

What is the best way
to organise diverse entities co-existing together in large dynamic groups? How
are such arrangements created? Who is responsible for making things work?

These are important questions in
political philosophy
and
Internet engineering and
show that both subjects, at an abstract level, share much in common.
From a political perspective the first question can be answered with
different forms of government, the second by investigating concepts like
justice, rights and law while the third question concerns the role of power
and authority. From a technological perspective the first question concerns
"architecture" (how computational resources fit together), the second is
answered by process, requirements and design while the third question concerns
capability, roles, standards and (again) authority.

This post concerns
peer to peer
(P2P) architecture ~ where peers of
equal status (devices running appropriate software) cooperate in a loose
decentralised network for mutual benefit. Peer to peer is the antithesis of
hierarchy - where some have elevated status and power over others. The image
below illustrates how this changes the way devices connect and communicate. The
peer to peer network on the left is simply a collection of devices (in blue)
with different numbers of connections between them (in grey). The right hand
image is the classic client (blue) / server (red) hierarchy where many
clients rely on a single server to fulfil their functionality.

Sometimes it is important to have hierarchy: it is best that a consultant
surgeon is in charge of an operation rather than a well-meaning democracy of
volunteers. In an ideal world, hierarchy is best when the obvious skill,
knowledge and capabilities of an entity are acknowledged to bring about
greater benefit for all. In an ideal world, those with elevated status and
authority would have earned it via reliable and consistent public displays of
such skill, knowledge and capabilities. In an ideal world, the responsibility
and trust associated with status and authority would be a serious yet welcome
obligation. Unfortunately, we do not live in an ideal world and hierarchy is
often the cause of much that is bad and frustrating.

Some technologies, such as
the web,
are hierarchical and inadvertently introduce leverage points used to
exploit or gain power over users. The web has a client/server
architecture where information and the capabilities to change information
are firmly within the realm of the server (the website). The client, using a
browser, has to request the server deliver information to them and
make changes for them. Unfortunately, user's data is often stored and
delivered in a way that makes it hard to migrate between services. Personal
data is analyzed by websites and sold via targeted advertising or (worse)
handed to governments and other third parties without explicit consent.
Disruption ensues when websites break: there's no way to get important
documents if the server is down. The client/server model is centralisation of
power and websites are single points of failure.

Contrast the web with peer to peer architecture where the loose and
decentralised organisation of computing resources make it very hard for
third parties to control users. This simple idea can be illustrated
by two popular yet different peer to peer systems:
Bittorrent (for sharing
large digital assets such as audio and video files) and
Bitcoin (a decentralised digital
currency).

For Bittorrent, Bitcoin and many other peer to peer systems the three
questions I asked at the start can be answered thus:

The most effective way to organise a diverse and dynamic group of
participants is with peer to peer architecture (this can be for both
technical and political reasons).

The means of creating such a network is via an open protocol describing
the expected behaviour of participants (including checks to ensure
correctness).

It is the participant's responsibility that they correctly implement
the protocol in order to make the system function correctly.

Bittorrent is an incredibly efficient way to share large files because
of its peer to peer architecture. Imagine that you wanted me to copy
a paper edition of
War and Peace.
I'd probably photocopy and give you every page in order. It's how
large files are usually downloaded: linearly from server to client.
Unfortunately, if I were busy or, worse still, had lost my
original you wouldn't get a copy. Bittorrent works differently: it's better if
I told you who else had a copy so you could ask them to provide different
pieces of the original that you then collated. This is faster because your
peers share the work concurrently. Furthermore, if one of the peers failed to
deliver their piece you'd notice it was missing and request it from another.
Therefore, there is no single point of failure. Finally, if someone else wanted
a copy then you could provide pieces even if you'd not yet received
the complete work. As a result peers give as well as take value from
the network.

In reality, users download a "torrent" file containing details of the
resource they're interested in and who to ask for it. They become a node on the
bittorrent network and request pieces from the identified peers. As
clients download and re-assemble the pieces of the file, others on the network
request pieces in turn. Thus, it takes a relatively short time
for large files to be delivered. Furthermore, popular files spread around the
network and become easier to deliver since there are more peers to provide
pieces.

Some websites (most famously the
PirateBay) collect torrent files and
provide search facilities. Other sites, called "trackers", monitor which peers
have what files - although more recent versions of bittorrent
allow peers to do this themselves. The video below, made by the
creators of bittorrent, provides a good summary:

The superior performance,
hugenumber of
users
and uncontrollable availability of pirated content
has led the incumbent "creative" industry to disrupt illegal sharing
through legal, economic and political means (for example, the PirateBay is
censored within the UK). This is
easier said than done and in no way
changes the effectiveness of the Bittorrent network itself. Users quickly find
other means of finding torrent files.

Bittorrent uses a peer to peer architecture because it is the best technical
solution. The legal, economic and political fallout emerged later. In contrast,
Bitcoin had political and economic motivations from the start and peer to peer
enables such ends.

Bitcoin is a decentralised digital currency based upon an
open protocol.
Unlike regular currency, controlled by banks and governments, Bitcoin is
designed to have no central issuing authority and instead relies on the
machinations of the protocol to regulate balances, transactions and the issuing
of currency. Like cash, transactions can be anonymous. Bitcoins can be
subdivided into 100-million smaller units called "satoshis" and, at the time of
writing, one bitcoin is worth just over
£8.82.

Transactions reference Bitcoin addresses created by the potential recipient.
A Bitcoin user can have many Bitcoin addresses and may even decide to use one
address per transaction. They simply identify the recipient:

1HcrwtLrbe97aRBD5KCn5izumXp8N7nXcS

Sometimes they are displayed as QR-codes to be scanned by mobile
phones:

Assuming a positive balance you can transfer bitcoins to me using the
Bitcoin address above (you can't have a negative Bitcoin balance). Your
Bitcoin software publishes and
cryptographically
signs the details of the transaction and peers check and verify the
details before adding it to a set of recent transactions called a "block".
Blocks are distributed around the network so balances and transfers
are tracked to avoid double spending. The protocol is designed so attackers
would need impossibly large amounts of time and computing power in order
to subvert the chain of blocks tracking transactions.

New Bitcoins are "discovered" by peers on the network as a reward for
solving the computationally hard problem that is part of the process for
creating new transaction blocks. The difficulty of the problem is adjusted by
the protocol to ensure that bitcoins are issued at a consistent rate. This
process is called "mining" and the supply of bitcoins will never exceed 21
million. When this limit is reached miner's efforts will be rewarded with a
small transaction fee. The video below explains Bitcoin from an end user's
perspective:

Bitcoin is complex and many details have been hidden in my explanation.
However, it is an open and audited technology and hundreds of thousands of
people trust it enough to use it every day.

Concerns have been raised about tax-avoidance, anonymous payment for illegal
goods and fraud via the use of Bitcoin but this also applies to traditional
currencies. Ultimately, the peer to peer nature of Bitcoin is the mechanism for
liberating users from the interference of banks and governments. It remains to
be seen if Bitcoin will become popular and disrupt the financial system in the
same way that Bittorrent has done with content delivery.

Peer to peer systems challenge the status-quo with a decentralising power
shift. Furthermore, creating such technology is far easier and more effective
than traditional means of political change.