ICO HANDBOOK – Token Generating Event (T.G.E.) *

What are tokens?

The primary difference between Ethereum and any other cryptocurrency is that it’s not just a
currency, it’s an environment. Here anyone can take advantage of the blockchain technology to
build their own projects and DAPPS (decentralized applications) through smart contracts. This is a
very important distinction because this very thing shows us the true scope of what is possible in

Ethereum is like the internet and all the DAPPS as websites that run on it. These DAPPS are all
decentralized and not owned by an individual, they are owned by people. The way that happens is
usually by a crowd-sale termed as “ICO”. Basically, people buy tokens of the DAPP in exchange of
their owned ether.

These tokens are usually of 2 varieties:

Usage Tokens:
These are the tokens that act like native currency in their respective DAPPS. While these tokens have
monetary value they won’t give you any particular rights or privilege within the network itself.

Work Token:
These are the tokens that identify people as a sort of shareholder in the DAPP. If someone is a token
holder then he/she has the right to vote over taking decision or has some certain rights or privilege
within the network.

How Tokens will be created?

Step 1: Defining a token
We would be required to define at least the following:
The Token’s Name
The Token’s Symbol
The Token’s Decimal Places
The Number of Tokens to start up with

Step 2: Coding the contract
We would then be required to code the token contract on solidity and assign value to the
parameters in Step 1. Along with it certain other rules will be added like giving the creator all the
tokens initially, transfer the token to a sender for ether, the amount of token
developer/contributor/founder receives. After they are defined, it’s time to deploy it to the
blockchain and test it.

Step 3: Testing the token on TestNet
Next we are going to deploy the contract to the Test Network to see if it works. The contract just
coded would be imported to the contract creation area in the Ethereum wallet. If the code works the
token gets generated. This token contract created has a contract address which when used in the
add token area will give the creator of the contract the total amount of tokens created. These tokens
can now be sent or sold to public.

Step 4: Verifying the Source Code
This is going to be important for various reasons, mainly verifying the validity of the token to the
public. It does not technically matter as the token will still be usable but it is good to verify it so
people know that nothing shady is going on. There are certain steps and procedures that will be
required to get followed in the main Ethereum Wallet in order to verify and publish it into the

Step 5: Bringing it on The Main Ethereum Net
Now when everything is working, it is the time to deploy it on the Main Net and let other people use
it. It is the repetition of the steps 3 and 4 but this time the main Ethereum Wallet must be connected
to the Main Net. Now we have a token on the ETH MainNet that other people can use. It is now
primed to be sent to others and received.

What are ICOs?

ICOs or Initial Coin Offerings are basically crowd sales, the cryptocurrency version of crowdfunding.
The ICOs have been truly revolutionary and have managed to accomplish these tasks:
They have provided the simplest path by which DAPP developers can get the required funding
for their project.
Anyone can become invested in a project they are interested in by purchasing the tokens(work
tokens) of that particular DAPP and become a part of the project themselves.

How does an ICO work?

Firstly, the developer issues a limited amount of tokens. By keeping a limited amount of tokens they
are ensuring that the tokens itself have a value and the ICO has a goal to aim for. The tokens can
either have a static predetermined price or it may increase or decrease depending on how the crowd
sale is going.

The transaction is a pretty simple one. If someone wants to buy the tokens they send a particular
amount of ether to the crowd sale address. When the contract acknowledges that this transaction is
done, they receive their corresponding amount of tokens. Since everything on Ethereum is
decentralized, an ICO is considered a success if it is properly well-distributed and a majority of its
chunk is not owned by one entity.

How Does An Ethereum Token Get Its Value?

Tokens get their value from the same place that most things get their value. They are mainly two

