ICO, short for Initial Coin Offering, derives from stock market IPO’s where a company starts to list their shares on exchange. With ICO it is a bit similar and leads to people obtaining coins in subscriptions, which later are available to trade publicly. In this article we are going to talk about what ICO are and how startups create ICOs using a new programming language called Solidity.

There is a reason why there are high concentrations of startups in San Francisco area. Venture capital money is much easier there than anywhere in the world. However, if we look at the data, there is a corresponding large concentration of blockchain startups there that are very much distributed globally. This is because of token sales which have de-marketized funding for startups. Anyone anywhere can now raise an insane amount of capital without dealing with brokers, underwriters, market regulators and classic exchanges.

ICOs are new ways to fund projects through the sales of crytocoins also called tokens. As the internet became mainstream in the 90’s, innovations absolutely flourish; people started realizing that the internet enables the creation of new type of business with global reach. The need for an online payment method became apparent and software’s were created to incorporate money transfer system like ACH and VISA using the internet. These work well enough but payment needs a clearinghouse “a middlemen” to facilitate all transactions. Because of this, transactions were slow and require a fee. A few earlier pioneers realized that the payment protocol could transmit money directly without middlemen and it would be a cheap and faster solution. Few attempts were made by computer scientists such as Adam Back, Wei Dei, Nick Szabo and many more. However, none of them were able to succeed because they don’t utilize the correct combination if technical ideas.

Then in 2008, an unknown programmer named Satoshi Nakamoto released a whitepaper and associated codes for a digital currency he called Bitcoin. Bitcoin is a peer to peer protocol and a set of rules that governs storage, creation, and transmission of monetary value online. It is not owned by anyone but any individual can build applications on top of it. Similar to how no one owns Email protocol like IMAP and POP3 but Google and Yahoo have built email services on top of them. The Bitcoin protocol uses public key cryptography to create a key peer that control access to Bitcoin. The key peer consists of a private key and derived from the private key is a unique public key. The public key is used to receive Bitcoin and the private key is used to sign transactions to spend those Bitcoins.

Think of the public keys as similar to bank accounts number and private key as its secret pin. All transaction s are arranged into chunks of data called blocks. These blocks lead to one another forming a chain of blocks or blockchain. Computers that verify and record these transactions called miners store a copy of this blockchain. These pieces of random, useless but difficult math problem uses the computer computing power and get paid in Bitcoin by offering proof of the computational work. This is how the network chain is secured and makes the blockchain immutable. An attacker will need more computing power than 51% of the network to manipulate the blockchain and spend money they don’t actually own which has made Bitcoin more secured all these years.

Developers immediately solved the potential of blockchain technology for use cases and many of them use the Bitcoin sort codes adding some new features to it. They launch their own cryptocurrencies like Litecoin, Mastercoin etc. But creating, securing and maintaining a blockchain network from scratch is very hard. In 2013, a developer named Vitalik Buterin created a new blockchain called Ethereum to make it easy for anyone to create blockchain applications on top of it without having to bootstrap a blockchain network themselves. Ethereum has its own built-in programming language that allows users to write software with it to solve any reasonable computational problems. Bitcoin also has its own script language but Satoshi limited its functionality for security reasons.

With Ethereum’s language Solidity, anyone can create what is called smart contact. A smart contact is a protocol that defines financial rules with a clear cryptographic way of verifying transactions in a decentralized way i.e. without the use of a central server. Every cryptocurrency can be considered as a smart contract. Smart contracts can also be used to create all sort of decentralized applications that are owned by the community rather than a central group.

The Ethereum blockchain calls its intrinsic token Ether and like Bitcoin, it also contains a log of transactions like events. But it can be filled with varieties of event information. When a transaction is sent to a centralized account, the code associated with the contract account is executed by the Ethereum Virtual Machine (EVM) run by miners. Each miner goes through the transaction listed in the blocks, run the associated codes and stores the resulting value getting rewarded with Ether. This is why Ethereum is sometimes called a World Computer which means you can programmatically create any kind of financial contracts like derivatives, bonds, insurance or any legal transactions without the need to pay millions in legal and clearing fees.

