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.
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
network.
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 factors:
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.
Trust:
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 one.
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 transactions.
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