Supply & Demand:
More the demand and lesser the supply, more will be the price of the product. Where the demand
and the supply curves intersect gives the price equilibrium. But, how do Ethereum Tokens take care
of supply and demand? While coding the token contract we saw that there is a fixed amount of
tokens that can be issued in the first place. Each and every token is accounted for because like ether,
token transactions are also recorded in the open ledger. If in case the developer wants to change the
number of tokens issued, then they will have to create a new contract. Any code that is issued in the
blockchain is irreversible so the old contract cannot be changed in any way. So, now we have a fixed
and finite amount of tokens, that takes care of the “supply” part. The demand depends on a lot of
factors like- the quality of the DAPP, people’s excitement regarding the DAPP, whether been
properly marketed and a true problem solver. If the demand of the DAPP is sufficiently high, and
with the supply remaining constant, it goes without saying that the value of the token is going to be
pretty high.

Like with any currency, tokens will only have value if people have trust in it. Trust comes from a lot
of sources like the credibility of the developers, the kind of service provided by the DAPP etc.

Proof of Stake (PoS)

Proof of stake is a way to validate transactions and to achieve the distributed consensus. It is an
algorithm, and the purpose is the same as the proof of work but the process to reach the goal is
quite different. Unlike the proof-of-Work, where the algorithm rewards miners who solve
mathematical problems with the goal of validating transactions and creating new blocks, with the
proof of stake, the creator of a new block is chosen in a deterministic way, depending on its wealth,
also defined as stake. All the digital currencies are previously created in the beginning, and their
number never changes. This means that in the PoS system there is no block reward, so, the miners
take the transaction fees. This is why, in fact, in this PoS system miners are called forgers.

Proof of Work (PoW)

There are some ways to tie the coin supply to a mathematical formula. One of the simplest ways is
to make it a “merged mining” with ether, meaning that anyone who finds a block on Ethereum
would also get a reward from the coin, given that anyone calls the reward function on that block.
One can do it using the special keyword coinbase that refers to the miner who finds the block. It’s
also possible to add a mathematical formula, so that anyone who can do math can win a reward.
Ethereum was launched using such system for its security model, but is planning to move from a
Proof of Work security model into a mixed proof of stake model. One can still create his own
Ethereum based currency that has a proof of work issuance if he likes Hashing as a form of random
issuance of coins.

Once the contract is online and the function “Proof of work” is selected and executed it randomly
generates the public key until the one gets generated that allows the transaction to go forward. The
node who finds the one will be awarded 1 token for every minute that has passed since the last
reward was given. This process of trying to find the number that will give a reward is called mining. If
difficulty rises it can be very hard to find the number but it will always be easy to verify that
someone found one.

From a technical point of view, mining process is an operation of inverse hashing: it determines a
number, so the cryptographic hash algorithm of block data results in less than a given threshold. This
threshold, called difficulty, is what determines the competitive nature of mining: more computing
power is added to the network, the higher this parameter increases, increasing also the average
number of calculations needed to create a new block. This method also increases the cost of the
block creation, pushing miners to improve the efficiency of their mining systems to maintain a
positive economic balance.

Ethereum’s switch to PoS with virtual mining

In a distributed consensus-based on the proof of Work, miners need a lot of energy to fulfill a
transaction and these energy costs are paid with fiat currencies, leading to a constant downward
pressure on the digital currency value. Developers were pretty worried about this problem, and the
Ethereum community wanted to exploit the proof of stake method for a more greener and cheaper
distributed form of consensus. Also, rewards for the creation of a new block were different. With
Proof-of-Work, the miner may potentially own none of the digital currency he/she is mining. In
Proof-of-Stake, forgers are always those who own the coins minted.

Introducing a switch from proof-of-work to proof-of-stake requires a lot of work and research by the
developers. Casper is one of the more advanced solutions to introduce such a change. It is a security
deposit based economic consensus protocol. That is quite a mouthful, but the concept is simple to
explain. Network nodes become “bonded validators” and place a security deposit to facilitate the
generation of PoS blocks.

To put Casper into perspective, it will allow any member of the Ethereum ecosystem to participate in
creating these new PoS blocks. When the nodes post a security deposit, they can bet on which block
will be included in the future. Betting with the consensus will result in a reward, whereas betting
against the consensus can result in losses. Attempting to exploit or game the consensus system will
result in your security deposit becoming null and void. Casper is designed to create a fair PoS
consensus mechanism.

