13.06.2017 Views

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!