Software solutions and applications are changing the world of finance for many years, but it took for the emerging of blockchain to see an absolute explosion in the type of smart contract called Initial Coin Offering (ICO). An ICO is a way to crowdfund by issuing a token to the public. This token can be used to trade, or to access some scarce resources of the project like in the case of Filecoin storage space or in the case of OpenMined datasets. You can also create your own economic model defining economic incentives using a token. This is really important because we live in the world where being able to generate a lot of capital doesn’t necessarily mean creating a lot of value. For instance, the fact that lots of companies generate huge capital from wrecking the ocean and on the flipped side, lots of open source project like Linux system generate a lot of value but the creators don’t generate a lot of capital. In AI, this is called the Credit Assignment Problem.

ICO can help to better approximate the relationship between the two. Bitcoin and Ethereum were the first examples, as their early developers were rewarded hugely. Recently anyone with a nice landing page and a white paper detailing the project could potentially raise millions of dollars within seconds leading a to a lot of schematisms. The space definitely has characteristics of a bubble right now as the governments are still figuring out how to regulate it. It is a wide form of fundraising that is opened to accredited and non-accredited investors. Unlike IPO that requires up to six months filling requirement and professional oversight by the SEC, anyone can perform an ICO. But successful ICOs are the product of careful thought on economic and game theory. They are well-planned events that have generated interest beforehand. They are nonprofit, open-source, scientific and volunteering. They are things that provide real value to the world that unnecessary heavily incentivize right now.

To create an ICO you use a framework called Truffle that makes building apps on top of Ethereum very simple. You also make use of Open Zeppelin for its ability to create secure smart contracts. But, one small bug in the smart contact can lead to losing a lot of money. So, it is advisable to use tried and trusted solution rather than re-inventing the wheel.

For the blockchain node, you can use TestOutPC, since its fast and developers friendly. In the terminal, you install packages using NPM. You will install each package, create a directory for your ICOs and initialize your project. These add the Zeppelin solidity folders to node modules. Inside these modules, you will find a small contract template from the opened Zeppelin library. A token will have an emergency stop mechanism which means it will be able to pause transfers with the token. So if something happens during the crowdfund, you can stop the process to better understand what’s going on.

You first create the token contract. This is solidity that smart contract language of Ethereum which look a lot like Javascript. The opened Zeppelin provides a nice token creation template. You just need to define some key attribute of your tokens such as name, symbol, and supply. Next, you create a crowdsale contract. Also, there is a template for this and you just need to call the token named previously and also give a few parameters to the constructive functions. An hour is estimated to be around 212 blocks. The rate of token per Ether and the wallet address of the contract owner.

Next, you then deploy the contract into the chain. It is advisable to firstly first run. In the deployed Javascript file, modify it to include your custom parameters. The crowdsale contract is what you will deploy and it will create your token. Back in the terminal, you compile truffle and migrate it. You will see in the TestOutPC tab that the contract has been successfully deployed. Open the truffle console and interact with the deployed contract. They are the web3.jsapi. From your account, you can buy some tokens and check if they are bought successfully. You can also build a platform around it that allows users to interact with the crowdsales token contract and add more functionality to the contact itself like “deadline and a token cap”.

Technicalities of ICOs are known and sorted out for some time. There are developers who rely on Bitcoin or Ethereum technology, but on the other hand there some which prefer to create their own technology using blockchain, reaching further than providing currency with transaction models. However, due to a vast number of new ICOs in the recent months, it takes a marketing skill rather than technological advantage to successfully place the offering of tokens. It is also obvious that most of those projects, as with the startups profile, will simply fail. Yet it is hard to stay chilled when observing huge growth of value of some tokens, which in effect create a mechanism of FOMO (Fear Of Missing Out), further stemming the growth. Thus, there are psychological factors at play, too, to take into account when considering investing in ICO. It is definitely not a sure way to make money, as there is more risk than reward.