How can one be a Forger (Miner) ?

If the new proof of stake consensus protocol -Casper will be implemented, there will exist a validator
pool. Users can join this pool to be selected as the forger. This process will be available through a
function of calling the Casper contract and sending Ether or the coin who powers the Ethereum
network together with it. There is no priority scheme for getting inducted into the validator pool
itself. Anyone can join in any round they want, irrespective of the number of other joiners.
The reward of each validator will be somewhere around 2-15%. There will be no imposed limit on
the number of active validators (or forgers), but it will be regulated economically by cutting the
interest rate if there are too many validators and increasing the reward if there are too few.

Centralized Admin Role

All DAPPS are fully decentralized by default, but that doesn’t mean they can’t have some sort of
central manager with the ability to mint more coins, to ban some people from using the currency
token. These features can be added but the catch is that these can only be added at the beginning,
so all the token holders will always know exactly the rules of the game before they decide to own

For that to happen, we would need a central controller of currency. This could be a simple account,
but could also be a smart contract and therefore the decision on creating more tokens will depend
on the contract. If it’s a democratic organization then that can be up to vote, or maybe it can be just
a way to limit the power of the token owner.

In order to do that we can use a powerful property of contracts -inheritance. Inheritance allows a
contract to acquire properties of a parent contract, without having to redefine all of them. This
makes the code cleaner and easier to reuse. This code is added to the first line of the solidity code
before the token function.

This creates a very basic contract that doesn’t do anything except define some generic functions
about a contract that can be owned. Now the next step is to add the ownership to the contract.
This means that all the functions inside Token now can access the variable owner and the modifier
only Owner. The contract also gets a function to transfer ownership. Since it might be interesting to
set the owner of the contract at startup, we can also add this to the constructor function.

Consensus Voting

Initially while designing a voting scheme in Ethereum, the platform would not compute the final tally
until the final voter cast his/her vote thus requiring 100% participation. The second issue arose
when the final voter was able to compute the tally before casting a vote. This caused a problem as
knowing the vote tally upfront may influence a person’s vote. However later using Ethereum and
cryptography, these problems were thus solved:

In the election admin sends Ethereum a ‘white list’ of voters. Later, when a voter registers for an
election, he or she puts down a small deposit. Voters then have a limited time to cast their vote, or
lose the deposit. When a vote is cast, it is first encrypted before being submitted to Ethereum. Once
all the votes are in or the time limit for voting is over, Ethereum computes the tally, keeps the votes
private and once the final voter casts a vote, he or she cannot change that vote, even after
computing the tally.

Ethereum Accounts

Accounts play an important role in Ethereum. There are two types of accounts, externally owned
accounts and contract accounts. The externally owned accounts are referred to simply as accounts
and contract accounts will be referred to as contracts.

Externally owned accounts:
has an ether balance,
can send transactions (ether transfer or trigger contract code),
is controlled by private keys,
has no associated code.
Contract accounts:
has an ether balance.
has associated code.
code execution is triggered by transactions or messages received from other contracts.
when executed can perform operations of arbitrary complexity and manipulate its own
persistent storage and can call other contracts.

This generic notion of account subsuming both externally owned accounts and contracts is justified
in that these entities are so called state objects. These entities have a state, accounts have balance
and contracts have both balance and contract storage. The state of all accounts is the state of the
Ethereum network which is updated with every block and which the network really needs to reach a
consensus about. Accounts are essential for users to interact with the Ethereum blockchain via

All action on the Ethereum blockchain is set in motion by transactions fired from externally owned
accounts. Every time a contract account receives a transaction, its code is executed as instructed by
the input parameters sent as part of the transaction. The contract code is executed by the Ethereum
Virtual Machine on each node participating in the network as part of their verification of new blocks.

*Written by RPLANX Technology Pvt., Ltd. . Many thanks for their expert document on ICOs