An initial coin offering (ICO) or initial currency offering is a type of funding using cryptocurrencies. Mostly the process is done by crowdfunding but private ICO's are becoming more common. In an ICO, a quantity of cryptocurrency is sold in the form of "tokens" ("coins") to speculators or investors, in exchange for legal tender or other cryptocurrencies such as Bitcoin or Ethereum. The tokens sold are promoted as future functional units of currency if or when the ICO's funding goal is met and the project launches. In some cases like Ethereum the tokens are required to use the system for its purposes.

An ICO can be a source of capital for startup companies. ICOs can allow startups to avoid regulatory compliance and intermediaries such as venture capitalists, banks and stock exchanges. ICOs may fall outside existing regulations, depending on the nature of the project, or be banned altogether in some jurisdictions, such as China and South Korea.

Source: WikiPedia


Ethereum is a token standard that solved the interoperability between tokens and made creation of smart contracts easy and accessible.

"A "smart contract" is simply a program that runs on the Ethereum blockchain. It's a collection of code (its functions) and data (its state) that resides at a specific address on the Ethereum blockchain.

Smart contracts are a type of Ethereum account. This means they have a balance and they can send transactions over the network. However they're not controlled by a user, instead they are deployed to the network and run as programmed. User accounts can then interact with a smart contract by submitting transactions that execute a function defined on the smart contract. Smart contracts can define rules, like a regular contract, and automatically enforce them via the code." Source ethereum.org.

"Before a compiled smart contract actually can be executed on certain blockchains, an additional step is required, namely, the payment of a transaction fee for the contract to be added to the chain and executed upon. In the case of the Ethereum blockchain, smart contracts are executed on the Ethereum Virtual Machine (EVM), and this payment, made through the ether cryptocurrency, is known as “gas.” [1] The more complex the smart contract (based on the transaction steps to be performed), the more gas that must be paid to execute the smart contract. Thus, gas currently acts as an important gate to prevent overly complex or numerous smart contracts from overwhelming the EVM. [2]

Smart contracts are presently best suited to execute automatically two types of “transactions” found in many contracts: (1) ensuring the payment of funds upon certain triggering events and (2) imposing financial penalties if certain objective conditions are not satisfied. In each case, human intervention, including through a trusted escrow holder or even the judicial system, is not required once the smart contract has been deployed and is operational, thereby reducing the execution and enforcement costs of the contracting process." Source harvard.edu

Forum | Solidity resources, libraries, tools, etc.

Test smart contract

ERC-20 standard require the smart contract to have following functions;

Total token supply, when this limit is reached the smart contract will refuse to create new tokens.
Returns the number of tokens a wallet address has.
Send certain amount of tokens from the total supply and gives it to a user.
Transfer tokens between users.
Check smart contract is allowed to allocate a certain amount of tokens to a user, considering the total supply.
Same as the approved method except that it checks if one user has enough balance to send a certain amount of tokens to another.