Whitepaper - Ethereum Classic With Cover
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Ethereum</strong> <strong>Classic</strong> Documentation, Release 0.1<br />
Public, private, and consortium blockchains<br />
Most <strong>Ethereum</strong> projects today rely on <strong>Ethereum</strong> as a public blockchain, which grants access to a larger audience<br />
of users, network nodes, currency, and markets. However, there are often reasons to prefer a private blockchain or<br />
consortium blockchain (among a group of trusted participants). For example, a number of companies in verticals,<br />
like banking, are looking to <strong>Ethereum</strong> as a platform for their own private blockchains.<br />
Below is an excerpt from the blog post On Public and Private Blockchains that explains the difference between<br />
the three types of blockchains based on permissioning:<br />
• Public blockchains: a public blockchain is a blockchain that anyone in the world can read, anyone in the<br />
world can send transactions to and expect to see them included if they are valid, and anyone in the world<br />
can participate in the consensus process – the process for determining what blocks get added to the chain<br />
and what the current state is. As a substitute for centralized or quasi-centralized trust, public blockchains<br />
are secured by cryptoeconomics – the combination of economic incentives and cryptographic verification<br />
using mechanisms such as proof of work or proof of stake, following a general principle that the degree to<br />
which someone can have an influence in the consensus process is proportional to the quantity of economic<br />
resources that they can bring to bear. These blockchains are generally considered to be “fully decentralized”.<br />
• Consortium blockchains: a consortium blockchain is a blockchain where the consensus process is controlled<br />
by a pre-selected set of nodes; for example, one might imagine a consortium of 15 financial institutions,<br />
each of which operates a node and of which 10 must sign every block in order for the block to be<br />
valid. The right to read the blockchain may be public, or restricted to the participants, and there are also<br />
hybrid routes such as the root hashes of the blocks being public together with an API that allows members<br />
of the public to make a limited number of queries and get back cryptographic proofs of some parts of the<br />
blockchain state. These blockchains may be considered “partially decentralized”.<br />
• Private blockchains: a fully private blockchain is a blockchain where write permissions are kept centralized<br />
to one organization. Read permissions may be public or restricted to an arbitrary extent. Likely applications<br />
include database management, auditing, etc internal to a single company, and so public readability may not<br />
be necessary in many cases at all, though in other cases public auditability is desired.<br />
While these private/consortium blockchains may not have any connection to the public blockchain, they still<br />
contribute to the overall <strong>Ethereum</strong> ecosystem by investing in <strong>Ethereum</strong> software development. Over time, this<br />
translates into software improvements, shared knowledge, and job opportunities.<br />
How to connect<br />
Geth continuously attempts to connect to other nodes on the network until it has peers. If you have UPnP enabled<br />
on your router or run <strong>Ethereum</strong> on an Internet-facing server, it will also accept connections from other nodes.<br />
Geth finds peers through something called the discovery protocol. In the discovery protocol, nodes are gossipping<br />
with each other to find out about other nodes on the network. In order to get going initially, geth uses a set of<br />
bootstrap nodes whose endpoints are recorded in the source code.<br />
Checking connectivity and ENODE IDs<br />
To check how many peers the client is connected to in the interactive console, the net module has two attributes<br />
that give you info about the number of peers and whether you are a listening node.<br />
> net.listening<br />
true<br />
> net.peerCount<br />
4<br />
To get more information about the connected peers, such as IP address and port number, supported protocols, use<br />
the peers() function of the admin object. admin.peers() returns the list of currently connected peers.<br />
58 Chapter 1. Contents